病毒分析。

1、相关文件

DesktopLayer.exe.v    :样本;

upDesktopLayer.exe.v  :脱壳后的样本;

DesktopLayer.exe.new.v:由样本释放到C盘新建文件夹的文件;

dmlconf.dat:样本在iexplorer.exe 目录下创建的文件,用于写入系统时间信息                                和网络连通时间差;

HookZwWriteVirtualMemroy Data.txtAPI ZwWriteVirtualMemroyHook前后                                  的函数地址机器码,以及Hook过程中的 15 字节堆空间数据。

 

感染EXEDLL文件过程中的文件: (Exe_Dll文件夹)

        Exe_Sample.exe.v:一个满足感染条件且未被感染过的exe文件;

        Exe_Sample_InFected.exe.v:被感染后的exe文件;

        Exe_Sample_InFectedSrv.exe.v:被感染文件在运行时释放出来的文件;

        Data2Exe_1.binData2Exe_1.bin:感染时向EXEDLL中写入的两段数据;

        Data2ExeAsm.txt:被感染文件入口点代码行为分析文件;

       

感染HTMLHTM文件过程中的文件: (Html_Htm文件夹)

        Html_Sample.html.v:一个满足感染条件且未被感染过的HTML文件;

        Html_Sample_InFected.html.v:被感染后的HTML文件;

        Data2Html.bin:感染时向HTML文件中追加的数据;

 

感染可移动磁盘文件过程中的文件:(RemovableDisk文件夹)

        RECYCLER_1.rar:含有自动运行文件和写入的exe文件(RECYCLER 的二级文                                      件名和EXE文件名均具有随机性)

       

 

 

以上文件中相关文件的MD5SHA1值如下:

        样本DesktopLayer.exe.v

              MD5:FF5E1F27193CE51EEC318714EF038BEF

              SHA1:B4FA74A6F4DAB3A7BA702B6C8C129F889DB32CA6     

 

        释放的文件DesktopLayer.exe.new.vExe_Sample_InFectedSrv.exe.v和感染                      可移动磁盘时写入的exe文件其实是同一个文件:

                 MD5: 240B869098AF035A4FD7968308C86EDD

                 SHA1: 0798717EEE86F30EBF8BD11F3C8F4C2B473BC724

 

       HTMLHTM文件中写入的数据Data2Html.bin:

              MD5:36748DD7B6C9EFBF0A6371C307DC2D2C

              SHA1:1E3934254D07F67D54DFD5D69F86DDAC200BD39F

 


2、行为预览

样本名称:DesktopLayer.exe

样本类型:Win32.Ramnit(360云查杀确定)

样本大小:55.0 KB(56320 字节)

传播方式:本地磁盘文件感染和可移动磁盘传播

       

样本具体行为:该样本在运行过程中分3个阶段,下面详细说明每个阶段的关                  键行为。

l  Phase1:勘测本机环境,确保样本的关键行为能顺利执行:

1.   通过注册表获取 iexplorer.exe 程序的目录,并在该目录下查找验证 iexplorer.exe 程序是否存在;

2.   尝试在C盘的相应位置(7个备选路径,详见后文)创建文件夹"Microsoft",并复制新样本到新创建的文件夹中, 其中复制到新文件夹下的新样本内容即为手动脱壳后的upDesktopLayer.exe.v的内容

3.   启动新文件夹下的新样本程序。

 

l  Phase2:通过 HookZwWriteVirtualMemory完成对 iexplorer.exe的注入,          关键代码均在iexplorer.exe中。

1.   验证特定文件夹(Phase1创建的文件夹)下是否存在样本文件; 

2.   获取 ntdll.dll的一些导出函数地址保存到全局变量中,便于后续代码中直接调用;

3.        Hook ZwWriteVirtualMemory

4.   调用 CreateProcessA来启动 iexplorer.exe进程,在该 API内部会调用 ZwWriteVirtualMemory进而完成对 iexplorer.exe的注入;

