Windows系统木马排查小记
Windows系统木马排查小记
一、 知己知彼:常见木马的隐藏与驻留手法
在开始排查前,我们需要了解木马为了在系统中“存活”并“隐身”,通常会利用哪些机制。
1. 欺骗与伪装
- 文件伪装:通过修改图标(如伪装成Word文档图标)、文件名(如
svchost.exevssvch0st.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\Temp、AppData或其他临时目录下发现系统同名进程,必为恶意。
- 系统进程(如
- 父子进程关系:例如,
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\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run- 进阶技巧:检查
Winlogon或Image 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的项,设置Debugger为C:\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
如何排查:
- 展开这个路径,你会看到很多以
.exe结尾的子项。 - 重点检查:你熟悉的常用软件(如
chrome.exe,taskmgr.exe)或者安全软件的名称。 - 核心特征:在右侧查看是否存在名为 Debugger 的键值。
- 除了极少数真正的开发调试环境,普通软件这里如果有
Debugger键值指向了另一个陌生路径,100% 被劫持了。
- 除了极少数真正的开发调试环境,普通软件这里如果有
这部分不是很了解,链接一篇来阅读:https://juejin.cn/post/6962045266820235272
WMI 事件订阅(高阶持久化手段)
WMI(Windows Management Instrumentation)是 Windows 系统的核心管理框架。攻击者可以利用其“事件订阅”功能建立一种高度隐蔽、无需落地文件的持久化机制。
工作原理
它类似一个“系统级监控脚本”,包含三个关键部分:
- 事件过滤器(Event Filter):定义触发条件,例如
系统启动后60秒或特定进程关闭时。 - 事件消费者(Event Consumer):定义要执行的动作,例如
执行一个恶意命令或运行一段 PowerShell 脚本。 - 绑定(Binding):将过滤器与消费者关联起来。
为何难以发现
- 无文件驻留:配置信息加密存储在 WMI 的内置数据库(CIM 仓库)中,而非硬盘上的独立文件或常见注册表路径。
- 无常规进程:触发后可能直接创建进程,但持久化组件本身不在进程列表或服务中显示。
- 绕过常规监控:传统杀毒软件和系统管理工具可能不会主动扫描 WMI 存储库。
排查方法
-
首选工具:使用 Sysinternals Autoruns
这是最推荐的方法。运行Autoruns.exe,切换到 【WMI】 标签页。这里会列出所有已注册的事件消费者和其绑定的过滤器,任何非系统、非应用程序计划任务的可疑项都应重点审查。 -
使用 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 命令(操作前务必确认无误,误删可能影响系统功能)。
这个技术也是第一次碰到,链接几篇后续补:
- https://www.freebuf.com/articles/network/355261.html#/
- https://m0nst3r.me/pentest/利用WMI构建一个持久化的异步的无文件后门.html#/
- https://learn.microsoft.com/zh-cn/windows/win32/wmisdk/about-wmi#/
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(欺骗)时,我们需要内核级工具来对抗。
-
Sysinternals Suite (微软官方)
-
这是微软官方工具集,下载地址以及相应文档查看:Sysinternals 套件 - Sysinternals | Microsoft Learn
-
Autoruns:地表最强启动项检测工具,能检测注册表、服务、驱动、DLL劫持等所有自启动点。
-
Process Explorer:任务管理器增强版,可查看DLL加载情况、验证数字签名。
-
TCPView:可视化的网络连接监控。
-
-
内核级对抗工具 (Anti-Rootkit)
- PCHunter / 火绒剑 (Huorong Sword):
- 具备查看内核钩子(Hooks)、检测隐藏进程、强制删除被占用文件的能力。
- 注意:此类工具权限高,操作需谨慎。
- PCHunter / 火绒剑 (Huorong Sword):
-
流量分析
- Wireshark:如果发现机器对外发送奇怪的数据包,抓包分析是最终的实锤手段。

浙公网安备 33010602011771号