3601病毒分析

1样本概况

1.1 样本信息

病毒名称:3601

所属家族:Zard

MD5值:B5752252B34A8AF470DB1830CC48504D

SHA1值:AEC38ADD0AAC1BC59BFAAF1E43DBDAB10E13DB18

CRC32:4EDB317F

病毒行为概述:

- 文件操作行为:

0. 删除病毒进程文件,使用随机文件名创建新的病毒文件并启动进程

1. 遍历目录生成lpk.dll文件,覆盖原dll文件,同时还创建其他文件

- 系统操作行为:

          0. 开启服务Ghijkl Nopqrstu Wxy

          1. 删除注册表键,创建并设置注册表项

- 进程操作行为:

0. 创建进程,调用系统Rar,find,cmd,conhost程序

          1. 自我拷贝,释放文件

- 网络行为

对网关IP连接,对外连接156.254.43.31:9426

1.2 测试环境及工具

系统环境:win7 Professional 32位(15pb实验环境)

工具:

0. 火绒剑(行为分析)

1. autorun(查看启动项,计划任务,WMI,服务等)

2. PCHunter(文件,进程等管理)

3. WSExplorer(抓包工具,分析流量)

4. OllyDbg(动态调式)

5. IDA(静态分析)

6. PEID(查壳)

7. OllyDbg(动态调试分析)

8. VS(调式代码)

1.3 分析目标

分析样本需要完成的目标:

    0. 分析并记录样本产生的恶意行为

    1. 对样本进行详细分析,找出恶意代码及具体实现过程

    2. 对病毒的整个运行过程对应相应执行的恶意代码制作流程图

    3. 提取出样本特征,完成分析报告

2.具体行为分析

2.1 主要行为

2.1.1 病毒行为分析流程图

 

2.1.2 病毒对主机造成的危害

在虚拟机中模拟病毒运行,对计算机进行检查

病毒一运行就进行自删除

PCHunter(ARK工具)查看进程,找到病毒进程,重新运行发现文件名改变了,创建的病毒进程应该使用的随机名称来创建文件

清理环境第二次运行文件名改变了

网路连接行为,外连可能为矿池,下载恶意代码,或控制服务器

服务行为

2.1.3 提取病毒样本

 

通过病毒进程定位到文件,提取出来

定位到病毒样本文件将文件后缀修改为.vir,提取出来

对主机进行手动清理

1. 结束可疑的恶意病毒进程

2. 删除创建的服务

3. 删除病毒文件

5. 具体行为继续深入分析

2.1.4 监控样本行为

打开火绒剑工具,将病毒样本拖拽进行行为监控,设置监控所有事件

让病毒程序运行一段时间后,查看监控事件

对监控到的事件进行过滤分类详细分析

 

1. 文件监控

主要查看对文件的修改,创建,删除等关键操作

创建病毒文件写入,并删除自身程序文件,创建写入多个dll类型文件

遍历目录创建写入lpk.dll

创建大量临时文件,并删除了

2. 进程监控

主要查看对内存的写入,创建进程,终止进程等操作

创建进程行为,创建写入cmd,Rar,Find,conhost进程,使用cmd执行敏感操作更隐蔽

恢复挂起的线程

打开网络设备

3. 注册表监控

主要关注创建,设置,删除注册表键值的操作

创建注册表并添加键值信息

4. 网络监控

对网关IP的80端口发起连接,外连访问网站

数据包信息

5. 执行监控

调用程序执行命令

cmdline:'cmd /c C:\PROGRA~1\WinRAR\rar.exe vb "C:\Program Files\CLaunch\Skins\Matcha Chocolate [Bottom].zip" lpk.dll|find /i "lpk.dll"'

执行覆盖lpk.dll的操作

6. 行为监控

较为重要的恶意行为

自我复制,释放PE文件隐藏文件等

2.2 恶意代码分析

2.2.1 获取样本信息

 

