骷髅病毒简单分析

骷髅病毒简单分析

目录

一、样本信息

二、行为分析

三、详细分析

四、博客数据:https://pan.baidu.com/s/1EUIguu7YV3pS7F7ej7aDNg

一、样本信息

1. 样本名称:样本.exe(脱壳后为样本dump.exe)

2. md5:5b8bc92296c2fa60fecc6316ad73f1e2

3. 是否加壳:加壳UPX

4. 编译语言:visual C++

二、行为分析

1. 通过注册表判断系统是否被感染

2. 获取windows目录,利用计时器实现随机命名,把病毒copy到windows目录实现隐藏

3. 删除样本文件

4. 创建服务,实现自启

骷髅病毒简单分析

5. 链接指定url,执行后门行为。

三、详细分析

1. PEID查壳,发现是UPX加壳,ESP定律法脱去

2. 病毒先将currentcontrol\services\和15654656链接起来,并且利用RegOpenKey来打开这个注册表。目的是:判断这个服务是否被创建,换句话说看病毒是否在系统内存在

骷髅病毒简单分析

骷髅病毒简单分析

3. 如果这个服务不存在,病毒执行405A25,打开服务管理器。然后获取windows目录,比较c://windows,接着通过GetTick来获取计数器,复制那个exe文件到windows目录。目的是实现自身的隐藏,接着调用CreateService来创建病毒服务。判断服务是否开启,然后开启服务,最后,先获取获取目录信息,接着获取当前进程信息,目的是获取样本文件的信息,以便为删除做准备**然后调用shellEx利用cmd执行/c del >nul删除样本文件,设置进程的优先级。以便后续为破坏做准备

骷髅病毒简单分析

骷髅病毒简单分析

骷髅病毒简单分析

骷髅病毒简单分析

骷髅病毒简单分析

骷髅病毒简单分析

骷髅病毒简单分析

骷髅病毒简单分析

骷髅病毒简单分析

4. 如果这个服务存在的话,执行后续操作。

5. 通过调用StartServiceCtrlDispatcher函数,执行线程

6. 分析该服务线程

1)先获取例如closesocket和SDetServiceStatus等函数的地址

骷髅病毒简单分析

2)创建一个互斥体,**目的是使系统中只有一个病毒实例在运行**

3)创建一个线程,然后枚举资源列表,更新文件。

a)先和"2"一样,打开15654656注册表,判断病毒是否运行成功。

骷髅病毒简单分析

b)获取文件属性,并创建一个文件,读取文件,替换文件资源

骷髅病毒简单分析

骷髅病毒简单分析

c)加载刚刚替换的资源文件hra%u.dll

骷髅病毒简单分析

4)分析第一个线程

骷髅病毒简单分析

a)获取网络主机名和地址

骷髅病毒简单分析

b) 比较用户名和密码:

骷髅病毒简单分析

c) 获取当前文件路径,并把文件分别复制到C,D,E盘中(E:\g1fd.exe)【调用copyfile函数执行】

骷髅病毒简单分析

d) 如果在C,D,E中则会获取当前时间,然后执行程序,否则把文件复制到F盘,然后休眠500ms后创建下个线程.

骷髅病毒简单分析

5)分析第二个线程

a)初始化网络配置,休眠100ms,获取本地时间,转化为int类型,和20030221比较,如果小于的话,则一直执行,然后创建CreateStartFun线程(本质是调用StartAddress函数)。

骷髅病毒简单分析

骷髅病毒简单分析

b)在StartAddress内部先访问一个短地址aa.re67das.com,然后获取IP地址利用socket链接。

c) 获取机器的基本配置,然后load hra%u.dll’

骷髅病毒简单分析

d) 利用send()发送刚刚获取的机器信息。

骷髅病毒简单分析

e) 利用SelectAndRev3这个函数去不断的从服务器端接收控制信息,

骷髅病毒简单分析

f)输入16号控制码:

骷髅病毒简单分析

g)输入18号控制码(行为见脑图):

骷髅病毒简单分析

6)分析第三个线程

a)获取本地时间,如果小于2013.02.21则线程不断执行

骷髅病毒简单分析

b)否则执行线程如c:

c)如上,分析线程2所示一致。只是比2多了一个文件写入的函数

骷髅病毒简单分析

7)分析第四个线程

骷髅病毒简单分析

a) MainFun4只是比MainFun3多了一个连接特定url的函数,但是这个解密过程没分析出来,但是你可以通过apadns来获取相关信息。

骷髅病毒简单分析

骷髅病毒简单分析

关注看雪学院公众号ikanxue,获取更多干货哦!


分享到:


相關文章: