使用Netcat命令

时间:2020-03-05 15:28:15  来源:igfitidea点击:

Netcat(nc)命令是分析网络连接,扫描开放端口,传输数据等的强大工具。
它是一种联网实用程序,用于使用TCP或者UDP协议读取和写入网络连接。

如何安装netcat

它是一个跨平台工具,可用于Linux,macOS,Windows和BSD。
我们将使用'apt install'在Ubuntu 18.04机器上安装netcat或者从源代码编译它。

使用apt进行安装非常简单,我们只需要在终端中键入以下命令即可:

sudo apt install netcat

在CentOS 8上

ncat可以与nmap软件包一起安装在RHEL 8/CentOS 8上。
使用dnf命令,如下所示

sudo dnf install nmap

如何从源代码安装netcat

从源代码编译netcat并不像通过“ apt install”进行安装那样容易,但是如果我们按照以下步骤操作,则可以轻松进行安装。

使用以下命令从netcat下载源代码

wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz

提取新下载的存档。
为此,我们可以运行:

tar -xzvf netcat-0.7.1.tar.gz

“ cd”到包含软件包源代码的目录,然后键入“ ./configure”为系统配置软件包。

cd netcat-0.7.1
./configure

如果在运行./configure命令时收到诸如“在$PATH中找不到可接受的C编译器”之类的错误消息,请确保已安装gcc编译器。
要安装它,请输入以下命令:

apt-get install build-essential

运行“配置”需要一段时间。

成功完成配置后,运行:

sudo make

sudo make install

我们可以通过键入“ make clean”从源代码目录中删除程序二进制文件和目标文件。
要也删除“配置”创建的文件,请运行“ make distclean”命令。

Netcat范例

在开始探索一些netcat命令之前,重要的是要知道,如果要使用nc绑定到知名端口(0-1023),则需要root特权。
否则,我们可以以普通用户身份运行nc。

1)测试远程主机的特定TCP端口是否打开

nc -vn 192.168.40.146 2424

如果远程服务器上的2424端口已关闭,则输出

nc: connect to 192.168.40.146 port 2424 (tcp) failed: Connection refused

如果远程服务器上的端口已打开(例如22端口),则输出

Connection to 192.168.40.146 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4

2)对远程主机执行TCP端口扫描

下面的命令将检查远程主机上20到25之间的端口并打印结果。

nc -vnz -w 1 192.168.40.146 20-25

输出将如下所示

nc: connect to 192.168.40.146 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 21 (tcp) failed: Connection refused
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
nc: connect to 192.168.40.146 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 25 (tcp) failed: Connection refused

3)对远程主机执行UDP端口扫描

nc -vnzu 192.168.40.146 1-65535

输出将仅显示允许udp连接的端口。

Connection to 192.168.40.146 2424 port [udp/*] succeeded!
Connection to 192.168.40.146 12354 port [udp/*] succeeded!

4)将测试UDP数据包发送到远程主机

echo -n "udp test" | nc -u -w1 192.168.40.146 2424

上面的命令将以1秒超时将测试UDP数据包发送到端口2424处的远程主机

5)将文件(例如test.txt)从一台主机复制到另一台主机

在接收方主机(本例中为192.168.40.146)上运行:

nc -lp 2424 > test.txt

在发送方主机(192.168.40.144)上,运行以下命令:

nc 192.168.40.146 2424 < test.txt

这将通过2424端口将test.txt文件从发送方主机复制到接收方主机。
确保在接收器主机的2424端口上允许传入连接。

6)将整个目录(包括其内容)从一台主机转移到另一台主机

在接收方主机上运行:

nc -l 2424 | tar xvf 

在发送方主机上,运行以下命令:

tar cvf - /path/to/dir | nc 192.168.40.146 2424

7)在远程主机上创建硬盘驱动器的压缩备份(例如/dev/sdc)

在远程主机上运行:

nc -lp 2424 | sudo dd of=/path/to/image.img.gz

在本地主机上,运行以下命令:

dd if=/dev/sdc | gzip -c | nc 192.168.40.146 2424

8)从存储在远程主机中的压缩磁盘镜像还原硬盘驱动器(例如/dev/sdc)

在本地主机上运行:

nc -lp 2424 | gunzip -c | sudo dd of=/dev/sdc

在远程主机上,运行以下命令:

cat /path/to/image.img.gz | nc 192.168.40.144 2424

9)在两个主机之间运行不安全的在线聊天

在一台主机(例如192.168.40.144)上运行以下命令:

nc -lp 2424

在另一台主机(例如192.168.40.146)上,运行以下命令:

nc 192.168.40.144 2424

运行这些命令后,在两个主机上都可以看到在两个终端中键入的任何内容。

10)运行带有静态网页的Web服务器

在本地主机(例如192.168.40.144)上运行以下命令,以启动在端口80上提供test.html的Web服务器。
请注意,我们必须使用sudo特权运行,因为80在众所周知的端口范围内(1-1023)

while true; do sudo nc -lp 80 < test.html; done

现在从另一台主机打开“ http://192.168.40.144/test.html”以访问它。

11)使用IPv6地址侦听TCP端口

我们可以使用以下命令在侦听TCP端口时允许nc使用IPv6地址。

nc -6 -l 2424

检查它是否与下面的命令一起使用

sudo netstat -nap | grep 2424

输出将如下所示

tcp6 0 0 :::2424 :::* LISTEN 15665/nc

12)从服务器流式传输视频文件,以供客户端使用视频播放器(例如mplayer)观看流式视频

在视频服务器(192.168.40.144)上:

cat sample_video.avi | nc -l 2424

在客户端主机(192.168.40.146)上:

nc 192.168.40.144 2424 | mplayer -vo x11 -cache 3000