【高级持续性威胁跟踪】红队视角看Sunburst后门中的TTPs
字数 3077 2025-08-24 07:48:09
Sunburst后门TTPs深度分析与红队技术借鉴
1. Sunburst后门概述
1.1 攻击背景
FireEye披露的UNC2452黑客组织通过SolarWinds供应链攻击影响约18000家客户。攻击者早在2019年10月就开始研究代码注入技术,将恶意代码插入SolarWinds.Orion.Core.BusinessLayer.dll文件,并获取了合法数字签名。
1.2 攻击流程
- 加载阶段:SolarWinds.BusinessLayerHost.exe加载被篡改的SolarWinds.Orion.Core.BusinessLayer.dll
- 环境检测:执行9层严格环境检查
- DNS上线:使用DGA算法生成域名进行DNS通信
- C2建立:使用两种User-Agent和3种代理模式建立HTTP控制通道
- Payload下载:可下载如Cobalt Strike beacon等自定义Payload
2. 代码执行技术分析
2.1 红队执行技术分类
| 类型 | 名称 | 描述 | 优点 | 缺点 |
|---|---|---|---|---|
| BYOB | Bring Your Own Binary | 上传编译好的exe文件执行 | 直接 | 需处理静态检测,频繁上传 |
| LotL | Living off the Land | 利用系统/应用白名单程序加载 | 规避检查 | 产生明显进程关系 |
| BYOL | Bring Your Own Land | 内存加载PE/.NET文件 | 无文件落地,隐蔽 | 需自定义开发 |
2.2 Sunburst执行特点
- 隐蔽加载:通过合法进程SolarWinds.BusinessLayerHost.exe加载恶意DLL
- 深度调用栈:6层调用后才开始执行恶意代码,增加分析难度
- 字符串混淆:使用自定义hash算法处理敏感字符串
- 线程分离:创建新线程执行恶意代码,主线程正常运作
3. 环境检测机制
3.1 九层检测机制
- 进程验证:校验加载进程为solarwinds.businesslayerhost.exe
- 潜伏期检查:DLL最后写入时间需早于当前时间12-14天
- 命名管道检查:避免重复执行(583da945-62af-10e8-4902-a8f205c72b2e)
- 配置项检查:ReportWatcherRetry,ReportStatus不为3
- 域名黑名单:
- 包含"solarwinds"、"test"等关键词
- 哈希黑名单包含swdev.local、lab.local等
- IP黑名单:检查网卡IP不在内网范围(10.0.0.0/8等)
- 进程黑名单:137个安全相关进程检测
- 驱动黑名单:13个安全软件驱动检测
- 域名解析验证:检查api.solarwinds.com解析结果
3.2 检测技术亮点
- 驱动检测意义:即使进程/服务被重命名,驱动路径和altitude不变
- 示例:Sysmon默认altitude为385201
- 哈希比较:所有检测项使用哈希值而非明文,规避字符串扫描
- 环境模拟检测:特别规避测试环境、安全分析环境
4. C2通信机制
4.1 DNS通信阶段
- DGA算法:生成随机域名,休眠间隔1-3分钟或30-120分钟
- 解析处理:
- 失败:休眠7-9小时后重试
- 成功:解析CNAME和IP,进行白名单/黑名单校验
- IP分类:
- Atm:内网IP黑名单(10.0.0.0/8等)
- Ipx:外网IP黑名单(41.84.159.0/24等)
- ImpLink:等待名单(20.140.0.0/15等)
- NetBios:白名单(8.18.144.0/23等)
4.2 HTTP控制阶段
- User-Agent:
- 伪装Windows证书吊销列表检查
- 使用SolarWinds合法User-Agent
- 代理配置:
- 无代理
- 系统代理
- SolarWinds配置代理
- 数据封装:使用JSON格式封装数据,混入正常字段
4.3 命令功能
| 命令ID | 功能描述 |
|---|---|
| 0 | 空闲 |
| 1 | 结束进程 |
| 2 | 设置延迟时间 |
| 3 | 收集系统信息 |
| 4 | 上传系统信息 |
| 5 | 启动新进程 |
| 6 | 枚举进程 |
| 7 | 结束指定进程 |
| 8 | 枚举文件 |
| 9 | 写入文件 |
| 10 | 检查文件存在 |
| 11 | 删除文件 |
| 12 | 获取文件MD5 |
| 13 | 读注册表 |
| 14 | 写注册表 |
| 15 | 删注册表 |
| 16 | 枚举注册表 |
| 17 | 系统重启 |
5. DGA算法深度解析
5.1 生成机制
- 基础数据:
- MachineGuid(HKLM\SOFTWARE\Microsoft\Cryptography)
- 首个网卡MAC地址
- UID生成:MD5(MachineGuid+MAC),16字节数组异或得64位哈希
- 加密处理:
CryptoHelper.Base64Encode:实际为自定义Base32CryptoHelper.Base64Decode:自定义加密算法
5.2 域名格式
- 第一阶段DGA:
- GetCurrentString/GetPreviousString
- 示例:
0fn7oe4cegrf933c[00]mudofi75f4tjvh
- 第二阶段DGA:
- GetNextStringEx/GetNextString
- 示例:
spsd.sk.ca
- GUID重用:相同GUID用于分割长域名,逆向拼接得完整域名
6. 红队技术借鉴
6.1 隐蔽执行建议
- LotL进阶:修改合法DLL而非劫持,保持数字签名
- 调用栈混淆:增加调用深度,延缓动态分析
- 内存操作:实现BYOL技术,避免文件落地
6.2 环境检测优化
- 驱动检测:补充进程检测的不足,识别重命名安全产品
- 哈希应用:关键字符串全部哈希处理,规避静态扫描
- 环境指纹:收集测试环境、沙箱特有特征
6.3 C2通信改进
- 协议组合:DNS+HTTP混合使用,分段检测
- 流量伪装:
- 复用业务User-Agent
- 支持多种代理配置
- 数据混入业务字段
- DGA设计:
- 分阶段生成算法
- 结合系统唯一标识
- 自定义编解码算法
7. 防御建议
- 供应链安全:加强代码签名验证,实施双人审核
- 异常检测:
- 监控DLL加载异常
- 分析深层次调用栈
- 网络监控:
- 检测非常规DNS查询模式
- 分析HTTP流量中的异常User-Agent
- 环境加固:
- 随机化测试环境标识
- 监控驱动加载行为
附录:关键检测项
完整进程、驱动、服务哈希黑名单参见原文,包含:
- 137个进程哈希(如Windbg、Wireshark等)
- 13个驱动哈希(如groundling32.sys等)
- 安全服务哈希(如碳黑、Crowdstrike等)
总结
Sunburst后门展现了高级APT组织的TTPs特点:
- 隐蔽优先:所有设计以规避检测为第一原则
- 深度潜伏:长期研究供应链漏洞,早于攻击数月植入
- 环境感知:多层严格检查,确保只在目标环境激活
- 通信灵活:多种协议组合,自适应网络环境
红队行动可借鉴其OpSec设计理念,平衡隐蔽性与功能性,特别是在BYOL实现、环境检测和C2通信方面。