最近刚过年没啥事,就跑了下去年年底SafeBreach出的一个POC,说是可以通过Windows线程池作为进程注入的攻击载体,完全绕过很多EDR,比如Palo Alto Cortex,SentinelOne EDR,CrowdStrike Falcon,Microsoft Defender For Endpoint,Cybereason EDR,实际上笔者做了些测试,有浮夸嫌疑。下面记录下整个过程。
作者提供了一个POC,示例样本是注入了Windows自带的计算器calc.exe,POC源代码下载地址如下:https://github.com/SafeBreach-Labs/PoolParty
复制GitHub中Code按钮这段.git URL
上述这个URL粘贴在存储库位置,克隆到本地
打开Build-“配置管理器” 对话框
在“活动解决方案配置” 列表中,选择“<新建…>” 。
在“新建解决方案配置”对话框中,命名新配置 Test
,复制现有“调试”配置中的设置,然后选择“确定”按钮。
在“平台”列中,展开下拉列表,然后选择“<新建...>”,创建新的项目平台,或者选择适合当前环境的平台即可,比如x64。
在“新建项目平台”对话框中,选择“x64”,不复制 x86 平台中的设置。
配置好后关闭。
然后点击生成(Build),就会当前项目的文件夹下生成exe,过程中会遇到些报错,基本是依赖库的问题,按照报错提示都可以解决
生成的exe没有做免杀处理,所以要执行成功一定要把杀软关掉或者添加信任。接下来注入一个进程,以notepad.exe为例,在桌面上打开记事本软件,使用poolparty.exe -V 8 -P 4060注入notepad.exe,弹出了示例的恶意代码计算器。也可以注入explorer.exe等系统进程,运行比较稳定。
这个POC提供了8种进程注入技术如下表,-P输入不同的数字对应不同的方法。
Allocated shellcode memory in the target process: 0000000003060000
processhacker中的explorer.exe CPU占用会被比较大,可能POC代码没有写资源限制,双击explorer.exe打开,切到 Threads(线程)选项卡,看到有孤立的几条0x30600开头的东西,正常进程关联的线程一般会和其他系统函数关联+偏移地址,但专门注入的内容会比较孤立,可以简单理解为他不需要其他函数的配合。
移到Memory选项卡,找0x3060000内存基址,双击打开,可以看到从0x3060000-0x3061000存在的被注入的shellcode,c:windowssystem32calc.exe,此段内存的保护属性为RWX,即可执行,而正常的被占用的内存保护不会有X这个属性。结束掉恶意进程也并不会释放这段内存,除非结束被攻击进程或者注入的线程。
原文始发于微信公众号(无限手套Infinity Gauntlet):记录一次进程注入过程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论