惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
博客园 - Franky
F
Fortinet All Blogs
D
Docker
博客园 - 司徒正美
腾讯CDC
Recent Announcements
Recent Announcements
The Cloudflare Blog
B
Blog RSS Feed
GbyAI
GbyAI
T
Tailwind CSS Blog
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志

卷卷

今日说法 节目汇总笔记 《斯坦福大学人生设计课》读书笔记 我的书单📖 H-worm (VBS蠕虫) 感染事件溯源分析报告 AMOS (Atomic Stealer) 恶意软件深度分析 银狐26年全面复活,对抗强度或已超25年最高水平 Atomic Stealer (AMOS) 回归:ClickFix、伪装加密货币应用与新型 macOS 持久化机制 关于xt.exe的分析报告 仿真钓鱼页面窃取用户凭证 GitHub Pages配置Cloudflare CDN踩坑之路 推荐RSS热力图和Github热力图使用指南 学习逆向工程相关概念 zabbix快速上手 学习python高级语法特性例题笔记 学习云计算基本理论学习笔记 学习Docker-Compose命令及镜像构建与推送 ATT &CK 框架实践阅读笔记 rundll32.exe恶意加载DLL文件外联 《悉达多》读书笔记 《稀缺》读书笔记 《认知觉醒》读书笔记 《营养学》读书笔记 《心理学》读书笔记 热💖生活 C++开发环境配置与程序运行笔记 IDA Free调试Hello World笔记 逆向免杀 Admin.canway账号命名方式 BAS - Breach and Attack Simulation 企业测试环境的弱口令需要整改吗
Windows核心系统进程链与svchost深度解析
卷卷 · 2025-12-20 · via 卷卷

DNS外联恶意域名检测告警

   Image: C:\Windows\System32\svchost.exe
   ProcessId: 1112
   QueryName: 7ycb.com  微步情报:远控  远程控制工具

1. 完整的Windows启动进程链

System (PID 4) 
    → smss.exe (Session Manager)
        → wininit.exe (Windows初始化进程)
            → services.exe (服务控制管理器)
                → svchost.exe (服务宿主进程)
        → winlogon.exe (Windows登录进程)
            → userinit.exe (用户初始化)
                → explorer.exe (桌面外壳)

2. 各进程功能详解

(1) System (PID 4) - 系统内核空间进程

  • 作用:Windows内核的化身,运行在核心态(Ring 0)

  • 功能:管理硬件抽象层(HAL)、驱动程序、内存分页池

  • 特点:父进程为Idle进程(PID 0),所有用户态进程的最终源头

  • 应急响应关注点

    • 正常情况下不应有子进程(除了smss.exe)
    • 恶意软件可能注入或伪装为System进程

(2) smss.exe - 会话管理器子系统

  • 作用:创建Windows会话环境

  • 启动时机:内核初始化完成后

  • 主要任务
    c

    1. 创建系统环境变量
    2. 加载win32k.sys(Windows子系统内核模块)
    3. 启动csrss.exe(客户端/服务器运行时子系统)
    4. 启动wininit.exe(系统会话)和winlogon.exe(用户会话)
    5. 创建虚拟内存分页文件
  • 进程特点

    • 第一个用户态进程
    • 通常有两个实例:一个系统级,一个会话级
    • 文件名固定为smss.exe,路径必须是System32
  • 恶意利用场景

    • 进程注入(如Metasploit的migrate)
    • 持久化驻留(修改注册表启动项)

(3) wininit.exe - Windows初始化进程

  • 作用:初始化系统会话(Session 0)

  • 主要任务

    1. 创建%SystemRoot%\System32目录
    2. 启动services.exe(服务控制管理器)
    3. 启动lsass.exe(本地安全认证子系统)
    4. 启动lsm.exe(本地会话管理器)
    5. 初始化Windows服务
  • 安全特性

    • 运行在Session 0(隔离会话)
    • 父进程始终是smss.exe
    • 权限:SYSTEM账户
  • 应急检查

    # 检查wininit.exe的完整性
    Get-AuthenticodeSignature C:\Windows\System32\wininit.exe
    # 检查子进程是否异常
    Get-Process wininit | Select-Object -ExpandProperty Modules | Format-List

