域名前置网络攻击技术——本质上就是域名别名,将c2的域名用一个合法的域名隐藏起来
<div class="col-2-article-header"><h1 class="article-title J-articleTitle">【安全研究】Domain fronting域名前置网络攻击技术</h1>
<div class="article-infos-wrap">
<div class="article-infos">from: https://cloud.tencent.com/developer/article/1555449</div>
<div class="article-infos-extra"> </div>
</div>
</div>
<div class="com-markdown-collpase">
<div class="com-markdown-collpase-main">
<div class="rno-markdown J-articleContent">
<p><strong>千里百科</strong></p>
<p>Domain Fronting基于HTTPS通用规避技术,也被称为域前端网络攻击技术。这是一种用来隐藏Metasploit,Cobalt Strike等团队控制服务器流量,以此来一定程度绕过检查器或防火墙检测的技术,如Amazon ,Google,Akamai 等大型厂商会提供一些域前端技术服务。</p>
<p>下列将会使用Amazon 提供CloudFront (CDN)服务举例。</p>
<p><strong>背景</strong></p>
<p>在虚拟主机中搭建多个网站服务,为了方便我们区分它们,可以 IP+Port名称 等方式去访问它们,但是如果是SSL/TLS的话。根据HTTPS的工作原理,浏览器在访问一个HTTPS站点时,先与服务器建立SSL连接。</p>
<p>建立连接的第一步就是请求服务器的证书。而服务器在发送证书时,是不知道浏览器访问的是哪个域名的,所以不能根据不同域名发送不同的证书。因此就引入一个扩展叫SNI,SNI是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展,做法就是在 Client Hello 中补上 Host 信息。</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/kqnjvgr0tr.png?imageView2/2/w/1620"></div>
<p>图1</p>
<p>域前端的关键思想是在不同的通信层使用不同的域名,是一种隐藏连接真实端点来规避互联网审查的技术。在应用层上运作时,域前置使用户能通过HTTPS连接到被屏蔽的服务,而表面上像在与另一个完全不同的站点通信。</p>
<p><strong>此技术的原理为在不同通信层使用不同的域名。</strong>在明文的DNS请求和TLS服务器名称指示(SNI)中使用无害的域名来初始化连接,而实际要连接的被封锁域名仅在创建加密的HTTPS连接后发出,在Host头中携带了另一个恶意C2域名(Host头对于检查器是不可见的,但是对于接收HTTPS请求的前端服务器是可见的)。</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/iedij6x4el.jpeg?imageView2/2/w/1620"></div>
<p>图2</p>
<p><strong>演示</strong></p>
<p>在Amazon CloudFront是一种内容交付网络服务。它为用户提供了一个全局分布式缓存,用于托管在其服务器上的文件。这减少了客户服务器上的负载,并允许CDN提供来自与请求者数据中心的缓存内容,当客户端连接到CloudFront的时候,其根据HOST头来判断客户端想要请求的域名,在做域前置攻击时候,只要<span style="background-color: rgba(255, 255, 0, 1)">在CloudFront中挑选一个受信任域名,如"https://docs.telemetry.mozilla.org",看起来是一个合法白名单域名,将他做为前置域名来躲避防火墙审查。</span></p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/20tbpdcxgx.jpeg?imageView2/2/w/1620"></div>
<p>图3</p>
<p>在Amazon CloudFront申请一个账户并建立一个CloudFront,<span style="background-color: rgba(255, 255, 0, 1)">在"Origin Domain Name"写入自己的C&C控制器域名如Godsong.test,其他设置按自己需求来。</span></p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/vqdph2ecsx.jpeg?imageView2/2/w/1620"></div>
<p>图4</p>
<p>申请完毕之后会自动分发<span style="background-color: rgba(255, 255, 0, 1)">一个随机域名 xxx.cloudfront.net样式,将颁发的随机域名指向真实C2服务器,用户访问此域名时候会解析到真实的C&C服务器。</span></p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/ojhdpvejqz.jpeg?imageView2/2/w/1620"></div>
<p>图5</p>
<p><strong><span style="background-color: rgba(255, 255, 0, 1)">域名前置因为使用了合法前置域名做诱饵,在使用HTTPS链接时,DNS请求的也都是合法域名,而在HOST中请求修改请求指向为我们C&C服务器</span>,相当于请求合法域名之后把流量转发到了中转web上。</strong></p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/sebseqc6wr.jpeg?imageView2/2/w/1620"></div>
<p>图6</p>
<p>在CloudFront为我分配了一个域名,此域名转发到我的C&C地址上,在原始C&C服务器Web存放了一个名为6.txt记事本,地址为https://www.godsong.test/6.txt。</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/m7n2bfggxl.png?imageView2/2/w/1620"></div>
<p>图7</p>
<p>访问Aws颁发的域名<span style="background-color: rgba(255, 255, 0, 1)">https://d305blu4121c3m.cloudfront.net/6.txt,能返回原始流量转发说明测试成功。</span></p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/pyouh7jghz.jpeg?imageView2/2/w/1620"></div>
<p>图8</p>
<p>使用合法白名单作为前置域名,修改Host指向为我们的C&C域名。</p>
<pre class="prism-token tokenlanguage-javascript">wget <span class="token operator">-U demo <span class="token operator">-q <span class="token operator">-O<span class="token operator">- docs<span class="token punctuation">.telemetry<span class="token punctuation">.mozilla<span class="token punctuation">.org<span class="token operator">/<span class="token number">6<span class="token punctuation">.txt <span class="token operator">--header
<span class="token string">"Host:d305blu4121c3m.cloudfront.net"</span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>如下图就成功利用Mozilla白名单域名技术来隐藏真实恶意流量。</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/es0boogz1c.jpeg?imageView2/2/w/1620"></div>
<p>图9</p>
<p>在实际应用中,可以使用Cobalt Strike ,Empire, Metasploit等工具修改其配置文件来控制流量传输,下文使用Cobalt Strike演示,设置一个Profile扩展并且指定Host头为d305blu4121c3m.cloudfront.net。</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/zze58ojom4.jpeg?imageView2/2/w/1620"></div>
<p>图10</p>
<p>创建一个监听器,主机写Cloudfront.net分发域名,监听80端口。</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/dxzjvbmpdx.jpeg?imageView2/2/w/1620"></div>
<p>图11</p>
<p>Beacon传输器使用白名单域名如下:</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/7g3v4ew9id.png?imageView2/2/w/1620"></div>
<p>图12</p>
<p>在恶意程序运行后,使用Wireshark 抓取传输流量数据包。如图所示,可以看到相关请求如下,以此方法来隐藏真实C&C服务器地址,在Wireshark 中查看传输流量包Host头也同样指向我们Cloudfront服务器,一定程度上隐蔽了真实攻击机地址。</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/votpax71rp.png?imageView2/2/w/1620"></div>
<p>图13</p>
<div class="image-block"><img src="https://ask.qcloudimg.com/http-save/yehe-6318226/56ucybh1oj.jpeg?imageView2/2/w/1620"></div>
<p>图14</p>
<p><strong>总结</strong>:Domain Fronting技术因为我们看到的域只是前端服务器域,很难区分那个是正常域名或恶意域名,但实际上恶意流量都要进入被控端服务器,这样的话就会在被控服务器上产生一些恶意指纹,网络数据包的大小和时间,以此方法来观察恶意特征检测等等。</p>
<p><strong>参考文献</strong></p>
<p>https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1542139101.pdf</p>
<p>图2,图6引用此文</p>
<p>http://www.ert7.com/service/knowledge/3999.html</p>
</div>
</div>
</div><br><br>
来源:https://www.cnblogs.com/bonelee/p/15200687.html
頁:
[1]