l  Phase3:iexplorer.exe的入口点被修改之后程序的原流程发生了变化,这使得iexplorer.exe其实变成了一个执行注入代码的壳。注入代码的行为如下:

1.        填写内存 PE IAT 并处理节数据:

2.        初始化 SOCKET

3.        获取系统磁盘信息、版本信息和本地语言环境信息,用于向远程发送,并接收远程数据;

4.        创建6个线程,完成核心工作,关于6个线程的功能描述如下:

Thread1: 20017ACA功能:

        每隔 1 秒就打开注册表项:                                                        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon

并读取 Userinit 的键值,然后检查样本文件目录(c:\programfiles\microsoft\desktoplayer.exe)是否在键值中,如果不在的话就将样本文件目录追加到该键值中,以达到开机启动样本的目的。

       


Thread2: 20017626功能:

        间歇性的测试与google.com 80 端口、bing.com 80 端口、yahoo.com 80 端口的连通性,只要有一个连通,就不再测试后面的网址并在全局变量 2001A23B 处保存两次能够连通的时间差(秒单位)

       

Thread3: 2001781F功能:

        每分钟向"C:\Program Files\Internet Explorer\dmlconf.dat" 中写入 16 字节的数据,前8字节为系统时间,接着是 4字节数据是两次连通特定网站的时间差,最后 4 字节数据始终为 0

           

Thread4: 2001790C功能:

        10分钟向 "fget-career.com443端口" 发送当前系统时间信息以及含有本机信息的字符串,并接收 "fget-career.com" 发回的数据。

           

Thread5: 20016EA8功能:

        DRIVE_FIXED类型的磁盘进行遍历感染,感染方式:

     htmlhtm文件的感染方式:先检查文件内容的最后9字节数据是不是"</SCRIPT>以此来判断该文件是否被感染过,如果没有被感染,则在文件末尾添加数据,数据具体的内容可以本文档的相关文件中提取。

 

    EXE DLL 文件的感染方式

                1:查看该文件的导入表中是否有按名称导入LoadLibraryA "GetProcessAddress" 这两个函数,有的话就获取该函数在 IAT 项中的 RVA, 没有的话不感染;

        2:查看该文件节表后是否有一个节表大小的全0可用空间,如果有就利用该位置添加一个新节(添加的新节名称为".rmnet"),否则不感染;

        3:LoadLibraryA"GetProcessAddress" 的函数地址进行重定位,方便在注入代码中进行调用;

        4:修改程序员入口点为新节地址,更改程序执行流程;

        5:向源文件中写入两段数据,写入的数据见文件。

20016AA9  E8 DDFCFFFF CALL 2001678B 该调用是处理 exe dll 文件的关键调用

2001633E  E8 4A070000 CALL 20016A8D  该句是核心感染过程

 

                                     

Thread6: 20016EC2功能:

        10秒钟遍历一次所有磁盘,当磁盘类型为可移动磁盘时,对该磁盘进行感染:

    感染 DRIVE_REMOVABLE 磁盘的方式:首先判断该磁盘是否被感染过,如果已经被感染过则不再感染,否者进行关键感染行为。

        对是否已经感染的判断:

                 1:磁盘根目录存在 "autorun.inf" 文件;

        2:"autorun.inf"文件大小大于 3 字节;                                                                        3:"autorun.inf"文件头3字节内容为"RmN"

        以上3条都满足时,表明该可移动磁盘已经被感染过。

    对没有感染过的磁盘进行的感染行为:

         1:磁盘根目录创建"RECYCLER"文件夹并设置属性为 HIDDEN

         2:"RECYCLER"文件夹下创建子文件夹并设置属性为 HIDDEN

         3:子文件夹下创建文件"AyZIKwEU.exe"(文件名不唯一,具有随机性)并写入数                               据;写入的数据其实也是之前  释放出来的新样本的数据;

         4:磁盘根目录创建"autorun.inf" 并设置属性为 HIDDEN

         5:4次写入数据到 "autorun.inf"