样本大小为24K,猜测不是汇编程序就是使用了压缩壳,使用PEID查壳

使用UPX脱壳工具脱壳方便逆向分析,解压缩后

再次使用DIE查看,为32位GUI程序,链接器版本为6.0,可能为VC6.0或易语言程序

资源查看发现附带PE类型的资源

2.2.2 初步分析WinMain函数

将样本在IDA中打开,Shift+f5 添加VC6.0符号

初步分析,根据IDA中伪C代码,存在三个关键函数,

sub_405A52判断执行流程

条件成立执行sub_40561A,否则执行sub_0x405B6E

在OD中动态分析

在IDA中生成MAP文件,OD使用插件加载,获取符号信息便于分析

2.2.3 0x405A52:判断注册表键(服务)是否存在

基本过程

1. 构造子健路径,主键HKEY_LOCAL_MACHINE\

打开子健句柄SYSTEM\currentcontrolset\services\Ghijkl Nopqrstu Wxy,成功返回1,失败返回0

2.2.4 0x40561A:存在:设置服务主函数(关键函数)

基本过程:

1. 注册服务处理函数设置状态,通过互斥体判断是否多开

2. 枚举资源释放hra33.dll到系统路径

3. 将病毒文件及服务名称字符串添加到hra33.dll资源中

4. 病毒程序动态加载hra33.dll

将线程连接的服务管理器

分析服务主函数0x40561A

动态加载API

GetLastError

GetCurrentThreadId

CreateMutexA

创建互斥体,如果创建成功且互斥体存在则退出程序,防止重复执行

函数主体,依次分析

枚举资源函数EnumFunc,资源类型为0xA,RT_RCDATA,二进制类型文件

函数0x4052A2,释放hra33.dll文件

在系统目录下找到了该文件

接着是函数0x4053A6,首先动态加载API

拼接SYSTEM\currentcontrolset\services\Ghijkl Nopqrstu Wxy,判断是否存在

获取系统目录中病毒文件信息

将病毒文件和服务名字符串作为资源添加到hra33.dll中

函数0x4035E5为动态加载刚刚构造的hra33.dll

1. 0x402DD5:线程1:局域网传播病毒,计划任务执行

基本过程:

1. IPC暴力破解登录

2. 拷贝病毒到目标主机

3. 设置计划任务执行

构造IP,用户名,密码暴力破解

尝试建立连接

将病毒文件可拷贝到目标主机,并cmd执行命令设置执行病毒文件计划任务

2. 0x4051E0:线程2发送主机数据,接收数据并执行

基本过程:

1. 判断当前时间,与服务器连接fbcq.f3322.org:9898

2. 将主机信息发送到服务器

3. 接收服务器数据,根据数据执行不同操作

创建线程回调函数0x405128

初始化,并与服务器进行连接,发送获取到的系统信息到服务器

分析获取了哪些系统信息,语言,版本,CPU,适配器,网络等信息

如果获取到的数据标识等于10

如果为12

关闭并删除病毒服务,在注册表中删除服务项,拷贝自身到系统路径并删除当前程序文件,执行临时文件并退出程序

如果为14

如果为6

其余一些判断操作

上面三种情况

内部都是条件判断从而决定创建线程的回调函数与线程的数量

3. 0x405241:线程3:同线程2(www.520123.xyz:9999)

基本过程:

连接服务器地址为www.520123.xyz:9999,其他操作同线程2

4. 0x40387C:线程4:同线程2(www.520520520.org:9426)

基本过程:

连接服务器地址为www.520520520.org:9426 ,其余操作同线程2

该连接地址为一个加密的字符串,需要解密生成连接地址,在VS中构造代码实现解密操作,也可以在OD中设置EIP动态验证

2.2.5 0x405B6E:不存在:创建服务,自我复制自删除

基本过程:

1. 获取程序文件路径与系统路径比较,如果当前程序不是在系统目录中

