Windows系统木马排查小记

Windows系统木马排查小记

一、 知己知彼:常见木马的隐藏与驻留手法

在开始排查前,我们需要了解木马为了在系统中“存活”并“隐身”,通常会利用哪些机制。

1. 欺骗与伪装

  • 文件伪装:通过修改图标(如伪装成Word文档图标)、文件名(如svchost.exe vs svch0st.exe)来混淆视听。
  • 捆绑运行:将恶意代码Shellcode注入到正常的安装包或破解软件中,用户运行正常程序时,木马在后台静默启动。

2. 进程隐藏与注入

  • **进程注入 **:木马不创建独立进程,而是将恶意代码注入到合法的系统进程(如explorer.exe, notepad.exe)内存中运行,以此绕过白名单检测。
  • 服务注册:将木马注册为系统服务,利用系统启动的高权限自动运行。

3. 持久化驻留

  • 利用注册表启动项、计划任务、WMI事件订阅等方式,确保系统重启后木马依然能“复活”。

二、 动态排查:正在运行的恶意痕迹

1. 进程排查

这是最直观的入口。即使木马注入了系统进程,往往也会露出马脚。

常规排查:

使用任务管理器 (Ctrl+Shift+Esc) 或 Process Explorer

  • 关注CPU/内存占用:挖矿木马通常会导致CPU或GPU长期高负载。
  • 排查异常路径
    • 系统进程(如svchost.exe)通常位于 C:\Windows\System32\
    • 如果在 C:\Windows\TempAppData 或其他临时目录下发现系统同名进程,必为恶意
  • 父子进程关系:例如,cmd.exe 不应该莫名其妙地作为 svchost.exe 的子进程出现。

命令行辅助:

# 查看进程及完整启动命令(定位恶意参数)
wmic process get name,executablepath,commandline /format:list
# 或使用 msinfo32 -> 软件环境 -> 正在运行任务

# 2. PowerShell方式
Get-CimInstance Win32_Process | Select-Object Name, CommandLine, Path | Format-List

# 3. 弹窗表格方式,使用 Out-GridView 弹出一个带筛选功能的图形化表格
Get-CimInstance Win32_Process | Select-Object Name, CommandLine, Path | Out-GridView

2. 网络连接排查

木马通常需要连接C2服务器(命令控制端)或回传数据。

核心命令:

netstat -ano | findstr "ESTABLISHED"
  • ESTABLISHED:重点关注与境外IP或无业务关联的陌生IP建立的连接。
  • LISTENING:检查是否有非业务端口(如高位端口)异常开放,可能是后门。

定位关联进程:

发现可疑连接(如PID 1234)后,反查是哪个进程在搞鬼:

tasklist | findstr "1234"

三、 静态排查:持久化机制

木马想要“长生不老”,必须修改系统配置。这是我们抓捕它的重要位置。

1. 启动项排查

排查重点:

  • 任务管理器 -> 【启动】选项卡:禁用并分析发布者为空的程序。
  • 关键目录
    • 用户级:%AppData%\Microsoft\Windows\Start Menu\Programs\Startup
    • 系统级:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

注册表排查 (Regedit)

重点检查以下键值:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • 进阶技巧:检查 WinlogonImage File Execution Options (映像劫持) 键值。


补充:

注册表进阶——Winlogon 与 映像劫持

这两个是 Windows 启动机制中比较隐蔽的位置,木马利用它们可以比普通启动项更早、更隐蔽地运行。

1.Winlogon (用户登录初始化劫持)

原理: 当你在 Windows 登录界面输入密码并回车后,系统需要知道“接下来该加载谁”。这个工作由 Winlogon.exe 负责。它会读取注册表,默认加载 Userinit.exe(负责初始化环境)和 Explorer.exe(桌面环境)。

攻击方式: 木马修改这些键值,把自己加到系统核心程序的后面。

排查路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

重点关注两个键值(双击查看):

  • Shell
    • 正常值:explorer.exe
    • 异常值explorer.exe C:\木马.exe (木马随桌面一起启动)
  • Userinit
    • 正常值:C:\Windows\system32\userinit.exe, (注意后面有个逗号)
    • 异常值C:\Windows\system32\userinit.exe,C:\Windows\木马.exe

排查技巧: 如果是逗号分隔了两个路径,后面那个大概率是鬼。

2.Image File Execution Options (IFEO / 映像劫持)

原理: 这个注册表项本意是给程序员用的。当你想调试某个程序(比如 notepad.exe)时,可以在这里设置一个“调试器”。系统在启动 notepad.exe 之前,会先去查这个注册表:“嘿,这哥们有没有绑定调试器?”如果有,系统就会只运行调试器,而不运行原程序,并把原程序作为参数传给调试器。

攻击方式(各种骚操作):

  • 劫持杀软:攻击者创建一个 360tray.exe 的项,设置 DebuggerC:\Windows\System32\cmd.exe。当你点击 360 图标时,360 不会启动,而是弹出一个 CMD 窗口。
  • 留后门 (Sticky Keys):攻击者劫持 sethc.exe(按5次Shift弹出的粘滞键程序),将其 Debugger 设置为 cmd.exe
    • 后果:在远程桌面 (RDP) 的登录界面(无需知道密码),狂按5次 Shift,直接弹出一个 System 权限的 CMD 窗口。这就是著名的“粘滞键后门”。

排查路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

