• Backdoor.Zegost木马病毒分析(一)


    http://blog.csdn.net/qq1084283172/article/details/50413426

    一、样本信息


    样本名称:rt55.exe

    样本大小: 159288 字节

    文件类型:EXE文件

    病毒名称:Win32.Backdoor.Zegost

    样本MD5:C176AF21AECB30C2DF3B8B8D8AA27510

    样本SHA1:16E951925E9C92BC8EFDF21C2FBAF46B6FFD13BC


    二、行为具体分析


    1.获取当前运行模块的命令行参数,根据当前命令行参数是否包含字符串"NewUpdatExe"进行判断,决定下面提到的内存解密PE文件是调用导出函数NewUpdatExe还是导出函数xDllMain。






    2.解密当前病毒进程内存地址为0x408070处,文件大小为0x17C00的被加密隐藏的PE文件。






    3. 加载内存解密的PE格式的Dll文件,进行恶意病毒行为的操作;具体的加载过程后面会具体分析。







    4.将解密内存PE文件的每个区节块的数据从文件映射到申请的内存空间中。





    5. 对内存解密PE文件的重定位表Base RelocationTable进行重定位的修复。





    具体的参考代码:http://blog.sina.com.cn/s/blog_6ac942220100l8c2.html


    6. 获取解密内存PE文件的导入表中的INT表中的函数的调用地址填充IAT表。






    7. 循环修改解密内存PE文件的各区节块数据段的内存数据属性。








    8.运行的病毒进行将PE文件(dll文件)的加载已经基本完成了,因此这个被病毒进行内存加载的PE的动态库文件是有效可以执行的;因此以该内存PE动态库的OEP为函数指针执行恶意的代码。






    9. 获取导出函数名称字符串"NewUpdatExe"或"xDllMain",用以获取解密内存PE文件的导出函数"NewUpdatExe"或"xDllMain"的调用地址。





    遍历内存解密PE文件的导出表,获取需要的导出函数"NewUpdatExe"或"xDllMain"的调用地址。





    10.根据步骤1中的传入的函数的名称"NewUpdatExe"或者"xDllMain",根据上面的步骤获取需要的导出函数"NewUpdatExe"或者"xDllMain"的地址,然后调用内存解密PE动态库文件的导出函数"NewUpdatExe"或者"xDllMain",执行恶意的代码;然后再次以内存解密PE文件的OEP为函数指针,执行内存PE文件的代码,执行恶意行为。




    三、 病毒分析总结


    总体来说,上面的详细的分析,基本可以使用一句话总结,那就是:宿主样本程序通过LoadPE的方式加载解密的PE动态库dll文件,然后有加载的PE动态库dll文件来执行具体恶意的病毒行为,从而达到逃过杀软的查杀的目的。关于Backdoor.Zegost木马病毒的具体行为也就是内存解密PE动态dll文件的恶意行为后面会详细的分析。


     

    宿主样本程序加载PE动态库文件的步骤

    1

    在宿主程序内存中解密出加密的PE动态库dll文件

    2

    将内存解密的PE动态库dll文件的数据进行PE文件镜像的内存映射

    3

    对内存解密PE文件的重定位表Base RelocationTable进行重定位的修复

    4

    获取解密内存PE文件的导入表中的INT表中的函数的地址填充IAT表

    5

    修改解密内存PE文件的各个块数据段的内存数据属性

    6

    内存解密的PE动态库dll文件的加载完成,可以像正常dll一样执行自己的代码





    :真的好烦,笔记本屏幕显示发白导致截图不清晰;本来想好好的记录下这个有意思的木马病毒,但是由于截图的效果不好,心情顿时就不好了。




  • 相关阅读:
    初学 Delphi 嵌入汇编[13] 地址参数用 [] 取值
    初学 Delphi 嵌入汇编[17] 逻辑运算
    初学 Delphi 嵌入汇编[11] 用汇编重写一个 Delphi 函数
    初学 Delphi 嵌入汇编[12] 在汇编代码中可以直接使用 Result
    初学 Delphi 嵌入汇编[19] Delphi 的无符号整数类型
    分享:tcpproxy实现
    Socket编程之简单介绍 蓝天下的雨 博客园
    分享:libuv 中文编程指南
    分享:《编程之美》求二叉树中节点的最大距离
    CentOS6.0下编译最新版本boost库
  • 原文地址:https://www.cnblogs.com/csnd/p/11800679.html
Copyright © 2020-2023  润新知