能发起DDoS攻击的恶意程序



首先进行静态分析,可以看到:导入表中存在createservice等等函数,说明可能会创建一个服务来保证自己在系统启动后也能够继续运行,internetopen说明会联网
服务:



观察这段反汇编


这是他的msdn语法,初始是1000,这就是我们的堆栈。(注意:类似这种表的数组第0个元素永远都放在最低位,如该表table[0].name就在最低位,由于该表需要一个为全0的结构来表示表结束,所以这里的table[1].name/proc都是0)
0x0FEC 0x0FF0 ←刚刚push进去的,新esp指向这里
0x0FF0 Table.Name
0x0FF4 Table.Proc
0x0FF8 0
0x0FFC 0






由上面可以分析得到:mal.exe 这个程序,整体职责分三块,全部跑在同一个进程实例里面:
1. 单实例保护(mutex):进程跑起来,进入 sub_401040 第一件事,检查系统是否已经存在另一个 mal.exe 进程(另一个实例)。
有 → 直接退出,不再执行后续所有逻辑;
没有 → 创建互斥体,继续往下。
2.持久化自修复(CreateServiceA):只要成功进入这一步,就校验注册表里面 MalService 服务项。
服务项丢了(被安全软件删掉)→ 重建;
服务项还在 → CreateServiceA 调用失败,直接忽略。
3. 执行核心恶意逻辑:
修复完持久化之后,后面还有 CreateWaitableTimer,一般是用来定时触发任务,比如:联网、读取信息、执行命令、和 C2 通信等。

1.如何实现持久化:
Createservice:被StartServiceCtrlDispatcher拉起握手成功,回调401040这个函数,检验+createservice如果失败了说明还在注册表,如果成功了说明注册表这里被删除,重新创建服务在注册表中下次仍然可以自启动。(虽然注册表该位置被删除但StartServiceCtrlDispatcher拉起了这个木马实例仍然在运行,可以重新写入,但我认为仍然存在竞争关系,可以while(true){sleep(3000)}类似这样的改进?)
2.为什么程序会使用一个互斥量:
防止同时存在两个实例
3.用来检测的主机特征:
Hgl345和malservice
4.网络特征是什么:
Internet explorer 8.0和http://........
5.程序的目的:
持久化运行并在2100年创建20个进程发起ddos攻击,并且因为它在最后会jump回自己的函数头,是个死循环永远不会停止。

浙公网安备 33010602011771号