一种apc注入型的Gamarue病毒的变种
2024-10-29 01:59:0 Author: mp.weixin.qq.com(查看原文) 阅读量:9 收藏


概述


样本的基本信息

MD5: 9de070f6864bc64e0fcac70a0c881cfb
SHA1: 8b5c9c3f7ca2921542252b92d749696c75f617b2
SHA256: d59d469759bce4bb41ffa92a617570770db3e9712a1da308301131f6806c8123
文件大小: 118 KB (121,344 字节)
Link date: 6:43 2011/3/18
Publisher: n/a
Company: Tometa Software, Inc.
Description: Owo Giqer Idif
Product: Bomisyh
Prod version: 2, 8
File version: 2, 8, 7
MachineType: 32-bit
Verified: Unsigned

从资源节中解密一段数据,数据包括一段shellcode和一个pe,执行这段shellcode,
这个样本的主体功能如下,注册了一个异常处理函数用来处理程序异常,后面会通过主动div 0来产生异常,会触发调用这个函数,应该是用来对抗调试用的。


注册一个回调函数,每隔20毫秒调用一次,主要功能在这个回调函数中。

TimeQueueHandle = CreateTimerQueue()
CreateEventA(hEvent,0,0,0)
RtlInitializeCriticalSection(gCriticalSection_40C7C0);
//捕获程序产生的异常,使用自定义函数TopLevelExceptionFilter_4011A0来处理
SetUnhandledExceptionFilter(TopLevelExceptionFilter_4011A0);
gTickCount_40C7E4 = GetTickCount();
//注册一个回调函数,每隔20毫秒调用一次
CreateTimerQueueTimer(hNewTimer_v6,TimeQueueHandle_v5,sub_401540,0,1,20,0);

从资源节中读取名为doma的资源。

解密资源节中数据,分配一段0x820大小的可执行内存,将解密出内容的前0x820字节拷贝过去 这是一段shellcode,将0x820至0x27220作为参数传入(这是一个PE)。

使用OD动态调试,将这段shellcode dump出来,下面分析这段shellocode。

这段shellcode的主要功能是创建一个同名的傀儡进程,将pe注入其中执行。

首先获取下列api的地址。

然后创建一个同名的进程,将参数中的PE注入到傀儡进程中启动。

下面重要分析这个PE。

注入傀儡进程中的pe的基本信息如下:

Verified:    Unsigned
Link date: 20:23 2017/10/26
MachineType: 32-bit
MD5: F5CD7C49DEF09E1DEBC4559F1A7EB3BB
SHA1: 980C52CACD969F9524FBE254F5F42753654AFA92
SHA256: 763e1dd259fde007e1d1bb28c46b5941d44dad8754b9604485cf24682847f786
编译器: Microsoft Visual C/C++(2010)[-]
链接程序: Microsoft Linker(10.0)[GUI32]
文件大小: 154 KB (158,208 字节)

首先获取命令行参数,若带参数的话,说明用户点击了lnk文件,使用资源管理器打开同名的文件夹或执行同名的文件。

读取系统的磁盘信息,判断当前系统是否为沙箱环境,是的话,退出。

遍历注册表中的开机启动项,跳过自身的启动项({893B0615-D58A-CE78-7A5B-D4C7F40D0C54})和文件路径中含有关键字\\Microsoft\\Windows\\Themes、 \\WindowsUpdate、 \\Windows Live的项。

若文件路径含有\Temp、'{'、'}'、.exe,或者启动项中含有'{'、'}'、 "Microsoft"、 "Windows" 、"Kernel"的话,删除相应的启动项。


对应其它启动项,关闭对应的进程,若是隐藏文件,重启后将其删除。

创建一个名创建名为{893B0615-D58A-CE78-7A5B-D4C7F40D0C54}的事件对象,防双开,若存在同名的event,返回0x12345678。

创建进程C:\windows\system32\svchost.exe,并挂起,将当前病毒副本拷贝进行svchost进程空间,将当前程序的内存镜像复制到svchost进程中,APC注入svchost进程,执行sub_407140函数。

在svchost.exe的进程空间中主要执行sub_407140的功能,病毒的主要的功能就在这个函数中。

1.首先添加了一个计划任务,然后在注册表中添加了一个开机启动项,启动项和计划任务均为{152B2E26-FDB9-5268-7A5B-D4C7F40D0C54},均指向文件c:\programdata\{893B0616-D589-CE78-7A5B-D4C7F40D0C54}\2484d689.exe

2.若当前病毒进程是从U盘上感染的,删除掉U盘上的病毒母体。

接下来,创建了一系列线程,来执行不同的操作。

3.创建线程Thread_405c20,创建一个死循环,每隔5秒,检查一次计划任务和注册表中的开机启动项,若被删除了,再添加一遍。

