代理(ATT&CK篇)

前言

大家好,我是Alphabug。时隔许久未写文章,加上最近有很多朋友问我,渗透过程中如何搭建C2代理,以及一些相关原理的问题。于是乎我计划写几篇关于C2代理相关的文章,希望能够对初学者有帮助。

代理(ATT&CK篇)

言归正传,直奔主题。通过“ATT&CK[1]”框架可知,根据应用场景来区分C2代理的用途,可分为:内部代理外部代理多跳代理域前置代理

内部代理

攻击者可能会使用内部代理来指挥和控制受感染环境中两个或多个系统之间的流量。

攻击者使用内部代理来管理受感染环境内的命令和控制通信,减少同时出站网络连接的数量,在连接丢失时提供弹性,或者利用受感染系统之间现有的可信通信路径来进行攻击。避免怀疑。

通过使用受损的内部系统作为代理,攻击者可以隐藏C2(Command and Control)流量的真实目的地,同时减少与外部系统的大量连接的需求。

如图所示,正常我们使用C2的时候,应该是所有主机主动连接我们的C2 Server,此时经过防火墙的流量很多,可能存在安全风险的警告,或安全设备拦截请求。

代理(ATT&CK篇)

C2 Server

如果我们把边界设备作为跳板,那么此时仅有边界设备对C2 Server发起请求,可以规避一些安全设备的警告或拦截。

代理(ATT&CK篇)

C2 Server(内部代理)

外部代理

攻击者可以使用外部代理充当与C2服务器进行网络通信的中介,以避免与其基础设施的直接连接。

受害者系统将直接与互联网上的外部代理通信,然后代理将通信转发到 C2 服务器。

如图所示,就是在互联网上找一台服务器(例如:租用VPS、沦陷的跳板机),因为我们的C2 Agent可能无法直接与我们的C2 Server进行通信(这里无法通信原因有很多,例如出网白名单、防火墙区域公网IP限制等),此时通过“流量转发”服务器作为代理,帮我们转发流量,从而可成功上线。另外一方面,可以规避真实C2 Server服务器的IP地址暴露(防溯源)。

代理(ATT&CK篇)

外部代理

多跳代理

为了掩盖恶意流量的来源,攻击者可能会将多个代理链接在一起。通常,防御者将能够识别进入其网络之前最后经过的代理流量;防御者可能能够也可能无法识别最后一跳代理之前的任何先前代理。该技术要求防御者通过多个代理跟踪恶意流量以识别其来源,从而使识别恶意流量的原始来源变得更加困难。这种行为的一个特殊变体是使用洋葱路由网络,例如公开可用的 TOR 网络。

简单来说,就是“外部代理”升级版,但“多跳代理”大多数用于在渗透测试前期工作中,防止被溯源到真实IP。

代理(ATT&CK篇)

多跳代理

当然,我们也可以利用CobaltStrike的代理功能,实现这个效果。

代理(ATT&CK篇)

Beacon 代理配置

根据上图所示进行配置,即可实现通过Socks5代理,访问到C2 Server服务器。

代理(ATT&CK篇)

Beacon 代理流量

域前置代理

攻击者可能会利用内容交付网络 (CDN) 和托管多个域的其他服务中的路由方案来混淆 HTTPS 流量或通过 HTTPS 隧道传输的流量的预期目的地。

域名前置涉及在 TLS 标头的 SNI 字段和 HTTP 标头的 Host 字段中使用不同的域名。

如果两个域均由同一 CDN 提供服务,则 CDN 可以在解包 TLS 标头后路由到 HTTP 标头中指定的地址。

例如,如果domain-x和domain-y是同一CDN的客户,则可以将domain-x放置在TLS标头中,将domain-y放置在HTTP标头中。流量似乎会流向域 x,但 CDN 可能会将其路由到域 y

简单来说,我们准备2个域名cs.ip.com域名(C2 Server)和cdn.test.com的域名(只要域名能够解下到同一个CDN上就行),如图所示,进行配置。

代理(ATT&CK篇)

Beacon 配置域前置

当Beacon运行后,首先解析cdn.test.com域名并发起HTTPS请求,CDN进行响应,然后发送http包,在header中Host字段为“cs.ip.com”,那么这个包就会被转发给我们的C2 Server服务器。

代理(ATT&CK篇)

域前置代理

总结

C2代理,主要是规避安全设备对其流量的检测、隐蔽真实IP等,很多实战场景都有用到,但是还需要根据情况进行合理使用。

参考资料

[1]

ATT&CK: https://attack.mitre.org/techniques/T1090/


原文始发于微信公众号(百灵鸟安全团队):代理(ATT&CK篇)

版权声明:admin 发表于 2024年4月21日 下午6:04。
转载请注明:代理(ATT&CK篇) | CTF导航

相关文章