netcat被誉为网络安全界的‘瑞士军刀’,相信没有什么人不认识它吧……
一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据。它被设计成一个稳定的后门工具,
能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几
乎所有类型的网络连接,还有几个很有意思的内置功能(详情请看下面的使用方法)。
nc命令详解
Filed under: security — ranbo @ 9:08 pm
netcat被誉为网络安全界的‘瑞士军刀’,相信没有什么人不认识它吧……
一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据。它被设计成一个稳定的后门工具,
能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几
乎所有类型的网络连接,还有几个很有意思的内置功能(详情请看下面的使用方法)。
在中国,它的WINDOWS版有两个版本,一个是原创者Chris Wysopal写的原版本,另一个是由‘红与黑’编译
后的新‘浓缩’版。‘浓缩’版的主程序只有10多KB(10多KB的NC是不能完成下面所说的第4、第5种使用方法,
有此功能的原版NC好象要60KB:P),虽然”体积”小,但很完成很多工作。
这里以1.84版本为例
一、基本使用
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
[-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
参数:
1. -4 强制使用ipv4
2. -6 强制使用ipv6
3. -D 允许socket通信返回debug信息
4. -d 不允许从标准输入中读取
5. -h 显示nc帮助文档
6. -i interval
7. 指定每行之间内容延时发送和接受,也可以使多个端口之间的连接延时
8. -k 当一个连接结束时,强制nc监听另一个连接。必须和-l一起使用
9. -l 用于监听传入的数据链接,不能与-p -z -s一起使用。-w 参数的超时也会被忽略
10. -n 不执行任何地址,主机名,端口或DNS查询
11. -p 指定nc使用的源端口,受权限限制且不能余-l一起使用
12. -r 指定nc使用的源端口和目的端口,不能使用系统原来就指定的那些端口
13. -S 允许在RFC 2385的TCP MD5签名选项
14. -s source_ip_address
15. 指定用于发包的接口的IP地址,不能和-l一起使用
16. -T ToS
17. 指定链接的IP服务类型(TOS)
18. -C 自动换行
19. -t 使nc能够与telnet交互
20. -U 使用UNIX域socket
21. -u 使用udp代替默认的tcp选项
22. -v 输出详细报告
23. -w timeout
24. 一个链接一段时间无操作,则自动断开,默认无超时
25. -X proxy_version
26. 指定nc使用代理时所采用的协议,可选的有socksv4,socks5以及https。默认socks5
27. -x proxy_address[:port]
28. 指定nc使用的代理地址和端口。默认设置:1080(SOCKS),3128(HTTPS)
29. -z 只监听不发送任何包
例如:1.扫描端口
tcp扫描
[root@b28-1286 servers]# nc -vzw2 192.168.12.86 20-30
nc: connect to 192.168.12.86 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.12.86 port 21 (tcp) failed: Connection refused
Connection to 192.168.12.86 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.12.86 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.12.86 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.12.86 port 25 (tcp) failed: Connection refused
nc: connect to 192.168.12.86 port 26 (tcp) failed: Connection refused
nc: connect to 192.168.12.86 port 27 (tcp) failed: Connection refused
nc: connect to 192.168.12.86 port 28 (tcp) failed: Connection refused
nc: connect to 192.168.12.86 port 29 (tcp) failed: Connection refused
nc: connect to 192.168.12.86 port 30 (tcp) failed: Connection refused
udp扫描
[root@b28-1286 servers]# nc -uvzw2 192.168.12.86 1-140
Connection to 192.168.12.86 111 port [udp/sunrpc] succeeded!
2.文本传递
在86、90上建立文件install.log
[root@b28-1286 servers]# nc -l 1234 >install.log
在86上启动监听,在90上执行:nc -w 1 192.168.12.86 1234 <install.log
现在86上install.log的内容就被90上install.log的内容所覆盖了。
3.聊天
[root@b28-1286 servers]# nc -l 1234
12
sdsf
我擦
[root@b28-1290 etc]# nc 192.168.12.86 1234
12
sdsf
我擦
3.目录传输
将86上的auto-add-tomcat文件夹及内容复制到90上
在90上启动监听:
nc -l 1234|tar -xzvf -
在86上执行:
tar -cvzf - auto-add-tomcat|nc 192.168.12.90 1234
4.在脚本中
nc每次启动监听后,都会在客户端连接完成并退出的同时,服务端一同退出。所以,如果需要不断的使用nc进行数据传输,需要在脚本中使用循环。利用nc实现更多的功能,可参考其rpm提供的参考脚本:
[root@b28-1286 servers]# rpm -qd nc
/usr/share/doc/nc-1.84/README
/usr/share/doc/nc-1.84/scripts/README
/usr/share/doc/nc-1.84/scripts/alta
/usr/share/doc/nc-1.84/scripts/bsh
/usr/share/doc/nc-1.84/scripts/dist.sh
/usr/share/doc/nc-1.84/scripts/irc
/usr/share/doc/nc-1.84/scripts/iscan
/usr/share/doc/nc-1.84/scripts/ncp
/usr/share/doc/nc-1.84/scripts/probe
/usr/share/doc/nc-1.84/scripts/web
/usr/share/doc/nc-1.84/scripts/webproxy
/usr/share/doc/nc-1.84/scripts/webrelay
/usr/share/doc/nc-1.84/scripts/websearch
/usr/share/man/man1/nc.1.gz