如何排查:

  1. 展开这个路径,你会看到很多以 .exe 结尾的子项。
  2. 重点检查:你熟悉的常用软件(如 chrome.exe, taskmgr.exe)或者安全软件的名称。
  3. 核心特征:在右侧查看是否存在名为 Debugger 的键值。
    • 除了极少数真正的开发调试环境,普通软件这里如果有 Debugger 键值指向了另一个陌生路径,100% 被劫持了

这部分不是很了解,链接一篇来阅读:https://juejin.cn/post/6962045266820235272

WMI 事件订阅(高阶持久化手段)

WMI(Windows Management Instrumentation)是 Windows 系统的核心管理框架。攻击者可以利用其“事件订阅”功能建立一种高度隐蔽、无需落地文件的持久化机制。

工作原理
它类似一个“系统级监控脚本”,包含三个关键部分:

  1. 事件过滤器(Event Filter):定义触发条件,例如 系统启动后60秒特定进程关闭时
  2. 事件消费者(Event Consumer):定义要执行的动作,例如 执行一个恶意命令运行一段 PowerShell 脚本
  3. 绑定(Binding):将过滤器与消费者关联起来。

为何难以发现

  • 无文件驻留:配置信息加密存储在 WMI 的内置数据库(CIM 仓库)中,而非硬盘上的独立文件或常见注册表路径。
  • 无常规进程:触发后可能直接创建进程,但持久化组件本身不在进程列表或服务中显示。
  • 绕过常规监控:传统杀毒软件和系统管理工具可能不会主动扫描 WMI 存储库。

排查方法

  1. 首选工具:使用 Sysinternals Autoruns
    这是最推荐的方法。运行 Autoruns.exe,切换到 【WMI】 标签页。这里会列出所有已注册的事件消费者和其绑定的过滤器,任何非系统、非应用程序计划任务的可疑项都应重点审查。

  2. 使用 PowerShell 命令(用于深度验证)
    在管理员权限的 PowerShell 中执行以下命令,手动查询所有组件。任何来自个人路径、包含可疑命令(如混淆的 PowerShell 代码)的条目都可能是恶意的。

    # 查询所有事件消费者(动作)
    Get-CimInstance -Namespace root/subscription -ClassName __EventConsumer | Select-Object Name, CommandLineTemplate
    
    # 查询所有事件过滤器(触发器)
    Get-CimInstance -Namespace root/subscription -ClassName __EventFilter | Select-Object Name, Query
    
    # 查询所有绑定关系
    Get-CimInstance -Namespace root/subscription -ClassName __FilterToConsumerBinding
    

清除方法
一旦确认恶意订阅,应同时删除其消费者(Consumer)过滤器(Filter)绑定(Binding)。使用 Autoruns 可以直接删除。若手动操作,请使用 Remove-CimInstance 命令(操作前务必确认无误,误删可能影响系统功能)。

这个技术也是第一次碰到,链接几篇后续补:



2. 计划任务排查

很多木马喜欢用计划任务替代启动项。

图形化taskschd.msc -> 任务计划程序库。

  • 重点排查:触发器为“用户登录时”、“系统启动时”或“空闲时”的任务。
  • 查看“操作”选项卡,检查启动的脚本或程序路径。

命令行

schtasks /query /fo LIST /v

3. 服务排查

图形化services.msc

  • 按状态排序,查看“正在运行”的服务。
  • 重点关注:没有描述信息厂商未签名或名称看起来像是随机字符的服务。

四、 深度溯源:日志与隐藏账户

1. 隐藏账户排查

木马可能会创建一个影子管理员账户以便远程登录(RDP)。

  • 命令行检查

    net user           # 查看可见用户
    net user guest     # 检查Guest账户是否被异常启用并加入管理员组
    
  • 注册表检查(更隐蔽的克隆账号)

    检查 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names,查看是否有未在 net user 中显示的账号(如 admin$)。

2. 系统日志排查

打开 eventvwr.msc,重点关注【Windows日志】->【安全】:

  • Event ID 4624:登录成功(检查是否有异常时间的远程登录,登录类型10)。
  • Event ID 4625:登录失败(检查是否遭受暴力破解)。
  • Event ID 4688:进程创建(如果开启了审核策略,可看到恶意进程的启动链)。
  • 事件ID 完整对照表:https://www.cnblogs.com/zhaolongisme/p/17546870.html

五、 瑞士军刀:第三方排查工具

当系统自带工具被木马Hook(欺骗)时,我们需要内核级工具来对抗。

  1. Sysinternals Suite (微软官方)

    • 这是微软官方工具集,下载地址以及相应文档查看:Sysinternals 套件 - Sysinternals | Microsoft Learn

    • Autoruns:地表最强启动项检测工具,能检测注册表、服务、驱动、DLL劫持等所有自启动点。

    • Process Explorer:任务管理器增强版,可查看DLL加载情况、验证数字签名。

    • TCPView:可视化的网络连接监控。

  2. 内核级对抗工具 (Anti-Rootkit)

    • PCHunter / 火绒剑 (Huorong Sword)
      • 具备查看内核钩子(Hooks)、检测隐藏进程、强制删除被占用文件的能力。
      • 注意:此类工具权限高,操作需谨慎。
  3. 流量分析

    • Wireshark:如果发现机器对外发送奇怪的数据包,抓包分析是最终的实锤手段。

posted @ 2026-01-27 17:43  phen  阅读(1)  评论(0)    收藏  举报