09-攻击篇-手工映射(上):PE解析与内存镜像构建
阅读时间: 8-10 分钟前置知识: 理解内存映射文件检测原理、C/C++基础、Windows API基础学习目标: 掌握PE文件结构解析,实现DLL内存镜像构建 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1AH2jBKEe8/ 承接上节:为什么LDR断链还是被发现了?上节课我们讲到,防御者为了对付LDR断链,祭出了 内存映射文件名检测 这一招。 他们的逻辑非常粗暴:直接把所有”带文件名的内存块”全扫一遍,跟PEB里的名单一一核对。只要发现这块内存里明明映射了某个DLL,但PEB里却没记录,那一定是有人在搞鬼。 这招确实狠,直接打穿了我们上一层的伪装。 但大家仔细想一下,这套检测逻辑的死穴在哪里? 攻击方的分析思路死穴在这里:它太依赖”内存映射”这个特征了防御者默认:所有的DLL,都必须通过系统机制映射到内存里。 为什么他们敢这么假设? 因为传统的 LoadLibrary...
08-防御篇-内存映射文件检测:断链的DLL,为什么还是露出了马脚?
阅读时间: 5-6 分钟前置知识: 理解LDR模块断链原理、Windows内存管理基础学习目标: 掌握内存映射文件检测技术,实现交叉验证防御系统 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1J1CQBdEZR/ 承接上节:攻击者的精心布局有个漏洞上节课,攻击者通过 LDR 模块断链 成功绕过了模块枚举检测: ✅ 绕过点1:从三个LDR链表中移除了DLL节点 ✅ 绕过点2:EnumProcessModules() 无法枚举到这个DLL ✅ 绕过点3:白名单检测和签名验证彻底失效 然而,这种绕过方式有个天然的盲点: 虽然DLL从链表中”消失”了,但它的文件映射仍然存在于进程的虚拟内存中。就像员工从花名册上被除名了,但每天还在办公室上班。 什么是文件映射? 当Windows加载一个DLL时,不是把整个文件复制到内存,而是创建一个”映射关系”:把磁盘上的文件映射到进程的虚拟地址空...
07-攻击篇-LDR模块断链
阅读时间: 15-20 分钟前置知识: 理解进程注入技术、Windows PEB 结构、双向链表数据结构学习目标: 掌握 LDR 模块断链技术,实现完全隐形的 DLL 注入 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1dH2MBAEvg/ 07-攻击篇-LDR模块断链:隐形DLL注入的终极绕过承接上节:防御者的检测为何失效上节课,防御者用 模块枚举 + 签名验证 检测到了我们的可疑模块: 原理:通过 EnumProcessModules() 函数遍历所有加载的 DLL 效果:成功列出模块列表,未签名的 DLL 无所遁形 作为攻击者,我们需要找到这个检测的盲区。关键问题是:EnumProcessModules 到底是怎么获取模块列表的? 用IDA看清EnumProcessModules的真面目为了找到突破口,我们用 IDA Pro 对 EnumProcessModules ...
06-防御篇-检测模块归属
阅读时间: 8-10 分钟前置知识: 理解进程注入技术、Windows API 基础、数字签名概念学习目标: 掌握模块归属检测技术,实现基于数字签名的进程防御系统 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1dtyaBbErC/ 06-防御篇-检测模块归属(博客版)承接上节:攻击者的致命疏忽上节课,攻击者通过 APC 注入成功绕过了我们的 ETW 监控: ✅ 绕过 ETW 监控:不创建新线程,复用现有线程的 APC 队列 ✅ 利用 Alertable 状态:等待线程进入可警告状态后执行 Shellcode ✅ 隐蔽执行:ETW 事件中看不到远程线程创建的痕迹 但是,攻击者忽略了一个关键问题:无论注入方式多么隐蔽,恶意代码最终要以某种形式存在于目标进程的内存空间中。 作为防御者,我们的思路是:不监控注入行为,而是检查进程内存中已经存在的模块,通过模块归属来判断是否存在恶意注入...
05-攻击篇-线程劫持注入
阅读时间: 3-4 分钟前置知识: 理解 APC 注入、线程上下文、CPU 寄存器、x64 调用约定学习目标: 掌握线程劫持技术,理解如何通过修改 RIP 寄存器实现代码注入 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1zWshzeE28/ 承接上节:APC 注入为什么会失效?上节课,我们用 APC 注入成功绕过了 ETW 的线程创建检测: ✅ 不创建新线程,复用现有线程 ✅ ETW 检测器完全沉默 ✅ 比 Shellcode 注入更隐蔽 看起来很完美,但当你在实战环境测试时,会发现一个让人崩溃的问题: APC 入队成功了,但 DLL 就是不加载! 为什么?让我们回顾一下 APC 的执行条件: 线程必须调用 SleepEx(time, TRUE) 或者 WaitForSingleObjectEx(..., TRUE) 最后一个参数必须是 TRUE(进入可警报状态) 问题...
04-攻击篇-APC注入不创建新线程
阅读时间: 3-4 分钟前置知识: 理解进程注入原理、ETW 检测机制、Windows API 基础学习目标: 掌握 APC 注入技术,理解攻防对抗的下一轮演变 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1RjWqzzEK8/ 承接上节:检测遇到新挑战上节课,防御者用 ETW 建立了一道防线: 监听线程创建事件 比对 CreatorPID 与 TargetPID 一旦不相等,立即报警 这确实把 02 节的 Shellcode 注入检测得很彻底。 但作为攻击方,我们需要分析这个检测的弱点在哪里。 攻击方的分析思路防御者的检测逻辑:监听线程创建事件,比对 CreatorPID 和 TargetPID。 作为攻击方,我们问自己:这个检测依赖什么? 答案是:依赖内核产生 ThreadStart 事件 这个事件什么时候产生? 调用 CreateRemoteThread 或者底层的...
03-防御篇-检测远程线程创建行为
阅读时间: 3-4 分钟前置知识: 理解进程注入原理、Shellcode 绕过技巧、Windows API 基础学习目标: 掌握 ETW 事件追踪,实现行为层检测 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1oU4gzCEUj/ 承接上节上节我们确认了一件事只看起始地址会被 Shellcode 绕过 也留下了三个关键问题 为什么突然出现新线程? 谁创建了这个线程? 正常程序会这样做吗? 本节给出直接答案从”谁创建了线程”入手用 ETW 还原”发起进程 → 目标进程”的创建关系做一次可落地的行为检测 本节目标与策略目标很明确:不看线程从哪里开始只看是谁创建了它 策略很简单: 订阅线程创建事件 拿到创建者 PID 与目标 PID 不相等就是远程线程 不关心起始地址是不是 LoadLibraryShellcode 中转同样会被覆盖 这是一种行为检测比地址特征更本质也更难被简...
02-攻击篇-绕过线程起始地址检测
阅读时间: 3-4 分钟前置知识: 理解进程注入和防御检测原理、汇编基础学习目标: 掌握 Shellcode 注入技术,理解攻防对抗思路 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1ktxXzNEVR/ 🎯 道高一尺,魔高一丈防御者的困境上节课我们学会了检测远程线程注入,核心思路非常简单:抓住线程起始地址 = LoadLibrary 这个特征。 但攻防对抗永远是螺旋上升的: ⚔️ 防御者刚亮出检测手段 🛡️ 攻击者已经在思考破解之道 这节课我们切换到攻击者视角,看看如何绕过这个检测。 检测的致命缺陷让我们冷静分析这个检测方案的弱点: 1234检测逻辑:线程起始地址 == LoadLibrary? ↓ 是 → 告警 否 → 放行 问题在哪? ✅ 它只检测了线程的起始地址 ❌ 但完全不管线程后续执行了什么 这就像...
01-防御篇-检测可疑线程起始地址
阅读时间: 3-4 分钟前置知识: 理解远程线程注入原理、Windows API 基础学习目标: 掌握进程注入检测技术,实现实时防御系统 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1NWHTziE8Q/ 防御者的视角上节课,我们学习了远程线程注入的攻击技术。 这节课,我们切换到防御者的角度去思考。 如果你是游戏的反外挂系统开发者,你会如何检测这种远程线程注入? 思考一下,把你的方法写在评论区 解析远程线程注入的攻击特征作为防御者,我们首先要分析攻击者的行为,找出所有可能的检测点。 远程线程注入会在目标进程中留下以下攻击特征: 特征1:存在于进程的模块链表中注入的 DLL 会被加载到进程中,出现在模块链表(PEB->Ldr)里。 通过枚举进程模块,可以发现新加载的 DLL。 特征2:有完整的 PE 头信息注入的 DLL 作为一个完整的 PE 文件被加载,有标准的 PE 结...
00-进程注入基础概念
阅读时间: 3-4 分钟前置知识: C++ 基础、Windows API 基础学习目标: 理解进程注入原理,掌握远程线程注入技术 📺 配套视频教程本文配套视频教程已发布在 B 站,建议结合视频学习效果更佳: 💡 提示: 点击视频右下角可全屏观看,建议配合文章食用! 视频链接: https://www.bilibili.com/video/BV1wGnozPEVA/ 课程引入:为什么要学习进程注入?在 Windows 系统安全、游戏安全、恶意软件分析等领域,进程注入(Process Injection)是一个绕不开的核心技术。 你可能见过这些场景: 🎮 游戏外挂修改游戏逻辑,实现透视、自瞄 🛡️ 杀毒软件注入监控模块,实时检测恶意行为 🔧 调试器(如 Visual Studio)注入调试引擎,实现断点、单步执行 💉 恶意软件注入正常进程,隐藏自己逃避检测 这些都是进程注入技术的实际应用。 本课程的学习目标: 理解进程注入的原理与实现 掌握远程线程注入的完整流程 为后续的攻防对抗课程打下基础 重要声明: 本课程仅用于防御性安全研究与教...
-PE%E8%A7%A3%E6%9E%90%E4%B8%8E%E5%86%85%E5%AD%98%E9%95%9C%E5%83%8F%E6%9E%84%E5%BB%BA/cover.png)








