首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用Domain Borrowing对抗流量检测设备

利用Domain Borrowing对抗流量检测设备

作者头像
黑白天安全
发布于 2023-09-20 11:04:48
发布于 2023-09-20 11:04:48
5710
举报

背景

Domain Borrowing是腾讯安全玄武实验室的安全研究员 Tianze Ding 和 Junyu Zhou 在Black Hat Asia 2021演讲中分享介绍的一种使用 CDN 隐藏 C2 流量以规避审查的新方法。借用在某些 CDN 实现中发现的一些技巧,将它们链接在一起以“借用”域及其有效的 HTTPS 证书来隐藏我们的 C2 流量,特别是当我们的 C2 流量的 SNI 和 HOST 相同时。

自研究议题的后一个星期我们就应用到了日常的攻防演练和红队评估项目中去,效果不错,以后不打算参与攻防演练和红队评估中去了,所以跟大家分享一下,希望可以帮助到读者。

对抗,什么叫对抗?我们首先得先要知道蓝队和安全设备是怎么定义一个流量为正常或恶意的以及目前上常用的流量隐藏方法都有什么不足。

怎么定义一个流量为正常或恶意?

这里我们可以分为2个部分来分析:

1.相对于安全设备来说判断一个流量是否为恶意的通用方法为:

基于黑名单:

  • 使用已知的恶意IP地址、域名、URL或文件哈希值的黑名单进行比对。如果流量中的信息与黑名单中的任何一项匹配,可以将其定义为恶意;

异常行为:

  • 监测流量中的异常行为,如频繁的连接尝试、大规模数据传输、不明确的协议或端口扫描;

威胁情报

  • 使用威胁情报服务来获取有关已知威胁的信息,包括恶意IP地址、域名、URL和恶意文件的哈希值。如果流量与已知威胁相关联,可以将其定义为恶意;

等等。其中利用Domain Borrowing对抗可以为基于黑名单和威胁情报。

2.对于蓝队来说,一般都为拿捕捉到的域名/IP去查微步等等这些威胁情报来判断是不是恶意的域名,然后进行封闭和溯源操作。但是在微步中存在一些官方标记为白名单的域名,对于这样利用Domain Borrowing劫持一些官方标记为白名单的域名用来对抗威胁情报和防止溯源操作。

常用的流量隐藏方法都有什么不足?

目前在国内攻防演练和红队评估中常用来隐藏C2真实IP和伪造通信流量的方法有加CDN(但域名是自己的)、Domain Fronting和云函数

1.加CDN

加CDN也是常见的红队来隐藏C2真实IP的方法,但是仅仅加个CDN域名还是红队的资产,一样存在被溯源分析的风险,同时域名基本没有信任度给捕捉加入威胁情报之后一定会给设备自动封闭。

2.Domain Fronting

Domain Fronting是Fifield David等研究人员在2015年提出的一种基于CDN的隐蔽通信方法,该方法至今仍被广泛应用于真实APT攻击和红蓝对抗中。主要利用了CDN转发HTTP请求时的特性。

利用了CDN转发HTTP请求时的特性可以在前端伪造任何域名,但是也存在一个致命的缺点流量的SNI和HOST不相同和没有办法伪造有效的SSL,目前设备基本都可以自动检测到,目前Cloudflare、AWS CloudFront、Google Cloud CDN等厂商也都纷纷禁用了这种隐蔽通信方法。

3.云函数

云函数没有什么好说的,就是一个转发,但是域名太明显了,一看就知道是使用云函数,直接分析封闭即可。

我们到底需要什么?

如果想要对抗设备,我们需要劫持一个白名单的域名并拿到对应的SSL和隐藏真正的C2 IP,这样在设备中看来是跟正常域名通信,在蓝队中看来域名是正规组织企业的不敢乱封,同时查微步也是白名单。例如红雨滴团队@ 奇安信威胁情报中心2022-08-03捕捉的样本“借助码云,仿冒微软,回连某电视台网站的RT样本分析”中提到

C2:

post.i.api.***tv.cn(主域名***tv.cn是属于某广播电视台的正常域名,疑似被攻击者控制)

基本上溯源到这一步就很难溯源下去了。那么主域名***tv.cn是属于某广播电视台的正常域名被攻击者控制了吗,我认为并不是。

我们需要怎么做?

