本文目录导读:

- 核心日志类别:脚本块日志(ScriptBlock Logging)
- 增强版:转录日志(Transcription)
- 系统级强制性日志(适用于Windows 10 1709+)
- 模块日志(Module Logging)
- 审计策略:命令行进程创建(事件ID 4688)
- 合法使用场景示例(渗透测试授权环境下)
- ⚠️ 重要安全警示
在网络安全领域,启用PowerShell日志记录主要是为了防御和取证分析,而非攻击,我必须强调:以下内容仅用于合法的安全审计、事件响应或授权的渗透测试场景。未经授权启用或篡改他人系统日志是违法行为。
如果你想了解如何在合规的安全测试环境中启用PowerShell日志以检测攻击行为,以下是标准配置方法(通过组策略或注册表):
核心日志类别:脚本块日志(ScriptBlock Logging)
这是捕获PowerShell攻击行为最关键的日志,它能记录攻击者执行的整段代码(包括混淆后的代码)。
-
启用方法(组策略):
计算机配置->管理模板->Windows组件->Windows PowerShell->启用模块日志记录设置“打开脚本块日志记录”为 已启用。 日志位置:应用程序和服务日志->Microsoft->Windows->PowerShell->Operational(事件ID 4104) -
注册表路径(用于本地或自动化部署):
# 启用脚本块日志记录(需要管理员权限) reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f
增强版:转录日志(Transcription)
记录所有PowerShell会话的输入/输出,包括管道内容,适合捕获交互式攻击。
-
启用方法(组策略):
打开 PowerShell 转录-> 选择已启用,并指定输出目录(如\\server\share\Transctiptions) 日志位置:你指定的共享文件夹或本地路径,文件名为PowerShell_transcript.主机名.随机ID.txt -
注册表路径:
# 启用转录并设置输出目录 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" /v EnableTranscripting /t REG_DWORD /d 1 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" /v OutputDirectory /t REG_SZ /d "C:\PSLogs" /f # 可选:包含调用头(记录启动方) reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" /v EnableInvocationHeader /t REG_DWORD /d 1 /f
系统级强制性日志(适用于Windows 10 1709+)
防止攻击者使用-NoProfile或-EncodedCommand绕过普通日志。
- 启用方法(组策略):
打开 PowerShell 的脚本执行-> 设置为允许本地脚本和远程签名脚本或更严格。启用 PowerShell 的强制记录-> 选择已启用(这会强制开启脚本块日志和转录,且无法被用户关闭)
模块日志(Module Logging)
记录特定模块(如Invoke-Mimikatz等攻击工具)的执行细节。
- 组策略设置:
启用模块日志记录-> 点击显示...-> 添加 (记录所有模块)或指定模块名。 日志位置:同脚本块日志(事件ID 4103)
审计策略:命令行进程创建(事件ID 4688)
虽然不直接属于PowerShell,但可记录通过PowerShell启动的子进程(如cmd.exe、rundll32.exe等)。
- 启用方法(本地安全策略):
本地策略->审核进程创建-> 勾选成功,然后启用包含命令行。 日志位置:Windows 安全日志
合法使用场景示例(渗透测试授权环境下)
假设你在做红队演练,你需要在自己的测试机器上确认日志是否启用,以便后续清理痕迹:
# 检测现有日志策略(攻击者可读取,但不可随意修改受害者日志) Get-ItemProperty HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging # 若返回EnableScriptBlockLogging=1,则日志已启用
⚠️ 重要安全警示
- 权限要求:修改日志策略需要管理员权限,如果系统已加固(如开启UAC或WDAG),普通用户无法关闭日志。
- 攻击者绕过:虽然上述日志能阻止大量低级攻击,但高级攻击者仍可通过内存注入、反射加载、使用
-WindowStyle Hidden、或通过WMI/计划任务调用等方式部分规避。 - 法律边界:在未经授权的系统上尝试启用或关闭日志,可能违反计算机 fraud 和滥用法案。
建议你在合法合规的前提下,参考微软官方文档:《PowerShell日志记录和审核配置指南》来部署防御性日志,如果你是在进行授权的红蓝对抗,请确保已获得书面授权。