skills/dfir/log-evasion/SKILL.md
日志分析与日志逃逸方法论。理解蓝队如何通过日志追踪攻击行为(SIEM/Event Log/Syslog),以及红队如何规避日志记录或精准清除痕迹。当需要设计无痕操作或分析日志监控覆盖范围时使用
npx skillsauth add wgpsec/AboutSecurity log-evasionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
核心原则:最好的反日志策略是不产生日志,而非事后删除
| Event ID | 日志源 | 含义 | 红队动作触发 | |----------|--------|------|-------------| | 4624 | Security | 登录成功 | PTH/PTT/RDP | | 4625 | Security | 登录失败 | 密码喷洒 | | 4648 | Security | 显式凭据登录 | runas/PsExec | | 4672 | Security | 特权分配 | 特权提升 | | 4688 | Security | 新进程创建 | 工具执行 | | 4698 | Security | 计划任务创建 | 持久化 | | 4720 | Security | 用户创建 | 后门账户 | | 5140 | Security | 网络共享访问 | 横向移动 | | 5156 | Security | 网络连接 | C2 通信 | | 7045 | System | 服务安装 | 持久化/PsExec | | 1102 | Security | 日志清除 | ⛔ 反取证暴露! | | 4104 | PowerShell | 脚本块日志 | PS 攻击工具 | | 4103 | PowerShell | 模块日志 | PS 命令执行 | | 1 | Sysmon | 进程创建(含hash) | 所有工具执行 | | 3 | Sysmon | 网络连接 | C2 通信 | | 8 | Sysmon | CreateRemoteThread | 进程注入 | | 10 | Sysmon | 进程访问 | LSASS dump | | 11 | Sysmon | 文件创建 | 工具落盘 |
| 日志 | 位置 | 记录内容 | |------|------|---------| | auth.log/secure | /var/log/ | SSH 登录、sudo、su | | wtmp | /var/log/ | 登录/注销记录 | | btmp | /var/log/ | 失败登录 | | lastlog | /var/log/ | 最后登录时间 | | audit.log | /var/log/audit/ | auditd 规则匹配 | | syslog/messages | /var/log/ | 系统事件 | | journal | /var/log/journal/ | systemd 日志 | | .bash_history | ~/ | 命令历史 |
Sigma 规则示例(蓝队部署):
├─ 进程注入: Sysmon EventID 8 (CreateRemoteThread to lsass)
├─ 凭据 Dump: EventID 10 (OpenProcess to lsass)
├─ 横向移动: EventID 4648 + 4624 LogonType 3
├─ 持久化: EventID 7045 (新服务) / 4698 (新计划任务)
├─ 日志清除: EventID 1102 / 104 → 高优先级告警!
└─ PowerShell: EventID 4104 含 "IEX" / "Invoke-" / "-enc"
Windows:
├─ 禁用 ETW Provider → 阻止 PowerShell/AMS 日志
│ patch ntdll!EtwEventWrite → ret
│ 或 NtTraceEvent hook
├─ 关闭 ScriptBlock Logging
│ reg: HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging → 0
├─ 使用 .NET 避免 PowerShell 日志
│ C# 直接调用 .NET → 不走 PS 引擎 → 无 4104
├─ Thread detach from ETW
│ patch 当前线程的 ETW context → 不再产生事件
└─ Sysmon 绕过
unload sysmon driver / patch 事件回调
Linux:
├─ 操作前: unset HISTFILE; export HISTSIZE=0; export HISTFILESIZE=0
├─ 或: set +o history
├─ 使用空格前缀命令(bash HISTCONTROL=ignorespace)
├─ kill -9 auditd(需 root,会产生停止日志)
└─ auditctl -e 0(关闭审计,更隐蔽)
绕过 Sysmon:
├─ 进程注入: 避免 CreateRemoteThread → 用 APC/Callback/Early Bird
├─ LSASS 访问: 避免直接 OpenProcess → 用 Handle 复制/MiniDump
├─ 网络: 使用 raw socket → Sysmon EID 3 可能不捕获
└─ 文件: 使用已存在文件名/路径 → 不触发新文件规则
绕过 PowerShell 日志:
├─ 降级攻击: powershell -version 2(无 ScriptBlock 日志)
├─ 使用 C#/.NET: 直接反射调用 → 无 PS 日志
├─ AMSI bypass → 阻止脚本内容被记录
└─ 使用 WMI/COM → 不走 PowerShell 引擎
绕过 4688 进程创建:
├─ 进程名伪装: 复制合法程序名执行
├─ 使用 LOLBins: rundll32/mshta/certutil → 合法进程
├─ 父进程欺骗: 设置 PPID 为正常进程
└─ 命令行混淆: 环境变量展开、特殊字符
⛔ NEVER 清空整个日志 → EventID 1102 会立即告警!
⛔ ALWAYS 精准删除特定条目
Windows 精准清除:
├─ 方式 1: 停止 EventLog 服务 → 修改 .evtx 文件 → 重启服务
│ net stop eventlog(需 SYSTEM)
│ 修改 evtx 二进制结构删除特定记录
│ net start eventlog
├─ 方式 2: Danderspritz eventlogedit(NSA 工具)
│ 精准删除指定 EventID 的记录,修复文件校验
├─ 方式 3: Invoke-Phant0m
│ 杀掉 EventLog 服务的所有线程 → 服务在但不写日志
└─ 方式 4: MiniNT 注册表键
HKLM\SYSTEM\CurrentControlSet\Control\MiniNT → 阻止日志写入
Linux 精准清除:
├─ auth.log: sed -i '/特定IP/d' /var/log/auth.log
├─ wtmp: utmpdump /var/log/wtmp > tmp.txt
│ 编辑删除特定行
│ utmpdump -r < tmp.txt > /var/log/wtmp
├─ lastlog: 工具修改特定用户的 lastlog 记录
├─ audit.log: aureport 确认记录 → sed 删除
└─ journal: journalctl --vacuum-time=1s(⛔ 会清全部)
现代企业会实时转发日志到 SIEM → 本地删除无效!
应对方案:
├─ 从一开始就不产生日志(策略 1)→ 最优
├─ 绕过 Sysmon/ETW(策略 2)→ 不产生特定事件
├─ 使用 SSH 隧道/DNS 隧道 → 网络日志中混入合法流量
├─ 操作时间选择 → 凌晨/节假日 → SOC 响应慢
└─ 理解 SIEM 规则阈值 → 低于告警阈值操作
例:密码喷洒锁定阈值 5次 → 每用户只尝试 2 次
| 蓝队监控 | 触发条件 | 红队对策 | |----------|---------|---------| | EventID 4624 | 任何登录 | 正常时段+合法用户名 | | EventID 4688 | 新进程 | LOLBins / PPID spoofing | | EventID 4104 | PS 脚本 | .NET / AMSI bypass / PS v2 | | Sysmon EID 1 | 进程+hash | 修改已知白名单程序 | | Sysmon EID 8 | 远程线程 | APC / Timer callback | | Sysmon EID 10 | 进程访问 | Handle duplicate | | auditd | syscall审计 | 关闭 auditd / 直接 syscall | | 网络日志 | 连接记录 | 域前置 / CDN / 合法服务 |
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能