ATT&CK框架下的挖矿木马立体防御:基于Sysmon与EDR的实战检测指南
1. 挖矿攻击链的ATT&CK战术映射
现代挖矿木马已形成完整的攻击生命周期,从初始入侵到横向扩散呈现高度标准化特征。通过ATT&CK框架的战术阶段划分,我们可以清晰识别各环节的检测要点:
| ATT&CK战术阶段 | 典型技术(T编号) | 挖矿木马具体表现 | 检测优先级 |
|---|---|---|---|
| 初始访问 | T1078(有效账号) T1190(面向公众应用漏洞) | SSH/RDP弱口令爆破 Web应用漏洞利用(如Log4j) | 中 |
| 执行 | T1059(命令行界面) T1053(计划任务) | 下载PowerShell脚本 创建crontab/taskschd任务 | 高 |
| 持久化 | T1543(系统服务) T1547(启动项) | 注册恶意服务(如checkconfig) 写入rc.local/LaunchAgents | 高 |
| 防御规避 | T1070(日志删除) T1027(混淆文件) | 执行wevtutil cl安全日志清除 修改进程名(prctl) | 中 |
| 横向移动 | T1021(远程服务) T1110(暴力破解) | SMB共享传播 SSH密码 spraying攻击 | 低 |
检测策略设计原则:优先覆盖执行、持久化等高价值阶段,对防御规避行为需结合上下文判断,避免误报
2. 执行阶段检测:进程行为分析
2.1 Sysmon关键配置示例
<!-- 监控可疑子进程创建 --> <RuleGroup name="" groupRelation="or"> <ProcessCreate onmatch="include"> <ParentImage name="TechniqueID=T1059" condition="contains">\powershell.exe</ParentImage> <ParentImage name="TechniqueID=T1053" condition="contains">\schtasks.exe</ParentImage> </ProcessCreate> </RuleGroup> <!-- 检测矿池连接行为 --> <NetworkConnect onmatch="include"> <DestinationPort name="TechniqueID=T1071" condition="is">3333</DestinationPort> <DestinationPort name="TechniqueID=T1071" condition="is">5555</DestinationPort> </NetworkConnect>2.2 EDR检测逻辑设计
异常进程链检测:
def detect_suspicious_process_chain(): patterns = [ ["wget", "chmod +x", "./miner"], ["certutil", "-decode", "payload.b64", "payload.exe"], ["powershell", "-enc", "Base64EncodedCommand"] ] for proc in running_processes(): if any(all(cmd in proc.cmdline for cmd in pattern) for pattern in patterns): alert("Suspicious process chain detected")CPU资源占用模型:
# Linux系统检测脚本示例 top -b -n 1 | awk 'NR>7 && $9>70 {print "High CPU process:",$12,$9"%"}'
3. 持久化阶段检测:自启动机制识别
3.1 Windows系统检测点
注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run服务创建检测(Sysmon):
<RuleGroup name="Persistence"> <RegistryEvent onmatch="include"> <TargetObject name="T1543" condition="contains">\Services\</TargetObject> <Details name="ServiceInstall" condition="contains">binpath=</Details> </RegistryEvent> </RuleGroup>
3.2 Linux系统检测方案
定时任务监控:
# 对比当前crontab与基线差异 diff /etc/crontab /var/log/crontab.baseline系统服务检测:
systemctl list-unit-files --state=enabled | grep -E 'miner|xmrig'
4. 防御规避行为识别与处置
4.1 日志清除检测
<!-- 检测安全日志清除 --> <RuleGroup name="DefenseEvasion"> <ProcessCreate onmatch="include"> <CommandLine condition="contains">wevtutil cl</CommandLine> <CommandLine condition="contains">history -c</CommandLine> </ProcessCreate> </RuleGroup>4.2 文件隐藏技术对抗
Linux隐藏进程检测:
# 检测未在/proc显示但消耗CPU的进程 ps -eo pid | grep -vwFf <(ls /proc | grep '^[0-9]\+$') | xargs -r ps -fpWindows进程伪装检测:
Get-WmiObject Win32_Process | Where-Object { $_.Name -eq "svchost.exe" -and $_.ExecutablePath -notlike "*\system32\*" } | Select-Object ProcessId,CommandLine
5. 横向移动检测与网络隔离
5.1 内网扫描行为识别
<!-- 检测端口扫描行为 --> <RuleGroup name="Discovery"> <NetworkConnect onmatch="include"> <DestinationPort name="T1046" condition="is">22</DestinationPort> <DestinationPort name="T1046" condition="is">3389</DestinationPort> <DestinationIp condition="is">192.168.0.0/16</DestinationIp> </NetworkConnect> </RuleGroup>5.2 矿池通信阻断策略
| 协议特征 | 检测方法 | 处置措施 |
|---|---|---|
| Stratum协议 | JSON-RPC包含"mining.submit" | 阻断目的IP+端口 |
| XMRig协议 | HTTP POST含"login"参数 | 拦截域名解析 |
| 加密流量 | JA3指纹匹配矿池客户端 | TLS解密检测 |
6. 防御体系自查清单
6.1 检测覆盖度评估
- [ ] 所有管理端口(SSH/RDP)的暴力破解监控
- [ ] 计划任务/服务创建的实时审计
- [ ] 矿池域名/IP的情报匹配
- [ ] 高CPU进程的关联分析
- [ ] 日志清除操作的告警
6.2 响应处置流程
快速遏制:
# Linux示例:隔离受影响主机 iptables -A INPUT -s 192.168.1.100 -j DROP根除措施:
# Windows示例:清除持久化项 Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Miner" -Force恢复验证:
# 检查矿池连接残留 netstat -tulnp | grep -E '3333|5555|9999'
在实际部署中,建议将Sysmon作为基础数据采集层,EDR系统进行高级行为分析,两者协同构建纵深防御体系。某金融客户实践表明,该方案使挖矿木马驻留时间从平均14天缩短至2小时内,检测准确率达到92%以上。