Netcat是一个简单但有用的工具,用于TCP、UDP、Unix域套接字。Netcat可以轻松地侦听或连接指定的套接字。Netcat是一个独立于平台的命令,由Linux、Unix、Windows、BSD、macOS等支持;
- 简单TCP代理
- 基于Shell脚本的HTTP客户端和服务器
- 网络守护程序测试
- ssh的SOCKS或HTTP代理命令
netcat命令语法
对于“nc”命令,我们将使用以下语法。
netcat OPTIONS DESTINATION PORT
-
OPTIONS
用于设置一些特殊行为,如超时、帮助、巨型帧等。 -
DESTINATION
用于指定远程系统IP或主机名。 -
PORT
是远程系统端口号。
如果我们使用 netcat
作为服务器,以下语法有效。
nc OPTIONS PORT
- 用于设置某些特殊行为的选项,如超时、帮助、巨型
- PORT是服务器将侦听的端口号
netcat命令帮助
nc或netcat命令有很多不同的选项。有关这些选项的帮助和信息可以通过 -h
选项如下。
$ nc -h

我们看得出来 netcat
命令提供了许多不同的选项。
使用netcat命令进行端口扫描
渗透测试人员通常使用端口扫描技术来收集信息。Nmap是查找开放端口最流行的工具之一。Netcat可以提供端口扫描功能。优势 netcat
简单且不依赖于库。单身 netcat
二进制文件足以进行端口扫描,可以用于所有操作系统,如Windows、Linux、Unix、MacOS和BSD。
我们将使用 -z
端口扫描选项如下。在本例中,我们将扫描IP地址 192.168.122.1
也可以是域名,比如 poftut.com
. 端口范围指定为 1-30
.
$ nc -z -v 192.168.122.1 1-30

屏幕截图显示了详细的输出只有端口22是开放的,我们可以看到。使用 -n
选项。这将禁用有关目标IP地址的DNS解析。
$ nc -z -v 192.168.122.1 1-30
使用netcat命令进行详细扫描
在前面的示例中,我们以静默模式扫描了主机。静默模式是默认模式,这意味着只有打开的端口才会打印到控制台。有一个选择 -v
这将产生更详细的信息。详细模式也可以用于抓取横幅的目的。在下面的示例中,我们将扫描从1到1000的端口范围。
$ nc -z -v -n 192.168.122.1 1-1000

启动Netcat TCP服务器
另一个有用的特性 netcat
充当TCP服务器。Netcat可以侦听指定的TCP端口。但是作为Linux系统中的一种安全措施,只有特权用户才能监听1-1024之间的端口。在本例中,我们将侦听TCP端口30 sudo
命令。
$ sudo nc -l -p 30

在示例屏幕截图中,我们看到一个客户机连接到我们的服务器,并提供如下文本 ls
和 test
. 此客户端工具可以是telnet或 netcat
我也是。如果我们不提供 sudo
命令获取根权限,我们将得到如下错误 Permission denied
.
连接Netcat TCP服务器
在前面的示例中,我们检查了TCP服务器。Netcat还提供客户端功能。使用 netcat
作为客户端,我们应该提供主机名或IP地址以及端口信息。这方面没有特别的选择。
$ nc localhost 30

在本例中,我们已经连接到localhost ssh端口22。ssh服务器向我们发送一些关于它的文本,并等待响应。
相关文章: HTML Div标记使用教程及示例
通过Netcat发送文件
另一个有用的功能 netcat
是文件传输。正如我们看到前面的例子 netcat
使用服务器-客户机体系结构可以轻松传输文本。传输数据没有限制。这些数据可以是普通节目或电影。但请记住,传输时间将根据数据大小而变化。为了传输,我们需要设置一个作为目的地的服务器。在服务器配置中,我们将把传入的数据重定向到一个文件名中 myfile.txt
$ netcat -l -p 4444 > myfile.txt
现在我们可以从客户端发送文件了。我们将读取文件 thefile.txt
在客户端通过重定向到netcat文件,如下所示。
$ nc 192.168.122.239 4444 < thefile.txt
传输完成后,服务器端和客户端netcat实例都将关闭。
使用Netcat命令的简单Web服务器
Netcat还有一个有趣的特性,可以简单地使用。Netcat可以用作一个简单的web服务器。实际上,如果没有特殊的配置要求,web服务器是非常简单的。Web服务器仅通过HTTP协议发送HTML页。Netcat还可以通过重定向发送HTML代码。
$ nc -l 4444 < index.html

在客户端,我们将使用googlechrome来导航IP地址 192.168.122.239
带端口号 4444

阻止DNS查找
在使用DNS时,可以使用选项禁用查找 -n
这将使操作更快。
$ netcat -n google.com 80
在客户端断开连接后继续侦听
默认情况下, netcat
在客户端结束连接后,将停止侦听指定的端口和IP地址。这意味着 netcat
用作服务器侦听器。我们可以提供 -k
选项,即使远程客户端结束连接,也会继续侦听给定的端口和IP地址。
$ nc -k -l 4444
指定netcat连接超时
建立到远程服务器的连接后 netcat
我们传输一些数据。如果在调用的指定时间内没有传输 timeout
我们可以断开或关闭连接。我们将使用 -w
选项和要设置的超时值。在本例中,我们将超时值设置为 120
.
$ nc -w 120 192.168.1.10 8888
仅将IPv4与netcat命令一起使用
netcat
是一个同时支持IPv4和IPv6的工具,在某些情况下,我们可能只希望启用IPv4协议。这对于监听特定端口特别有用。我们将使用 -4
作为仅启用IPv4的选项。
$ nc -k -4 -l 4444
仅对netcat命令使用IPv6
另一方面,我们也只能启用IPv6。这是一个非常罕见的情况,但在某些罕见的情况下可能有用。我们只能使用 -6
选项如下。
$ nc -k -6 -l 4444
使用netcat命令抓取横幅
netcat或nc可用于抓取不同端口的横幅,如SSH、HTTP、HTTPS、VNC、FTP等。netcat将启动到远程系统指定端口的连接,并使用 echo
命令。
$ nc 172.104.31.121 443
然后,我们将发出以下HTTP命令,以便向远程HTTP服务器发出请求。服务器将用自己的信息或横幅对此做出响应。
GET / HTTP 2.0
