大家好,我是AI紫队安全研究。建议大家把公众号“AI紫队安全研究”设为星标,否则可能就无法及时看到啦!因为公众号只对常读和星标的公众号才能大图推送。操作方法:先点击上面的“AI紫队安全研究”,然后点击右上角的【...】,然后点击【设为星标】即可。
关注视频号 “AI紫队安全研究” 不定期周五晚上10点直播。
9.1 SolarWinds:构建阶段后门的工程化范式
2020年12月曝光的SolarWinds供应链攻击是现代APT工程的分水岭事件。攻击者(被归因为APT29/Cozy Bear)没有直接攻击目标网络,而是入侵了SolarWinds Orion平台的构建流水线,在合法软件的编译过程中注入后门代码。这一手法的致命性在于:后门代码携带SolarWinds的合法数字签名,通过了所有基于签名信任的安全检查。
9.1.1 构建阶段注入 vs 源码篡改
SolarWinds事件最值得剖析的工程细节是:攻击者没有修改源代码仓库。他们入侵的是SolarWinds的构建环境(CI/CD流水线),在编译阶段插入了一段额外的DLL——SolarWinds.Orion.Core.BusinessLayer.dll。这段DLL被正常编译、正常签名、正常打包进官方安装包。
graph LR
subgraph 正常构建流水线
SRC["源码仓库<br/>Git/TFVC"] --> BUILD["编译服务器<br/>MSBuild"]
BUILD --> SIGN["代码签名<br/>Authenticode"]
SIGN --> PKG["安装包<br/>OrionPlatform.msi"]
PKG --> DELIVER["分发渠道<br/>官网下载/自动更新"]
end
subgraph 被入侵的流水线
SRC2["源码仓库<br/>(未修改)"] --> BUILD2["编译服务器<br/>(被植入注入脚本)"]
BUILD2 --> INJECT["插入后门DLL<br/>SolarWinds.Orion.Core.BusinessLayer.dll"]
INJECT --> SIGN2["代码签名<br/>(合法证书签名后门DLL)"]
SIGN2 --> PKG2["安装包<br/>(含后门,签名合法)"]
PKG2 --> DELIVER2["分发渠道<br/>18,000+客户安装"]
end
style INJECT fill:#0d1117,stroke:#e94560,color:#fff
style SIGN2 fill:#0d1117,stroke:#0f3460,color:#fff
这一设计绕过了几乎所有基于”签名信任”的验证机制——因为后门DLL确实是由SolarWinds的合法证书签名的。防御侧的信任锚(代码签名证书)被攻击者用作武器,这正是供应链攻击的恐怖之处。
9.1.2 SUNBURST后门的工程化特征
被植入的DLL在运行后不会立即激活——它首先经历一个长达12-14天的休眠期。这一设计的目的纯粹是规避沙箱分析和自动化动态检测:大多数沙箱的观察窗口不超过数小时,12天的休眠窗口足以让后门”活过”所有自动化分析。
激活后,SUNBURST后门的C2通信伪装为Orion平台的正常API请求(HTTPS到avsvmcloud.com等域名),通信流量在协议层与合法Orion遥测流量无法区分。后门还内置了”目标过滤”逻辑——如果检测到当前环境属于安全研究机构或政府组织(通过域名、进程列表判断),则永久不激活。
检测面在哪里:
对抗层 |
攻击者策略 |
检测面 |
构建环境 |
不改源码,改构建流水线 |
对CI/CD服务器的进程审计、构建日志基线比对 |
代码签名 |
后门携带合法签名 |
不能仅信任签名——需结合行为分析,签名+行为异常双维度判定 |
休眠期 |
12-14天延迟激活 |
|
C2通信 |
伪装为合法Orion API流量 |
DNS行为分析——Orion正常通信的目标域名有基线,新增域名需审查 |
目标过滤 |
检测安全研究环境后自禁用 |
反向利用——在分析环境中模拟”非目标”特征可能触发后门激活 |


