$npx -y skills add killvxk/cybersecurity-skills-zh --skill analyzing-powershell-script-block-logging从 EVTX 文件中解析 Windows PowerShell 脚本块日志(事件 ID 4104),以检测混淆命令、编码载荷和离地攻击技术(living-off-the-land)。使用 python-evtx 提取并重建多块脚本,通过熵分析和模式匹配检测 Base64 编码命令、Invoke-Expression 滥用、下载植入器(download cradles)和 AMSI 绕过尝试。
| 1 | ## 使用说明 |
| 2 | |
| 3 | 1. 安装依赖: `pip install python-evtx lxml` |
| 4 | 2. 收集 PowerShell 操作日志: `Microsoft-Windows-PowerShell%4Operational.evtx` |
| 5 | 3. 使用 python-evtx 解析事件 ID 4104 条目,提取 ScriptBlockText、ScriptBlockId 以及 MessageNumber/MessageTotal,用于多块脚本重建。 |
| 6 | 4. 应用检测启发式规则: |
| 7 | - Base64 编码命令(`-EncodedCommand`、`FromBase64String`) |
| 8 | - 下载植入器(`DownloadString`、`DownloadFile`、`Invoke-WebRequest`、`Net.WebClient`) |
| 9 | - AMSI 绕过模式(`AmsiUtils`、`amsiInitFailed`) |
| 10 | - 混淆指标(高熵、反引号插入、字符串拼接) |
| 11 | 5. 生成报告,包含重建脚本、风险评分和 MITRE ATT&CK 映射。 |
| 12 | |
| 13 | ```bash |
| 14 | python scripts/agent.py --evtx-file /path/to/PowerShell-Operational.evtx --output ps_analysis.json |
| 15 | ``` |
| 16 | |
| 17 | ## 示例 |
| 18 | |
| 19 | ### 检测编码命令执行 |
| 20 | ```python |
| 21 | import base64 |
| 22 | if "-encodedcommand" in script_text.lower(): |
| 23 | encoded = script_text.split()[-1] |
| 24 | decoded = base64.b64decode(encoded).decode("utf-16-le") |
| 25 | ``` |
| 26 | |
| 27 | ### 重建多块脚本 |
| 28 | 拆分在多个 4104 事件中的脚本共享一个 `ScriptBlockId`。按 `MessageNumber` 顺序拼接各块以恢复完整脚本。 |