zoukankan      html  css  js  c++  java
  • 关于傀儡进程的笔记

    最近在分析一个病毒时,病毒通过创建傀儡进程,内存映射来执行恶意代码。

    但在分析的时候遇到附加后傀儡进程数据出错的问题。

    百度到的常见傀儡进程流程:

    (1)CreateProcess一个进程,并挂起,即向dwCreationFlags 参数传入CREATE_SUSPENDED;

    (2) GetThreadContext获取挂起进程CONTEXT,其中,EAX为进程入口点地址,EBX指向进程PEB;

    (3) ZwUnmapViewOfSection卸载挂起进程内存空间数据;

    (4) VirtualAlloc分配内存空间;

    (5) WriteProcessMemory将恶意代码写入分配的内存;

    (6) SetThreadContext设置挂起进程状态;

    (6) ResumeThread唤醒进程运行。

    我分析的病毒的傀儡进程流程:

    1) CreateProcess一个进程,并挂起,即向dwCreationFlags 参数传入CREATE_SUSPENDED;

    2)在傀儡进程创建映射mapviewofsection;

    3)代码修改OEP的数据

    4)ZwUnmapViewOfSection卸载挂起进程内存空间数据;

    5)Mapviewofsection映射镜像。

    6)ResumeThread唤醒进程运行。

    病毒本身含有傀儡进程的静态数据,通过在内存中修改数据在映射,并未使用GetThreadContext SetThreadContext来改数据。

    并且傀儡进程在调用dll的时候不是直接调用,而是通过另一段映射过来的数据来使用。

    解决问题:

    1.问题成因:傀儡进程为exe文件,而病毒映射过来的为DLL文件。其基址不同。在dump后获取到的是DLL的默认基址,而非exe.

    2.解决方法:1.试了将dump后的文件基址改为0x400000,发现不成功。直接dump下来的文件内存中将病毒进程映射过来的内存空间给优化了。

                     2.用工具从病毒中将DLL数据取出来,然后创建一个exe文件。

                     3.给exe添加一个区段,修改了区段大小后,使用010edit将dll数据粘贴至区段中。

                     4.改变oep或者oep写代码跳转至区段。

    3.说明:病毒在将DLL文件映射过来的同时还是PE头前加了一段代码,代码是用了调用dll数据的。所以不能直接调用DLL文件。(流程不同。。。)

  • 相关阅读:
    BZOJ 3150 [Ctsc2013]猴子 ——期望DP 高斯消元
    BZOJ 4569 [Scoi2016]萌萌哒 ——ST表 并查集
    BZOJ 4590 [Shoi2015]自动刷题机 ——二分答案
    BZOJ 3462 DZY Loves Math II ——动态规划 组合数
    BZOJ 4827 [Shoi2017]分手是祝愿 ——期望DP
    BZOJ 4827 [Hnoi2017]礼物 ——FFT
    BZOJ 4826 [Hnoi2017]影魔 ——扫描线 单调栈
    ZOJ 3874 Permutation Graph ——分治 NTT
    UVA 12633 Super Rooks on Chessboard ——FFT
    HDU 2065 "红色病毒"问题 ——快速幂 生成函数
  • 原文地址:https://www.cnblogs.com/Gj-Dreamer/p/10517710.html
Copyright © 2011-2022 走看看