• 安全与合规(7.26):PsTools 使用审计、最小权限与取证要点

  • 你将收获

  • 0)为什么单独一篇安全与合规?

  • 1)威胁模型与风险清单

  • 2)最小权限落地(账户与通路硬性控制)

  • 3)审计与可追溯:日志矩阵

  • 3.1 关键 Windows 事件(建议集中到 SIEM)

  • 3.2 Sysmon(推荐)

  • 3.3 命令留痕(使用侧)

  • 4)取证友好:冻结→抓证据→校验→留痕

  • 5)变更合规:流程化 + 可回滚

  • 6)强化配置建议(速查表)

  • 7)可复用模板

  • 8)执行前/后检查表

  • 结语

安全与合规(7.26):PsTools 使用审计、最小权限与取证要点

目标:在不牺牲效率的前提下,让 PsExec / PsService / PsLogList / PsList 等 PsTools 的使用 可追溯、可控、可回滚,满足企业安全与审计要求。


你将收获

  • 一套 威胁模型 & 风险清单(知道风险来自哪儿)

  • 最小权限落地方案(账号、UAC、Admin$、防火墙、JEA/JIT)

  • 日志审计矩阵(Windows 事件、Sysmon 规则、命令留痕)

  • 取证友好流程(冻结→抓证据→校验→留痕)

  • 可直接复用的 检查表 & 脚本模板


0)为什么单独一篇安全与合规?

PsTools 的强大在于“免代理 + 远程高权限执行”。这同时意味着:一旦被滥用就是高危。合规侧则强调 最小化授权、全链路留痕、可追责。这篇把“能用”升级为“放心用”。


1)威胁模型与风险清单

  • 凭据风险:明文口令/缓存口令泄露;脚本中硬编码;共享账户不可追责。

  • 横向移动:不当放权导致攻击者借助 PsExec 在域内横移。

  • 供应链/EDR 交互:安全产品误拦或被绕过;白名单滥用。

  • 不可追溯:无命令留痕/无日志聚合/无变更记录。

  • 隐私与合规:如转储(dump)含敏感数据(密码、令牌、PII)却未分类/加密/清理。


2)最小权限落地(账户与通路硬性控制)

  1. 账户与授权

  • 为 PsTools 建立 专用域服务账号(最小权限、仅需目标范围本地管理员)。

  • 开启 密码保管/JIT 提权(Azure PIM 或等效方案),到点回收

  • 禁止共享账号;所有使用动作 基于个人身份(或可追溯的受控服务账号)。

  1. UAC 与工作组特例

  • 工作组远程常被 UAC 降权,可用 LocalAccountTokenFilterPolicy=1 作为过渡,但更推荐域账号或把 PsTools 包装在受控跳板机/堡垒机里。

  1. Admin$ / SMB / RPC

  • 仅对需要的网段/主机开放 445/135 与 动态 RPC 范围(最小网络面)。

  • 仅对跳板机放行 Admin$ 访问;其他来源默认拒绝。

  • 开启 SMB 签名 与 防火墙作用域限制。

  1. 执行白名单

  • 用 AppLocker/WDAC 仅允许签名的 PsTools 从 固定目录 执行;禁止用户家目录/临时目录运行任意二进制。

  • 与 EDR 协同:放行 PSEXESVC 的创建行为,但限定来源主机与路径。

  1. 更佳替代(能用就用)

  • 远程配置/脚本优先 WinRM + PowerShell Remoting,配合 JEA(Just Enough Administration) 做能力切片。PsExec 作为 后备通道


3)审计与可追溯:日志矩阵

3.1 关键 Windows 事件(建议集中到 SIEM)

  • 系统日志 7045:服务安装(PSEXESVC 典型特征)。

  • 安全日志 4624/4634:登录/注销(关注 Logon Type 3、来源 IP、账户)。

  • 安全日志 4672:特殊权限登录(SeTcbPrivilege 等)。

  • 安全日志 5140/5145:共享访问(\\*\ADMIN$\\*\IPC$)。

  • 应用/自定义:脚本自写操作日志(见 3.3)。

3.2 Sysmon(推荐)

  • Event ID 1(ProcessCreate)psexec.exepsexesvc.exeservices.exe 创建链。

  • Event ID 11(FileCreate)\\ADMIN$\* 写入痕迹。

  • Event ID 13(RegistryValueSet)HKLM\System\CurrentControlSet\Services\PSEXESVC

  • Event ID 3(NetworkConnect):到目标 445/135 的连接。

侦测思路:进程创建 + 服务创建 + 共享访问 形成闭环,误报低。

3.3 命令留痕(使用侧)

  • 控制端 PowerShell Transcription(全会话录音)、Script Block Logging

  • 所有批量作业输出落盘 JsonLines/CSV,含 主机/命令/返回码/时长/操作者

  • 统一汇聚到 集中日志库(ELK/Splunk/Defender/XDR)

