Ramnit感染型病毒创建傀儡进程的方法
样本信息:
MD5: FF5E1F27193CE51EEC318714EF038BEF
SHA1: B4FA74A6F4DAB3A7BA702B6C8C129F889DB32CA6
1,查找默认浏览器
如果有默认浏览器则将默认浏览器作为傀儡进程,如果没有则使用IE浏览器
2,HOOK ntdll.ZwWriteVirtualMemory()函数
使用inline hook的方式HOOK ntdll.ZwWriteVirtualMemory()函数
hook之前暂停了当前进程中的其他线程,hook之后又恢复
3,创建浏览器进程
创建浏览器进程(正常创建),而使用CreateProcessA()创建进程时则会在内部调用被hook的ntdll.ZwWriteVirtualMemory()函数,调用ZwWriteVirtualMemory()函数前后浏览器进程均处于挂起状态
4,钩子函数
调用ZwWriteVirtualMemory()函数时则进入钩子函数中执行,钩子函数将一个展开后的dll文件、3个函数和参数注入浏览器进程中,注入上述数据之后直接使用WriteProcessMemory()将浏览器进程EP处0xC大小的指令改写,使其调用注入的第三个函数
被修改的浏览器进程入口
5,Fun3
Fun3根据注入DLL各节区的属性完成属性设置后直接进入该DLL的EP处执行,至此傀儡进程创建完毕