1.1、第一问
问题:该程序如何实现持久化的
静态分析,Denpendency分析,在ADVADPI32.dll中导入CreateServiceA、OpenSCManagerA与StartServiceCtrlDispatcherA函数,判断该样本会创建一个服务,保证在系统重启后运行。
在WINIENT.DLL中导入InternetOpen和InternetOpenUrl的调用,可知程序可能连接到一个URL并下载内容。
载入IDA静态分析,在main函数中调用了StartServericeCtrlDispatcherA函数与sub_401040函数。可知该程序是要作为服务运行。
跟进sub_401040函数,调用OpenMutexA函数,判断是否打开名为“HGL345”的互斥句柄,未打开成功则调用ExitProcess函数退出程序。
随后调用CreateMutexA函数创建名为“HGL345”的互斥量,并调用OpenSCManager函数,打开一个服务控制管理器的句柄,添加或修改服务。调用GetModuleFileName函数,获取当前正在运行的可执行程序或一个被加载DLL的权路径名。全路径作为参数传递给CreateServiceA函数用来创建一个新的服务。
其中dwStartType和dwServiceType参数来说是创建服务的类型。查MSDN此处dwStartType为0x2h,对应的是SERVICE_AUTTO_START(0x02),该服务随系统启动自启。
随后对SystemTime结构体中的年月日置空,在地址0x004010DE将SystemTime的年赋值为2100。调用SystemTimeToFileTime将系统时间转换为文件格式。
之后调用CreateWaitableTimerA、SetWaitableTimer函数。设置等待时间。等待信号传递给WaitForSingleObject函数。
继续向下,循环20次调用CreateThread函数创建线程。其中第三个参数是线程回调函数的地址。跟踪查看线程的功能。
线程回调函数中,调用InternetOpenA函数初始化网络连接,在死循环中调用InternetOpenUrlA函数持续请求“http://www.malwareanalysisbook.com”。
由此可知该软件会将自己当作服务安装到系统上,开启20个线程持续请求“http://www.malwareanalysisbook.com”造成DDoS攻击。
通常一个服务必须实现用来停止或暂停的函数,并且它必须能改变它的状态,用来使用户和操作系统知道这个服务已经启动了。但该样本并未实现这些功能,它的服务状态总是为START_PENDING。并且该服务无法停止。
说明:可使用sc delete Malservice删除该服务,然后删除该软件。
1.2、第二问
因为创建个多线程,要保证在系统中任何时刻只有一个实例在运行。
1.3、第三问
这个程序使用的互斥量名为“HGL345”,服务名为“MalService”。
1.4、第四问
该程序的网络特征为用户代理为“Internet Explorer 8.0”,持续请求“http://www.malwareanalysisbook.com”。
1.5、第五问
程序等到2100年1月1日持续请求“http://www.malwareanalysisbook.com”。
1.6、第六问
程序不会停止,创建了20个线程,每个线程都是死循环。
原文始发于微信公众号(网络黑箱):恶意代码分析实战-014 Lab 7-1
评论