在Microsoft Azure中使用Empire设置域前置

DarkEye 其他 2019年4月1日发布
Favorite收藏

导语:本篇文章没有什么新的研究和发现,因为网上有太多文章和资源详细讲解了如何对Empire和CobaltStrike设置域前置了。这里我想写一篇关于在MicroSoft Azure中使用Empire设置域前置的文章。

介绍

域前置技术曾经风靡一时。至今,红队人员和恶意运营商仍然在使用这种技术。最近读到了两篇文章,又重新激起了我对域前置的兴趣,一篇是digininja写的比较详细的博客,还有一篇是推特上的@rvrsh3ll大神写的文章

本篇文章没有什么新的研究和发现,因为网上有太多文章和资源详细讲解了如何对Empire和CobaltStrike设置域前置了。这里我想写一篇关于在MicroSoft Azure中使用Empire设置域前置的文章,因为目前我在网上好像还没有看到这方面详细的设置。我们将会从CDN开始讲起,这对于理解域前置技术是尤为关键的。

内容分发网络(CDNs)

CDNs只是一个全球服务器网络,它根据访问者的地理位置向访问者发送网站的内容。CDNs为全球企业提供了多项优势,如防御DDos攻击,防止流量激增,有利于做SEO优化,可靠而且实惠。

域前置介绍

从某个层面来说,域前置其实是CDNs的一个特征。它可以用来传输C&C流量到原本被出口过滤器阻止的目标源。攻击者控制的终端域名又只能在建立了加密HTTPS连接之后进行通信。但是攻击者可以修改host头,这个很简单,这样CDN就可以将看似可信网站流量转发到他们的C&C服务器了。

技术细节

当大型可信服务提供商使用包含公共HTTPS域和目标HTTPS域的共享SNI证书时,这种技术就应运而生了。当边缘服务器(如azureedge.net)接收到这种流量时,数据包将被转发到在数据包主机头中指定的原始服务器(如darthmalicious.azureedge.net)。然后,原始服务器将会直接转发流量到一个指定的域,这里我们将指向我们的Empire实例中。在红队wiki技术中,我们可以看到这个非常不错的案例,如下图:

1.png

真实场景使用案例

域名前置通常在审查严格的国家被政治活动家用来绕过审查制度。这通常都是通过社交媒体聊天APP完成的,比如Signal和WhatAPP。代理网络中也会用到域名前置技术,比如Tor浏览器。在信息安全领域中,恶意攻击者和白帽子们都会使用这种技术。AWS的CloudFront通常是域名前置的首选CDN,不过这里我们会使用Microsoft Azure。使用域名前置技术要谨慎,考虑周全,因为它有可能违反服务提供商的条款和条件。

设置Azure

在Azure CDN上进行设置非常简单直接。仅仅只是需要一点耐心就行。Azure关于CDN的文档非常详细完整,还有推特大佬@ch1gg1ns的一篇博客也给了我极大的帮助。我们首先进入Azure portal,然后通过创建新CDN配置文件和CDN终端来启动CDN服务。在左上角,选择“Create a resource”。

2.png

然后选择web,选择CDN。

3.png

现在进入到CDN配置文件面板,我们现在可以创建一个CDN资源,并为这个资源创建一个终端。

4.png

成功创建之后,我们会接收到下面这个通知。

5.png

下面的部分,大家就需要耐心点了。创建CDN和终端之后,我们需要等待差不多90分钟,这个终端才能在整个CDN中传播。我们需要更新终端的缓存设置,让我们的CDN不会像正常的CDN行为那样来缓存流量。这样我们就可以用它来作为通信通道。修改你的缓存行为和查询字符串缓存行为来绕过,这一步到这里就完成了。

6.png

在继续讲解之前,我们需要解释一些事情。

CDN终端名称将位于HTTP请求中的Empire主机头通信配置文件中。这个名称会指向我们的安装了Empire的C2服务器。你可以让这个请求更加合法。

源主机名是你的C2服务器的IP地址或者是DNS名称。它就会将CDN连接到你的资源,然后使域名生效。

在Azure域名中查找可前置的域名

当我们的CDN在传播时,我们找一个容易记住的域名隐藏起来,这个域名对于我们的CDN也是有效的。这里有一篇关于查找可前置的Azure域名非常不错的文章。不过,我的方法略有不同,使用的是@rvrsh3ll大佬的查找可前置域名的脚本。这里我们会使用watcocdn1.azureedge.net这个域名。

测试CDN