达到可移动磁盘插入电脑后可以自动运行新样本的目的


3、清理方式

1.        使用字符串"KyUffThOkYwRRtgPP" 创建互斥体,如果互斥体已经存在,说明已经有样本在运行,此时需要遍历系统所有进程,查找名称为"DesktopLayer ""iexplore "的进程:

        对于"DesktopLayer"进程:直接结束;

        对于"iexplore "进程:如果进程空间的20010000地址为有效地址,则                                                    直接结束进程,同时删除iexplore目录下的                                                    dmlconf.dat文件。

2.        依次在1:"C:\Program Files\"; 

           2:"C:\Program Files\Common Files\";

      3:"C:\Documents and Settings\Administrator\ ";

       4:"C:\Documents andSettings\Administrator\Application Data\ ";

      5:"C:\WINDOWS\system32\ ";

      6:"C:\WINDOWS\ ";

      7:"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\";

目录下查找"Microsoft"目录,如果找到该目录,则删除该目录及目录下的"DesktopLayer.exe"文件。

3.        读取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\

CurrentVersion\WinlogonUserinit 的键值,并判断键值内容的最后一个启动项中是否包含"desktoplayer.exe",如果包含,则删除最后一个启动项。

 

4.        遍历全盘文件,进行查杀:

        对于 DISK_FIXED类型的磁盘,在遍历时可以避开系统目录和Windows目录,对于EXE文件,如果文件MD5和特征文件的MD5匹配,则直接删除;

对于EXEDLL,如果节表中含有".rmnet"节,则可判定文件已经被感染,可由用户决定是删除文件还是修复文件(修复办法:删除".rmnet"节并修复入口点);对HTMLHTM文件,可以通过文件最后9 字节内容是否是"</SCRIPT>"来判断文件是否被感染,文如果文件已被感染,则由用户决定是删除文件还是修复文件(修复办法:删除文件

"<SCRIPT Language=VBScript>"之后的内容)

 

        对于 DISK_REMOVABLE类型的磁盘,如果磁盘根目录有"autorun.inf"文件且文件头3字节内容为"RmN",则可判定该磁盘已经被感染,需要从该文件总提取住exe文件的路径,然后先删除"autorun.inf"文件,再删除

exe 文件。


4、正文

在对样本进行分析之前,先用 PEiD对样本进行查壳:

通过PEiD可以发现,该样本加了UPX壳,手动脱掉之后的文件为upDesktopLayer.exe.v后续的分析均是直接针对脱壳后的文件的。

Phase1:

1-1:获取IE路径并验证 IE 可执行文件是否存在 (3种方法): 如果三种方法均不能找到 IE 路径并验证对应路径下 IE 可执行文件的存在,则样本行为就此终止。

 

 (1-1-1)通过注册表"HKEY_CLASSES_ROOT\http\shell\open\command" 获取IE路径并验证IE可执行文件是否存在

00401723  8D45 FC      LEA EAX,DWORD PTR SS:[EBP-4]

00401726  50           PUSH EAX

00401727  68 E9D84000  PUSH upDeskto.0040D8E9  ; ASCII "http\shell\open\command"

0040172C  68 00000080  PUSH 80000000

00401731  E8 D6160000  CALL upDeskto.00402E0C   ; JMP to ADVAPI32.RegOpenKeyA

      /*

      //参数信息:

      0012FF9C  00401736 /CALL to RegOpenKeyA from upDeskto.00401731

      0012FFA0  80000000 |hKey = HKEY_CLASSES_ROOT

      0012FFA4  0040D8E9 |Subkey = "http\shell\open\command"

      0012FFA8  0012FFB0 \pHandle = 0012FFB0

      */

     

00401743  50          PUSH EAX

00401744  FF75 08      PUSH DWORD PTR SS:[EBP+8]

