nc命令详解

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

猜你喜欢

转载自zfy421.iteye.com/blog/2100032