Lab 7-1
静态分析IDA Pro
字符串:
可以看到有一个 MalService
,可以推测该程序创建了一个系统服务。 HGL345
暂定。网址信息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日午夜。
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.