00401747  6A 00        PUSH 0

00401749  6A 00        PUSH 0

0040174B  6A 00        PUSH 0

0040174D  FF75 FC      PUSH DWORD PTR SS:[EBP-4]

00401750  E8 BD160000  CALL upDeskto.00402E12 ; JMP toADVAPI32.RegQueryValueExA

      /*

      //参数信息:

      0012FF94  0000003A |hKey = 3A

      0012FF98  00000000 |ValueName = NULL

      0012FF9C  00000000 |Reserved = NULL

      0012FFA0  00000000 |pValueType = NULL

      0012FFA4  0040DFD0 |Buffer = upDeskto.0040DFD0

      0012FFA8  0012FFAC \pBufSize = 0012FFAC

      */

      /*获取的 IE 路径

      0040DFD0  22 43 3A 5C 50 72 6F 67 72 61 6D 20 46 69 6C65  "C:\Program File

      0040DFE0  73 5C 49 6E 74 65 72 6E 65 74 20 45 78 70 6C6F  s\Internet Explo

      0040DFF0  72 65 72 5C 49 45 58 50 4C 4F 52 45 2E 45 5845  rer\IEXPLORE.EXE

      0040E000  22 20 2D 6E 6F 68 6F 6D 65 00 70 00 6C 00 6F00  " -nohome.p.l.o.

      0040E010  72 00 65 00 72 00 5C 00 49 00 45 00 58 00 5000  r.e.r.\.I.E.X.P.

      0040E020  4C 00 4F 00 52 00 45 00 2E 00 45 00 58 00 4500  L.O.R.E...E.X.E.

      0040E030  22 00 20 00 2D 00 6E 00 6F 00 68 00 6F 00 6D00  ". .-.n.o.h.o.m.

      0040E040  65 00 00 00 00 00 00 00 00 00 00 00 00 00 0000  e...............

      */

     

004011FF  50           PUSH EAX

00401200  FF75 08      PUSH DWORD PTR SS:[EBP+8]

00401203  E8 201B0000  CALL upDeskto.00402D28   ; JMP to kernel32.FindFirstFileA

      /*

      //参数信息:

      0012FE58  0040DFD0 |FileName = "C:\Program Files\Internet                                                                                                             Explorer\IEXPLORE.EXE"

      0012FE5C  0012FE62 \pFindFileData = 0012FE62

      */

 

 (1-1-2)通过绝对路径 "C:\Program Files\InternetExplorer\IEXPLORE.EXE" 获取 IE 路径并验证 IE 可执行文件是否存在

 

004017B5   FF75 0C      PUSH DWORD PTR SS:[EBP+C]

004017B8   FF75 08      PUSH DWORD PTR SS:[EBP+8]

004017BB   68 7AD84000 PUSH upDeskto.0040D87A  ; ASCII"%ProgramFiles%\Internet                                                                                                     Explorer\iexplore.exe"

004017C0   E8 57150000  CALL upDeskto.00402D1C   ; JMP to                                                                                                                                     kernel32.ExpandEnvironmentStringsA

      /*

      //参数信息:

      0012FFA0   0040D87A |SrcString = "%ProgramFiles%\Internet                                                                                                               Explorer\iexplore.exe"

      0012FFA4   0040DFD0 |DestString = "C:\Program Files\Internet                                                                                                               Explorer\IEXPLORE.EXE"

      0012FFA8   00000400 \DestSizeMax = 400 (1024.)

      */

 

004011FF  50           PUSH EAX

00401200  FF75 08      PUSH DWORD PTR SS:[EBP+8]

00401203  E8 201B0000  CALL upDeskto.00402D28    ; JMP to kernel32.FindFirstFileA

      /*

      //参数信息:

      0012FE58  0040DFD0 |FileName = "C:\Program Files\Internet                                                                                          Explorer\iexplore.exe"

      0012FE5C  0012FE62 \pFindFileData = 0012FE62

      */

 

 (1-1-3)通过注册表"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\