2. 在系统目录创建新的文件,文件名6位字母随机,拷贝自身到文件

3. 创建服务Ghijkl Nopqrstu Wxy,并配置信息启动

4. 调用cmd删除当前病毒程序文件

进入函数分析,首先加载需要的API,获取当前程序与系统路径

将当前程序目录与系统目录比较,不相同的话,在系统目录下随机(a-z)一个六位的文件名并拷贝病毒文件自身到该文件C:\Windows\system32\??????.exe

使用构造系统文件路径创建服务Ghijkl Nopqrstu Wxy,并配置信息

设置注册表服务项,关闭资源

继续分析返回函数sub_40355B

2.2.6 病毒释放文件:hra33.dll

基本过程:

1. 从资源中获取服务字符串名称Ghijkl Nopqrstu Wxy

2. 判断当前模块名是否为hrlxxxx.TMP,和互斥体是否存在

3. 都不成立拷贝病毒文件到hrlxxxx.TMP,并创建该进程

4. 判断当前模块名是否为lpk.dll,成立

5. 遍历文件,根据条件释放lpk.dll

6. 病毒lpk.dll加载正常的lpk.dll从而保证程序正常运行

对病毒程序释放出的hra33.dll进行分析

逐个分析处理函数

1. 0x10001134:获取病毒服务名称

从资源中获取服务名称字符串Ghijkl Nopqrstu Wxy

2. 0x10001338:判断当前模块名称

3. 0x100012BD:判断互斥体是否存在

4. 0x10001193:以上条件都不成立

5. 0x100019E6:遍历文件释放lpk.dll

基本过程:

1. 遍历文件,如果为exe则在当前目录下拷贝自身创建lpk.dll

2. 如果为压缩文件,则创建临时文件,解压到临时文件进行遍历操作,释放lpk.dll重新压缩回压缩包

创建线程0x100018D3

分析回调函数

遍历文件,如果为exe文件,则在当前目录创建病毒dll的拷贝到lpk.dll

对压缩文件的操作,如果存在exe生成lpk.dll添加

之后加载正常的lpk.dll实现功能

6. 结束

3.解决方案

3.1 提取病毒的特征

特征包括:

1. 二进制特征

0x40C处的0x43424127 “‘ABC”

2. 也可以使用特殊字符串admin$\g1fd.exe等作为病毒特征标识,编写yara规则查找符合特征的病毒文件

3.2 查杀思路

1. 断开网络连接,关闭IPC共享

2. 结束病毒进程定位文件并删除,关闭并删除服务,在注册表中清除

3. 删除系统目录下hra33.dll

4. 遍历文件删除符合病毒特征的病毒文件(包括压缩包中),及lpk.dll

5. 将恶意服务器域名IP添加到黑名单

6. 多清理几遍,重启验证

4.总结

    3601病毒的运行建立在服务上,隐蔽程度更高,并劫持了lpk.dll,在dll中执行恶意代码并携带病毒文件,从而做到在系统上不间断的执行,这是一个远控木马带蠕虫的传播功能,接收服务端的数据并执行相应操作,不正常的网络连接是最容易察觉到它存在的方法,同时病毒文件运行在系统目录中,具有较高权限和隐蔽性,因为主要逻辑函数是作为服务主函数执行的,所以这次使用了IDA静态分析。

    病毒程序不断的判断当前运行状态,保证在不重复启动的同时,又稳定的运行,创建了多条线程接收来自远程控制端的控制命令,整个分析过程中就是对逻辑的梳理,代码并没有作混淆干扰,最多的分析还是对系统,文件,网络等API的调用,并且有了前面的经验分析起来还是比较流畅的。

    在IDA中静态分析不确定的,如果是比较独立的解密加密等函数不依赖整个运行环境的可以在OD中设置EIP指向,动态验证分析结果,或者直接在VS中实现

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值