如何正确分析及调试傀儡进程

前言

病毒通常会通过进程/线程注入的方式躲避杀软的监测,之前我只尝试过调试通过 CreateThread 创建的线程代码,只需要在调试器中①将主线程优先权设置为空闲;②在新创建线程的函数起始位置设置断点。继续执行就可以断在新创建的线程位置。

但是这个方法如果遇到 CreateProcess 就失效了,因新创建进程的代码和当前调试进程并不在一个内存区域,没办法定位并设置断点。

这里提到的使用 CreateProcess 的情况就是 Process Hollowing,即傀儡进程。

为此查找了一些资料,并能够成功将创建的傀儡进程拖到 IDA 和调试器中正常解析并分析调试,由于查找资料过程中并不顺利,因此在此记录一下步骤,方便之后使用。

傀儡进程的步骤(简)

这次遇到的傀儡进程创建步骤如下,应该是比较典型的:
如何正确分析及调试傀儡进程_第1张图片
到调试到 ResumeThread 这一步时,如果不进行任何处理,傀儡进程会开始执行,而当前调试进程会正常退出,无法继续调试。

步骤

因此当调试到 ResumeThread 时,应该:

  1. 打开 Process Hacker(火绒剑不行,在火绒剑中没看到新创建的傀儡进程),找到新创建的傀儡进程
    ProcessHacker
  2. 双击并跳转到 Memory 选项卡,找到具有 RWX 权限的内存段,右键 Save
    如何正确分析及调试傀儡进程_第2张图片
  3. 使用 LordPE 打开转储下来的文件,将文件块对齐的数值修改为块对齐的数值
    如何正确分析及调试傀儡进程_第3张图片
  4. 点击区段,将所有段的 ROffset 数值修改为 VOffset 的数值
    如何正确分析及调试傀儡进程_第4张图片
  5. 修改后的数值:
    如何正确分析及调试傀儡进程_第5张图片
  6. 最后点击 保存,在点击确定就可以了

到此为止,就可以把修改后的文件拖入 IDA 和调试器了,此时的文件可以正常被解析。

你可能感兴趣的:(病毒分析,安全)