CurrentVersion\AppPaths\IEXPLORE.EXE" 获取 IE 路径并验证 IE 可执行文件是否存在

004017E7  50           PUSH EAX

004017E8  68 A8D84000  PUSH upDeskto.0040D8A8  ; ASCII                                                              "SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\IEXPLORE.EXE"

004017ED  68 02000080  PUSH 80000002

004017F2  E8 15160000  CALL upDeskto.00402E0C  ; JMP to ADVAPI32.RegOpenKeyA

      /*

      //参数信息:

      0012FFA0  80000002 |hKey = HKEY_LOCAL_MACHINE

      0012FFA4  0040D8A8 |Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion

                                                            \App Paths\IEXPLORE.EXE"

      0012FFA8  0012FFB0 \pHandle = 0012FFB0

      */

     

00401804  50           PUSH EAX

00401805  FF75 08      PUSH DWORD PTR SS:[EBP+8]

00401808  6A 00        PUSH 0

0040180A  6A 00        PUSH 0

0040180C  6A 00        PUSH 0

0040180E  FF75 FC      PUSH DWORD PTR SS:[EBP-4]

00401811  E8 FC150000  CALL upDeskto.00402E12 ; JMP toADVAPI32.RegQueryValueExA

      /*

      //参数信息:

      0012FF94  00000038 |hKey = 38

      0012FF98  00000000 |ValueName = NULL

      0012FF9C  00000000 |Reserved = NULL

      0012FFA0  00000000 |pValueType = NULL

      0012FFA4  0040DFD0 |Buffer = upDeskto.0040DFD0

      0012FFA8  0012FFAC \pBufSize = 0012FFAC

      */

      /*获取的 IE 路径

      0040DFD0  43 3A 5C 50 72 6F 67 72 61 6D 20 46 69 6C 6573  C:\Program Files

      0040DFE0  5C 49 6E 74 65 72 6E 65 74 20 45 78 70 6C 6F72  \Internet Explor

      0040DFF0  65 72 5C 49 45 58 50 4C 4F 52 45 2E 45 58 4500  er\IEXPLORE.EXE.

      */

     

004011FF  50           PUSH EAX

00401200  FF75 08      PUSH DWORD PTR SS:[EBP+8]

00401203  E8 201B0000  CALL upDeskto.00402D28   ; JMP to kernel32.FindFirstFileA

      /*

      //参数信息:

      0012FE58  0040DFD0 |FileName = "C:\Program Files\Internet Explorer\

                                                                                IEXPLORE.EXE"

      0012FE5C  0012FE62 \pFindFileData = 0012FE62

      */

 

1-2:依次尝试在 1:"C:\Program Files\ ";

               2:"C:\Program Files\CommonFiles\ ";

               3:"C:\Documents andSettings\Administrator\ ";

               4:"C:\Documents andSettings\Administrator\Application Data\ ";

               5:"C:\WINDOWS\system32\ ";

               6:"C:\WINDOWS\ ";

              7:"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\";

下创建" Microsoft"目录并写入临时文件,用于测试能否在该目录下成功创建文件,为后续在该目录下创建文件"DesktopLayer.exe" 做准备,如果当前路径尝试成功,则停止尝试。             如果上述7个路径的尝试均失败,则样本行为就此结束。

            

  这里演示仅以第一个路径作为示例:

 (1-2-1)创建文件夹 "C:\Program Files\Microsoft"

00401534  6A 00          PUSH 0

00401536  8D85 00FCFFFF  LEA EAX,DWORD PTR SS:[EBP-400]

0040153C  50             PUSH EAX

0040153D  E8 B0170000    CALLupDeskto.00402CF2 ; JMP to kernel32.CreateDirectoryA

    /*

    //参数信息:

    0012FB40  0012FB64 |Path = "C:\Program Files\Microsoft"

    0012FB44  00000000 \pSecurity = NULL

    */

   

