当前位置: 首页 > news >正文

观成科技:利用DoH加密信道的C2流量分析

  • 概述

DoH(DNS over HTTPS)是一种通过HTTPS协议加密传输DNS查询的信道,将DNS请求封装在HTTP/2或HTTP/3中,DoH没有标准端口,部分服务沿用TLS的443端口。传统DNS明文传输易被拦截或篡改,而DoH通过加密提升了隐私性和安全性。部分木马C2服务器可通过DoH信道,将恶意通信流量伪装成普通HTTPS流量,能有效规避防火墙和IDS检测,增加了检测难度,同时利用公共DoH解析器(如Google、Cloudflare),可进一步降低暴露风险。本文通过使用CobaltStrike配置相关插件,使木马和C2通信时,使用DoH信道进行通信,通过分析通信流量行为特征,结合正常使用时DoH的流量特征,对DoH恶意流量进行检测。

  • 木马上线流程

DoH信道C2通信

木马beacon中需配置公共DoH服务,本文中使用doh.pub公共DoH,上线流程同CS DNS信道相似。上图中C2信道使用双向虚线箭头标识。

  1. 受害机执行木马文件,木马首先会发送一条明文dns A类查询,获取doh.pub域名对应ip。
  2. 木马向公共doh.pub发送恶意域名查询,查询内容使用https加密,对应端口443,查询发送到公共DoH服务器后,DoH服务器进行递归查询,最终查询到配置的C2服务器中,C2服务器收到请求后,进行查询响应,木马完成上线。
  3. 受害机上线后,会持续发送心跳包,等待接收C2指令,整个过程可以很好的隐藏C2服务器位置,从受害机抓包查看木马通信流量,看到的仅是,木马同公共DoH服务的加密通信,流量中涉及到的域名为公共DoH域名,恶意域名被很好的隐藏在了https加密流量中。

 

  • 指令和流量分析

通过对TLS流量进行解密,详细分析,指令内容对应流量,从而总结行为特征。

木马上线后,如果没有指令下发,受害主机会一直向外发送DNS请求,域名前缀为长度为8的加密字符(每次上线时,长度会发生变化),查询类型为A查询,该查询数据中,不包含主机信息,C2接收到该心跳后,响应结果为0.0.0.0,如果有任务需要执行,会响应0.0.0.242或0.0.0.243,受害主机收到0.0.0.243响应后,会发送以api为前缀,查询类型为A的域名查询,C2服务器会返回以0.0.0开头的ip标识任务类型,之后会再发起一个以api为前缀,查询类型为txt的域名查询,来获取任务。

 

图一心跳包

攻击者下发第一条执行命令后,受害主机在执行指令前,会先将受害主机信息进行加密,拼接到域名前缀中发送到C2服务器,该查询请求中,最后一个域名前缀为www,默认配置下,www前缀的查询域名中,包含有受害主机的主机信息,查询响应均为0.0.0.0

图二 包含主机信息

攻击者下发shell指令whoami,受害主机会发送以api为前缀,查询类型为TXT的域名查询,查询结果即为待执行的任务,拿到任务后进行执行,执行获取到的结果加密后,拼接到前缀为post的域名中,通过A类查询,将结果发送到C2服务器。

图三 执行shell命令

攻击者如果向受害主机上传文件,在流量中会看到频繁的域名查询,查询前缀为api,查询类型为txt;攻击者如果从受害主机中拖取文件,在流量中也可看到频繁的域名查询,查询前缀为post,查询类型为A,因为dns隧道可携带的数据量较小,从受害主机中拖取文件,会持续非常长时间,在拖取过程中,受害主机会持续发送post前缀的域名查询。

虽然整个通信过程采用https加密通信,但通过对不同行为进行分析,可以发现特殊的指令执行和心跳流量等系列行为在加密后,所对应的长度变化模式不变,例如,心跳包中,DoH查询对应两个包,长度是相对固定的值周期重复,查询响应长度也是周期重复的固定值,每一组查询和响应的时间间隔呈现心跳特征,默认为1分钟1次,不过,心跳间隔攻击者可以修改。

图四 加密心跳包

  • 工具检测

目前,观成瞰云-加密威胁智能检测系统已经支持对使用该DoH信道的远程控制木马进行有效检出,检测告警见下图。

图五 告警详情

  • 总结

通过对cs木马使用DoH信道通信的研究,发现使用该信道虽然可以很好的对通信流量进行加密,且不直接同C2服务器通信,但同C2通信的多种行为模式没有发生变化,在加密流量中,可以进行识别。这仅为一类通过DoH信道进行木马回连的例子,后续观成科技安全研究团队将持续跟踪木马利用DNS over HTTPS信道通信的动态,并积极研究更新检测手段,检测此类网络攻击。

相关文章:

  • react实现SVG地图区域中心点呈现圆柱体,不同区域数据不同,圆柱体高度不同
  • oracle 存储体系结构
  • 【Python基础】散列类型
  • docker 中跑faster-whisper 教程(1050显卡)
  • VGA接口设计
  • 【工具使用】在OpenBMC中使用GDB工具来定位coredump原因
  • 【vue】v-bind=“$attrs“理解与使用
  • MPDrive:利用基于标记的提示学习提高自动驾驶的空间理解能力
  • 数据赋能——个人信息安全与大数据决策创新
  • 无法看到新安装的 JDK 17
  • ROS2_control 对机器人控制(不完整,有时间再更新)
  • 2025-04-08 NO.4 Quest3 交互教程
  • 算法(二十一)
  • nginx如何实现负载均衡?
  • 详解 Go 的常见环境变量及其在 zshrc 中的配置
  • ✅ Ultralytics YOLO 训练(Train)时实时获取 COCO 指标(AP):2025最新配置与代码详解 (小白友好 + B站视频)
  • 递归实现指数型枚举
  • 基于金字塔视觉变换的类引导网络高分辨率遥感图像高效语义分割
  • k8s 1.24.17版本部署(使用Flannel插件)
  • 数字人技术的核心:AI与动作捕捉的双引擎驱动(2/10)
  • 国务院关税税则委:调整对原产于美国的进口商品加征关税措施
  • 印度军方否认S-400防空系统被摧毁
  • 时代中国控股:前4个月销售额18.1亿元,境外债重组协议押后聆讯至5月底
  • 工程院院士葛世荣获聘任为江西理工大学校长
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心
  • 报告:4月份新增发行的1763亿元专项债中,投向房地产相关领域约717亿元