开启 PowerShell 审计(示例)

# 管理端本机策略(建议走 GPO 下发)
Set-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" `
  -Name EnableTranscripting -Value 1 -Type DWord
Set-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" `
  -Name OutputDirectory -Value "C:\Ops\PwshTranscripts" -Type String
Set-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" `
  -Name EnableScriptBlockLogging -Value 1 -Type DWord1.2.3.4.5.6.7.

示例检测(Windows 事件查询)

# 24 小时内可能的 PsExec 服务创建
Get-WinEvent -LogName System -FilterXPath "*[System[(EventID=7045)]]" |
  Where-Object { $_.Message -match 'PSEXESVC' -or $_.Message -match 'psexec' }1.2.3.

4)取证友好:冻结→抓证据→校验→留痕

当你遇到“CPU 飙高/疑似异常”时,不要第一时间 Kill。遵循“先取证,后处置”。

标准动作(可脚本化)

  1. 冻结pssuspend <进程名或PID>(暂停线程,保护现场)。

  2. 抓转储(如需):procdump -ma <进程> C:\Dumps\app_$(Get-Date).dmp

  3. 拉日志psloglist -s -d 1 System / Application / Security(按需筛选)。

  4. 系统快照pslist -m -x(内存/句柄/线程)+ psexec ... netstat -ano

  5. 校验与加密

Get-FileHash C:\Dumps\app_2025...dmp -Algorithm SHA256 | Tee-Object C:\Dumps\hash.txt1.

将 dump 加密封装传输(Zip + 密码、专用取证库)。

  1. 恢复/处置pssuspend -r 复苏;或评估后 pskill

  2. 记录:操作者、时间、命令、Hash、路径、交付对象,形成 链路凭证

合规提醒:Dump 可能包含凭据/秘钥/PII。必须 分类标记、加密存储、限定访问、设定留存周期


5)变更合规:流程化 + 可回滚

  • 审批与维护窗口:涉及服务/重启/批量改密必须入流程。

  • 前置清单:影响评估、成功标准、回滚预案、沟通计划。

  • 执行留痕:命令/输出/返回码统一归档,关联变更单号。

  • 回滚标准:失败阈值(如 >5% 失败即回滚)、回退脚本就绪。

  • 数据最小化:只收集必要信息;超过留存期自动删除/归档。


6)强化配置建议(速查表)

  • 跳板机 执行 + 受控网段放行 + 限定来源(防火墙范围)。

  • AppLocker/WDAC:仅允许官方签名 PsTools 从固定路径运行。

  • EDR 协同:白名单精准到 进程/路径/父子关系/来源 IP

  • 禁用不必要的 Admin$(或仅对跳板机保留)。

  • JEA/JIT:WinRM 操作尽量转为角色最小化。

  • 脚本签名:对生产脚本做 代码签名,拒绝未签名执行。

  • 集中日志:Windows 事件 + Transcription + 作业结果全进 SIEM。

  • 密钥管理:口令进 企业密管(Vault),禁止硬编码。

  • 时间同步:NTP、一致时区,避免审计串线。


7)可复用模板

A)批量作业统一留痕(PowerShell 片段)

$log = "C:\Ops\Logs\job-$(Get-Date -Format yyyyMMdd-HHmmss).jsonl"
function Write-JobLog($obj){ $obj | ConvertTo-Json -Compress | Out-File -FilePath $log -Append -Encoding utf8 }

$result = & psexec \\PC-001 -accepteula -nobanner ipconfig /all 2>&1
Write-JobLog ([pscustomobject]@{
  Time=(Get-Date); Host='PC-001'; Tool='PsExec'; Cmd='ipconfig /all'
  ExitCode=$LASTEXITCODE; Output="$result"
  Operator=$env:USERNAME; ChangeId=$env:CHANGE_ID
})1.2.3.4.5.6.7.8.9.

B)Sysmon 侦测(片段)

<!-- 仅展示关键思路:匹配 psexec/psexesvc 进程与服务 -->
<RuleGroup name="PsExec Create" groupRelation="or">
  <ProcessCreate onmatch="include">
    <Image condition="end with">psexec.exe</Image>
    <Image condition="end with">psexesvc.exe</Image>
  </ProcessCreate>
</RuleGroup>1.2.3.4.5.6.7.

C)风控阈值(脚本示例)

if( ($fail.Count / $total) -gt 0.05 ){
  Write-Error "失败率超阈值,触发回滚。"
  # 调用你的回滚函数...
}1.2.3.4.

8)执行前/后检查表


安全与合规(7.26):PsTools 使用审计、最小权限与取证要点_#学习


结语

把 PsTools 放到 最小权限 与 全链路审计 的轨道上,才能让“免代理的效率”与“企业级的合规”同台共存。按本文清单逐步落地,你的 PsTools 使用将达到 可控、可查、可回滚 的生产级标准。