新创建的文件夹" Microsoft "

 

 (1-2-2)通过在该文件夹下创建一个临时文件以检验能否在该文件下创建新文件

00401242  6A 00          PUSH 0

00401244  68 80000000    PUSH 80

00401249  6A 02          PUSH 2

0040124B  6A 00          PUSH 0

0040124D  6A 00          PUSH 0

0040124F  68 000000C0    PUSH C0000000

00401254  8D85 00FCFFFF  LEA EAX,DWORD PTR SS:[EBP-400]

0040125A  50             PUSH EAX

0040125B  E8 981A0000    CALLupDeskto.00402CF8   ; JMP tokernel32.CreateFileA

      /*

      //参数信息:

      0012F720  0012F73C |FileName = "C:\Program Files\Microsoft\px1.tmp"

      0012F724  C0000000 |Access = GENERIC_READ|GENERIC_WRITE

      0012F728  00000000 |ShareMode = 0

      0012F72C  00000000 |pSecurity = NULL

      0012F730  00000002 |Mode = CREATE_ALWAYS

      0012F734 00000080  |Attributes = NORMAL

      0012F738  00000000 \hTemplateFile = NULL

      */

     

 (1-2-3)删除刚刚创建的临时文件

00401271  50           PUSH EAX

00401272  E8 991A0000  CALL upDeskto.00402D10 ; JMP tokernel32.DeleteFileA

    /*

    //参数信息:

    0012F738   0012F73C \FileName = "C:\Program Files\Microsoft\px1.tmp"

    */ 

 

1-3:释放一个新样本到之前创建的目录下,名命为DesktopLayer.exe”,并调用 CreateProcess 来启动该应用程序。

 (1-3-1)获取当前应用程序路径名称

00402C8D  68 04010000  PUSH 104

00402C92  68 D1E34000  PUSH upDeskto.0040E3D1

00402C97  6A 00        PUSH 0

00402C99  E8 AE000000  CALL upDeskto.00402D4C ; JMP to                                                                                                                                                     kernel32.GetModuleFileNameA

      /*

      //参数信息:

      0012FFB8  00000000 |hModule = NULL

      0012FFBC  0040E3D1 |PathBuffer = upDeskto.0040E3D1

      0012FFC0  00000104 \BufSize = 104 (260.)

      */

      /*当前应用程序路径名称

      0040E3D1  43 3A 5C 44 6F 63 75 6D 65 6E 74 73 20 61 6E64  C:\Documents and

      0040E3E1  20 53 65 74 74 69 6E 67 73 5C 41 64 6D 69 6E69   Settings\Admini

      0040E3F1  73 74 72 61 74 6F 72 5C D7 C0 C3 E6 5C 54 656D  strator\桌面\Tem

      0040E401  70 5C 75 70 44 65 73 6B 74 6F 70 4C 61 79 6572  p\upDesktopLayer

      0040E411  2E 65 78 65                                      .exe

      */

     

 (1-3-2)释放新样本到新创建的文件夹下,新文件名称为DesktopLayer.exe

00402C2C  6A 00        PUSH 0

00402C2E  FF75 F4      PUSH DWORD PTR SS:[EBP-C]

00402C31  FF75 08      PUSH DWORD PTR SS:[EBP+8]

00402C34  E8 B3000000  CALL upDeskto.00402CEC  ; JMP to kernel32.CopyFileA

      /*

      //参数信息:

      0012FF8C  0040E3D1 |ExistingFileName = "C:\Documents and Settings

                                                                        \Administrator\桌面\Temp\upDesktopLayer.exe"

      0012FF90  00910020 |NewFileName = "C:\Program Files\Microsoft\

                                                                        DesktopLayer.exe"

      0012FF94  00000000 \FailIfExists = FALSE

      */

