内容简介:域前置技术曾经风靡一时。至今,红队人员和恶意运营商仍然在使用这种技术。最近读到了两篇文章,又重新激起了我对域前置的兴趣,一篇是digininja写的比较详细的本篇文章没有什么新的研究和发现,因为网上有太多文章和资源详细讲解了如何对Empire和CobaltStrike设置域前置了。这里我想写一篇关于在MicroSoft Azure中使用Empire设置域前置的文章,因为目前我在网上好像还没有看到这方面详细的设置。我们将会从CDN开始讲起,这对于理解域前置技术是尤为关键的。CDNs只是一个全球服务器网络,它根
介绍
域前置技术曾经风靡一时。至今,红队人员和恶意运营商仍然在使用这种技术。最近读到了两篇文章,又重新激起了我对域前置的兴趣,一篇是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技术 中,我们可以看到这个非常不错的案例,如下图:
真实场景使用案例
域名前置通常在审查严格的国家被政治活动家用来绕过审查制度。这通常都是通过社交媒体聊天APP完成的,比如Signal和WhatAPP。代理网络中也会用到域名前置技术,比如Tor浏览器。在信息安全领域中,恶意攻击者和白帽子们都会使用这种技术。AWS的CloudFront通常是域名前置的首选CDN,不过这里我们会使用Microsoft Azure。使用域名前置技术要谨慎,考虑周全,因为它有可能违反服务提供商的条款和条件。
设置Azure
在Azure CDN上进行设置非常简单直接。仅仅只是需要一点耐心就行。Azure关于CDN的文档非常详细完整,还有推特大佬 @ch1gg1ns 的一篇博客也给了我极大的帮助。我们首先进入Azure portal,然后通过创建新CDN配置文件和CDN终端来启动CDN服务。在左上角,选择“Create a resource”。
然后选择web,选择CDN。
现在进入到CDN配置文件面板,我们现在可以创建一个CDN资源,并为这个资源创建一个终端。
成功创建之后,我们会接收到下面这个通知。
下面的部分,大家就需要耐心点了。创建CDN和终端之后,我们需要等待差不多90分钟,这个终端才能在整个CDN中传播。我们需要更新终端的缓存设置,让我们的CDN不会像正常的CDN行为那样来缓存流量。这样我们就可以用它来作为通信通道。修改你的缓存行为和查询字符串缓存行为来绕过,这一步到这里就完成了。
在继续讲解之前,我们需要解释一些事情。
CDN终端名称将位于HTTP请求中的Empire主机头通信配置文件中。这个名称会指向我们的安装了Empire的C2服务器。你可以让这个请求更加合法。
源主机名是你的C2服务器的IP地址或者是DNS名称。它就会将CDN连接到你的资源,然后使域名生效。
在Azure域名中查找可前置的域名
当我们的CDN在传播时,我们找一个容易记住的域名隐藏起来,这个域名对于我们的CDN也是有效的。这里有一篇关于 查找可前置的Azure域名 非常不错的文章。不过,我的方法略有不同,使用的是@rvrsh3ll大佬的 查找可前置域名的脚本 。这里我们会使用watcocdn1.azureedge.net这个域名。
测试CDN
为了测试我们的CDN通信是否正确设置,我们将使用我们已经正在运行的Empire实例。不管是直接访问,还是通过我们刚才创建的CDN来访问,Empire实例的响应应该是一样的。当通过CDN访问时,我们需要将主机头设置为我们之前创建的CDN终端,具体操作如下:
<a href="/cdn-cgi/l/email-protection" data-cfemail="54263b3b20143f35383d">[email protected]</a>:~# 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 --> <a href="/cdn-cgi/l/email-protection" data-cfemail="ccbea3a3b88ca7ada0a5">[email protected]</a>:~# 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),监听器的配置如下所示:
然后可以开启监听。
接着我们启动Empire Stager,可以看到Azure的前置域被用作C2域了。
分析以下流量,我们看到主机头将流量重定向到了预期的域名中,如图:
强化Azure域前置
最近,@rvrsh3ll大佬在medium上发布了一篇关于 强化Azure 域名前置 的深度好文。接下来,我们将会介绍一些那篇文章中有关Azure CDN规则引擎的内容。
CDN设置
访问Azure CDN规则引擎官方文档,我们发现它仅仅是Azure premium的一个功能。我们创建CDN配置文件和终端名时,要考虑到这一点。创建完CDN终端后,可能需要几分钟到一个小时来完成配置和传播。
基本重定向规则创建
当你的CDN在运行时,打开配置文件页面,然后点击管理按钮:
然后选择”HTTP Large”,选择规则引擎,进入下面这个页面:
在这个页面上,我们可以创建符合我们所需规则的条件。我们将使用Request Header Regex(请求头正则)来讲解基于User-agent的重定向规则。如果User-agent与我们指定的User-agent不匹配,我们就将流量重定向到twitter中。
创建之后,我们会收到一个警告:”批准新规则最多需要4个小时”
如果一切顺利,我们的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://medium.com/@malcomvetter/simplifying-domain-fronting-8d23dcb694a0
https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1542139101.pdf
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- RxJava练武场之——Token前置请求
- RocketMQ 多副本前置篇:初探 raft 协议
- 系统用例规范中的前置条件是什么?
- IJPay 1.5.0 版本发布,银联云闪付条码前置
- 10分钟快速精通rollup.js——前置学习之基础知识篇
- 避免大量实现类bug的可行性办法:研发质量保证前置
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
分布式机器学习:算法、理论与实践
刘铁岩、陈薇、王太峰、高飞 / 机械工业出版社 / 2018-10-20 / 89.00
人工智能和大数据时代,解决最有挑战性问题的主流方案是分布式机器学习!本书旨在全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并且讨论该领域未来的发展方向。 由微软亚洲研究院机器学习核心团队潜心力作!鄂维南院士、周志华教授倾心撰写推荐序! 本书旨在全面介绍分布式机器学习的现状,深入分析其中的核心技术问题,并且讨论该领域未来的发展方向。 全书共12章。第1章是绪论,向大家展......一起来看看 《分布式机器学习:算法、理论与实践》 这本书的介绍吧!