|
nc 全名 Netcat ,又被称为网络的”瑞士军刀“,具有强大的网络操作功能。在 Windows 上玩渗透入侵的朋友对该工具并不陌生。实际上,Linux 和 Windows 上的版本特性基本相同。下面演示一些使用实例。
1. 直接使用 nc 连接
在 Windows 上如下使用 nc 在 2012 端口上监听:其中 -l 选项表示要处于监听模式,-p 参数指定要在哪个端口上监听。
在 Linux 上直接用下面命令连接:此时,连接已经建立。可以尝试分别在 Windows 和 Linux 下输入一些内容,可以看到当按下回车发送出去时,所输入的内容会出现在对方的终端上:
1.1 测试 UDP 端口是否开放
指定 -u 选项可以使 nc 监听在 UDP 模式,同样连接时使用 -u 选项表示基于 UDP 协议连接,而不是 TCP 。如同上面例子,可以使服务端在 UDP 的某个端口上监听:客户端连接时使用:然后在客户端输入一些内容,如果服务端能收到,那么说明连接通常,端口并没有被防火墙所阻挡。
2. 在 8080 端口上建立一个只服务一次的 WEB 服务器
运行下面的命令:{ echo -n "HTTP/1.0 200 OK\r\n\r\n"; cat hello.txt; } | nc -l 8080 在上面命令中,nc 使系统在 8080 端口监听。管道符前面输送过来一些模拟了 HTTP 头及网页主体的内容。在使用浏览器打开 http://网址:8080 后,会发现浏览器中内容一闪而过,然后显示该页无法显示,这是因为 nc 所建立的监听服务只服务一次,它在将前面的网页内容输出后进程退出。此时我们可以看到 nc 的输出:$ { echo -n "HTTP/1.0 200 OK\r\n\r\n"; cat hello.txt; } | nc -l 8080
GET / HTTP/1.1
Host: 192.168.1.105:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Maxthon/3.0 Chrome/22.0.1229.79 Safari/537.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DNT: 1
Accept-Encoding: gzip,deflate
Accept-Language: zh-CN
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3 这些内容是客户端浏览器发送过来的 HTTP 的头部请求。
3. 使用 -w 选项限定空闲时间
在服务端,可以使用 -w 选项来设置空闲时间限制。也就是说,当连接空闲超时时,连接会自动断开。注意,-w 选项并不会影响 -l 选项,也就是说,如果还没有连接进来时,即使超出了超时时间,那么服务端的监听并不会自动断开。这里的超时是相对于连接来说的。比如下面服务端的设定:上面设定 10 秒超时。客户端连接后,如果 10 秒中内无任何动作,那么连接自动断开。
4. 使用 nc 进行端口扫描:[beyes@beyes ~]$ nc -v -n -z -w 1 192.168.1.2 75-85
nc: connect to 192.168.1.2 port 75 (tcp) failed: Connection refused
nc: connect to 192.168.1.2 port 76 (tcp) failed: Connection refused
nc: connect to 192.168.1.2 port 77 (tcp) failed: Connection refused
nc: connect to 192.168.1.2 port 78 (tcp) failed: Connection refused
nc: connect to 192.168.1.2 port 79 (tcp) failed: Connection refused
Connection to 192.168.1.2 80 port [tcp/*] succeeded!
nc: connect to 192.168.1.2 port 81 (tcp) failed: Connection refused
nc: connect to 192.168.1.2 port 82 (tcp) failed: Connection refused
nc: connect to 192.168.1.2 port 83 (tcp) failed: Connection refused
nc: connect to 192.168.1.2 port 84 (tcp) failed: Connection refused
nc: connect to 192.168.1.2 port 85 (tcp) failed: Connection refused 上面,-v 选项表示希望输出详细信息。-n 选项表示不进行 DNS 查询。-z 选项表示使用扫描模式。-w 选项表示设置扫描超时时间。
5. 使用 nc 做代理
我们尝试下面的命令:我们的本意是,通过发浏览器访问 http://server-ip:8899 以能访问 twitter 网站。但是在操作中会观察到,服务器端是有来自 twitter 的内容输出到终端,而浏览器端却没有任何内容。这是因为,管道 '|' 是单向的,而不能反向。如果想反向,我们需要用到有名管道。因此可以先建立一个有名管道 :# mkfifo tunnel
# ls -l tunnel
prw-r--r-- 1 root root 0 Oct 30 11:35 tunnel 接下来,使用 nc 来做一个简单的代理:上面的意思是,先使 nc 监听在 8899 端口。如果客户端访问服务器的 8899 端口,那么就将请求通过管道送到另一边的 nc 命令中,该 nc 命令再将请求内容发往 www.twitter.com ,当 www.twitter.com 响应时,所返回网站内容默认输出到标准输出上(文件描述符为 1),此时我们将这些内容重定向到 tunnel 这个有名管道中,一旦管道有了内容,它就输送到标准输入(0),接着标准输入的内容被左端的 nc 接收,最后 nc 就将这些内容返回到客户端去。效果见下图:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|