恶意代码分析实战 IDA 分析windows恶意程序 lab 7-1 7-2
恶意代码分析实战 第七章 实验部分
第7章 分析恶意Windows程序(实验)
Lab 7-1:分析在文件Lab07-01.exe中发现的恶意代码
1.1 当计算机重启后,这个程序如何确保它继续运行(达到持久化驻留)?
1.2 为什么这个程序会使用一个互斥量?
1.3 可以用来检测这个程序的基于主机特征是什么?
1.4 检测这个恶意代码的基于网络特征是什么?
1.5 这个程序的目的是什么?
1.6 这个程序什么时候完成执行?
Lab 7-2:分析在文件Lab07-02.exe中发现的恶意代码
2.1 这个程序如何完成持久化驻留?
2.2 这个程序的目的是什么?
2.3 这个程序什么时候完成执行?
Lab 7-3
3.1 这个程序如何完成持久化驻留,来确保在计算机被重启后它能继续运行?
3.2 这个恶意代码的两个明显的基于主机特征是什么?
3.3 这个程序的目的是什么?
3.4 一旦这个恶意代码被安装,你如何移除它?
静态分析IDA Pro
字符串:
可以看到有一个 MalService
,可以推测该程序创建了一个系统服务。 HGL345
暂定(HGL是互斥量,怪不得作者说互斥量命名可以做为检测特征)。网址信息http://www.malwareanalysisbook.com
用户代理信息Internet Explorer 8.0
。
查看导入函数
比较重要的导入函数
Address Ordinal Name Library
------- ------- ---- -------
00404000 CreateServiceA ADVAPI32
00404004 StartServiceCtrlDispatcherA ADVAPI32
00404008 OpenSCManagerA ADVAPI32
00404010 CreateWaitableTimerA KERNEL32
00404014 SystemTimeToFileTime KERNEL32
00404018 GetModuleFileNameA KERNEL32
0040401C SetWaitableTimer KERNEL32
00404020 CreateMutexA KERNEL32
00404028 OpenMutexA KERNEL32
0040402C WaitForSingleObject KERNEL32
00404030 CreateThread KERNEL32
004040C0 InternetOpenUrlA WININET
004040C4 InternetOpenA WININET
CreateServiceA
和OpenSCManagerA
函数表明创建服务,以确保该程序可以随系统运行。
StartServiceCtrlDispatcherA
函数被系统用于实现服务,且一般立即被调用。该函数制定了服务控制管理器会调用的函数。
它所制定的的是sub_401040
检查sub_401040
函数
第一个函数是OpenMutexA
,它尝试获取一个名为"HGL345
“的互斥量句柄。如果调用成功,程序就会退出。
下一个调用
创建名为”HGL345
"的互斥量,两处组合调用,用于保证同一时间这个程序只有一份实例在运行。因为如果有一个实例在运行了,则OpenMutexA
第一次调用成功,程序就会退出。
OpenSCManagerA
打开服务控制管理器句柄,以便该程序可以添加或修改服务。
GetModuleFileNameA
返回当前可执行程序或一个被加载DLL的全路径名。
返回的全路径名被CreateServiceA
用于创建一个新的服务。
MSDN
SC_HANDLE CreateServiceA(
SC_HANDLE hSCManager,
LPCSTR lpServiceName,
LPCSTR lpDisplayName,
DWORD dwDesiredAccess,
DWORD dwServiceType,#3
DWORD dwStartType,#2
DWORD dwErrorControl,
LPCSTR lpBinaryPathName,#1
LPCSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,
LPCSTR lpDependencies,
LPCSTR lpServiceStartName,
LPCSTR lpPassword
);
这里的1 2 3分别对应BinaryPathName、StartType和ServiceType。
MSDN中还列举了StartType和ServiceType的有效值(此处未列全)。
和时间相关
结构体
834h
表示10进制2100
,表示2100年1月1日午夜。 ==》整个程序就是在此刻用于ddos攻击,对malware analysis网站发起DoS!创建了20个线程用于DoS,一直请求http://www.malwareanalysisbook.com!
SystemTimeToFileTime
用于不同时间格式的转换
再接着SetWaitableTimer函数的lpDueTime参数,它来自于刚才时间转换函数返回的FileTime。
随后进入WaitForSingleObject等待,直到2100年1月1日午夜执行。
在1处ESI设置为计数器0x14(十进制20),循环的末位,ESI在2处递减,在3处到达0时,循环退出。4处的CreateThread函数的参数中lpStartAddress可以告知当前线程的起始地址。
查看该参数StartAddress
循环末尾的jmp指令是一个无条件跳转,意味着代码将永远不会停止;调用InternetOpenUrlA,并且一直下载该网址的主页。由于前面ESI被设置为20,因此会有20个线程一直调用InternetOpenUrlA函数。
该恶意代码目的是将自己在多台机器上安装成一个服务,进而启动DDOS攻击。如果所有的被感染机器在同一时间访问该服务器,会导致该服务器过载并无法访问该站点,导致拒绝服务攻击。
1.当计算机重启之后,这个程序如何保证它继续运行(达到持久化驻留)?
创建服务 MalService
,在后台随系统启动运行。
2.为什么这个程序会使用一个互斥量?
保证同一时间这个程序只有一份实例在运行。
3.可以用来检测这个程序的基于主机特征是什么?
搜索一个名为HGL345
的互斥量,以及服务 MalService
。
4.检测这个恶意代码的基于网络特征是什么?
网址信息http://www.malwareanalysisbook.com
用户代理信息Internet Explorer 8.0
。真正用于检测的话,这个是弱特征!
5.这个程序的目的是什么?
定时任务:时间为2100年1月1日半夜
,发送大量请求到http://www.malwareanalysisbook.com
引发ddos攻击。
6.这个程序什么时候完成执行?
不会完成,等到2100年1月1日半夜
,到那时创建20个线程,每个均是无限循环。
参考
1.斯科尔斯基, 哈尼克. 恶意代码分析实战[M]. 电子工业出版社, 2014.
静态分析 IDA PRO
字符串信息很少,但是没有加壳。
如果遇到下图这种,直接人工对应下即可。
使用strings工具
书上说这个是Unicode
字符。
导入函数
和COM对象有关。CoCreateInstance
和OleInitialize函
数使用COM功能。
主函数
该恶意代码第一件事初始化COM,调用OleInitialize
函数和CoCreateInstance
获得一个COM对象。返回的COM对象被保存为ppv
。riid
和rclsid
分别表示接口标识符(IID)和类标识符(CLSID),
riid为0D30C1661-0CDAF-11D0-8A3E-00C04F0C90E26E
对应IWebBrowser2
rclsid为0002DF01-0000-0000-C000-000000000046
对应Internet Explorer
返回的COM对象在1处被后面的一些函数访问。紧跟这条指令,在2处,EAX
被解引用并且指向这个COM对象的基址。在3处,这个对象中偏移0x2C
是Navigate
函数。该函数被调用后,Internet Explorer
将导航至http://www.malwareanalysisbook.com/ad.html
。该函数执行一些清理函数,但是没有持久化驻留,仅简单显示一个广告页面。
也就是说整个程序的功能是通过com组件调用方式来显示广告网页。==》不知道sysmon采集数据怎么样?
看下sysmon数据采集:
23:06:18:939, Lab07-02.exe, 4968:0, 4968, EXEC_create, D:\virus_test\PracticalMalwareAnalysis-Labs-master\PracticalMalwareAnalysis-Labs-master\PracticalMalwareAnalysis-Labs\Practical Malware Analysis Labs\BinaryCollection\Chapter_7L\Lab07-02.exe, parent_pid:18760 cmdline:'Lab07-02.exe' image_base:0x0000000000400000 image_size:0x00004000 , 0x00000000 [操作成功完成。 ], 23:06:18:939, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage, access:0x00020019 , 0x00000000 [操作成功完成。 ], 23:06:18:939, Lab07-02.exe, 4968:13356, 4968, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\ACP, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 23:06:18:939, Lab07-02.exe, 4968:13356, 4968, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\OEMCP, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 23:06:18:939, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000001 , 0x00000000 [操作成功完成。 ], 23:06:18:939, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000009 , 0x00000000 [操作成功完成。 ], 23:06:18:939, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000009 , 0x00000000 [操作成功完成。 ], 23:06:18:940, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wow64\x86, access:0x00020019 , 0x00000000 [操作成功完成。 ], 23:06:18:940, Lab07-02.exe, 4968:13356, 4968, REG_getval, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wow64\x86\, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 23:06:18:940, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage, access:0x00020019 , 0x00000000 [操作成功完成。 ], 23:06:18:940, Lab07-02.exe, 4968:13356, 4968, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\ACP, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 23:06:18:940, Lab07-02.exe, 4968:13356, 4968, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\OEMCP, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 23:06:18:940, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000001 , 0x00000000 [操作成功完成。 ], 23:06:18:941, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000009 , 0x00000000 [操作成功完成。 ], 23:06:18:941, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000009 , 0x00000000 [操作成功完成。 ], 23:06:18:942, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CustomLocale, access:0x00020019 , 0x00000000 [操作成功完成。 ], 23:06:18:942, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\ExtendedLocale, access:0x00020019 , 0x00000000 [操作成功完成。 ], 23:06:18:942, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server, access:0x00020019 , 0x00000000 [操作成功完成。 ], 23:06:18:942, Lab07-02.exe, 4968:13356, 4968, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\TSUserEnabled, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 23:06:18:943, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\safer\codeidentifiers, access:0x00000001 , 0x00000000 [操作成功完成。 ], 23:06:18:943, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem, access:0x00020019 , 0x00000000 [操作成功完成。 ], 23:06:18:943, Lab07-02.exe, 4968:13356, 4968, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem\LongPathsEnabled, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 23:06:18:944, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options, access:0x00000009 , 0x00000000 [操作成功完成。 ], 23:06:18:948, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000001 , 0x00000000 [操作成功完成。 ], 23:06:18:950, Lab07-02.exe, 4968:0, 4968, FILE_open, C:\Windows\SysWOW64\uxtheme.dll, access:0x00100021 alloc_size:0 attrib:0x00000000 share_access:0x00000005 disposition:0x00000001 options:0x00000060 , 0x00000000 [操作成功完成。 ], 23:06:18:951, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_USERS\S-1-5-21-1222956552-350874820-2437608500-1002, access:0x00020019 , 0x00000000 [操作成功完成。 ], 23:06:18:951, Lab07-02.exe, 4968:13356, 4968, REG_openkey, HKEY_USERS\S-1-5-21-1222956552-350874820-2437608500-1002\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize, access:0x00000001 , 0x00000000 [操作成功完成。 ], 23:06:18:951, Lab07-02.exe, 4968:13356, 4968, REG_getval, HKEY_USERS\S-1-5-21-1222956552-350874820-2437608500-1002\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 23:06:20:042, Lab07-02.exe, 4968:0, 4968, EXEC_destroy, D:\virus_test\PracticalMalwareAnalysis-Labs-master\PracticalMalwareAnalysis-Labs-master\PracticalMalwareAnalysis-Labs\Practical Malware Analysis Labs\BinaryCollection\Chapter_7L\Lab07-02.exe, parent_pid:18760 cmdline:'Lab07-02.exe' , 0x00000000 [操作成功完成。 ],
感觉这个日志 看不出com调用!!!
再试试procmon,日志如下:
可以看到有clsid注册表的读取动作,但是没有看到IE关联!==》也就是说通过com调用的进程无法关联!!!蛋疼啊!
动态分析
无持久化驻留证据。
1.这个程序如何完成持久化驻留?
该程序没有完成持久化驻留。运行一次后退出。
2.这个程序的目的是什么?
给用户显示一个广告网页http://www.malwareanalysisbook.com/ad.html
。
3.这个程序什么时候完成执行?
显示广告页后完成执行。
参考
1.斯科尔斯基, 哈尼克. 恶意代码分析实战[M]. 电子工业出版社, 2014.