





















DNS外联恶意域名检测告警
Image: C:\Windows\System32\svchost.exe
ProcessId: 1112
QueryName: 7ycb.com 微步情报:远控 远程控制工具System (PID 4)
→ smss.exe (Session Manager)
→ wininit.exe (Windows初始化进程)
→ services.exe (服务控制管理器)
→ svchost.exe (服务宿主进程)
→ winlogon.exe (Windows登录进程)
→ userinit.exe (用户初始化)
→ explorer.exe (桌面外壳)作用:Windows内核的化身,运行在核心态(Ring 0)
功能:管理硬件抽象层(HAL)、驱动程序、内存分页池
特点:父进程为Idle进程(PID 0),所有用户态进程的最终源头
应急响应关注点:
作用:创建Windows会话环境
启动时机:内核初始化完成后
主要任务:
c
1. 创建系统环境变量
2. 加载win32k.sys(Windows子系统内核模块)
3. 启动csrss.exe(客户端/服务器运行时子系统)
4. 启动wininit.exe(系统会话)和winlogon.exe(用户会话)
5. 创建虚拟内存分页文件进程特点:
恶意利用场景:
作用:初始化系统会话(Session 0)
主要任务:
1. 创建%SystemRoot%\System32目录
2. 启动services.exe(服务控制管理器)
3. 启动lsass.exe(本地安全认证子系统)
4. 启动lsm.exe(本地会话管理器)
5. 初始化Windows服务安全特性:
应急检查:
# 检查wininit.exe的完整性
Get-AuthenticodeSignature C:\Windows\System32\wininit.exe
# 检查子进程是否异常
Get-Process wininit | Select-Object -ExpandProperty Modules | Format-List作用:Windows服务的"总管家"
核心功能:
1. 维护服务数据库(注册表:HKLM\SYSTEM\CurrentControlSet\Services)
2. 启动、停止、暂停、恢复系统服务
3. 管理服务依赖关系
4. 处理服务控制请求服务启动方式:
// 服务类型决定启动方式
SERVICE_KERNEL_DRIVER // 内核驱动
SERVICE_FILE_SYSTEM_DRIVER // 文件系统驱动
SERVICE_WIN32_OWN_PROCESS // 独立进程
SERVICE_WIN32_SHARE_PROCESS // 共享进程(svchost)注册表结构:
HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName>
├── ImagePath // 可执行文件路径
├── Start // 启动类型:2-自动,3-手动,4-禁用
├── Type // 服务类型
└── Parameters // 服务参数资源优化:多个服务共享同一进程,减少内存开销
隔离性:不同组服务运行在不同svchost实例
稳定性:一个服务崩溃不影响其他服务
安全性:按权限分组,最小权限原则<!-- 示例:netsvcs组配置 -->
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
├── netsvcs
│ ├── Schedule // 任务计划
│ ├── Eventlog // 事件日志
│ ├── Themes // 桌面主题
│ └── ... (共约60个服务)
├── LocalService
├── NetworkService
└── LocalSystem# 1. services.exe读取服务配置
# 2. 根据分组创建svchost实例
# 3. svchost加载对应服务DLL
# 4. 调用ServiceMain()入口函数
# 查看所有svchost分组
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost\*'# 查看具体svchost实例的服务
tasklist /svc /fi "imagename eq svchost.exe"
# 对应命令行格式
svchost.exe -k <服务组名称> [-s <服务名称>] [-p]
# -k: 指定服务组
# -s: 指定具体服务(Windows 10 1709+)
# -p: 使用特权减少(Windows 10 1703+)# PID 1112可能是以下服务组之一:
# 常见承载服务组:
# -k netsvcs # 网络服务组(约60个服务)
# -k LocalService # 本地服务组
# -k NetworkService # 网络服务组
# -k LocalSystemNetworkRestricted # 受限系统服务
# 具体确认命令:
wmic process where processid=1112 get commandline
# 或
Get-WmiObject Win32_Process -Filter "ProcessId=1112" | Select-Object CommandLine| 服务组 | 典型服务 | 功能 | 应急关注点 |
|---|---|---|---|
| netsvcs | wuauserv | Windows更新 | 可能访问外部域名 |
BITS | 后台智能传输 | 常用于C2通信 | |
EventLog | 事件日志 | 日志伪造 | |
| LocalService | Dhcp | DHCP客户端 | 网络配置异常 |
WinHttpAutoProxySvc | 代理自动发现 | 代理劫持 | |
| NetworkService | Dnscache | DNS客户端缓存 | DNS投毒 |
NlaSvc | 网络位置感知 | 网络探测 |
smss.exe:
- 父进程: System (PID 4)
- 子进程: csrss.exe, wininit.exe, winlogon.exe
- 数量: 通常2个(系统+会话)
wininit.exe:
- 会话: Session 0
- 子进程: services.exe, lsass.exe
- 权限: SYSTEM
services.exe:
- 子进程: 多个svchost.exe实例
- 无命令行参数
- 路径: System32\services.exe1. 进程链断裂: services.exe -> 未知进程 -> svchost.exe
2. 路径异常: svchost.exe不在System32或SysWOW64
3. 命令行异常: 包含可疑参数或URL
4. 网络连接: 连接非常用端口或恶意IP
5. 签名异常: 无Microsoft签名或签名无效# 1. 获取完整命令行
$process = Get-Process -Id 1112
$process.Path # 文件路径
$process.StartInfo.Arguments # 启动参数
# 2. 查看承载服务
$services = Get-WmiObject Win32_Service | Where-Object {
$_.ProcessId -eq 1112
}
$services | Format-Table Name, DisplayName, State, PathName
# 3. 检查网络连接
Get-NetTCPConnection -OwningProcess 1112
Get-NetUDPEndpoint -OwningProcess 1112# 使用Process Monitor过滤
# 筛选条件:
# Process Name: svchost.exe
# Operation: DNS Query
# Path: contains "7ycb.com"
# 或使用ETW实时追踪
logman create trace DNS_Trace -o dns.etl -p "Microsoft-Windows-DNS-Client"
logman start DNS_Trace# 如果确认是某个具体服务
$serviceName = "wuauserv" # 示例
# 1. 查看服务配置
sc qc $serviceName
sc queryex $serviceName
# 2. 查看服务依赖
Get-Service $serviceName -DependentServices
# 3. 查看服务触发器(可能定时触发)
sc qtriggerinfo $serviceName服务劫持:修改合法服务配置
# 检测:检查服务二进制路径
Get-WmiObject Win32_Service |
Where-Object {$_.PathName -match "svchost"} |
Select-Object Name, PathNameDLL劫持:利用服务DLL加载顺序
# 检测:使用Process Explorer查看加载的DLL
# 或使用:Get-Process -Id 1112 -Module内存注入:无文件攻击
# 检测:检查内存区域异常
.\Sysinternals\VMMap.exe -p 1112隐藏服务:注册表隐藏
# 检测:比较services.exe和注册表的差异
Get-Service | Select-Object Name | Out-File services.txt
reg query "HKLM\SYSTEM\CurrentControlSet\Services" /s基于您的案例,建议分析流程:
# 1. 确认是哪个服务
$services = Get-WmiObject Win32_Service | Where-Object {
$_.ProcessId -eq 1112
}
Write-Host "PID 1112承载的服务:" -ForegroundColor Yellow
$services | Format-List Name, DisplayName, Description
# 2. 如果是wuauserv(Windows更新)
# 检查更新配置
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
# 3. 如果是BITS服务
# 检查传输队列
Get-BitsTransfer
# 4. 如果是计划任务服务
# 检查相关任务
Get-ScheduledTask | Where-Object {
$_.TaskPath -match "Update" -or
$_.Actions -match "7ycb"
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。