(4) services.exe - 服务控制管理器(SCM)

  • 作用: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.exe深度解析

1. svchost架构设计原理

(1) 设计目标

资源优化:多个服务共享同一进程,减少内存开销
隔离性:不同组服务运行在不同svchost实例
稳定性:一个服务崩溃不影响其他服务
安全性:按权限分组,最小权限原则

(2) 分组机制

<!-- 示例:netsvcs组配置 -->
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
    ├── netsvcs
    │   ├── Schedule        // 任务计划
    │   ├── Eventlog        // 事件日志
    │   ├── Themes          // 桌面主题
    │   └── ... (共约60个服务)
    ├── LocalService
    ├── NetworkService
    └── LocalSystem

(3) 进程实例化过程

# 1. services.exe读取服务配置
# 2. 根据分组创建svchost实例
# 3. svchost加载对应服务DLL
# 4. 调用ServiceMain()入口函数

# 查看所有svchost分组
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost\*'

2. svchost启动参数详解

(1) 标准启动参数

# 查看具体svchost实例的服务
tasklist /svc /fi "imagename eq svchost.exe"

# 对应命令行格式
svchost.exe -k <服务组名称> [-s <服务名称>] [-p]
# -k: 指定服务组
# -s: 指定具体服务(Windows 10 1709+)
# -p: 使用特权减少(Windows 10 1703+)

(2) 在您案例中的分析

# 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

3. 常见svchost承载服务示例

服务组典型服务功能应急关注点
netsvcswuauservWindows更新可能访问外部域名
BITS后台智能传输常用于C2通信
EventLog事件日志日志伪造
LocalServiceDhcpDHCP客户端网络配置异常
WinHttpAutoProxySvc代理自动发现代理劫持
NetworkServiceDnscacheDNS客户端缓存DNS投毒
NlaSvc网络位置感知网络探测

三、应急响应中的进程链分析

1. 正常vs异常特征对比

正常特征

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.exe

异常特征(恶意指标)

1. 进程链断裂: services.exe -> 未知进程 -> svchost.exe
2. 路径异常: svchost.exe不在System32或SysWOW64
3. 命令行异常: 包含可疑参数或URL
4. 网络连接: 连接非常用端口或恶意IP
5. 签名异常: 无Microsoft签名或签名无效

2. 针对您案例的深度分析框架

第一步:确认svchost实例细节

# 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

第二步:DNS请求来源追踪

# 使用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

3. 恶意svchost利用手法与检测

常见攻击手法

  1. 服务劫持:修改合法服务配置

    # 检测:检查服务二进制路径
    Get-WmiObject Win32_Service | 
      Where-Object {$_.PathName -match "svchost"} |
      Select-Object Name, PathName
  2. DLL劫持:利用服务DLL加载顺序

    # 检测:使用Process Explorer查看加载的DLL
    # 或使用:Get-Process -Id 1112 -Module
  3. 内存注入:无文件攻击

    # 检测:检查内存区域异常
    .\Sysinternals\VMMap.exe -p 1112
  4. 隐藏服务:注册表隐藏

    # 检测:比较services.exe和注册表的差异
    Get-Service | Select-Object Name | Out-File services.txt
    reg query "HKLM\SYSTEM\CurrentControlSet\Services" /s

4. 实战分析示例:DNS请求追踪

基于您的案例,建议分析流程:

# 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"
}

四、总结与最佳实践

应急响应检查清单

  1. ✅ 进程链完整性(System → smss → wininit → services → svchost)
  2. ✅ 文件路径验证(System32目录)
  3. ✅ 数字签名验证(Microsoft签名)
  4. ✅ 命令行参数分析(-k参数分组)
  5. ✅ 网络连接审查(端口、协议、目标)
  6. ✅ 服务配置检查(注册表、依赖、触发器)
  7. ✅ 时间线分析(启动时间、请求频率)