释放的新样本文件

 

 (1-3-3)启动 "C:\ProgramFiles\Microsoft\DesktopLayer.exe", Phase1关键行为已经结束

004013A2  8D45 AC  LEA EAX,DWORD PTR SS:[EBP-54]

004013A5  50       PUSH EAX

004013A6  8D45 BC  LEA EAX,DWORD PTR SS:[EBP-44]

004013A9  50       PUSH EAX

004013AA  6A 00    PUSH 0

004013AC  6A 00    PUSH 0

004013AE  6A 00    PUSH 0

004013B0  6A 00    PUSH 0

004013B2  6A 00    PUSH 0

004013B4  6A 00    PUSH 0

004013B6  FF75 08  PUSH DWORD PTR SS:[EBP+8]

004013B9  6A 00    PUSH 0

004013BB  E8 44190000  CALL upDeskto.00402D04 ; JMP tokernel32.CreateProcessA

      /*

      //参数信息:

      0012FF0C  00000000 |ModuleFileName = NULL

      0012FF10  00910020 |CommandLine = "C:\Program Files\Microsoft\

                                                                                        DesktopLayer.exe"

      0012FF14  00000000 |pProcessSecurity = NULL

      0012FF18  00000000 |pThreadSecurity = NULL

      0012FF1C  00000000 |InheritHandles = FALSE

      0012FF20  00000000 |CreationFlags = 0

      0012FF24  00000000 |pEnvironment = NULL

      0012FF28  00000000 |CurrentDir = NULL

      0012FF2C  0012FF44 |pStartupInfo = 0012FF44

      0012FF30  0012FF34 \pProcessInfo = 0012FF34

      */     

 //这里手动修改 "C:\ProgramFiles\Microsoft\DesktopLayer.exe" 的入口点为 0XCC(同时需要记下原值,便于恢复)OD即可在样本启动的时断下该进程

Phase2:

2-1验证特定文件夹(Phase1创建的文件夹)下是否存在样本文件:

00402C8D  68 04010000  PUSH 104

00402C92  68D1E34000  PUSH DesktopL.0040E3D1

00402C97  6A00        PUSH 0

00402C99  E8 AE000000  CALL DesktopL.00402D4C ; JMP to                                                                                                                                                          kernel32.GetModuleFileNameA

    /*

    参数信息:

    0012FFB8  00000000 |hModule = NULL

    0012FFBC  0040E3D1 |PathBuffer = DesktopL.0040E3D1

    0012FFC0  00000104 \BufSize = 104 (260.)

   

    功能: 获取当前应用程序模块路径   

    0040E3D1  43 3A 5C 50 72 6F 67 72 61 6D 20 46 69 6C 6573  C:\Program Files

    0040E3E1  5C 4D 69 63 72 6F 73 6F 66 74 5C 44 65 73 6B74  \Microsoft\Deskt

    0040E3F1  6F 70 4C 61 79 65 72 2E 65 78 65 00 00           opLayer.exe..

    */

00402C9E  50           PUSH EAX

00402C9F  68 D1E34000  PUSH DesktopL.0040E3D1  ; ASCII "C:\Program Files\Microsoft\

                                                                                                DesktopLayer.exe"

00402CA4  E8 94E3FFFF  CALL DesktopL.0040103D

    /*

    参数信息:

    0012FFBC  0040E3D1 |Arg1 = 0040E3D1 ASCII "C:\Program Files\Microsoft

                                                                                                \DesktopLayer.exe"

    0012FFC0  0000002B \Arg2 = 0000002B

   

    功能: MOV BYTE PTR[Arg1 + Arg2], 0

    */

00402CA9  68 D1E34000  PUSH DesktopL.0040E3D1  ; ASCII "C:\Program Files\Microsoft

                                                                                                                \DesktopLayer.exe"