4.创建线程Thread_406110,创建一个死循环线程(间隔10s),通过CRC方式对比当前内存母体与磁盘母体文件是否相同,不同则将内存母体替换磁盘母体(便于实时更新,或者是防止母体文件被篡改)

5.创建线程Thread_408F70,感染可移动存储介质。遍历U盘根目录的文件,根据不同的驱动器生成一个隐藏文件和文件名(不同的系统上不一样),将病毒副本释放其中。如这样的文件名

X:\\{d3137d55-925f-487e-48f8-5999785d98ab}\c39d5c50-e52b-3890-9a66-c4c1eff14215.exe

隐藏根目录下的文件夹,创建一个同名的快捷方式,lnk文件的target如%comspec% /c "{d3137d55-925f-487e-48f8-5999785d98ab}\c39d5c50-e52b-3890-9a66-c4c1eff14215.exe '原来的目录名\'",当用户的点击这个lnk文件时,会先执行病毒副本,然后再打开原来的目录或文件。

6.创建线程Thread_406370,从C2下载新的病毒版本,若比当前版本新,则会更新内存和磁盘上的病毒文件。这个下载的链接是从全局变量gPayload_428010中解密得到的。

7.从系统中寻找一个进程(跳过teamviewer.exe和tv_w32.exe,当前进程和64位的进程),将sub_401fc0注入,作用是当当前进程退出后,启动病毒母体。

没有找到合适的进程的话,启动一个notepad进程进行注入。用来保护自身进程被kill。

8.将当前时间写入注册表HKEY_CURRENT_USER\Software\Classes\CLSID\{893B0615-D58A-CE78-7A5B-D4C7F40D0C54}

9.连接C2,这里共解密出1428个不同的C2地址,会逐个请求这些域名,直到找到可用的c2地址,与其建立连接,会将当前系统信息发送给控制端,从c2下载载荷执行,执行后续的恶意行为。这一部分逻辑比较复杂。

感染前

感染后

lnk文件的目标为%comspec% /c "{d3137d55-925f-487e-48f8-5999785d98ab}\c39d5c50-e52b-3890-9a66-c4c1eff14215.exe 'python逆向\'"

这样,用户在点击快捷方式之后,就会运行病毒,并将对应的目录名传递给病毒,病毒会打开相应的目录,并执行感染系统的操作。


IOC

hash
MD5: 9de070f6864bc64e0fcac70a0c881cfb
SHA1: 8b5c9c3f7ca2921542252b92d749696c75f617b2
MD5: F5CD7C49DEF09E1DEBC4559F1A7EB3BB
SHA1: 980C52CACD969F9524FBE254F5F42753654AFA92

文件
c:\programdata\{893B0616-D589-CE78-7A5B-D4C7F40D0C54}\2484d689.exe
U盘中类类似这种文件
X:\{d3137d55-925f-487e-48f8-5999785d98ab}\c39d5c50-e52b-3890-9a66-c4c1eff14215.exe

Event对象 {152B2E26-FDB9-5268-7A5B-D4C7F40D0C54} 防双开
名为{152B2E26-FDB9-5268-7A5B-D4C7F40D0C54}的计划任务
注册表
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\{152B2E26-FDB9-5268-7A5B-D4C7F40D0C54}

HKEY_CURRENT_USER\Software\Classes\CLSID\{893B0615-D58A-CE78-7A5B-D4C7F40D0C54} 用来记录时间戳

域名
v1.eakalra.ru:1281
v1.op17.ru:6006
v1.zgclgdb.ru:8518
v1.yekfhsh.ru:7372
v1.fasefja.ru:3410
v1.hpifnad.ru:3721
......更多请查看原文

◆一款正在活跃的U盘感染型病毒分析-华盟网 (77169.net)https://www.77169.net/html/185673.html

◆一款正在活跃的U盘感染型病毒分析 (sohu.com)https://www.sohu.com/a/204633647_354899

◆终端安全系列-计划任务详解-腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/2318604

看雪ID:mb_zuyotbmd

https://bbs.kanxue.com/user-home-868846.htm

*本文为看雪论坛优秀文章,由 mb_zuyotbmd 原创,转载请注明来自看雪社区

# 往期推荐

1、Alt-Tab Terminator注册算法逆向

2、恶意木马历险记

3、VMP源码分析:反调试与绕过方法

4、Chrome V8 issue 1486342浅析

5、Cython逆向-语言特性分析

球分享

球点赞

球在看

点击阅读原文查看更多


文章来源: https://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458579387&idx=1&sn=9d6fbf25f11b3d99c92c5ac8de0587d5&chksm=b18dc13186fa4827ae7a7bf909e0d2b9490c6df4417c1d7eebc27127133daa9771c212b4f310&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh