Windows 安全模型建立在三项机制之上:特权级隔离(内核与用户态)、对象访问控制(SID 与 ACL)、身份与权限分离(账户与访问令牌)。理解凭据的静态存放与动态缓存位置,是第三、五、八、二十章的基础。
2.1 用户态与内核隔离
2.1.1 运行机制
Windows NT 采用混合内核。运行时分为内核模式与用户模式。
模式
特权级
典型组件
访问范围
内核模式
Ring 0
`ntoskrnl.exe`(执行体)、`hal.dll`(硬件抽象层)、内核驱动
硬件、全部物理内存与系统对象
用户模式
Ring 3
普通应用程序、`explorer.exe`、多数服务进程的用户态部分
本进程虚拟地址空间
用户态不能直接访问硬件或任意内核内存。需要内核服务时,通过系统调用进入内核。系统服务描述符表(SSDT,System Service Descriptor Table)保存系统服务例程地址。用户态发出的请求经陷阱门或同类机制切入内核后,由执行体完成对象管理、进程与线程调度、I/O 等。该边界是操作系统的核心安全边界:越过它即意味着可以修改任意进程、关闭防护、读取全部内存。
SAM 存储的是密码哈希,不是明文。现代系统主要为 NTLM Hash(对 UTF-16 编码的口令做 MD4)。早期 LM Hash 强度极低,现已默认禁用,必须保持禁用。运行期间 SAM 文件被锁定,资源管理器无法直接复制;离线挂载磁盘、WinRE、或卷影复制(VSS)才可能得到副本。因此备份介质与卷影副本的访问控制,与 SAM 文件本身同等重要。
#Software: Microsoft Internet Information Services 10.0
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
IIS 管理器:站点 → 日志记录 → 选择 W3C → 选择字段。建议增加:cs(Referer)、cs(Cookie)(注意隐私)、cs-bytes、sc-bytes、time-taken。默认通常不记录 POST 正文,因此一句话木马的函数名可能只出现在查询串或后续 GET 参数中,正文不可见。
SELECT c-ip, COUNT(*) AS Hits
FROM 'C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log'
WHERE sc-status = 404
GROUP BY c-ip
ORDER BY Hits DESC
SQL
SELECT cs-uri-stem, COUNT(*) AS C
FROM 'C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log'
WHERE cs-method='POST' AND sc-status=200
GROUP BY cs-uri-stem
ORDER BY C DESC
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
AllowAgentForwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers ops@10.0.0.0/8
# 若必须保留口令,仅限管理网段并由防火墙双重限制
AllowTcpForwarding no 可能影响合法隧道,须与网络部门确认。主机密钥 ssh_host_*_key 为 600。用户 authorized_keys 中只放本人公钥,禁止把同一把私钥分发到全部服务器。OpenSSH 手册:https://man.openbsd.org/sshd_config
DNS 隧道:子域名长度异常且熵高、QPS 高、TXT 类型占比高、应答包远大于普通 A 记录、查询间隔高度周期。C2 心跳:间隔稳定、报文长度接近、会话长期存活、对端 ASN 与业务无关。扫描:短时间对多端口 SYN、大量 RST。数据外传:非工作时段向单一外部 IP 发送大量数据,TLS 记录大小均匀。
主机安全加固与应急响应教程
本文面向系统管理员、安全运营人员及应急响应人员,系统说明 Windows、Linux 主机安全加固方法,以及安全事件的检测、处置与报告编写。文中命令与配置仅适用于已获授权的实验环境或本单位受管资产。禁止用于未授权系统。
文中所列工具下载地址与 GitHub 仓库以官方或项目维护方公布的页面为准。引用开源案例仅用于检测验证、日志研判与加固对照,须在隔离环境中使用。配置示例中的地址、端口、路径须按本单位实际情况替换,执行前应在测试环境验证,并保留回退方案。
一、安全加固概述
1.1 安全加固的定义与目标
1.1.1 定义
安全加固(Hardening)是在保证业务可用性的前提下,通过缩小攻击面、落实最小权限、保证安全事件可观测,从而提高入侵成本并降低失陷影响的系统工程。它不是安装杀毒软件的同义词,也不是关闭全部服务。可发布、可审计的加固应当满足三点:有明确基线、有验证命令、有变更与回退记录。
主机安全还服从 CIA 模型:
属性
英文
主机侧含义
加固对应措施
机密性
Confidentiality
未授权主体不能读取凭据与业务数据
口令与密钥管理、权限、加密、强制访问控制
完整性
Integrity
系统文件、配置与日志不能被擅自篡改
签名、完整性监控、审计、补丁
可用性
Availability
合法业务在攻击或误操作后仍可恢复
备份、补丁窗口、防火墙防扫描耗尽、应急流程
三者需要权衡。例如将/tmp 挂载为 noexec 可降低恶意程序落地执行的可能,但可能影响依赖该目录执行脚本的安装程序,必须先在测试环境确认。
1.1.2 攻击面
攻击面指外部或内部主体可能用来进入系统、提升权限或维持控制的全部入口,包括:开放端口、监听地址、账号与认证方式、可执行路径、计划任务与服务、可写目录、远程管理协议、Web 应用上传点等。加固的直接效果是减少入口数量、提高每个入口的认证强度,并使每一次尝试留下日志。
1.1.3 主机加固需要回答的四个问题
生产环境中的多数失陷,源于弱口令、Guest 账户被启用、管理端口对不可信网络开放、审核策略未启用、补丁滞后、服务监听全部接口、强制访问控制被关闭等已知问题。加固的首要目标是消除此类可预期风险,而不是等待未知漏洞。
1.1.4 基线、例外与变更
基线是一组可检查的配置状态(例如 SSH 禁止口令登录、防火墙默认拒绝)。业务确实需要偏离基线时,应记录例外:原因、批准人、到期时间、补偿控制(例如仅对管理网段开放)。没有例外管理的“全部按文档执行”,会在排障时被直接关闭防火墙或 SELinux,使基线失效。
1.2 基本原则
1.2.1 纵深防御
不应依赖单一控制措施。某一层失效(例如口令被猜中)时,后续层次仍应能够延迟、告警或阻断。主机侧的典型分层如下:
纵深防御的可检验标准是:关闭其中一层后,其余层是否仍能独立起作用。例如防火墙规则被清空后,SSH 是否仍禁止口令登录;口令登录被打开后,来源是否仍被防火墙限制。
1.2.2 最小权限
仅授予完成既定工作所必需的权限,并仅在需要时提升。日常操作使用标准用户;管理操作使用独立特权账号或即时提权(Just-In-Time)。权限范围越大,单点失陷后可读取的凭据、可修改的配置、可横向到达的主机越多。
实践中应区分:
1.2.3 默认拒绝
防火墙、应用程序控制、sudo 与强制访问控制应采用默认拒绝、显式允许。仅维护已知恶意对象的拒绝列表,无法覆盖未知手法。默认拒绝的操作顺序必须是:先写入当前管理通道的允许规则,再将默认动作改为拒绝,最后用另一条已验证的通道确认仍可进入。反向操作会导致管理中断。
1.3 威胁路径与控制对应关系
可将常见入侵路径与本文控制措施对应如下。该路径用于说明“每一环都应有控制”,不是实施步骤。
阶段
常见条件
主机侧控制
对应章节
侦察
端口与服务暴露
默认拒绝、收敛监听
七、十三、十四
初始访问
弱口令、漏洞、Web 上传
口令与密钥、补丁、上传校验
三、六、九、十
执行
脚本与解释器
WDAC、CLM、noexec
四、十二
权限提升
本地漏洞、SUID、UAC 误用
补丁、SUID 清理、标准用户办公
二、三、十二、十五
凭据获取
SAM、LSASS、shadow
LAPS、PPL、权限
二、三、十
横向移动
口令复用、管理端口开放
LAPS、防火墙限源
三、七、十四
持久化
服务、计划任务、cron、Run 键
审计、Autoruns、systemd 盘点
二、八、十三
防御规避
清除日志、关闭防护
日志外送、完整性监控
五、十一、二十一
目标达成
挖矿、勒索、外传
出站控制、流量分析、应急
七、十八、二十二
加固提高各环节成本;应急响应在事件发生后完成遏制、取证、根除、恢复与改进。
1.4 实验环境与参考基线
1.4.1 实验环境要求
建议准备相互隔离的虚拟机,不要使用生产域控或生产数据库做第一次练习。
在实验机上执行可能中断远程连接的命令(改防火墙默认策略、改 SSH 端口、禁用口令)时,应同时打开虚拟机控制台,避免把自己锁在系统之外。
1.4.2 可下载的基线与审计项目
项目
用途
地址
Microsoft Security Compliance Toolkit
Windows 安全基线、策略对照
CISOfy Lynis
Linux/UNIX 主机审计与加固建议
https://github.com/CISOfy/lynis
dev-sec linux-baseline
Linux 安全基线(InSpec)
https://github.com/dev-sec/linux-baseline
ansible-lockdown
可自动化落地的加固角色
SigmaHQ/sigma
检测规则(可用于日志与 SIEM)
https://github.com/SigmaHQ/sigma
Lynis 本地执行示例:
输出末尾的 Suggestions 应按优先级处理,不要一次修改数十项后无法回退。Windows 侧可将 Security Compliance Toolkit 中的基线与本机 gpresult /h report.html 对照,确认域策略或本地策略是否生效。
1.4.3 本文使用约定
二、Windows 系统架构与凭据保护
Windows 安全模型建立在三项机制之上:特权级隔离(内核与用户态)、对象访问控制(SID 与 ACL)、身份与权限分离(账户与访问令牌)。理解凭据的静态存放与动态缓存位置,是第三、五、八、二十章的基础。
2.1 用户态与内核隔离
2.1.1 运行机制
Windows NT 采用混合内核。运行时分为内核模式与用户模式。
模式
特权级
典型组件
访问范围
内核模式
Ring 0
`ntoskrnl.exe`(执行体)、`hal.dll`(硬件抽象层)、内核驱动
硬件、全部物理内存与系统对象
用户模式
Ring 3
普通应用程序、`explorer.exe`、多数服务进程的用户态部分
本进程虚拟地址空间
用户态不能直接访问硬件或任意内核内存。需要内核服务时,通过系统调用进入内核。系统服务描述符表(SSDT,System Service Descriptor Table)保存系统服务例程地址。用户态发出的请求经陷阱门或同类机制切入内核后,由执行体完成对象管理、进程与线程调度、I/O 等。该边界是操作系统的核心安全边界:越过它即意味着可以修改任意进程、关闭防护、读取全部内存。
对象管理器为文件、进程、注册表键、令牌等赋予安全描述符。访问检查比较主体 SID、组 SID 与对象 DACL。即使某进程已在用户态运行,没有相应 ACE 也不能打开受保护对象。因此“获得一个进程”与“获得 SYSTEM”不是同一状态。
2.1.2 本地权限提升的含义
本地权限提升(Local Privilege Escalation)指:已能在本机执行代码的主体,通过漏洞或错误配置获得更高完整性级别或 SYSTEM/管理员令牌。常见技术条件包括:内核驱动中的句柄泄漏、对象引用计数错误、任意地址写等。加固不能消除全部内核缺陷,但可以:减少可加载的未签名驱动、及时安装内核更新、取消业务账号上不必要的 SeDebugPrivilege 与 SeLoadDriverPrivilege。
查看当前特权:
若标准用户具备 SeDebugPrivilege 且状态为 Enabled,应视为错误授权。该特权允许打开其他进程并读写其内存,与凭据保护目标冲突。
2.1.3 驱动签名与验证
64 位 Windows 默认要求内核驱动签名。应保持“强制驱动签名”启用。需要临时关闭仅用于厂商明确要求的调试场景,并在结束后恢复。可用 sigcheck(Sysinternals)核对系统目录中的驱动文件签名:
Sysinternals Suite:https://learn.microsoft.com/sysinternals/downloads/sysinternals-suite
2.2 SAM 与本地凭据存储
2.2.1 存储位置与内容
安全账户管理器(SAM,Security Account Manager)保存本地账户数据库。
项目
位置或说明
文件
`%SystemRoot%\System32\config\SAM`
注册表
`HKLM\SAM`(运行时由系统加载,默认 ACL 仅 SYSTEM 可访问)
配套 hive
`SECURITY`、`SYSTEM` 中的密钥材料参与保护哈希
域账户
不在 SAM 中,而在域控制器 `NTDS.dit`
SAM 存储的是密码哈希,不是明文。现代系统主要为 NTLM Hash(对 UTF-16 编码的口令做 MD4)。早期 LM Hash 强度极低,现已默认禁用,必须保持禁用。运行期间 SAM 文件被锁定,资源管理器无法直接复制;离线挂载磁盘、WinRE、或卷影复制(VSS)才可能得到副本。因此备份介质与卷影副本的访问控制,与 SAM 文件本身同等重要。
2.2.2 哈希传递与口令复用
获取哈希后,常见后续有两类:一是离线猜测口令(字典、彩虹表);二是哈希传递(Pass-the-Hash):不还原明文,直接使用 NTLM Hash 完成部分网络认证。若多台主机的本地管理员口令相同,则一台主机上的哈希可以用于认证其他主机。这与“口令是否复杂”部分独立:即使口令很长,只要复用,哈希传递仍然成立。
2.2.3 加固与验证
查看本地用户:
2.3 LSASS 与登录会话
2.3.1 登录流程
交互式登录的简化过程如下:
LSASS 的职责包括:加载认证包、验证凭据、颁发令牌、维持登录会话、处理密码策略。为支持单点登录和部分网络协议,历史上它可能在内存中缓存明文、NTLM Hash 或 Kerberos 票据(TGT)。内存凭据获取的目标进程因此经常是 LSASS。
2.3.2 WDigest、PPL 与 Credential Guard
WDigest 曾将明文口令保留在内存中。现代系统默认关闭,仍应核验:
若该值存在且为 0x1,应改回 0 并评估是否需要注销已有会话。官方说明见 Microsoft 安全公告相关缓解文档。
受保护进程轻量级(PPL,Protected Process Light)提高其他进程打开 LSASS 句柄的门槛。可设置:
RunAsPPL 为 1 表示启用(具体取值以当前系统文档为准)。企业环境在适用的 Windows 版本上应启用 Credential Guard,用虚拟化安全(VBS)隔离机密,使即使用户态恶意代码获得管理员权限,也更难从隔离区取出哈希。Credential Guard 说明:https://learn.microsoft.com/windows/security/identity-protection/credential-guard/
2.3.3 检测要点
对 LSASS 的异常打开、向 LSASS 注入模块、来自非微软签名进程的句柄请求,应作为高优先级事件。Sysmon 可记录进程访问(事件 ID 10,需在配置中启用)。配置示例见第四章所引 sysmon-config。分析时应结合第五章的 4672(特权登录)与 4624。
2.4 服务、计划任务与启动项
2.4.1 机制对照
机制
管理者
常见权限
关键位置
服务
服务控制管理器 SCM(`services.exe`),通常位于会话 0
多为 LocalSystem
`HKLM\SYSTEM\CurrentControlSet\Services`
计划任务
任务计划程序服务
可指定任意用户,包括 SYSTEM
`%SystemRoot%\System32\Tasks` 及注册表 `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule`
启动项
Winlogon、Explorer 等
用户或系统
Run、RunOnce、启动文件夹、IFEO、Winlogon 通知包
会话 0 隔离使服务不在用户交互桌面中运行,降低服务弹窗被用于提权的历史问题,但服务仍具有高权限,被替换 ImagePath 后危害不变。
服务启动类型:Start 值为 0 引导、1 系统、2 自动、3 手动、4 禁用。自动启动且路径可写,是高风险组合。
计划任务触发器包括:时间、登录、事件、空闲、会话解锁等。以 SYSTEM 运行、动作为启动位于用户可写目录的程序,应立即核查。
2.4.2 检查命令
PowerShell:
关注:路径在 Temp、Public、用户目录;路径含空格但未加引号(可能被路径解析滥用);服务名称模仿 Windows 组件但发行商未知。
Autoruns 可一次列出多数自启位置。下载:https://learn.microsoft.com/sysinternals/downloads/autoruns
建议勾选 Hide Microsoft Entries 与 Verify Code Signatures,再审查剩余项。
事件:7045(System 通道,服务安装)、4698 与 4702(Security 通道,计划任务创建与修改)。需先启用相应审核,见第五章。持久化相关.evtx 样本:https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES/tree/master/Persistence
2.4.3 ImagePath 引号
若路径为 C:\Program Files\Vendor\app.exe,未加引号时,系统可能先尝试执行 C:\Program.exe。若 C:\ 可写,即可被放置同名程序。正确写法是 "C:\Program Files\Vendor\app.exe"。检查未加引号且包含空格的服务路径:
三、Windows 账号与权限管理
身份标识主体,权限约束主体可执行的操作。常见失陷路径为:控制一个可登录账号、提升到管理员、加入特权组、使用该身份连接其他主机。
3.1 本地账户与域账户边界
3.1.1 差异
类型
存放位置
作用域
管理方式
本地账户
单机 SAM
仅本机
本地安全策略、`lusrmgr.msc`
域账户
域控制器 `NTDS.dit`
域或林
Active Directory 与组策略
二者均为安全主体,以 SID 标识。内建账号 SID 有固定后缀,例如本地 Administrators 组为 S-1-5-32-544。可将域用户加入本机 Administrators 组,使其在该主机拥有本地最高管理权限,但其身份仍在域内可被吊销。
查看 SID:
3.1.2 横向移动与 LAPS
本地管理员口令复用时,哈希或口令可在多台机器上复用。Windows LAPS 为每台计算机生成独立的本地管理员口令,保存到 AD 或 Entra ID,并定期轮换。部署要点:
同时应限制本地账户的网络登录。组策略路径示例:计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 用户权限分配 → “拒绝从网络访问这台计算机”,加入本地账户。远程桌面同理限制。
日常办公账号不得属于 Domain Admins。工作站本地 Administrators 组应为空,或仅含专用管理账号(例如 adm-jsmith),禁止使用与邮件相同的个人账号。
域内针对 Kerberos 票据伪造、目录复制协议被滥用于同步哈希等行为,需要分层管理(Tier 0/1/2)与特权账户保护,单机 SAM 加固不能单独解决。见 3.4。
3.2 最小权限与用户账户控制
3.2.1 令牌与完整性级别
属于 Administrators 组的用户登录后,系统准备两份令牌:
完整性级别由低到高一般为 Low、Medium、High、System。低完整性进程向高完整性对象写入会失败。浏览器沙箱常使用 Low。
微软已说明:UAC 不是安全边界,而是降低恶意软件在无交互情况下自动获得完整令牌的概率。因此,已经位于本地管理员组的代码,不能依赖 UAC 阻止提升。真正的隔离是:日常使用标准用户,并用 WDAC 或 AppLocker 限制可执行文件。
查看进程完整性(Sysinternals Process Explorer 的 Integrity 列),或:
3.2.2 UAC 相关策略
注册表:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
值名称
建议
说明
EnableLUA
1
启用管理员批准模式
ConsentPromptBehaviorAdmin
2
管理员操作时提示同意(具体枚举以策略说明为准)
PromptOnSecureDesktop
1
在安全桌面上显示提示,降低伪造 UAC 窗口的风险
FilterAdministratorToken
1
内建 Administrator 也走过滤令牌(若仍使用该账号)
图形界面:UserAccountControlSettings.exe 或 secpol。应选择“始终通知”,不要选择“从不通知”。组策略:计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项。
3.2.3 应用程序控制
AppLocker 可按发布者、路径、哈希限制 exe、脚本、msi、dll。WDAC(Windows Defender Application Control)策略更接近安全边界,可在 HVCI 等配合下强制。WDAC:https://learn.microsoft.com/windows/security/application-security/application-control/windows-defender-application-control/
管理操作应在特权访问工作站(PAW)上进行:该工作站不安装办公套件、不收邮件、不访问一般互联网,仅用于连接服务器与域控。说明:https://learn.microsoft.com/security/privileged-access-workstations/
3.3 Guest 账户与口令策略
3.3.1 Guest 账户
Guest 为内建账户,默认禁用。被安装程序或错误策略启用时,口令常为空。权限较低,但仍可用于探测共享、验证网络连通性,并破坏“只有实名账号能登录”的审计假设。
应确认 Account active 为 No。域环境用组策略:计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项 → “账户: 来宾账户状态”为禁用。
3.3.2 口令喷洒与锁定
在线猜测包括:对单一账号多次尝试(易触发锁定),以及密码喷洒(少量常见口令尝试大量账号,使每个账号失败次数低于阈值)。因此仅设置锁定阈值不够,还需要检测“大量账号各失败一两次”的模式,对应第五章 4625 的统计分析。
离线风险是获取 SAM 或 NTDS.dit 后破解哈希,与锁定无关,只能靠哈希算法、口令长度、LAPS 和保护备份。
3.3.3 口令策略建议
项目
建议
说明
长度
普通账户不少于 14,特权账户不少于 15
长度优先于强制各类字符的复杂组合
复用
禁止与外部网站相同
泄露一次即影响域
定期强制更改
不宜作为唯一手段
频繁更改会导致可预测改写;泄露后应立即重置
多因素
远程访问与特权操作启用
智能卡、Windows Hello for Business、FIDO2
锁定
设置阈值并监控
防止被用于把管理员锁死,控制台登录可排除
组策略:计算机配置 → Windows 设置 → 安全设置 → 账户策略 → 密码策略。域内可对特权用户使用细粒度密码策略(PSO)。
查看有效策略:
3.4 特权组管理
3.4.1 关键组
范围
组
说明
本机
Administrators
完全控制本机
本机
Users / Remote Desktop Users
普通登录与远程桌面
域
Domain Admins
域内最高管理,成员应极少
林
Enterprise Admins
林范围,日常应为空或仅应急
林
Schema Admins
可修改架构,日常必须为空
域
Protected Users
对成员施加更严的凭据保护
服务账户应使用组托管服务账户(gMSA),避免长期静态口令。IIS 应用程序池避免使用 Domain Admins。
3.4.2 Protected Users 与分层
Protected Users 组成员:强制使用 Kerberos AES、不能使用 NTLM、限制可缓存的凭据类型,从而降低哈希传递和部分票据窃取的效果。加入前须确认应用支持 Kerberos 与 AES,旧设备可能无法登录。说明:https://learn.microsoft.com/windows-server/security/credentials-protection-and-management/protected-users-security-group
分层模型(Tier):
禁止用 Domain Admins 账号登录工作站。工作站失陷时,该账号的哈希或票据不应出现在工作站内存中。
3.4.3 账户审核
应启用账户管理成功与失败审核,关注 4720(创建用户)、4728/4732(加入组)、4740(锁定)。新建隐藏用途的账户(名称含 $、描述为空、突然加入 Administrators)应按应急事件处理。
四、Windows PowerShell 安全控制
PowerShell 是管理自动化的主要接口,也常被用于在内存中执行代码、下载脚本、横向调用 WMI 或 WinRM。控制目标是:限制谁能运行何种语言能力,并保证运行内容被记录且离开本机。
4.1 执行策略
4.1.1 作用范围
范围由高到低包括 MachinePolicy、UserPolicy、Process、CurrentUser、LocalMachine。常见策略值:
策略
含义
Restricted
不能运行脚本,可执行交互命令
RemoteSigned
本地脚本可运行,从互联网下载的须签名
AllSigned
所有脚本须签名且受信任
Unrestricted
警告后可运行未签名脚本
Bypass
不应用任何策略
设计目标是减少管理员误运行来路不明的脚本,不是阻止恶意代码。
4.1.2 为何不是安全边界
进程级可以指定 -ExecutionPolicy Bypass。也可以使用 -Command、-EncodedCommand 或 Invoke-Expression 在没有 .ps1 文件的情况下执行。因此将本机策略设为 Restricted,不能作为对恶意代码的控制措施。有效限制执行应使用 AppLocker 或 WDAC,按路径、发布者或哈希允许脚本。
仍建议将 LocalMachine 设为 RemoteSigned 或 AllSigned,作为运维卫生措施,并配合脚本签名流程。
4.2 脚本块日志与模块日志
4.2.1 事件与策略
功能
事件 ID
通道
模块日志
4103
Microsoft-Windows-PowerShell/Operational
脚本块日志
4104
同上
脚本块日志在执行前记录解密后的脚本块,对 Base64、字符串拼接等混淆仍可能看到真实意图。深度脚本块日志可记录更下层的调用,数据量更大,生产上应评估日志量后外送。
组策略:计算机配置 → 管理模板 → Windows 组件 → Windows PowerShell → 打开 PowerShell 脚本块日志记录、打开模块日志记录。官方说明:https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_logging
注册表(策略生效后):
模块日志还需指定模块名称,可设为 * 记录全部(日志量显著增加)。
4.2.2 采集与对抗
对抗包括:关闭上述策略、干扰 ETW 提供者、通过非托管代码调用 .NET 从而减少脚本引擎记录。因此 4103、4104 必须由 WEF 或主机代理实时送至集中系统。本机被清除不影响已外送副本。应单独告警:有人将 EnableScriptBlockLogging 改为 0、PowerShell Operational 日志被清空、短时间大量 4104 后突然停止。
查询最近脚本块:
4.3 受约束语言模式
4.3.1 能力限制
受约束语言模式(CLM,Constrained Language Mode)下,PowerShell 不能使用 Add-Type 编译代码,不能随意创建 COM 对象、调用 Win32 API 与反射。许多依赖这些能力的内存加载方式会失败。查看当前会话:
FullLanguage 为完整语言;ConstrainedLanguage 为受约束。
4.3.2 强制方式
CLM 通常由 AppLocker 的脚本规则或 WDAC 策略触发,而不是仅设置环境变量 __PSLockDownPolicy。仅改环境变量可以被有权限的进程改回。必须以 WDAC 或 AppLocker 为准,并用上一命令在标准用户会话中验证。管理账号若需要完整语言,应使用单独的策略与单独的工作站,避免在业务服务器上对所有用户开放 FullLanguage。
系统更新须及时安装,已知的 CLM 绕过条件多随安全更新修复。
4.4 AMSI 与转录日志
4.4.1 AMSI
反恶意软件扫描接口(AMSI)在脚本被解混淆之后、执行之前,将内容提交给已注册的反恶意软件提供程序(Windows Defender 或第三方 EDR)。PowerShell、VBA、WSH 等可走 AMSI。AMSI 依赖提供程序更新与进程完整性;内存中破坏扫描函数或使初始化失败,会导致漏检。因此不能把 AMSI 当作唯一控制,必须同时有:CLM/WDAC、脚本块日志、EDR 行为检测(进程注入、PowerShell 进程内存写入、卸载 ETW)。
4.4.2 转录
组策略:计算机配置 → 管理模板 → Windows 组件 → Windows PowerShell → 打开 PowerShell 转录。指定输出目录,例如 C:\ProgramData\PSTranscripts,ACL 应仅 Administrators 与 SYSTEM 可写,Users 只读或无权限写入他人文件。转录记录输入与输出,便于事后审计,但包含敏感命令,目录本身须纳入备份与访问审计。
4.5 控制措施对照与 Sysmon
控制
是否构成安全边界
主要作用
执行策略
否
减少误操作
脚本块与模块日志
否(检测)
溯源与告警
CLM 与 WDAC
接近是
限制语言能力
AMSI、EDR 与转录
检测与内容扫描
行为发现与审计
Sysmon 安装(管理员):
下载:https://learn.microsoft.com/sysinternals/downloads/sysmon
配置示例:https://github.com/SwiftOnSecurity/sysmon-config
模块化配置:https://github.com/olafhartong/sysmon-modular
使用社区配置前必须按环境裁剪,否则事件量可能超过存储与分析能力。PowerShell 相关建议至少记录:进程创建(事件 1)中的 powershell.exe 命令行、网络连接(事件 3)、映像加载(事件 7)中的异常 DLL。
五、Windows 事件日志采集与分析
安全日志是检测与取证的主要依据。未启用审核策略时,Security 通道无法提供登录类型、账户变更等字段,等于没有录像。
5.1 日志通道与容量
5.1.1 存储位置
路径:%SystemRoot%\System32\winevt\Logs\,后缀 .evtx。默认单文件容量往往仅数十 MB 并循环覆盖。生产环境应:
关注 maxSize 与 retention。修改示例(按实际容量调整):
5.1.2 通道职责
通道
记录内容
安全用途
System
驱动、服务启停、系统组件
7045 新服务、驱动失败
Application
应用程序错误
辅助线索
Security
登录、对象访问、特权、账户变更
核心审计
PowerShell/Operational
脚本块与模块
4103、4104
Microsoft-Windows-Sysmon/Operational
进程、网络、注册表等
需单独安装 Sysmon
Microsoft-Windows-Windows Defender/Operational
威胁检测
与 EDR 互补
5.1.3 启用审核策略
传统九大类在“高级审核策略”下更细。建议至少启用:
子类
成功
失败
用途
登录
是
是
4624、4625
账户登录
是
是
域内凭据验证
账户管理
是
是
用户与组成员
特权使用
按需
按需
敏感特权
进程创建
是
否
4688,务必同时启用命令行审核
对象访问
按需
按需
需在对象上设置 SACL
策略更改
是
是
审核策略被关
系统完整性
是
是
1102 等
命令行查看:
启用进程创建命令行:组策略“审核进程创建”以及“在进程创建事件中包含命令行”。注册表:
无命令行的 4688 只能看到 powershell.exe,看不到脚本内容,检测价值显著下降。
本地安全策略图形界面:secpol.msc。域环境必须用 GPO,避免每台机器手工设置后被下一次 gpupdate 覆盖。
5.2 关键安全事件
5.2.1 登录相关
事件 ID
含义
分析要点
4624
登录成功
Logon Type、TargetUserName、IpAddress、LogonProcessName
4625
登录失败
失败原因、子状态、源地址
4634 / 4647
注销
会话结束
4648
显式凭据
进程使用其他用户身份,横向时常见
4672
特殊特权
管理员登录时常伴随
4776
NTLM 凭据验证
本机或 DC
4768 / 4769
Kerberos TGT / TGS
域环境
登录类型:
Type
名称
典型场景
2
Interactive
控制台
3
Network
SMB、部分远程管理
4
Batch
计划任务
5
Service
服务启动
7
Unlock
解锁
8
NetworkCleartext
明文网络(应避免)
9
NewCredentials
RunAs /netonly
10
RemoteInteractive
远程桌面
11
CachedInteractive
缓存域登录
内网横向应重点关注 Type 3 与 Type 10。工作时间外的 Type 10、来源为异常国家或未登记堡垒机,应升级研判。
5.2.2 账户、持久化与清除日志
事件 ID
通道
含义
4720 / 4726
Security
创建 / 删除用户
4728 / 4732
安全
加入全局组 / 本地组
4738
安全
用户账户更改
4698 / 4702
安全
计划任务创建 / 更新
7045
系统
安装服务
1102
安全
安全日志被清除
4719
安全
系统审核策略更改
1102 与 4719 应作为高优先级告警:可能意味着权限滥用或防御规避。PowerShell 4104 见第四章。Sysmon:1 进程创建、3 网络、7 镜像加载、8 CreateRemoteThread、10 进程访问、11 文件创建、12/13 注册表。
检测练习样本:https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES
将该仓库中的 .evtx 复制到分析机,用 wevtutil 或 Get-WinEvent 打开,不要在生产机“回放”到真实通道。Sigma 规则:https://github.com/SigmaHQ/sigma
Sentinel 查询示例:https://github.com/Azure/Azure-Sentinel
5.3 wevtutil 提取
wevtutil 适用于现场备份,不依赖 PowerShell 执行策略。
XPath 可组合时间与事件 ID。导出的 .evtx 可复制到离线分析机。若磁盘空间不足,优先导出 Security、System、PowerShell、Sysmon。
清空日志的命令会写入 1102。防御手段是实时外送,并限制 Event Log Readers 以外的账户对日志的清除权限。
5.4 Get-WinEvent 分析
Get-EventLog 仅覆盖传统通道且性能较差。Get-WinEvent 支持 XML 与哈希表。
提取 4624 的登录类型:
关联方法:以 LogonId 连接 4624 与 4688,得到“谁登录之后启动了什么进程”。主机 A 上同一源 IP 的大量 4625 之后,主机 B 出现该 IP 的 4624 Type 3,构成横向移动线索。
Log Parser 2.2 可用类 SQL 查询 .evtx:https://www.microsoft.com/en-us/download/details.aspx?id=24659
WEF(Windows Event Forwarding)将源计算机事件送到收集器,再由 SIEM 拉取。这是不安装第三方代理时的官方集中方案。说明:https://learn.microsoft.com/windows/security/operating-system-security/windows-security-baselines 以及 WEF 专题文档。
六、IIS 访问日志分析
操作系统日志反映主机登录与系统事件;IIS 日志反映对网站的每一次 HTTP 请求。利用文件上传、SQL 注入、反序列化进入系统时,访问日志通常比系统日志更早出现痕迹。
6.1 路径、格式与开启方法
6.1.1 默认位置
目录:C:\inetpub\logs\LogFiles\。每个站点一个子目录 W3SVCn,n 为站点 ID。在 IIS 管理器中查看站点 ID:网站 → 对应站点 → 高级设置。文件名 u_exYYMMDD.log 表示 UTC 日期的扩展格式。
也可能通过配置改为其他磁盘。应急时应在 applicationHost.config 中搜索 logFile:
6.1.2 W3C 字段
默认 W3C 扩展格式。文件开头类似:
IIS 管理器:站点 → 日志记录 → 选择 W3C → 选择字段。建议增加:cs(Referer)、cs(Cookie)(注意隐私)、cs-bytes、sc-bytes、time-taken。默认通常不记录 POST 正文,因此一句话木马的函数名可能只出现在查询串或后续 GET 参数中,正文不可见。
配置说明:https://learn.microsoft.com/iis/manage/provisioning-and-managing-iis/configure-logging-in-iis
日志必须外送到 SIEM。攻击者获得 Web 服务器权限后,往往会删除 LogFiles 或关闭日志。
6.2 字段含义与分析方法
字段
含义
分析要点
date / time
时间
默认 UTC,与安全日志本地时间对齐时须换算
s-ip / s-port
服务器地址与端口
多站点绑定时区分
c-ip
客户端
反向代理后常为代理地址,需 `X-Forwarded-For`(须单独加自定义字段)
cs-method
方法
上传、部分后门管理界面多用 POST
cs-uri-stem
路径
上传目录突然出现 `.aspx` `.ashx` `.php`
cs-uri-query
查询
`../`、`union`、`cmd=`、模板注入特征
sc-status
状态
见 6.3
cs(User-Agent)
UA
空白、`sqlmap`、`curl`、`python-requests`
time-taken
耗时毫秒
异常长请求可能是导出数据
6.3 状态码与行为模式
状态码
含义
常见模式
200
成功
冷僻脚本被同一 IP 反复 POST
301 / 302
重定向
登录表单暴破
401 / 403
未授权 / 禁止
目录与管理路径探测
404
不存在
同一 IP 短时间大量不同路径
500
服务器错误
探测框架与路径泄露
应同时看 sc-substatus。例如 404.0 与 403.14(目录列表被禁)含义不同。
行为模式:
6.4 提取与统计示例
字段下标取决于 #Fields 实际顺序,分析前必须先读文件头,不能假设第 9 列一定是 c-ip。
Log Parser:
IIS 失败请求跟踪(Failed Request Tracing)可记录详细错误,体积大,适合短时间开启针对可疑 URL。
七、Windows 主机防火墙管理
Windows 防火墙基于 Windows 过滤平台(WFP),在主机网络栈中过滤。它不能替代边界防火墙,但能限制失陷后的横向连接,并在笔记本离开办公网时提供最后一层过滤。
7.1 入站与出站模型
防火墙采用有状态检测:已获允许的入站连接,其回程出站流量通常会被自动放行,无需再编写对称规则(具体取决于规则方向与程序)。
高安全服务器应评估出站白名单:仅允许指定程序访问更新服务器、域控制器和业务对端。桌面环境的出站白名单成本较高,可以退而求其次:阻止未知路径的程序出站、记录出站连接(Sysmon 事件 3)。
常见的高风险入站端口:3389(RDP)、445(SMB)、135/139、1433(SQL Server)、5985/5986(WinRM)、47001。应用服务器若无业务需求,这些端口应对非管理网段关闭。
7.2 配置文件与网络位置
配置文件
匹配条件
策略倾向
域 Domain
NLA 确认可联系域控制器
由 GPO 统一
专用 Private
用户或策略标识为专用网
仍应限制管理端口
公用 Public
未知网络
最严格
域成员计算机应稳定显示为 DomainAuthenticated。便携设备在酒店网络应使用 Public。若 NLA 失败导致本应使用域配置文件时落到 Public,可能切断合法入站连接,须排查 DNS 与域控连通性,而不是关闭防火墙。
组策略可禁止用户更改网络位置。三个配置文件都必须将 Enabled 设为 True。只开启域、关闭公用,会使笔记本在外网失去主机防火墙保护。
7.3 规则基线
GPO 锁定:计算机配置 → Windows 设置 → 安全设置 → Windows Defender 防火墙。注册表:HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy
7.4 运维命令
文档:https://learn.microsoft.com/powershell/module/netsecurity/new-netfirewallrule
应急隔离:可对失陷主机设置全部配置文件的入站出站默认阻止,再仅放行到取证收集器的端口。不要把“关闭防火墙”作为排障第一步。应用连不上时应先看侦听地址、服务是否启动、安全组与网络 ACL,最后才怀疑主机防火墙。
八、Windows 注册表安全配置
注册表是系统与软件的配置库,也是持久化、映像劫持、关闭防护的主要写入目标。第八章的服务、第四章的策略、第七章的防火墙策略在存储上均落在注册表。
8.1 自启相关键
常见位置(均须检查 32 位 WOW6432Node 对应项):
路径
作用域
`HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run`
所有用户
`HKCU\Software\Microsoft\Windows\CurrentVersion\Run`
当前用户
`HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce`
一次性
`HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run`
策略指定
启动文件夹
`%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp` 与用户对应目录
数据指向 Temp、AppData\Local\Temp、Public、无签名 exe 时,应导出文件哈希并隔离。Sysmon 事件 12、13 可记录这些键的创建与赋值。Autoruns 的 Logon 页汇总上述位置。
8.2 映像劫持与 Winlogon
8.2.1 IFEO
路径:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<进程名>。微软用于为指定进程附加调试器。若存在名为 Debugger 的字符串,指向另一可执行文件,则每次启动目标进程会先启动 Debugger。历史上针对 sethc.exe、utilman.exe、osk.exe、magnify.exe 的辅助功能程序被替换或被 IFEO 劫持,以便在登录界面触发。排查:
任何非调试工作站上的 Debugger 值均应视为高风险。SilentProcessExit、GFlags 等子项也可能被滥用,Autoruns 的 Image Hijacks 页会列出。
样本:https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES/tree/master/Persistence
8.2.2 Winlogon
路径:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
值
正常示例
异常
Shell
`explorer.exe`
被替换或追加逗号分隔的其他程序
Userinit
`C:\Windows\system32\userinit.exe,`
逗号后追加路径
Notify
合法通知包
未知 DLL
Userinit 被追加后,每次登录都会启动附加程序,权限随用户(若为管理员登录则权限较高)。
8.3 服务注册项
路径:HKLM\SYSTEM\CurrentControlSet\Services\<短名称>
值
含义
ImagePath
可执行文件或 `svchost.exe -k 组`
Type
1 内核驱动、2 文件系统、16/32 自身进程/共享进程
Start
2 自动
ObjectName
运行身份,如 LocalSystem
FailureCommand
失败后执行的命令,可被塞入恶意命令
ServiceDll
svchost 托管服务的 DLL
新服务应对 7045 告警:核验哈希、签名、路径、账号。名称模仿 WindowsUpdate、SysHelper 但路径在用户目录的,优先按恶意软件处理。
8.4 审计与备份
8.4.1 注册表审核
在高级审核中启用“注册表”对象访问,并对敏感键设置 SACL(审核成功写入)。键包括:上述 Run、Winlogon、Services、PowerShell 策略、防火墙策略、LSA。设置方法:regedit → 键 → 权限 → 高级 → 审核。日志会出现在 Security 通道,事件 ID 4657 等(须确认当前系统实际 ID)。
8.4.2 备份
在系统处于可信状态时:
SAM 与 SECURITY 需要 SYSTEM 权限,通常在离线或使用 reg save 于 SYSTEM 上下文。备份文件按机密件保管。还原错误 hive 可导致无法启动,须在测试机验证。
九、Windows 补丁管理
补丁管理处理的是已知漏洞的修复窗口。公开利用往往出现在补丁发布后数小时至数周。管理对象包括操作系统、驱动、Office、浏览器、运行时(.NET、VC++)以及 Java 等第三方组件。
9.1 更新来源与职责
来源
适用
说明
Windows Update
单机
难以审批与分批
WSUS
内网
免费,可分类、审批、报告
MECM / SCCM
中大型
清单、分批、合规仪表板
Windows Update for Business
云管客户端
延迟通道、截止日期
第三方补丁
非微软软件
单独目录与测试
职责:安全运营跟踪 CVE、CVSS、CISA KEV(https://www.cisa.gov/known-exploited-vulnerabilities-catalog)及是否在野利用;运维负责测试与推送;业务提供窗口。KEV 中且主机对不可信网络暴露的项,应进入紧急流程而非月度补丁日。
Microsoft 安全更新指南:https://msrc.microsoft.com/update-guide
9.2 紧急补丁响应
客户端日志:C:\Windows\Logs\WindowsUpdate\WindowsUpdate.log(Win10 后需 Get-WindowsUpdateLog 合并 ETL)。事件查看器中 Windows Update 客户端来源可查安装结果。
9.3 基线盘点、灰度与回滚
没有资产清单就无法计算覆盖率。须掌握:OS 内部版本(winver / [System.Environment]::OSVersion)、架构、是否服务器、角色(DC、IIS、文件服务器)、已装 KB、第三方软件版本。
灰度顺序:测试 → 预发 → 生产非核心 → 核心。内核与驱动更新通常需重启才生效;“已安装但未重启”在清单上显示已修复,在内存中仍是旧内核。维护窗口必须包含重启。
回滚:部分累计更新支持卸载,部分不支持。核心系统应有系统镜像或虚拟机快照。卸载前阅读该 KB 的已知问题。第三方软件按厂商手册回退。
Security Compliance Toolkit 可用于对照安全选项是否被更新改回或被业务 GPO 覆盖:https://www.microsoft.com/en-us/download/details.aspx?id=55319
十、Linux 账户管理
Linux 账户安全的原则是:身份强验证、权限最小化、无交互登录需求的账户不得获得 Shell。账户数据库由 passwd 与 shadow 分工存储,提权路径由 sudo 与 PAM 约束。
10.1 passwd 与 shadow
10.1.1 字段含义
/etc/passwd 权限应为 644,每行七个字段,冒号分隔:
口令占位必须为 x,表示真实哈希在 shadow 中。若该字段为哈希或为空,属于严重错误配置。UID 0 为 root。登录 Shell 为 /sbin/nologin 或 /bin/false 的账户不能交互登录。
/etc/shadow 权限应为 000 或 600,仅 root 可读。字段包括:哈希、上次改密日期、最小/最大改密间隔、警告天数、过期后宽限、账户失效日。哈希前缀 $6$ 表示 SHA-512 crypt,$y$ 等为 yescrypt(视发行版而定)。哈希被复制后可离线猜测,因此 shadow 与其备份的权限同等重要。
UID=0 的账户应仅有 root。出现 toor、admin 等同 UID 0 账户时,按应急事件处理。
10.1.2 威胁说明
任何用户可读 passwd,用于枚举可登录用户与家目录。shadow 权限过宽、被 Web 应用以 root 读取、或出现在备份包中,即可用于离线破解。加固包括:严格权限、限制备份访问、对可登录用户使用长口令或直接改为密钥登录并锁定口令。
10.2 sudo 最小授权
10.2.1 编辑规则
/etc/sudoers 及 /etc/sudoers.d/ 下的文件必须用 visudo 编辑。visudo 在保存时检查语法,避免写坏后无人能提权。
规则直觉:谁、在哪台主机、以什么身份、运行哪些命令。示例(仅说明格式,不要照抄 ALL):
10.2.2 危险授权
以下配置等价于授予 root Shell,普通用户一旦被控即可提权:
检查当前用户被授予的命令:
生产上应按组授权(%wheel 或自定义 %ops),命令写绝对路径,能不用 NOPASSWD 则要求口令。需要无密码的自动化账号,命令集必须极窄,并限制来源主机。
10.3 锁定无用账户
系统账户(bin、daemon、nobody 等)不应具备交互 Shell。
lastlog -b 90 列出 90 天未登录的账户,结合人事流程锁定。安装数据库、中间件时创建的默认账户,必须改口令或改为 nologin。Debian 与 RHEL 的系统 UID 范围不同,以发行版 login.defs 中 UID_MIN 为准区分系统账户与普通账户。
10.4 口令质量与失败锁定
10.4.1 pam_pwquality
配置常位于 /etc/security/pwquality.conf。PAM 入口:RHEL 系 /etc/pam.d/system-auth 与 password-auth;Debian 系 /etc/pam.d/common-password。
示例意图(按组织策略调整):
remember 由 pam_unix 或 pam_pwhistory 提供,防止近期口令复用。/etc/login.defs 中的 PASS_MAX_DAYS 等控制有效期。与 Windows 类似,不宜把频繁强制改密当作唯一控制。
10.4.2 pam_faillock
连续失败后锁定,可降低在线猜测速度。须配置解锁时间,并避免把合法管理员长时间锁在仅有的远程通道之外。RHEL 8+ 使用 pam_faillock,旧版可能为 pam_tally2。
SSH 侧仍应优先禁用口令登录。fail2ban 作为补偿控制见第十一章。
十一、Linux 日志安全配置
日志安全的目标是:关键行为被记录、本地权限无法单方面销毁全部证据、存储不被无意义数据填满。实现上依赖 rsyslog 或 syslog-ng、journald、logrotate、权限,以及必须存在的远程副本。
11.1 rsyslog 与 journald
11.1.1 双轨制
组件
形态
位置
特点
rsyslog
文本
`/var/log/messages`、`secure` 等
便于 grep 与转发
journald
二进制
`/var/log/journal/`
按单元、PID、时间查询
/etc/systemd/journald.conf 建议:
Storage=volatile 时重启即丢失。persistent 需要目录 /var/log/journal 存在。
11.1.2 rsyslog 配置结构
主文件 /etc/rsyslog.conf,片段 /etc/rsyslog.d/*.conf。规则为选择器加动作。认证设施在 RHEL 上写入 /var/log/secure,Debian 上为 /var/log/auth.log(rsyslog 中 auth,authpriv.*)。
修改后:
-N1 检查语法,避免写错导致服务无法启动。
11.2 认证日志
典型行:
Debian 将 secure 换为 auth.log。字段位置随模板变化,统计前先 head 看一列再 awk。
fail2ban:https://github.com/fail2ban/fail2ban
安装后复制 jail 为 jail.local,启用 [sshd],设置 maxretry、bantime、ignoreip(管理网段)。它读取认证日志并调用防火墙,不能替代密钥认证。
11.3 轮转、权限与防篡改
/etc/logrotate.conf 与 /etc/logrotate.d/ 控制周期、rotate 份数、compress、delaycompress、missingok、create 0640 root adm。认证日志应为 600 或 640,所有者 root,组可为 adm 或 systemd-journal(视发行版)。
磁盘被无意义日志写满会导致服务停止写入。应对 /var 做容量告警。攻击者可能 systemctl stop rsyslog 或把规则改为 /dev/null。应用 auditd 监控 /etc/rsyslog.conf、/etc/rsyslog.d 的写入,并监控 rsyslog 进程存活。chattr +i 可锁个别文件,但须有解冻 SOP,否则自身无法轮转。
11.4 集中外送
本地 root 可以删除 /var/log。因此证据必须在失陷前离开主机。
rsyslog 转发示例(TCP):
@@ 为 TCP,@ 为 UDP。生产应使用 TLS 与证书校验,参考 rsyslog imtcp/omfwd 与 ossl 文档。Wazuh 代理亦可完成采集、完整性监控与告警:https://github.com/wazuh/wazuh 文档:https://documentation.wazuh.com/
验证外送:在收集器检索该主机近期 SSH 失败,再在主机执行一次失败登录,确认延迟可接受。
十二、Linux 文件权限管理
权限配置错误是本地权限提升的常见条件。自主访问控制(DAC)由属主、属组、其他人及特殊位组成;第十二章处理 DAC,第十六章处理 MAC。
12.1 基本模型与常用命令
权限位:读 4、写 2、执行 1。目录的执行位表示可进入该目录。没有目录执行位时,即使文件本身为 644 也无法打开。
namei -l 显示路径上每一级权限,用于排查“文件 600 但仍被他人读取”时中间目录是否可遍历。
对象
建议
`/etc/passwd`
644 root:root
`/etc/shadow`
000 或 600 root:root
`/etc/sudoers`
440 root:root
SSH 主机私钥
600
用户私钥
600,`.ssh` 目录 700
`authorized_keys`
600 或 640
业务代码
750 或 755,属主为部署账号,Web 运行用户尽量只读
禁止业务目录 777。Web 上传目录若必须可写,应与可执行解释分离,并配合 PHP/IIS 禁止执行该目录脚本。
ACL:getfacl/setfacl 可在 UGO 之外授权。检查意外 ACL:
12.2 SUID、SGID、Sticky 与 Capabilities
位
数字
作用
SUID
4
执行时使用文件属主身份,属主为 root 时即以 root 权限运行
SGID
2
执行时使用属组;目录上则新建文件继承属组
Sticky
1
目录中仅文件所有者(及 root)可删除该文件
/tmp、/var/tmp 应为 1777,即 sticky。缺少 sticky 时,用户可删除他人临时文件。
发行版自带的 SUID(如 passwd、sudo)应保留。find、vim、bash、python、nmap、cp 等出现 SUID 属于异常,须 chmod u-s 并追查来源。
Linux Capabilities 将 root 能力拆分。cap_setuid、cap_sys_admin 等被授给解释器时,效果接近 SUID。
12.3 umask 与关键目录挂载选项
默认文件 666、目录 777,再减去 umask。umask 022 → 644/755;umask 077 → 600/700。过宽 umask(000)使新文件对他人可写。
脚本开头可显式 umask 077。
/tmp 在业务允许时于 /etc/fstab 增加 nosuid,nodev,noexec。noexec 会阻止在该目录执行二进制,显著降低恶意程序落地后直接运行的可能,但可能影响部分安装程序,须测试。/dev/shm 同样处理。Web 根目录所在分区可考虑 nodev,nosuid。
chattr +i /etc/passwd 可防止即使 root 进程轻易改写,排障时必须 chattr -i。仅用于变更极少的黄金文件,并写入操作手册。
十三、Linux 服务安全配置
每个处于监听状态的服务都是攻击面。原则:最小安装、最小监听、远程管理通道强认证且限源。
13.1 systemd 单元
13.1.1 文件位置与优先级
systemd 为 PID 1。单元文件:
systemctl cat 显示合并后的单元。关注 ExecStart、User、Restart=always、WantedBy=multi-user.target。攻击者可能投放名称类似 systemd-networkd-wait.service 的文件,ExecStart 指向 /tmp 或用户家目录。
13.1.2 加固指令
在 drop-in 中可为业务服务增加:
是否可加取决于服务是否需要写 /usr 或读家目录。改完 systemctl daemon-reload && systemctl restart 服务。
新单元文件权限应为 644 root:root。对 /etc/systemd/system 做 FIM 或 auditd 监控。
13.2 停用无用服务与收敛监听
mask 将单元链接到 /dev/null,防止被依赖拉起。数据库、Redis、消息队列若仅本机应用访问,应 bind 127.0.0.1。ss 的 *:3306 表示所有接口。修改配置后须确认 ss 已变化,而不是只改了文件未重启。
13.3 SSH 加固
配置 /etc/ssh/sshd_config 及 sshd_config.d/*.conf。改完:
-t 测试语法。建议项(按环境调整端口与用户):
AllowTcpForwarding no 可能影响合法隧道,须与网络部门确认。主机密钥 ssh_host_*_key 为 600。用户 authorized_keys 中只放本人公钥,禁止把同一把私钥分发到全部服务器。OpenSSH 手册:https://man.openbsd.org/sshd_config
验证:用密钥从允许网段登录应成功;从其他网段或用口令应失败;sshd -T | grep -i passwordauthentication 确认有效值为 no。若存在云厂商的第二套管理通道(如串口控制台),改 SSH 前确保控制台可用。
十四、Linux 防火墙配置
防火墙决定主机对外可见的端口集合。与 Windows 第七章相同:默认拒绝、显式允许、精确规则在前。Linux 实现经历 iptables、firewalld、nftables,底层均为 Netfilter。
14.1 实现方式对照
方案
说明
适用
iptables
用户态工具操作表与链
遗留脚本、排错
firewalld
区域、运行时与永久分离,后端可为 nft
RHEL 7+ 默认
nftables
新框架,集合与映射,命令 `nft`
新部署首选底层
同一主机不要混用多套工具同时改策略,以免规则互相覆盖且无法解释。nftables:https://wiki.nftables.org/
14.2 默认策略与顺序
默认允许只能拦截已知地址。默认拒绝仅放行业务端口与来源。iptables/nft 均为自上而下匹配,命中 ACCEPT 或 DROP 后停止。错误示例:先无条件 DROP,再 APPEND 允许 SSH,SSH 永不通。正确:先允许 SSH 与已建立连接,最后 DROP。
修改默认策略前,必须通过虚拟机控制台登录,或确保当前会话已建立(RELATED,ESTABLISHED 仍放行)且新规则已包含 SSH。
14.3 firewalld 基线
区域表示对某网卡或来源的信任级别:drop、block、public、internal、trusted 等。未加 --permanent 的规则在 reload 或重启后消失。
将 SSH 从 public 默认服务中移除、改为 rich rule 限源,可显著减少互联网扫描。手册:https://firewalld.org/documentation/
排障不要 systemctl stop firewalld。应看 --list-all、端口是否 listen、SELinux AVC。
14.4 iptables 与 nftables 注意点
iptables 表:filter(INPUT/FORWARD/OUTPUT)、nat、mangle。日常主机过滤看 filter。
nftables 常用 inet family 同时覆盖 IPv4/IPv6。配置 /etc/nftables.conf,nft -f 加载。应对该文件做完整性监控。云厂商安全组与主机防火墙同时存在时,须两边一致,否则会出现“安全组已放行但主机 DROP”或相反。
十五、Linux 版本与漏洞管理
多数可被利用的条件来自已公开未修复的漏洞。版本管理包括:发行版是否仍受支持、内核是否已重启生效、软件源是否可信、CVE 是否按暴露面排序。
15.1 发行版生命周期
到达 EOL 后官方不再提供安全更新。继续运行等于公开已知漏洞清单。应建立资产表:主机名、发行版、支持结束日期、负责人、迁移窗口。替代路径包括升级大版本、更换仍在支持的兼容发行版、购买厂商延长支持。
15.2 内核与软件包更新
内核漏洞修复通常需新内核运行,即重启。uname -r 与磁盘上已安装的最新 kernel 包不一致,说明尚未重启。热补丁(Livepatch、kpatch)可在部分场景避免立即重启,须用厂商命令确认补丁已加载。
软件源:生产应使用内网镜像(Nexus、Artifactory、官方镜像同步),避免直接使用不明第三方源。yum versionlock 或 apt-mark hold 可锁定 glibc、openssl 等,防止非计划升级。升级须先在测试环境执行。
供应链风险:恶意或被入侵的仓库可以在合法包名中植入后门。仅启用签名校验通过的仓库,并监控 yum.repos.d / sources.list 变更。
15.3 CVE 跟踪与扫描
CVE 提供编号,CVSS 提供粗略分值。优先级还应看:是否在 CISA KEV、是否有公开利用、该包是否监听不可信网络、是否有官方修复包。
将已装版本与公告“受影响版本”对照。主机扫描:Vuls https://github.com/future-architect/vuls ;OpenVAS/GVM https://github.com/greenbone/openvas-scanner 。扫描结果必须人工确认误报(例如已缓解但版本号未变)。Lynis 可同时给出配置级建议:https://github.com/CISOfy/lynis
十六、Linux 访问控制
DAC 由文件所有者决定谁能读写。PAM 决定如何证明身份。MAC(SELinux/AppArmor)在 DAC 允许之后仍按策略限制进程。TCP Wrappers 仅作历史概念补充。
16.1 PAM 认证栈
16.1.1 模块类型与控制标志
应用程序(sshd、sudo、login)通过 /etc/pam.d/ 下与服务同名的文件加载模块,无需改程序代码。
类型
作用
auth
验证身份
account
账户是否过期、是否允许登录
password
修改口令时的质量检查
session
会话建立与销毁(限额、环境、日志)
控制标志:required(失败也继续,最终失败)、requisite(失败立即返回)、sufficient(成功且此前 required 未失败则可提前成功)、optional。顺序错误会导致绕过或全员无法登录。修改 PAM 前必须保留控制台会话,并用另一终端测试 SSH。
16.1.2 加固与完整性
使用 pam_pwquality、pam_faillock。禁止不明 pam_*.so 出现在栈中。软件包校验:
替换 pam_unix.so 记录口令是经典后门。应对 /lib*/security 与 /etc/pam.d 做 FIM。Wazuh FIM 可监控这些路径。
16.2 TCP Wrappers
/etc/hosts.allow、/etc/hosts.deny 由 libwrap 提供,语法为 服务:客户端。现代 sshd 默认不再链接 libwrap。可用 ldd $(which sshd) 查看是否包含 libwrap。生产 IP 过滤应使用防火墙。该机制仅用于理解“按来源放行”的历史实现。
16.3 SELinux 与 AppArmor
16.3.1 模式
模式
含义
Enforcing
拒绝违规并审计
Permissive
只审计不拒绝,用于调试
Disabled
完全关闭,下次启动策略也不加载
/etc/selinux/config 中 SELINUX=enforcing。排障时可用 setenforce 0 判断是否为策略拦截,验证完毕必须 setenforce 1。将配置改为 disabled 并重启,属于拆除 MAC。
SELinux 为类型强制:进程有域(如 httpd_t),文件有类型(如 httpd_sys_content_t、shadow_t)。即使 DAC 允许 httpd 读 shadow,TE 仍可拒绝。这是 Web 进程被远程代码执行后限制读凭据的关键一层。
为新目录设置上下文:
不要用 chcon 作为长期方案,重启或 restorecon 可能丢失。笔记本:https://github.com/SELinuxProject/selinux-notebook
AppArmor 基于路径,Ubuntu 默认启用。
16.4 分层控制
完整顺序:网络防火墙(来源)→ 服务是否应存在及 bind 地址 → PAM(身份与锁定)→ DAC 与 sudo(文件与提权)→ MAC(进程被控后仍受约束)→ 日志已外送。验收方法:在测试机故意只拆掉一层,看其余层是否仍能阻止或留下证据。
十七、应急响应的形式与分级
加固降低事件概率,但不能降至零。应急响应(Incident Response)在事件发生后完成:控制影响、保全证据、清除原因、恢复业务、改进控制。本章解决“用什么方式响应、按什么标准调资源”。
17.1 远程响应与现场响应
方式
手段
优点
限制
远程
SSH、RDP、VPN、EPP/EDR 控制台、Wazuh
速度快,可同时多台
通道可能已被控制;可能惊动对方;带宽限制镜像
现场
机房、KVM、外接采集、拔除网线
可采集内存与磁盘;不依赖主机上的 SSH
差旅与审批耗时
策略:远程先阻断命令控制与横向(防火墙、账号、隔离 VLAN),现场做完整镜像与定案。若 EDR 显示攻击者正在使用同一堡垒机,应停止使用该堡垒机,改用带外(iLO、iDRAC、云串口)或物理访问。远程执行的每一条命令都可能被记录在对方监控中,也应写进我方时间线。
17.2 按事件类型区分处置重点
类型
优先动作
主要证据
Web 后门
隔离站点或上传目录,保留文件
Web 日志、文件时间、w3wp/php-fpm 子进程
勒索软件
隔离网络,评估备份
加密扩展名、备注勒索信、SMB 横向
挖矿
断外联,查持久化
CPU、矿池域名、cron
数据泄露
断出站,定数据范围
流量、数据库审计、压缩包
暴力猜测
封源,查是否已成功
4625/Failed password 与 4624/Accepted
同一主机上四类问题可以并存:弱口令进入后放挖矿,再放后门。分类是为了选第一刀,不是只查一项。
17.3 优先级
级别
典型情形
时限与资源
P0
核心交易中断、域控失陷、大规模勒索、明确的大量个人信息外传
立即响应,管理层与法务介入,按法规评估通报
P1
非核心失陷但存在凭据可横向、WebShell 已可执行系统命令
数小时内遏制
P2
单机挖矿、测试机木马、无域管凭据
当日
P3
钓鱼未打开附件、扫描未成功、误报
记录与批量处理
定级依据是业务影响与扩散能力,不是样本是否“看起来危险”。P0 时可以牺牲部分取证完整性以换取隔离,但须在报告中写明。
17.4 沟通与合规
内部:业务(能否断网、近期变更、账号是否共用)、管理层(级别、范围、预计恢复)、IT(DNS、防火墙、备份可用性)。外部:监管通报条件、公安报案、云厂商工单、证书吊销。采集须记录人、时间、工具、哈希,以满足后续审计。涉及勒索款项或与对方直接联络,必须走本单位法律流程,技术团队不得自行承诺。
工具选型见第二十一章。流程标准见 NIST SP 800-61:https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final
十八、典型安全事件的检测与处置
统一顺序:隔离与保全、扩大检测范围、根除、监控观察。未备份前不要删除样本。
18.1 Web 后门
18.1.1 检测
Windows 按 IIS 站点目录排序修改时间,对照第六章 POST 200。内容特征包括超长单行、从用户输入直接进入执行函数、与业务仓库不一致的文件。注意时间戳可能被修改,须用 Web 日志时间交叉。
18.1.2 处置
18.2 异常外联
Windows:Get-NetTCPConnection -State Established 结合 PID 查进程路径。关注:非浏览器进程连接境外、规律间隔、DNS 查询超长子域、连接矿池端口。处置:主机与边界同时阻断 IP/域名;杀进程并清 cron/服务;重置本机凭据;检查是否还有第二条隧道(ICMP、DNS、HTTPS 分片)。
18.3 暴力猜测
Windows:统计 4625 的源 IP 与用户名,再查是否出现对应 4624。Linux:Failed 与 Accepted 的时间差。
若已成功:假定口令与可能的横向范围全部泄露。封源、锁账号、重置口令、启用 MFA、收敛 22/3389。检查成功后的 sudo、文件变更、新密钥。
18.4 数据泄露
迹象:出站流量相对基线显著上升、临时目录出现大体积压缩包、数据库出现全表导出、对象存储出现异常同步。立即限制出站(先紧后松),避免继续传输。评估数据类型是否涉及个人信息或商业秘密,以便合规。保留 PCAP、防火墙会话、数据库审计。轮换可能被带走的密钥。
18.5 挖矿
Windows 看任务管理器与 Autoruns。特征:CPU 长期接近 100%、进程名模仿系统服务但路径异常、命令行含 stratum、矿池域名。处置:断网或封矿池、停进程、清持久化(含 Docker 内)、修初始入口(未授权 Redis、Docker API、弱口令 SSH)。挖矿常与后门并存,按 18.1 再扫 Web 与账号。
十九、应急响应标准流程
PICERL 是闭环:准备不足则检测盲目;根除不彻底则恢复后复发;没有总结则同一入口会再被使用。
19.1 六步说明
步骤
英文
工作内容
常见失败
准备
Preparation
预案、联系人、工具包、日志已外送、备份已验证可恢复、资产清单
事件发生才发现日志只有 20 MB
检测与分析
Detection and Analysis
确认是否真实事件、类型、时间锚点、影响主机列表
把扫描当入侵或把入侵当扫描
遏制
Containment
防扩散:封 IP、隔离 VLAN、禁账号、停服务
过早断电丢失内存;过晚隔离导致勒索蔓延
根除
Eradication
清后门、打补丁、改口令、去持久化
只杀进程
恢复
Recovery
从可信备份或重建镜像接入,灰度、加强监控
未完成根除就恢复生产
总结
Lessons Learned
报告、改基线、改检测规则、演练
只口头复盘无工单
准备阶段对应本文第一至十六章。检测阶段禁止在原始磁盘上直接杀毒清理。应先镜像或至少复制样本与日志。
19.2 遏制与根除的操作尺度
网络遏制:边界防火墙与主机防火墙同时加规则;交换机端口隔离;云安全组。账号遏制:禁用、重置、吊销 Kerberos 票据、下线 VPN 证书。主机遏制:停恶意服务、禁用任务、必要时只读挂载。
勒索在文件服务器横向时,隔离优先于内存取证。针对单一服务器的高级威胁且需取证时,先阻断外联、保持开机、采集内存,再决定是否关机。根除清单必须包含:用户、组、Run/IFEO/服务/WMI、cron/systemd、authorized_keys、Web 目录、驱动与预加载库。
19.3 恢复与总结
恢复顺序:补丁与口令 → 从已知干净备份恢复或重装 → 接入隔离网段观察 IOC → 再接入生产。观察期长度取决于威胁级别,P0 建议持续加强监控不少于一周。总结必须形成可关闭的整改项(负责人、期限),并更新 Sigma/Wazuh 规则与防火墙对象组。NIST SP 800-61:https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final
二十、现场排查方法
到达主机后的顺序错误会销毁证据。原则是易失数据优先,清单保证不漏项。
20.1 先取证后处置
易失性从高到低:CPU 寄存器与内存 → 网络连接与登录会话 → 运行进程 → 磁盘。
Windows 内存:WinPmem https://github.com/Velocidex/WinPmem ;FTK Imager 以 Exterro 当前页面为准。Linux:LiME https://github.com/504ensicsLabs/LiME ;Linpmem https://github.com/Velocidex/Linpmem 。采集后立即 SHA-256,写入采集表。磁盘使用 dd 或 FTK,只读写阻断器。
采集时避免:杀毒全盘清除、重启、让用户“先重装试试”、在原盘解压恶意样本。业务若必须马上恢复,应先完成内存与关键日志复制,或接受证据不完整并在报告中声明。
同时记录:
Windows:
20.2 时间线与证据三角
锚点可以是:SOC 告警时间、文件创建时间、第一次 Accepted/4624、防火墙首次封禁。将 Security、Sysmon、IIS、secure、防火墙、DNS 按 UTC 对齐。IIS W3C 常用 UTC,Windows 事件可能是本地时间,Linux syslog 依赖 NTP。NTP 偏移过大会使时间线错位,应记录各源时区。
文件 MAC 时间可被修改(timestomping)。必须以外部日志为准。证据三角:主机(磁盘、内存、配置)、网络(PCAP、NetFlow、DNS)、身份(AD、堡垒机、邮件)。三点重合再下定论。
20.3 Windows 检查项
20.4 Linux 检查项
/proc/PID/exe 显示 (deleted) 时,进程仍在内存运行而磁盘文件已删,必须从内存或 /proc/PID/exe 复制样本。
二十一、应急响应常用工具
工具服从 PICERL:先采集,再分析。下列地址以项目维护方页面为准,安装后核验哈希或签名。
21.1 Sysinternals
套件:https://learn.microsoft.com/sysinternals/downloads/sysinternals-suite
文件服务器:https://live.sysinternals.com/Files/
工具
用途
操作要点
Process Explorer
进程树、签名、线程、句柄、TCP
对无签名或路径异常进程查看 Strings 与模块
Autoruns
自启汇总
隐藏 Microsoft 条目,核对未签名项
TCPView / TCPVCon
连接
与 netstat 互证
Process Monitor
文件/注册表/进程
过滤 PID,导出 PML 过大时缩小时间窗
Sigcheck
签名与哈希
对可疑目录递归
Sysmon
持续遥测
见第四章
Linux Procmon 预览:https://github.com/microsoft/Procmon-for-Linux
21.2 OSSEC 与 Wazuh
主机入侵检测:文件完整性、日志告警、rootkit 检测、主动响应。Wazuh 在 OSSEC 上增加索引与仪表板。代理外送后,本机日志删除不影响服务端副本。
OSSEC:https://github.com/ossec/ossec-hids
Wazuh:https://github.com/wazuh/wazuh
文档:https://documentation.wazuh.com/
应急中查看:FIM 告警(passwd、pam、systemd、Web 目录)、异常进程、登录失败风暴。
21.3 内存分析框架
Volatility 3:https://github.com/volatilityfoundation/volatility3
文档:https://volatility3.readthedocs.io/
Volatility 2 已停止维护。插件名随版本变化,分析流程见第二十三章。
21.4 完整性校验与 Rootkit 检测
AIDE:https://github.com/aide/aide 须在系统干净时初始化数据库并离线保存库文件。
chkrootkit:https://github.com/chkrootkit-org/chkrootkit
rkhunter 可由发行版仓库安装。
内核挂钩会使 ps、ls、ss 的输出不完整。可信方法:用救援光盘挂载磁盘离线扫描,或对比已知干净的 /proc 与外部采集的内存。GMER 等 Windows 工具以厂商站点为准。
21.5 日志分析工具
Windows:wevtutil、Get-WinEvent、Log Parser 2.2(https://www.microsoft.com/en-us/download/details.aspx?id=24659)。Linux:grep、awk、jq、journalctl。规模化:Elastic 栈、Splunk、Wazuh。检测规则:https://github.com/SigmaHQ/sigma 。狩猎示例:https://github.com/Azure/Azure-Sentinel
EVTX 练习:https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES
二十二、网络流量分析
主机日志可能被删除或伪造。旁路镜像得到的链路层记录更难被终端篡改。加密流量仍可分析长度、时序、证书、SNI 与对端声誉。
22.1 采集位置
位置
可见范围
限制
本机 Wireshark/tcpdump
该主机全部进出,可对应进程
提权后可停止;自身性能影响
出口防火墙/代理
南北向、外传与 C2
不见东西向横向
核心交换机 SPAN 或 TAP
东西向
镜像是否抽样、是否丢包
企业应同时具备出口检测与核心检测。终端抓包用于单机深挖。tcpdump 示例:
避免把 SSH 取证会话自己打进包,或使用带外。Wireshark:https://www.wireshark.org/download.html 源码:https://github.com/wireshark/wireshark
22.2 过滤语法
捕获过滤器(BPF)在抓包前丢弃,降低丢包:host 10.0.0.8、net 10.0.0.0/8、tcp port 445。显示过滤器在打开文件后筛选:
Statistics → Conversations 按字节排序。Statistics → Protocol Hierarchy 看异常协议占比。Follow → TCP Stream 还原明文会话。导出对象:File → Export Objects → HTTP。
22.3 可疑 DNS 与异常流量特征
DNS 隧道:子域名长度异常且熵高、QPS 高、TXT 类型占比高、应答包远大于普通 A 记录、查询间隔高度周期。C2 心跳:间隔稳定、报文长度接近、会话长期存活、对端 ASN 与业务无关。扫描:短时间对多端口 SYN、大量 RST。数据外传:非工作时段向单一外部 IP 发送大量数据,TLS 记录大小均匀。
明文中出现 cmd.exe、powershell、/bin/bash 交互特征时,结合 Follow Stream。加密时改用元数据与情报,而不是尝试“解密 HTTPS”。
22.4 研判步骤与练习材料
材料
说明
地址
Wireshark Sample Captures
协议示例
Unit 42 Wireshark tutorials
教程 pcap,压缩包口令见仓库(多为 infected)
https://github.com/PaloAltoNetworks/Unit42-Wireshark-tutorials
Malware-Traffic-Analysis.net
练习题
NETRESEC pcap 索引
多来源列表
含恶意流量的压缩包只在隔离虚拟机中解压。不要在办公终端运行导出的 EXE。
二十三、内存取证
无文件执行、进程注入、凭据缓存可能不在磁盘留下完整 PE。内存镜像保存采集时刻的内核对象、进程页、网络结构。
23.1 采集原则
先内存后磁盘,采集前禁止重启。通知业务可能出现短暂负载。工具与内核版本匹配,优先使用有签名的采集器。采集目标盘不要写到被取证的同一卷。完成后计算哈希,填写:主机名、采集人、开始与结束时间、工具版本、镜像大小。
Windows:DumpIt(以 Magnet Forensics 当前发布为准)、FTK Imager、WinPmem。Linux:LiME 需针对内核编译模块;Linpmem 为独立工具。虚拟机可从宿主机做内存快照,注意是否包含暂停一致性。
23.2 进程、网络与注入
分析在专用主机进行,使用 Volatility 3。先确认镜像识别(Windows 用 windows.info,Linux 需符号)。然后:
命令形式随版本变化,以官方文档为准:https://volatility3.readthedocs.io/ 仓库:https://github.com/volatilityfoundation/volatility3
23.3 与磁盘闭环
内存中的路径指向 C:\Users\Public\ 或 /tmp/ 时,回到磁盘做文件取证与时间线。导出的 PE 与磁盘文件哈希一致,可证明落地;仅内存有、磁盘无,符合无文件或已删除仍运行(对照 /proc/PID/exe (deleted))。公开练习镜像许可各异,使用前阅读说明,不要在生产安装分析框架。
二十四、应急响应报告编写
报告是事件的正式记录,须同时满足管理层决策、技术复现与合规审计。没有证据的推断不得写成结论。
24.1 结构与读者
章节
读者
内容要求
概述
管理层
时间、系统、级别、当前状态、一句话性质、是否仍在扩散
响应过程
管理与审计
发现方式、通知链、PICERL 各步时间
技术分析
安全与运维
入口、漏洞或配置缺陷、哈希、命令、持久化、外部连接、检测规则 ID
影响
管理与法务
中断时长、数据对象、是否个人信息、是否监管范围
根因
全部
直接、间接、根本,避免只写“黑客攻击”
整改
全部
紧急/中期/长期,可验收,有责任人
附件
技术与司法
日志摘录、哈希表、采集链、时间线
概述避免堆砌事件 ID。技术分析避免没有结论的大段原始日志,原始内容放附件。
24.2 时间线
时间(含时区)
类型
源
目标
动作
证据编号
2026-09-02 09:15:22 +08
扫描
198.51.100.10
主机A:445
SYN
FW-001
2026-09-02 09:18:37 +08
认证失败
198.51.100.10
A\Administrator
多次 4625
EVT-4625-01
2026-09-02 09:19:01 +08
登录成功
198.51.100.10
A\Administrator
Type 10
EVT-4624-01
2026-09-02 09:19:10 +08
上传
198.51.100.10
IIS
新增脚本
IIS-001、FILE-001
2026-09-02 09:20:00 +08
外联
主机A
203.0.113.50:443
回连
PCAP-001
证据编号对应附件。未证实环节标注“待确认”。时区必须写出。
24.3 影响、根因与整改
影响尽量定量:分钟数、主机台数、库表或文件条数、是否触发《网络安全法》《数据安全法》《个人信息保护法》的通报条件(由法务判断,技术提供事实)。
根因三层:
整改示例(须改成本单位工单):
空泛句(如“提高安全意识”)不能作为唯一整改项,除非附带具体培训对象、日期与考核。
二十五、检查清单与参考资源
25.1 Windows 加固检查清单
25.2 Linux 加固检查清单
25.3 现场十五分钟动作
25.4 工具与案例汇总
名称
类型
地址
Sysinternals Suite
官方工具包
Sysmon
主机遥测
sysmon-config
配置示例
https://github.com/SwiftOnSecurity/sysmon-config
sysmon-modular
模块化配置
https://github.com/olafhartong/sysmon-modular
Security Compliance Toolkit
Windows 基线
Log Parser 2.2
日志查询
EVTX-ATTACK-SAMPLES
检测用事件样本
https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES
Sigma
检测规则
https://github.com/SigmaHQ/sigma
Azure-Sentinel
狩猎查询
https://github.com/Azure/Azure-Sentinel
Lynis
Linux 审计
https://github.com/CISOfy/lynis
linux-baseline
Linux 基线
https://github.com/dev-sec/linux-baseline
fail2ban
认证失败封禁
https://github.com/fail2ban/fail2ban
Wazuh
HIDS / SIEM
https://github.com/wazuh/wazuh
AIDE
文件完整性
https://github.com/aide/aide
chkrootkit
Rootkit 检测
https://github.com/chkrootkit-org/chkrootkit
Vuls
漏洞扫描
https://github.com/future-architect/vuls
Wireshark
流量分析
SampleCaptures
示例数据包
Unit42-Wireshark-tutorials
教程 pcap
https://github.com/PaloAltoNetworks/Unit42-Wireshark-tutorials
Volatility 3
内存分析
https://github.com/volatilityfoundation/volatility3
WinPmem
Windows 内存采集
https://github.com/Velocidex/WinPmem
LiME
Linux 内存采集
https://github.com/504ensicsLabs/LiME
CISA KEV
已知被利用漏洞目录
https://www.cisa.gov/known-exploited-vulnerabilities-catalog
NIST SP 800-61
应急处理指南
Windows LAPS
本地管理员口令
WDAC
应用程序控制
克隆 GitHub 仓库:
优先使用 Releases 中的校验和。含恶意流量或恶意代码的压缩包仅允许在隔离实验环境中使用。
25.5 关键事件与日志路径速查
系统
路径或通道
关键字段
Windows Security
`winevt\Logs\Security.evtx`
4624/4625/4672/4720/4732/4688/1102
Windows System
System.evtx
7045
PowerShell
PowerShell/Operational
4103/4104
Sysmon
Microsoft-Windows-Sysmon/Operational
1/3/7/10/11/12/13
IIS
`C:\inetpub\logs\LogFiles\W3SVC*`
POST、状态码、c-ip
Linux 认证
`/var/log/secure` 或 `auth.log`
Failed/Accepted/sudo
Linux journal
`journalctl -u sshd`
同上
防火墙
pfirewall.log 或 firewalld/nft 日志
阻断与允许
25.6 术语表
术语
含义
ACL
访问控制列表
AMSI
反恶意软件扫描接口
AVC
SELinux 访问向量缓存拒绝记录
C2
命令与控制信道
CIA
机密性、完整性、可用性
CLM
PowerShell 受约束语言模式
DAC / MAC
自主访问控制 / 强制访问控制
FIM
文件完整性监控
IOC
失陷指标
KEV
已知被利用漏洞目录
LAPS
本地管理员密码解决方案
LSASS
本地安全机构子系统
NLA
网络位置感知
PAM
可插拔认证模块
PAW
特权访问工作站
PICERL
应急响应六步模型
PPL
受保护进程轻量级
PTH
哈希传递
SAM
安全账户管理器
SIEM
安全信息与事件管理
SSDT
系统服务描述符表
VSS
卷影复制
WDAC
Windows Defender 应用程序控制
WEF
Windows 事件转发
WFP
Windows 过滤平台
25.7 Windows 实验:本机加固验证
以下步骤在隔离虚拟机中由本地管理员完成。每一步记录命令输出,作为基线证据。
25.7.1 账户与 UAC
确认 Guest 未激活;日常测试账号不在 Administrators;net accounts 中最短口令长度符合策略。打开 UserAccountControlSettings.exe,确认为始终通知。
25.7.2 审核策略与日志容量
确认登录成功与失败、账户管理、进程创建已启用。将 Security 最大大小调到至少 1 GB(按实验盘大小调整),然后故意用错误口令登录一次,执行:
应能看到失败记录。再用正确账号登录,核对 4624 的 Logon Type。
25.7.3 PowerShell 日志
启用脚本块日志后执行:
消息中应出现 hardening-test。再执行 $ExecutionContext.SessionState.LanguageMode,记录当前语言模式。
25.7.4 防火墙
确认三个配置文件均为 Enabled。实验规则用完即删。
25.7.5 自启与服务
下载 Autoruns:https://learn.microsoft.com/sysinternals/downloads/autoruns
勾选 Hide Microsoft Entries 与 Verify Code Signatures,导出 CSV 作为干净基线。然后检查未加引号且路径含空格的服务:
25.7.6 Sysmon(可选)
配置可从 https://github.com/SwiftOnSecurity/sysmon-config 获取并裁剪。启动记事本后检查 Sysmon 事件 ID 1 是否出现 notepad.exe。实验结束可用 sysmon64 -u 卸载。
25.7.7 事件样本离线分析
将 Persistence 等目录下的 .evtx 复制到分析机,不要导入生产。
对照仓库说明中的事件 ID 练习过滤。Sigma:https://github.com/SigmaHQ/sigma
25.8 Linux 实验:本机加固验证
使用普通用户加 sudo,另保留 root 控制台,避免 SSH 实验导致无法登录。
25.8.1 账户与权限
确认 UID 0 仅 root;sudo 无 ALL 且无 vim/python;/tmp 为 drwxrwxrwt(1777)。对异常 SUID 先记录路径,理解用途后再决定是否去掉。
25.8.2 SSH
有效配置应为禁止 root 登录、禁止口令(若已切换密钥)。用另一终端测试:密钥成功、口令失败。随后查看 journalctl -u sshd -n 20 或 /var/log/secure。
25.8.3 防火墙
若使用 nftables:sudo nft list ruleset。增加限源 SSH 的 permanent rich rule,--reload 后从允许网段与非允许网段分别测试,完成后删除实验规则。
25.8.4 日志与 Lynis
Lynis:https://github.com/CISOfy/lynis
不要一次落实全部 Suggestions。选择与第十至十六章对应的项逐项修改并验证。
25.8.5 SELinux
应为 Enforcing。业务被拦截时用上下文放行最小集合,禁止设置 SELINUX=disabled。
25.9 流量分析实验
25.10 内存分析实验(可选)
仅在专用分析虚拟机中进行。
使用许可明确的练习镜像。先运行 windows.info 或对应 Linux 插件确认可读,再列出进程。不要对生产主机做未经批准的内存采集。文档:https://volatility3.readthedocs.io/
25.11 应急响应桌面推演
不连接真实业务系统,完成一次纸面或虚拟机闭环:
将结果按第二十四章结构写成一页报告,作为本单位模板归档。