前言
最近有师傅私信问我,能不能研究研究进程注入。短暂思考之后梳理了一下思路,趁着周末把之前写过的一些功能模块翻了出来,在AI的强力辅助下,拼凑了一个进程注入的demo。本文主要是简单记录一下实现流程,顺便把排查思路一并整理出来,算是给想入门的师傅们一个参考。
实现思路
先复习一下什么是进程注入。
说白了,这就是一种 “借壳上市” 。攻击者不自己起新进程——因为新进程容易被杀软盯上——而是把恶意代码塞进一个正在运行的、受信任的系统进程里,比如 explorer.exe 或 svchost.exe。宿主是“良民”,杀软和防火墙自然就放松了警惕,恶意代码也就跟着蒙混过关了。
核心原理其实不复杂:
Windows下每个进程都有自己独立的虚拟地址空间,进程之间默认是相互隔离的。但操作系统提供了一套API,允许一个进程在满足权限条件的情况下,去操纵另一个进程的内存空间。进程注入正是利用了这套机制——通过 OpenProcess 打开目标进程,VirtualAllocEx 在目标进程里申请内存,WriteProcessMemory 写入Shellcode或DLL路径,最后用 CreateRemoteThread 让代码跑起来。
知道了原理,实现就没那么玄乎了。
结合已经实现的Shellcode生成模块和插件执行框架,这次要做的事情很简单:在AI的辅助下,把这些模块拼到一起,再针对进程注入的场景做一些适配调整。前后折腾了几个小时,一个能正常跑的demo就出来了。
效果展示
先说一下前提:进程注入通常需要管理员权限或SYSTEM权限,所以这次实验我直接用管理员权限启动。
测试流程是这样的:
先用我的工具生成一段Shellcode,上线到C2(这里用的是easyshell)。
随机挑选了几个系统进程作为目标,包括 svchost.exe 和 notepad.exe。
执行注入,观察目标进程是否成功上线,同时打开任务管理器和Process Explorer监控进程变化。
在注入完成后,我特意用某杀软的内存扫描功能做了一次全盘扫描,测试是否能被检出。
实测结果: 注入成功,目标进程顺利上线,且杀软的内存查杀在静默状态下没有触发告警。不过需要说明的是,这只是一个功能demo,并没有做深度的免杀处理,如果大家拿去做进一步的对抗测试,效果可能会有所不同。
⚠️ 友情提示: 本文仅供技术交流,请勿用于非法用途。
进程注入排查思路
聊完实现,咱们再站在防守的角度唠唠怎么查。毕竟搞安全的,不能光会“攻”,还得会“防”。
如果怀疑服务器被注入了,不要只看进程名,要看 “异常行为” 。下面是我整理的几个排查重点:
- 盯内存权限 —— RWX是最显眼的红旗
正常系统进程的内存区域通常有明确的权限划分:代码段是只读+执行(RX),数据段是只读或读写(RW)。如果在某个进程里发现一块内存同时具备写入(Write)和执行(Execute)权限(也就是RWX),这就是一个非常危险的信号,大概率是Shellcode在蹲着。
怎么查: 用Process Explorer,双击进程查看属性,切换到“Memory”标签页,按权限排序,重点看有没有RWX的内存块。PCHunter里也有类似的内存扫描功能,可以一键筛选可疑内存。
- 查远程线程创建
注入的核心动作就是在目标进程里创建一个远程线程。如果你看到一个系统进程里突然冒出了一些来路不明的线程,一定要追查下去。
怎么查: Process Explorer里,双击进程,切换到“Threads”标签页,看线程的起始地址(Start Address)。如果起始地址指向一个动态申请的堆内存(Heap)或者一个来历不明的DLL,那十有八九有问题。
- 捋进程链 —— 抓住异常的父子关系
这是最直观的破绽。一个正常的 word.exe 不应该去启动 powershell.exe,一个 notepad.exe 也不应该去访问外网IP。如果发现异常的父子进程关系,顺着这条链挖下去,往往能找到注入的源头。
怎么查: 可以用Process Explorer的“进程树”视图,或者用Sysmon的Event 1(进程创建)日志来分析。重点关注那些父进程和子进程类型不匹配的情况。
- 一些额外的辅助手段
验证数字签名:检查进程对应的可执行文件是否有有效的数字签名,很多假冒的系统进程在这一关就会露馅。
关注异常网络连接:用 netstat -ano 或 TCPView 查看进程的网络连接,一个系统进程突然连到外网IP,绝对值得深挖。
写在最后
这次从搞demo到整理排查方法,最大的感触就是:攻防两端看的都是“行为”。
攻击者想尽办法让自己看起来像正常的,而防守者则需要从海量日志里揪出那一丝“违和感”。不管工具怎么升级,这个底层逻辑始终没变。
这次demo只实现了最基础的CreateRemoteThread注入,后面如果有时间,我准备把进程镂空(Process Hollowing)和APC注入的代码也补上,到时候再来和师傅们分享。
师傅们如果有更好的排查姿势,或者遇到过什么有趣的注入案例,欢迎在评论区一起交流! 😊















请登录后查看评论内容