为了测试我们的CDN通信是否正确设置,我们将使用我们已经正在运行的Empire实例。不管是直接访问,还是通过我们刚才创建的CDN来访问,Empire实例的响应应该是一样的。当通过CDN访问时,我们需要将主机头设置为我们之前创建的CDN终端,具体操作如下:

[email protected]:~# curl -k https://[redacted].com
 
<--Snipped Output -->
<body>
<div id="container">
<a href="http://go.microsoft.com/fwlink/?linkid=66138&clcid=0x409"><img src="welcome.png" alt="IIS7" width="571" height="411" /></a>
</div>
<--Snipped Output -->
 
 
[email protected]:~# curl -k --header "Host: darthmalicious.azureedge.net" "https://watcocdn1.azureedge.net/"
 
<--Snipped Output -->
<body>
<div id="container">
<a href="http://go.microsoft.com/fwlink/?linkid=66138&clcid=0x409"><img src="welcome.png" alt="IIS7" width="571" height="411" /></a>
</div>
<--Snipped Output -->

设置Empire

这个也是比较简单的。我们设置监听主机为Azure前置域名(在这里是watcocdn1.azureedge.net),然后我们在默认配置文件中添加一个自定义头,指向我们的CDN终端名(比如darthmalicious.azureedge.net),监听器的配置如下所示:

7.png

然后可以开启监听。

8.png

接着我们启动Empire Stager,可以看到Azure的前置域被用作C2域了。

9.png

分析以下流量,我们看到主机头将流量重定向到了预期的域名中,如图:

10.png

强化Azure域前置

最近,@rvrsh3ll大佬在medium上发布了一篇关于强化Azure 域名前置的深度好文。接下来,我们将会介绍一些那篇文章中有关Azure CDN规则引擎的内容。

CDN设置

访问Azure CDN规则引擎官方文档,我们发现它仅仅是Azure premium的一个功能。我们创建CDN配置文件和终端名时,要考虑到这一点。创建完CDN终端后,可能需要几分钟到一个小时来完成配置和传播。

11.png

基本重定向规则创建

当你的CDN在运行时,打开配置文件页面,然后点击管理按钮:

12.png

然后选择”HTTP Large”,选择规则引擎,进入下面这个页面:

13.png

在这个页面上,我们可以创建符合我们所需规则的条件。我们将使用Request Header Regex(请求头正则)来讲解基于User-agent的重定向规则。如果User-agent与我们指定的User-agent不匹配,我们就将流量重定向到twitter中。

14.png

创建之后,我们会收到一个警告:”批准新规则最多需要4个小时”

15.png

如果一切顺利,我们的CDN规则会将任何不匹配的流量重定向到Twitter中,将匹配的流量重定向到我们的Empire实例中。

总结

这篇文章主要是总结我在深入学习域名前置的一些经验。本文讨论了绕过多种安全工具的一种技术,它也能跟其他的定位恶意流量的方法一起使用并发挥重要作用。在尝试防御这种技术时,应该考虑深度防御。比如应用白名单,或者强大的EDR解决方案。蓝队可能会考虑到的方法是解密所有的流量然后从中查找C2流量的迹象。

特别感谢Monsieur Numi帮我搞到一个Microsoft Azure账号,感谢所有域前置的研究人员。希望本篇文章能够鼓励更多的研究人员在他们攻击活动和行为中使用域前置技术。

参考:

https://www.xorrior.com/Empire-Domain-Fronting/

https://chigstuff.com/blog/metasploit-domain-fronting-with-microsoft-azure/

https://github.com/rvrsh3ll/FindFrontableDomains

https://medium.com/@rvrsh3ll/hardening-your-azure-domain-front-7423b5ab4f64

https://docs.microsoft.com/en-us/azure/cdn/cdn-rules-engine

https://docs.microsoft.com/en-us/azure/cdn/cdn-rules-engine-reference-match-conditions#request-header-regex

https://medium.com/@malcomvetter/simplifying-domain-fronting-8d23dcb694a0

https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki/blob/master/README.md#domain-fronting

https://holdmybeersecurity.com/2018/06/27/how-to-red-team-domain-fronting-with-powershell-empire-and-cloudfront/

https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1542139101.pdf

https://twitter.com/cyb3rops/status/1100668485770846210

本文翻译自:https://truneski.github.io/blog/2019/02/27/empire-domain-fronting-with-microsoft-azure/如若转载,请注明原文地址: https://www.4hou.com/others/16663.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论