文章总结: 本文介绍了利用EasyShell实现进程注入的思路与demo,核心原理是通过OpenProcess、VirtualAllocEx、WriteProcessMemory和CreateRemoteThread等API将恶意代码注入系统进程。实测注入成功且杀软未触发告警,但仅为功能demo。防守方应关注内存权限(RWX)、远程线程创建和异常进程链等排查方法。文章强调技术交流,禁止非法用途。 综合评分: 75 文章分类: 红队,渗透测试,安全运营,应急响应
【思路学习】EasyShell实现进程注入
原创
沐寒 沐寒
渗透云记
2026年7月5日 21:05 北京
在小说阅读器读本章
去阅读
免责声明
由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
欢迎关注本公众号,长期推送技术文章
前言
最近有师傅私信问我,能不能研究研究进程注入。短暂思考之后梳理了一下思路,把之前写过的一些功能模块翻了出来,在AI的强力辅助下,拼凑了一个进程注入的demo。本文主要是简单记录一下实现流程,顺便把排查思路一并整理出来,算是给想入门的师傅们一个参考。
实现思路
先复习一下什么是进程注入。
说白了,这就是一种 “借壳上市” 。攻击者不自己起新进程——因为新进程容易被杀软盯上——而是把恶意代码塞进一个正在运行的、受信任的系统进程里,比如 explorer.exe 或 svchost.exe。宿主是“良民”,杀软和防火墙自然就放松了警惕,恶意代码也就跟着蒙混过关了。
核心原理其实不复杂:
Windows下每个进程都有自己独立的虚拟地址空间,进程之间默认是相互隔离的。但操作系统提供了一套API,允许一个进程在满足权限条件的情况下,去操纵另一个进程的内存空间。进程注入正是利用了这套机制——通过 OpenProcess 打开目标进程,VirtualAllocEx 在目标进程里申请内存,WriteProcessMemory 写入Shellcode或DLL路径,最后用 CreateRemoteThread 让代码跑起来。
知道了原理,实现就没那么玄乎了。
结合已经实现的Shellcode生成模块和插件执行框架,这次要做的事情很简单:在AI的辅助下,把这些模块拼到一起,再针对进程注入的场景做一些适配调整。前后折腾了几个小时,一个能正常跑的demo就出来了。
效果展示
先说一下前提:进程注入通常需要管理员权限或SYSTEM权限,所以这次实验我直接用管理员权限启动。
测试流程是这样的:
随机挑选了几个系统进程作为目标,执行注入,观察目标进程是否成功上线,
在注入的过程中,用某杀软的内存扫描功能进行全盘扫描,测试是否能被检出。
实测结果: 注入成功,目标进程顺利上线,且杀软的内存查杀在静默状态下没有触发告警。不过需要说明的是,这只是一个功能demo,并没有做深度的测试,如果大家拿去做进一步的对抗测试,效果可能会有所不同。
⚠️ 友情提示: 本文仅供技术交流,请勿用于非法用途。
具体演示视频如下:
已关注
关注
重播 分享 赞
关闭
观看更多
更多
退出全屏
切换到竖屏全屏退出全屏
渗透云记已关注
分享视频
,时长00:58
0/0
00:00/00:58
切换到横屏模式
继续播放
[ ]
进度条,百分之0
播放
00:00
/
00:58
00:58
倍速
全屏
倍速播放中
0.5倍 0.75倍 1.0倍 1.5倍 2.0倍
超清 流畅
继续观看
【思路学习】EasyShell实现进程注入
观看更多
原创
,
【思路学习】EasyShell实现进程注入
渗透云记已关注
分享点赞在看
已同步到看一看写下你的评论
视频详情
进程注入排查思路
聊完实现,咱们再站在防守的角度唠唠怎么查。毕竟搞安全的,不能光会“攻”,还得会“防”。
如果怀疑服务器被注入了,不要只看进程名,要看 “异常行为” 。下面是我整理的几个排查重点:
- 盯内存权限 —— 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到整理排查方法,最大的感触就是:攻防两端看的都是“行为”。
攻击者想尽办法让自己看起来像正常的,而防守者则需要从海量日志里揪出那一丝“违和感”。不管工具怎么升级,这个底层逻辑始终没变。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:渗透云记 沐寒 沐寒《【思路学习】EasyShell实现进程注入》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论