目前利用Domain Borrowing即可以,通过Domain Borrowing技术我们搭建一套没有什么缺点流量的C2,下面以上面样本“借助码云,仿冒微软,回连某电视台网站的RT样本分析”中的post.i.api.***tv.cn,主域名***tv.cn是属于某广播电视台的正常域名为例演示下红队是如何劫持post.i.api.***tv.cn和获取对应的证书。

一般情况下如果我们需要在CDN平台为某个域名启用CDN,我们需要把CDN的CNAME域名添加到域名的DNS中,但是我们在国内的某个云平台中发现有一些CDN用户设置了CDN的CNAME域名添加到域名的DNS中,例如设置了“*.domain.com”,就是说为所有子域名启用CDN。但是该CDN平台并没有做域名的归属权。简单来说就是:

用户A需要为xxx.com主域名和子域名启用CDN,为了方便把*.xxx.com的CNAME域名添加到域名的DNS中。

那么用户B就可以直接在这个CDN平台中使用你的xxx.com子域名。

1.我们需要找一个使用这个云CDN客户的域名,可以CDN的节点IP来反查这些域名,优先劫持白名单域名,例如某广播电视台的域名:

然后我们直接添加子域名到我们的CDN后台即可。

到目前我们劫持了一个白名单(高信誉)的域名,并成功通过域名链接到了我们的服务器,下一步我们需要获取这个域名的对应的有效SSL证书

目前市面上申请证书可以通过文件验证和DNS验证,文件验证是把规定的文件上传到服务器,然后验证方通过从域名读到这个验证文件为验证通过,然后发放对应域名的SSL证书和Key;

所以我们申请post.i.api.***tv.cn通过文件验证申请SSL证书即可。

那么到目前为止我们劫持了一个白名单(高信誉)的域名和配置了对应的SSL证书,恶意流量通过这个域名SSL加密连接到我们的C2,基本上无论是在设备中还是蓝队看来基本没有问题。

