观成科技:利用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信道通信的动态,并积极研究更新检测手段,检测此类网络攻击。

相关推荐
kfepiza3 小时前
Debian的`/etc/network/interfaces`的`allow-hotplug`和`auto`对比讲解 笔记250704
linux·服务器·网络·笔记·debian
无妄-20243 小时前
软件架构升级中的“隐形地雷”:版本选型与依赖链风险
java·服务器·网络·经验分享
群联云防护小杜5 小时前
构建分布式高防架构实现业务零中断
前端·网络·分布式·tcp/ip·安全·游戏·架构
独行soc6 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 33(题目+回答)
linux·科技·安全·网络安全·面试·职场和发展·护网
岸边的风8 小时前
无需公网IP的文件交互:FileCodeBox容器化部署技术解析
网络·网络协议·tcp/ip
Zonda要好好学习8 小时前
Python入门Day4
java·网络·python
riverz12279 小时前
TCP backlog工作机制
服务器·网络·tcp/ip
yqcoder9 小时前
1. http 有哪些版本,你是用的哪个版本,怎么查看
网络·网络协议·http
求职小程序华东同舟求职11 小时前
龙旗科技社招校招入职测评25年北森笔试测评题库答题攻略
大数据·人工智能·科技
Fanmeang12 小时前
OSPF路由过滤
运维·网络·华为·ip·路由·ospf·路由过滤