CHANGMEN的个人博客,专注于网络安全领域。
EntryPoint Hijacking(入口点劫持)技术学习
最近更新:2026-05-15   |   字数总计:4.3k   |   阅读估时:17分钟   |   阅读量:
  1. 一、技术背景
    1. 1.1 传统代码注入的困境
    2. 1.2 EntryPoint Hijacking 的思路
  2. 二、Windows 内存管理基础:PEB → LDR 链表
    1. 2.1 PEB(Process Environment Block)
    2. 2.2 PEB_LDR_DATA 结构
    3. 2.3 LDR_DATA_TABLE_ENTRY2 结构详解
  3. 三、DLL 加载与 DllMain 调用机制
    1. 3.1 DllMain 的触发时机
    2. 3.2 加载器的执行流程
    3. 3.3 DontCallForThreads 标志位
  4. 四、完整攻击流程(以 LdrShuffle PoC 为例)
    1. 4.1 攻击前置条件
    2. 4.2 攻击步骤详解
    3. 4.3 DATA_T 结构体详解
  5. 五、代码逐行解析
    1. 5.1 RestoreLdr() — 恢复被篡改的 LDR 结构
    2. 5.2 DLL 筛选逻辑
    3. 5.3 死锁问题与 createThread 字段
  6. 六、三个 PoC 的差异对比
    1. EPI 的执行流程
    2. LdrShuffle 的执行流程
  7. 七、如何用 WinDbg 验证 EntryPoint
    1. 7.1 查看 LDR 结构
    2. 7.2 列出所有已加载模块
    3. 7.3 验证 EntryPoint 是否被篡改
  8. 八、检测方法详解
    1. 8.1 方法一:LDR 结构完整性校验(LdrShuffleDetect)
      1. 条件 1:EntryPoint 超出 DllBase 范围
      2. 条件 2:EntryPoint 内存类型异常
      3. 条件 3:OriginalBase 异常
      4. 告警置信度矩阵
      5. 完整性校验公式
    2. 8.2 方法二:Sysmon Event ID 10 监控
    3. 8.3 方法三:WriteProcessMemory 监控
    4. 8.4 方法四:定期扫描高价值进程
  9. 九、LdrShuffleDetect 检测工具实现原理
    1. 9.1 枚举所有进程
    2. 9.2 获取目标进程 PEB 地址
    3. 9.3 读取目标进程的 LDR 结构
  10. 十、攻击利用的真实场景
    1. 场景 1:C2 持久化
    2. 场景 2:横向移动
    3. 场景 3:绕过 EDR 内存扫描
  11. 十一、防御建议
    1. 11.1 端点检测
    2. 11.2 Sysmon 规则
    3. 11.3 EDR 能力提升
    4. 11.4 SOC 操作手册
  12. 十二、技术演进与未来
  13. 参考资料