# Windows Incident Response

> 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，或要求应急响应、安全检查、权限维持排查、取证分析时使用。

- Skill: `probiusofficial/windows-incident-response` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add probiusofficial/windows-incident-response`
- Raw SKILL.md: https://api.skillmd.com/api/skills/probiusofficial/windows-incident-response/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: probiusofficial (https://skillmd.com/u/probiusofficial)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/probiusofficial/windows-incident-response

---


# 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、各厂商解密工具——解密前**先备份**防二次加密。

