Windows命令执行排查攻略

在攻防演习中,域控环境的渗透始终是红队和蓝队关注的焦点。作为企业网络的中枢,域控不仅负责用户认证、权限管理,还掌握着资源分配等关键功能。一旦域控被攻破,攻击者将能全面掌控整个网络,这种“一锤定音”的效果使得域控安全无论在进攻还是防守上都显得至关重要。

而在取得了凭据之后,需要执行命令以证明权限,Windows平台提供了丰富的原生工具链,包括但不限于PsExec、WMI(Windows Management Instrumentation)、DCOM(Distributed Component Object Model)、WinRM(Windows Remote Management)等。下面将逐一介绍各工具的工作原理、使用方式以及如何结合事件日志进行溯源和取证分析。

PsExec

工作原理

PsExec 是微软 Sysinternals 套件中的一款远程管理工具,用于在目标 Windows 设备上执行命令。它无需在目标机预先安装客户端,只需管理员权限即可通过 SMB 连接直接执行指定命令。

PsExec及其衍生品RemCom,Impacket等工作方式如下图所示:

默认一般直接加上SMB地址与命令即可执行,加上-s参数则以system权限运行。

溯源取证

在应急响应的过程中,事件查看器中的以下摘要可以定位PsExec类型命令执行的记录

当用户登录时会产生以下事件:

当服务被创建时,会产生以下事件:

当服务启动时,会产生以下事件:

每个服务都会在注册表的HKLMSYSTEMCurrentControlSetServices下创建一个项,当服务被删除时,该项也会被删除,使用Registry Explorer工具可以方便定位服务删除时间,从而完善应急响应报告:

相比于PsExec,SMBExec没有在目标硬盘上放置二进制文件,而是给每条命令创建一个服务,这样更方便溯源攻击者,在事件查看器中可以直接看到执行的命令值。

Windows 管理规范

工作原理

WMI 为系统管理提供了一套标准化接口,虽然它本身不提供远程 Shell,但利用 Win32_Process 类的静态 Create 方法可实现类似 shell 的效果。

溯源取证

同样,当利用该技术执行命令时,事件查看器也会记录对应日志:

Impacket中的wmiexec.py模块在2021年之后的一次更新后,使用了Powershell代替cmd来进行交互,此时会引入新的事件记录项:

其中HostApplication项中会记录具体的命令,Base6解码后的字符串对应以下命令:$ProgressPreference=”SilentlyContinue”;systeminfo 对于应急响应非常有用。

分布式组件对象模型

工作原理

根据微软的定义,DCOM是一种通过远程过程调用 (RPC) 公开应用程序对象的远程协议,它由一组基于微软远程过程调用扩展的扩展组成。DCOM提供了很多组件来执行命令,比如ShellBrowserWindow、ShellWindows、Excel等,常见的CSV命令注入原理就是DCOM注入。其中最好用的是MMC(Microsoft Management Console),Impacket中的dcomexec.py就利用了MMC来实现。

溯源取证

DCOM类型的命令执行排查比较困难,因为默认情况下系统不会记录登录与注销之外的事件,提供一些排查思路。执行DCOM命令执行时,临时文件的文件名可以使用dfir-orc等工具恢复USN日志查到

与WMI类似,Impacket中的dcomexec.py模块在某次更新后也使用了Powershell代替cmd来进行交互,通过筛选PowerShell事件的 600、400 和 403事件项,即可获取攻击者执行的命令值。

Windows远程管理

工作原理

WinRM(Windows Remote Management)是微软对 WS-Management 标准的实现,采用基于 SOAP 的通信方式。自 Windows XP 起集成于系统中,自 Windows Server 2008 R2 起默认启动,监听地址通常为 0.0.0.0:5985 和 127.0.0.1:47001。其中与远程命令执行相关的组件为Windows Remote Shell,它允许在远程主机上执行命令并输出,默认使用cmd,无法交互,如果目标主机启用了PowerShell远程处理(PSRemoting),便可通过该功能实现交互shell。

溯源取证

当目标机器开启了PSRemoting时,事件管理器会记录以下事件:

计划任务

工作原理

Windows可以通过atsvc或者ITaskSchedulerService管道远程创建计划任务,从而达到命令执行的效果。

以Impacket中的atexec.py举例,执行后会在目标机器创建一个新的计划任务(system权限),执行后通过cmd输出到一个由八个随机字符组成的临时文件中,通过SMB读取检索后销毁。

溯源取证

计划任务相关的事件比较多,主要由以下项组成:

不同的远程命令执行技术各有特点,但它们的本质都是攻击者与防御者之间在痕迹与反痕迹技术上的博弈。实际环境中,攻击工具(如 WMI、PsExec、DCOM、WinRM 以及计划任务等)在默认日志记录、痕迹留存周期和日志粒度上存在各自局限性,配置符合零信任原则的访问控制策略(例如最小权限分配和网络分段隔离)能在源头上压缩攻击者的横向移动空间,降低风险。

通过对上述工具的合理利用以及结合事件日志进行排查,既能帮助红队寻找突破口,也能协助蓝队及时发现异常行为并加以防御。无论是命令执行、溯源取证还是日志分析,每一种技术都在攻防对抗中扮演着重要角色,只有深刻理解各自原理与特点,才能在实战中更好地应对和防御域控环境的渗透攻击。

Reference

https://docs.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_status

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom

https://learn.microsoft.com/en-us/sysinternals/downloads/psexec

https://docs.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page

https://github.com/sysmon-config/blob/master/sysmonconfig-export.xml#L88

共有 0 条评论

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料