同时我们可以通过在CDN和在C2通过Nginx中设置一个流量过滤只允许目标的流量连接到C2,同时也可以把C2的真正端口通过Nginx反向代理出来,C2的真正端口设置为只允许127.0.0.1访问,那么基本上溯源到真正的服务器比较难。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-12 22:09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
http请求415错误Unsupported Media Type
之前用了封装的ajax,因为请求出了点问题,我试了下jQuery的$.ajax,报出了415的错误,从没遇到过这个错误,所以也是花了不少时间在研究这个问题的出处
全栈程序员站长
2022/09/07
2.7K1
http请求415错误Unsupported Media Type
计算机网络 — HTTP协议 和 HTTPS[通俗易懂]
HTTP (HyperText Transfer Protocol, 超文本传输协议) 是一种应用非常广泛的 应用层协议.
全栈程序员站长
2022/11/03
1.1K0
计算机网络 — HTTP协议 和 HTTPS[通俗易懂]
HTTP请求报文和响应报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
10JQKA
2019/10/23
2.6K0
HTTP请求报文和响应报文
常见HTTP请求错误码大全
响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。 响应码分五种类型,由它们的第一位数字表示: 1xx:信息,请求收到,继续处理 2xx:成功,行为被成功地接受、理解和采纳 3xx:重定向,为了完成请求,必须进一步执行的动作 4xx:客户端错误,请求包含语法错误或者请求无法实现 5xx:服务器错误,服务器不能实现一种明显无效的请求 一些常见的状态码为:(如有疑问,欢迎留言) 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细介绍: 2x
三哥
2018/06/27
3.2K0
2018-06-20 HTTP相关知识关于Content-TypePOST常见数据提交类型关于HTTP关于MIME类型
原文地址:https://blog.csdn.net/woaixiaoyu520/article/details/76690686
Albert陈凯
2018/07/24
2K0
网络编程之HTTP header请求头详解
(3)HTTP/1.1: URI(Uniform Resource Identifier,统一资源标识符)及其版本
lyb-geek
2018/07/26
2K0
【网络原理】关于HTTP状态码以及请求的构造的哪些事
我们在平时上网的时候,有没有过这种出现404 not found的情况,当然是存在的,但是为什么没有搜索的网页的时候,就会出现这个呢???其实这就是一个HTTP的状态码,所以接下来小编将带你解开这其中的奥秘~~
用户11288949
2024/11/21
1960
【网络原理】关于HTTP状态码以及请求的构造的哪些事
HTTP 基础
对于应用开发工程师,我们无时无刻不在接触 HTTP 协议。为了更好的完成我们的应用开发任务,对于 HTTP 的透彻理解就显得必不可少了。 这一篇就对 HTTP 协议做一个完整而透彻的讲解。
1ess
2021/10/29
5040
HTTP实用指南 - 笔记
HTTP( Hyper Text Transfer Protocol ) 模型如下图所示,是一个应用层(见上图)的协议,基于 TCP 协议,它有如下特点:
TagBug
2023/03/17
1K0
HTTP实用指南 - 笔记
Http实战之Wireshark抓包分析
Wireshark(前身 Ethereal)是一个网络包分析工具。该工具主要是用来捕获网络数据包,并自动解析数据包,为用户显示数据包的详细信息,供用户对数据包进行分析。
程序员DMZ
2022/11/18
3.8K0
Http实战之Wireshark抓包分析
HTTP跨域请求后台处理
字面意思就是从Y域中去Http请求X域的后台,但是请求反馈的资源的Http头中没有包含'Access-Control-Allow-Origin'内容,什么意思呢?
Cloudox
2021/11/23
9020
一些编码有关的HTTP报头
Transfer-Encoding只有一个取值那就是chunked,如果赋值了的话那就表示分块编码传输, Content-Length不确定,会在块尾
h0cksr
2023/05/17
4020
详解http报文
作为一个web开发者,每天都在使用者Http协议,却总是一知半解。本文参看Http RFC7230规范,梳理了http报文部分。
方丈的寺院
2019/10/08
1.1K0
详解http报文
(建议精读)HTTP灵魂之问,巩固你的 HTTP 知识体系
上回就已经承诺过大家,一定会出 HTTP 的系列文章,今天终于整理完成了。作为一个 web 开发,HTTP 几乎是天天要打交道的东西,但我发现大部分人对 HTTP 只是浅尝辄止,对更多的细节及原理就了解不深了,在面试的时候感觉非常吃力。这篇文章就是为了帮助大家树立完整的 HTTP 知识体系,并达到一定的深度,从容地应对各种灵魂之问,也同时提升自己作为一个 web 开发的专业素养吧。这是本文的思维导图:
桃翁
2020/04/07
1.1K0
(建议精读)HTTP灵魂之问,巩固你的 HTTP 知识体系
Postman系列之发送不同HTTP类型请求
借助工具模拟客户端向服务端发送请求报文,服务端接收请求报文后,对相应的报文做出处理并向客户端返回应答;工具模拟客户端接收应答,检查应答是否准确。
可可的测试小栈
2020/03/31
2.8K0
Postman系列之发送不同HTTP类型请求
http 301、302、304、400、405、415状态码解释
301 moved permanently、302 found、303 see other
全栈程序员站长
2022/06/26
7.5K0
http 301、302、304、400、405、415状态码解释
http协议
—————————–195362999817818974031690194806 // 头部boundary Content-Disposition: form-data; name=”userfile”; filename=”vcpg” // 内容属性,form-data; name=”服务器用于接收文件的参数名”: filename=”文件被发送给服务器时所使用的名称” Content-Type: application/octet-stream // 万能文件类型 // 空行 // 文件内容开始 //… // 文件内容结束 —————————–195362999817818974031690194806– // 尾部boundary,其紧贴文件内容的结尾
leobhao
2022/06/28
7770
在B站看猫片被老板发现?不如按下F12学学HTTP
HTTP 全称超⽂文本传输协议,也就是HyperText Transfer Protocol。 其中我们常见的文本,图片,视频这些东西都可以用超文本进行表示,而我常看的猫片,也属于超文本,所以大家不要再说我偷偷看猫片了,我只是在看超文本。HTTP只是定义了一套传输超文本的规则,只要符合了这一套规则,不管你是用iphone,还是用老爷机,都可以实现猫片的传输。
9号同学
2021/03/03
1.2K0
在B站看猫片被老板发现?不如按下F12学学HTTP
HTTP 协议的前世今生
Web 界面当然不会凭空出来,根据 Web 浏览器地址栏中指定的 URL,Web 使用一种名为 HTTP 的协议作为规范,完成从客户端到服务端的一些流程。「可以说,Web 是建立在 HTTP 协议上进行通信的」。
飞天小牛肉
2021/02/26
4400
HTTP 协议的前世今生
HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1
书童小二
2018/09/03
2.7K0
HTTP请求响应报文&&相关状态码&&GET_POST请求方法  总结
推荐阅读
相关推荐
http请求415错误Unsupported Media Type
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档