00402CAE  E8 D6FEFFFF  CALL DesktopL.00402B89

    /*

    参数信息:

    0012FFC0  0040E3D1 \Arg1 = 0040E3D1 ASCII "C:\Program Files\Microsoft\

                                                                                                DesktopLayer.exe"

   

    功能:   判断样本文件是否已经位于特定文件夹下

    返回值: 10

    */

 

2-2获取 ntdll.dll 的一些导出函数地址保存到全局变量中,便于后续代码的调用:

0040184E  68 01D94000    PUSH DesktopL.0040D901        ; ASCII "ntdll.dll"

00401853  E8 FA140000    CALL DesktopL.00402D52        ; JMP to                                                                                                                                 kernel32.GetModuleHandleA

00401858  83F8 00        CMP EAX,0

0040185B  0F84 6C010000  JE DesktopL.004019CD

00401861  8945 FC        MOV DWORD PTR SS:[EBP-4],EAX

00401864  68 0FD94000    PUSH DesktopL.0040D90F        ; ASCII "LdrLoadDll"

00401869  FF75 FC        PUSH DWORD PTR SS:[EBP-4]

0040186C  E8 E7140000    CALL DesktopL.00402D58        ; JMP to                                                                                                                                         kernel32.GetProcAddress

00401871  83F8 00        CMP EAX,0

00401874  0F84 53010000  JE DesktopL.004019CD

0040187A  A3 0BD94000    MOV DWORD PTR DS:[40D90B],EAX

0040187F  68 1ED94000    PUSH DesktopL.0040D91E        ; ASCII "LdrGetDllHandle"

00401884  FF75 FC        PUSH DWORD PTR SS:[EBP-4]

00401887  E8 CC140000    CALL DesktopL.00402D58; JMP tokernel32.GetProcAddress

0040188C  83F8 00        CMP EAX,0

0040188F  0F84 38010000  JE DesktopL.004019CD

00401895  A3 1AD94000    MOV DWORD PTR DS:[40D91A],EAX

0040189A  68 32D94000    PUSH DesktopL.0040D932 ASCII"LdrGetProcedureAddress"

0040189F  FF75 FC        PUSH DWORD PTR SS:[EBP-4]

004018A2  E8 B1140000    CALL DesktopL.00402D58 ; JMP to kernel32.GetProcAddress

004018A7  83F8 00        CMP EAX,0

004018AA  0F84 1D010000  JE DesktopL.004019CD

004018B0  A3 2ED94000    MOV DWORD PTR DS:[40D92E],EAX

004018B5  68 4DD94000    PUSH DesktopL.0040D94D; ASCII"RtlInitUnicodeString"

004018BA  FF75 FC        PUSH DWORD PTR SS:[EBP-4]

004018BD  E8 96140000    CALL DesktopL.00402D58; JMP tokernel32.GetProcAddress

004018C2  83F8 00        CMP EAX,0

004018C5  0F84 02010000  JE DesktopL.004019CD

004018CB  A3 49D94000    MOV DWORD PTR DS:[40D949],EAX

004018D0  68 66D94000    PUSH DesktopL.0040D966        ; ASCII                                                                                                                                 "RtlUnicodeStringToAnsiString"

004018D5  FF75 FC        PUSH DWORD PTR SS:[EBP-4]

004018D8  E8 7B140000    CALL DesktopL.00402D58; JMP tokernel32.GetProcAddress

004018DD  83F8 00        CMP EAX,0

004018E0  0F84 E7000000  JE DesktopL.004019CD

004018E6  A3 62D94000    MOV DWORD PTR DS:[40D962],EAX

004018EB  68 87D94000    PUSH DesktopL.0040D987       ; ASCII "RtlFreeAnsiString"

004018F0  FF75 FC        PUSH DWORD PTR SS:[EBP-4]

004018F3  E8 60140000    CALL DesktopL.00402D58  ; JMP to kernel32.GetProcAddress

004018F8  83F8 00        CMP EAX,0

004018FB  0F84 CC000000  JE DesktopL.004019CD

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值