- name
- windows-incident-response
- description
- Windows主机应急响应处置技能(源自 NOP Team《Windows应急响应 Cookbook v1.2》全量内容,全部图形化操作已转化为命令行)。覆盖挖矿病毒、远控后门、勒索病毒、暴力破解(RDP/SMB/SNMP/FTP/MSSQL)、钓鱼、非持续性恶意外连、隧道、BadUSB、MSSQL后门九类事件处置,38项常规安全检查(隐藏账户/启动项/计划任务/服务/WMI事件订阅/COM劫持/IFEO/AppInit/Winsock/屏幕保护等30余种权限维持排查)、善后定损、取证小技巧。远程处置走 Windows 自带 WinRM 通道(控制台工具或 pywinrm 直连),支持 AI 免 RDP 全自动命令行取证。当用户报告或要求处理 Windows 主机被入侵、CPU异常、挖矿、勒索加密、RDP/SMB/FTP/MSSQL爆破、可疑外连、后门、隧道、webshell,或要求应急响应、安全检查、权限维持排查、取证分析时使用。
# Windows 应急响应
本技能是《Windows应急响应 Cookbook v1.2》(NOP Team,830页)的结构化 CLI 化转写版本([原著仓库](https://github.com/Just-Hack-For-Fun/Windows-INCIDENT-RESPONSE-COOKBOOK) · [在线阅读](https://book.noptrace.com/);双层许可:源自原手册的内容遵循 GPL-3.0,本项目 GUI→CLI 转化与新增内容以 MIT 发布,详见 LICENSE),按事件类型拆分为 `references/`,保留原书页码(`pN`)可回溯。**核心改编:原书大量流程依赖 GUI(任务管理器/regedit/事件查看器/lusrmgr 等),本技能已全部转为命令行等价操作**,GUI 工具(Process Explorer/System Informer/OpenArk/Autoruns 等)仅作为交互式人工排查的备选提及。
## 使用流程
0. **有 WinRM 凭据时优先用控制台工具**:`python scripts/win-ir-console-web.py`(WebUI,浏览器打开 http://127.0.0.1:8527)填目标地址勾选检查项一键排查+标记+查杀,参数化检查项支持路径定向,人工环节工具内提示;无浏览器环境用 `win-ir-console.py`(tkinter);只有命令行通道时按下述流程手动处置。
1. **判断事件类型**,按"场景路由"读取对应参考文件(处置前先读 `references/00-cheatsheet.md` 取命令,参考文件里有完整背景与页码)。
2. 所有事件都遵循**统一处置主线**(下节),场景文件只讲差异部分。
3. 进程与文件处置完成后,**必须**走"善后阶段 + 常规安全检查"——挖矿/远控事件通常伴随多种权限维持后门(隐藏账户、计划任务、WMI订阅、COM劫持等),只删恶意文件不查后门必然复发。
4. 报告结论时给出:事件定性、IOC(IP/域名/文件MD5)、时间线、已处置项、遗留风险、加固建议。
5. **遇到"人工介入点"(见下节)必须停下来提醒用户去操作**,标注清楚谁、在哪、做什么、如何回报;不得跳过、不得假装已由 Agent 完成。
## 场景路由
| 场景 | 参考文件 |
|---|---|
| 命令速查(高频命令单行版,先读这个) | `references/00-cheatsheet.md` |
| 任何事件开始前(物料/工具准备,CLI 化配置) | `references/01-preparation.md` |
| 挖矿病毒(CPU异常、可疑外连矿池) | `references/02-mining.md` |
| 远控后门(EDR 告警文件、外连 C&C 的 IP:端口) | `references/03-backdoor.md` |
| 挖矿/远控/非持续共用核心流程(找pid→样本→启动时间→查杀→删文件) | `references/04-core-procedures.md` |
| 勒索病毒(文件被加密、勒索信) | `references/05-ransomware.md` |
| 暴力破解(RDP/SMB/SNMP/FTP/MSSQL 爆破告警) | `references/06-brute-force.md` |
| 钓鱼事件 | `references/07-phishing.md` |
| 非持续性事件(恶意外连偶尔出现、抓不到进程) | `references/08-non-persistent.md` |
| 隧道事件(DNS/ICMP/TCP/UDP/KCP/QUIC/Web 隧道) | `references/09-tunnel.md` |
| BadUSB 投毒事件 | `references/10-badusb.md` |
| MSSQL 事件排查(xp_cmdshell/程序集/Job/触发器) | `references/11-mssql.md` |
| 善后阶段(定损、横向排查、改密) | `references/12-aftermath.md` |
| 常规检查① 账号与登录(用户/隐藏账户/会话/RDP记录) | `references/13-checklist-accounts.md` |
| 常规检查② 权限维持(启动项/计划任务/服务/WMI事件订阅) | `references/14-checklist-persistence.md` |
| 常规检查③ 行为痕迹(近期活动/证书/命令历史/PS配置/敏感目录/浏览器) | `references/15-checklist-artifacts.md` |
| 常规检查④ 系统状态(网络/进程/环境变量/补丁/日志/BITS/防火墙/Defender) | `references/16-checklist-system.md` |
| 常规检查⑤ 劫持类后门(DLL/AppCert/AppInit/Shimming/IFEO/COM/PasswordFilter/NetworkProvider/Winsock) | `references/17-checklist-hijack.md` |
| 取证小技巧(文件查找/时间筛选/内存搜串/内网传输) | `references/18-tips.md` |
| 知识点附录(RDP登录权限规则/登录类型表/计划任务机制/服务隐藏对抗/签名验证) | `references/19-appendix.md` |
| 常见问题(文件被隐藏/恶意文件被删后如何溯源) | `references/20-troubleshooting.md` |
| 远程处置通道(WinRM 直连:目标无直接通道时的命令行取证方案) | `references/21-winrm.md` |
辅助脚本(上传受害机前先审计内容):
- `scripts/win-ir-console-web.py` — **★远程应急响应控制台(WebUI,首选)**:`python win-ir-console-web.py [--port 8527 --open]` 后浏览器操作。填目标 IP + WinRM 凭据 → 14 模块 **63 项细粒度检查**(可单独勾选,侧栏 默认/全选/清空 + 底部执行按钮,隐藏服务枚举/全命名空间 WMI 等重项默认关闭);**13 个参数化检查项支持路径定向**(路径/pid/服务名/任务名/IP/注册表键/天数);点选检查项在**底部命令预览 dock** 实时显示将执行的命令(可收起);无论是否有发现均全量落盘 `IR_logs/IR_*.log`,可导出 Markdown 报告;「自定义命令」页内置 **8 个常用命令模板**(最早RDP登录/计划任务动作/按名搜索/读文件/MD5/外连/读flag目录,免手写转义)+ 命令历史 + Ctrl+Enter;发现项可标记(持久化)→ **定向查杀**按类型自动处置(执行前确认);「人工介入指引」页签给出 GUI-only 环节的用户操作步骤;连接参数自动记忆、pywinrm 三层超时对齐 + 瞬断自动重试、中文输出(UTF-8 prelude + wmic UTF-16/GBK 智能解码)。依赖 `pip install pywinrm`
- `scripts/win-ir-console.py` — 同功能的 tkinter 桌面版(无浏览器环境时备用)
- `scripts/win-triage.ps1` — 一键体检(无 GUI 纯 CLI 采集,输出文本报告;适合通道只有命令行时上传目标机执行)
- `scripts/win-monitor-conn.bat` — 地址诱骗/非持续性事件:监控连向指定 IP 的进程并自动落盘取证(netstat + wmic 循环)
## 统一处置主线
挖矿、远控、隧道、非持续性、BadUSB 共用同一条主线,仅"定位 pid"入口不同(完整命令见 `04-core-procedures.md`):
```
梳理现场(IOC:IP/域名/文件MD5 → 威胁情报研判 → 二次核实 → 问历史事件)
↓
定位异常进程 pid ←入口因场景而异:
挖矿: Get-Process 按 CPU/内存/网络排序(tasklist/wmic/PS 三选一)
远控: EDR给文件→handle.exe 查占用反查进程;态势给IP:端口→netstat -ano | findstr / Get-NetTCPConnection
隧道: netsh trace 抓包 + etl2pcapng → Packet comments 里带 PID(p243)
非持续性: hosts 重定向恶意域名 → win-monitor-conn.bat 部署监控 → 等待触发
↓
查进程详情(名称/路径/命令行/启动时间):
wmic process where ProcessId=<pid> get Name,ExecutablePath,CommandLine /format:list
(Get-Process -Id <pid>).StartTime;wmic process where ProcessId=<pid> get CreationDate
↓
采样取证(网络/U盘取样本 → 微步/VT/哈勃等沙箱)→ 处置:
暂停进程 pssuspend <pid> / 恢复 pssuspend -r <pid>
杀进程 taskkill /F /PID <pid> | Stop-Process -Id <pid> -Force | wmic ... call Terminate
杀进程树 taskkill /F /T /PID <pid>(/T 连同子进程)
↓
删文件前:handle.exe <路径> 查占用(占用进程可能就是恶意进程)→ reg query 全局搜该文件路径关联的持久化 → del / Remove-Item
↓
善后阶段(12-aftermath.md):定损 → 同密码/同漏洞/同管理员机器横向排查 → 改强密码
↓
常规安全检查(跑 scripts/win-triage.ps1 + 对照 13~17 各检查文件):找出隐藏后门,防复发
```
### 关键规则
- **杀进程**:先看父子关系——`wmic process where ProcessId=<pid> get ParentProcessId`;`taskkill /T` 杀树;有守护进程的恶意程序先杀守护(否则主程序复活)。线程级注入(附在正常业务进程里的恶意线程)慎杀,易搞崩业务,先与客户确认。
- **删文件**:`del` 删不掉按顺序排查:① `handle.exe <文件>` 查占用进程 ② `attrib <文件>` 查隐藏属性 → `attrib -s -h -r` ③ reg query 搜该文件全路径找持久化引用 ④ 还不行用 `PsExec64 -s` 提 SYSTEM 权限删。搜索到注册表引用**不要急着删**,先与各方确认。
- **hosts 修改**:诱捕/阻断时直接编辑 `C:\Windows\System32\drivers\etc\hosts`(GUI"无法保存"问题:先存桌面再覆盖)。
- **时间基准**:事件日志/WMIC 里时间是 **UTC**(`2022-06-28T12:13:51Z` = 北京时间 20:13:51),对时间线时 +8h,避免误判。
- **命令行工具字符集**:中文系统下 `findstr`/日志文本多为 GBK;PowerShell 输出统一可加 `[Console]::OutputEncoding=[Text.Encoding]::UTF8`。
## 图形化 → 命令行对照(本技能的核心改编)
| 原书 GUI 操作 | 命令行等价 |
|---|---|
| 任务管理器看 CPU/内存/网络占用排序 | `Get-Process \| Sort CPU -Desc \| Select -First 10 Name,Id,CPU,Path`;网络 `Get-NetTCPConnection -State Established` |
| 任务管理器看进程路径/命令行列 | `wmic process get caption,executablepath,commandline /value` |
| 资源监视器(resmon) | `netstat -a -n -o -b` / `Get-NetTCPConnection` / `Get-NetUDPEndpoint` |
| regedit 全局搜索 | `reg query <键> /s /f "<关键字>"`(HKEY_LOCAL_MACHINE\SAM 需 `PsExec64 -s` 提权) |
| 事件查看器筛选 4624/4625/4688 | `wevtutil qe Security /q:"Event/System/EventID=4625" /f:text /rd:false /c:20` 或 `Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625}` |
| taskschd.msc 计划任务 | `schtasks /query /fo LIST /v` / `Get-ScheduledTask`;注册表 `reg query HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks /s` |
| services.msc / msconfig | `sc queryex` / `sc qc <服务名>` / `Get-CimInstance Win32_Service` / 注册表 Run 键 |
| lusrmgr.msc 查隐藏账户 | `wmic useraccount get Name,SID,Status` + `reg query HKLM\SAM\SAM\Domains\Account\Users\Names`(SYSTEM 提权) |
| msinfo32 / 系统属性 | `systeminfo` / `wmic qfe list` |
| Everything 搜文件 | `es.exe "<语法>"`(CLI 版)或 `dir /s /b`、`forfiles`、`Get-ChildItem -Recurse -Filter` |
| IObit Unlocker 解占用 | `handle.exe <文件>` 定位占用进程 → 结束进程后删除 |
| sigverif 系统文件签名验证 | `Get-AuthenticodeSignature <文件>` / `sigcheck.exe <文件>` |
| certmgr.msc 证书排查 | `Get-ChildItem Cert:\LocalMachine\Root, Cert:\LocalMachine\CA, Cert:\LocalMachine\AuthRoot` |
| LastActivityView / FullEventLogView | `wevtutil qe` 组合查询 + Prefetch/Amcache 解析器(PECmd / AmcacheParser,输出 csv) |
| Log Parser Lizard | Log Parser 命令行(`LogParser.exe -i:EVT -o:DATAGRID "select ..."`) |
## 人工介入点:Agent 必须提醒用户操作的环节
本技能把手册的 GUI 流程尽可能转成了 CLI,但**仍有部分环节命令行无法完成、或属于高风险授权决策**。Agent 走到这些点时,必须停止自动执行,在回复中明确提醒用户操作——根据你接入的 agentic 工具能力选择"代做并验证"还是"转述给用户"。
### 判断原则(四类必须介入)
1. **物理/带外操作**:插拔 U 盘/USB 设备、机房断网、镜像备份、写保护 U 盘取样——只能人工。
2. **GUI-only 步骤**:目标机无命令行通道(如仅 RDP 交互、深信服僵尸网络查杀工具内存检索、Process Explorer 杀线程等无 CLI 等价的功能)——人工,或由具备 GUI 自动化能力的 Agent 代做。
3. **高风险授权决策**:杀业务进程/线程注入处置、删除注册表引用、删隐藏账户、恢复服务权限、大范围改密——**必须先向用户确认再执行**,给出风险说明。
4. **外部平台交互**:威胁情报查询、沙箱上传、勒索解密工具获取——有浏览器/网络工具可代办,没有则给用户 URL 和操作指引并索要结果。
### 按处置阶段的介入点清单
| 阶段 | 介入点 | 给用户的提醒内容 |
|---|---|---|
| **通道建立** | 目标未开启 WinRM(5985/5986 不通) | 请用户经 RDP/本地控制台在目标机管理员 PowerShell 执行 `Enable-PSRemoting -Force`(工作组成员机另需 TrustedHosts,命令见 `21-winrm.md`),完成后回报;Agent 随后探测 5985 连通性确认 |
| | 所有远程通道不可达 | 请用户在本地 shell 跑 `scripts/win-triage.ps1` 并把输出整体回传 |
| **进程处置** | 判定为线程级注入(恶意线程附在业务进程内) | 无 CLI 杀线程手段且可能搞崩业务:给用户风险说明与三个选项(GUI 杀线程 / 重启业务进程 / 暂保留观察),等用户选择 |
| | 确认目标进程是否恶意 | 可 CLI 暂停(pssuspend),但恢复/终止的时机请用户确认业务窗口 |
| | 恶意进程占用关键业务文件 | 提醒用户评估停机窗口后再杀 |
| **删除清理** | reg query 发现恶意文件被业务配置引用(web.config、启动脚本等) | 删除前列出引用位置,请用户/运维确认哪些可删 |
| | SAM 隐藏账户删除、SDDL 隐藏服务恢复 | 需 SYSTEM 权限且误删业务账户后果严重:先请用户确认账户归属(人名/用途)再动 |
| **勒索** | 解密工具运行 | **必须提醒用户先备份加密文件**(二次加密不可逆);ID Ransomware 网页识别给链接请用户上传或由 Agent 代做 |
| | 是否交赎金 | 用户/管理层决策,Agent 只给技术评估 |
| **BadUSB** | UUID 比对 / 设备分析 | 请用户保管恶意设备并交专业机构;同系统重复插拔比对需人工操作 |
| **样本/情报** | 上传沙箱(微步/VT/哈勃)、情报平台查询 | 无浏览器工具时:给出 URL + 上传物说明(文件 hash/样本),请用户操作并回报结论 |
| **善后** | 改密范围、横向机器清单 | 需用户提供资产台账(同密码/同管理员/同漏洞机器列表),Agent 不猜 |
### 提醒模板(直接用于回复,不得含糊)
```
⚠ 需要你人工操作(原因:GUI 步骤 / 物理操作 / 高风险确认)
1.【谁】在【哪台机器/哪个界面】执行【具体步骤或命令】
- 操作路径/命令:<完整给出>
- 预期结果:<…>
- 完成后请回报:<截图 / 命令输出 / 是否成功>
2. ……
我已自动完成:…;收到你的回报后我将继续:…
```
### 能力适配(按你接入的工具选择执行方式)
- **具备 GUI 自动化**(computer-use 类工具且目标桌面可达):GUI 步骤可代做,完成后截图验证并把结果同步给用户;高风险决策(第 3 类)仍须用户点头。
- **仅 CLI / 远程通道**(WinRM 客户端 / ssh / 云终端):所有 GUI 步骤按提醒模板转述给用户,并给出点击路径(参考原书对应页码的 GUI 章节)。
- **用户离线/批处理**:把全部人工介入点汇总成一份"待人工操作清单"一次性输出,不要执行到一半反复阻塞等待。
## 远程处置通道(无法直接到目标 shell 时)
Windows 取证全部依赖命令行,拿到命令执行通道是第一步。统一走 **Windows 自带 WinRM(TCP 5985/5986)**,无需任何第三方工具(详见 `21-winrm.md`):
1. **目标开放 WinRM** → 直连(首选零落地):有 WinRM 凭据时用 `scripts/win-ir-console-web.py` 控制台一键排查,或用 pywinrm 等任意 WinRM 客户端逐条执行 references 里的命令。
2. **目标未开 WinRM** → **人工介入点**:按提醒模板请用户经 RDP/本地控制台执行 `Enable-PSRemoting -Force`(及 TrustedHosts 配置),开启后走直连。
3. **能直接开 CMD/PowerShell**(本地控制台/云终端/已有跳板)→ 直接跑 references 里的命令。
## 检查时的注意事项
- **隐藏账户**:`net user` 看不到以 `$` 结尾账户和克隆账户,必须 `wmic useraccount` + SAM 注册表(PsExec -s)交叉比对;删除时 Names 键和对应 000003EA 十六进制键都要删(`13-checklist-accounts.md`)。
- **计划任务机制**(p737 实验):执行由注册表 TaskCache 决定而非 Tasks 目录文件;注册表修改需重启 Schedule 服务生效;`schtasks` 看不到的隐藏任务用注册表 + 日志排查(`14-checklist-persistence.md`)。
- **服务隐藏**:SDDL 权限隐藏的服务 `sc query` 报"拒绝访问",枚举法(reg 遍历 + sc query 交叉)可揪出;杀软/工具枚举同样失效(`19-appendix.md` §0x12)。
- **RDP 爆破日志特征**:4625 + 登录类型 3 + **源端口 0**(SMB 爆破源端口非 0,这是区分点);RDP 成功登录才有类型 10(`06-brute-force.md`)。
- **MSSQL**:登录失败默认不记成功;`xp_cmdshell` 启用会留配置变更日志;扩展存储过程/程序集按 modify_date 排序排查(`11-mssql.md`)。
- **Defender 排除项**:`Get-MpPreference` 查 ExclusionPath/ExclusionProcess——挖矿木马常给自己加白,处置时 `Remove-MpPreference` 解除。
- **威协情报/沙箱**:微步在线、Virustotal、360/安恒/绿盟/腾讯/安天情报中心;沙箱:微步云沙箱、哈勃、奇安信情报沙箱、魔盾、360沙箱云。勒索解密:No More Ransom、ID Ransomware、各厂商解密工具——解密前**先备份**防二次加密。
View on GitHub