baccarat:新的Bazar 木马变体正通过最近的网络钓鱼流动放肆流传(二)
菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。
本文,我们将重点先容在“cmd.exe”历程内运行的Bazar有用载荷文件。你将领会到该Bazar使用了哪些新的反剖析手艺,若何与C2服务器通讯,它可以从受害者的装备网络哪些敏感数据以及若何将其他恶意软件传播到受害者的系统。
Bazar有用载荷的Main()函数
Bazar有用载荷的此变体是使用Microsoft Visual C 8.0编写的64位可执行文件。它是于2021年1月18日星期一被编译的。
在其Main()函数中,我们可以看到它由API SetTimer()设置的“计时器”驱动,然后由GetMessageA()捕捉。当条件匹配时,事情函数就被挪用一次。下图显示了它们若何一起事情的伪代码。
Bazar Main()函数的伪代码
反剖析手艺
我还观察到在整个Bazar执行历程中使用了三种主要的反剖析手艺,我将注释它们是若何事情的。
1.所有要害API均被隐藏
Bazar在代码中隐藏了要害API,仅在需要挪用时才使用它们。我挪用的函数get_api()用于动态获取具有API名称哈希值及其模块索引的API地址。 get_api()返回时,API地址在RAX寄存器中。通过使用get_api()在此变体中获得了600多个API。剖析此API很庞大,由于没有人能够通过其名称哈希值读取它,这确实给动态和静态剖析的研究人员带来了贫苦。
当它检索名称为哈希值0x9E6FA842且模块索引为8的API“TerminateProcess”时,这部门ASM代码如下所示。如前所述,当API挪用返回时,在RAX中找到了该地址。
2. ASM代码混淆
若是你对代码结构感应好奇,那么伪代码(如下图所示)看起来就很新鲜,由于Bazar使用了一种代码混淆手艺。这是威胁研究人员清晰跟踪剖析代码的另一个障碍,这是有关若何混淆ASM代码的示例。
原始代码如下:
经由混淆后,它变成了这样(原始代码突出显示):
mov ecx, 370A6DACh Label_0: mov [rsp 40h var_18], rdx mov rbp, [rsp 40h var_18] cmp rbp, 4 mov ebp, 0B03F61D0h cmovb ebp, ecx jmp Label_1 […] Label_1: cmp ebp, 0F7C9568Bh jg short Label_2 cmp ebp, 0B03F61D0h jz Label_3 cmp ebp, 0BAE74C5Ch jz Label_5 cmp ebp, 0EC1D9526h jnz short Label_1 jmp Label_4 […] Label_2: cmp ebp, 0F7C9568Ch jz Label_6 cmp ebp, 2BA792A4h jz Label_0 cmp ebp, 370A6DACh jnz short Label_1 mov rdx, [rsp 40h var_18] movzx ebp, [rsp rdx 40h var_10] imul ebp, -0Bh mov ebx, ebp add ebx, 273h […] Label_3: mov ebp, 0EC1D9526h jmp Label_1 […] Label_4: lea rcx, [rsp 40h arg_40] lea rdx, [rsp 40h var_10] call sub_13F944B2E
如你所见,混淆的ASM代码与大量类似垃圾的代码夹杂在一起,同时其逻辑也变得非常庞大,Bazar险些所有函数都接纳了这种混淆方式。
3.所有常量字符串均以Bazar编码
另一种形式的混淆会影响常量字符串的使用,Bazar的常量字符串隐藏在整个代码的加密数据中,以执行反剖析。
刚刚解密的一个常量字符串“POST”
如上所示,在使用加密数据(“3C 37 4B 50 29”)之前,已将其从客栈中复制并解密为“POST”。
与C2服务器通讯
在Bazar的事情函数中,它还举行了一些初始事情(例如设置环境变量、建立互斥工具、加载API和设置全局变量)之后,它会建立一个线程来执行线程函数中的义务。
线程函数毗邻到C2服务器并向其发送数据,C2服务器主机字符串是解密的常量字符串。它们是 "miraclecarwashanddetall[.]com:443" 和一组其他主机:“caexidom[.]bazar”, “ektywyom[.]bazar”, “emliwyyw[.]bazar”, “uhymeked[.]bazar”, “ibykwyyw[.]bazar”和“elicuhem[.]bazar"优先毗邻到第一台C2服务器主机,然后,若是第一台C2服务器主机不事情,它将实验毗邻到其他主机。
1.请求
Bazar和它的C2服务器之间的通讯通过SSL协议加密,下图是在第一个请求即将通过挪用API EncryptMessage()举行ssl加密时截图的。
Bazar通过SSL协议对数据包举行加密
如你所见,这是一个GET请求。 URL " /cgi-bin/req5 "是一个解密后的常量字符串,主机是我上面提到的第一个C2服务器,另有四个“Cookies”:“fpzkgo”、“bcfs”、“hky”和“otxe”。它们的名称是随机字符串,只有“fpzkgo”的值是有用数据,其他的都是随机数据。
让我们看看“fpzkgo” 的寄义,凭据我的剖析,它分为两部门:受害者ID和下令编号。我的测试装备的受害者ID是“a9aadd987308f3a5b28d5a0c552c4324”。它是从我的装备获取的一串信息的MD5哈希值,例如盘算机名、分区的卷号和Windows安装信息。
讲述下令的花样为“/{Victim-ID}/{command number}”。第一个“GET”数据包的下令号为“2”。因此,最终下令字符串为“/ a9aadd987308f3a5b28d5a0c552c4324 / 2”。
然后,Bazar使用了使用RSA算法的私钥加密手艺对100H缓冲区中的下令字符串举行加密。下图在顶部显示了明文数据,在底部显示密文。
使用RSA算法对受害者ID和下令字符串举行加密
最后,Bazar base64对RSA加密数据举行编码,即“Cookies”项“fpzkgo”的值,如图3.1所示。
发送到C2服务器的所有下令包都包罗在“cookie”中,并使用相同的步骤和算法天生。
2.响应
C2服务器吸收并处置了恶意软件请求和通知后,便会响应Bazar。因此,在接下来的先容中,我们将剖析响应数据包。参考下图,你可以在内存部门看到使用API DecryptMessage()从SSL数据包中解密了一个响应数据包。
显示收到的响应数据包
该响应数据包在标头中包罗“Set-Cookies:jklo =…”项,其值是base64编码的。在base64对该值举行解码之后,Bazar将获得一个由RSA加密的100小时长的数据集。使用C2服务器的公钥,Bazar能够解密该数据集,从而从C2服务器获得下令字符串。下图显示了RSA解密下令字符串,“0 302”,通过挪用API BCryptDecrypt()发现。“0302”的“0”是下令编号,“302”是下令数据。
,,菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。
来自“ Set-Cookies”项的解密的C2下令字符串
这险些是Bazar和C2服务器之间所有其他通讯数据包所使用的基本数据包结构,接下来我们将讨论更多控制下令。
剖析下令和控制(C2)
Bazar能够通过从C2服务器吸收到的下令来控制受害者的装备,如上所示我在“0302”字符串中识别了C2的下令“0”。通过检查Bazar的代码,我已经能够识别出它支持以下C2下令编号:“0”、“1”、“10”、“11”、“12”、“13”、“14”、“15”、“16”、“17”、“18”和“100”。
接下来,我将注释该恶意软件中使用的一些已知下令,包罗下令包由什么组成,以及使用这些下令的目的。
当Bazar需要发送C2服务器请求的任何数据时,它将发送一个带有URL“/cgi-bin/req5”、包罗在“Cookies”中的下令编号字符串和请求的 “body”中的ras加密数据的“POST”请求。
提醒一下,讲述下令的花样为“/{Victim-ID}/{command number}” ,测试装备的受害者ID为“a9aadd987308f3a5b28d5a0c552c4324”。
下令0:
C2服务器要求Bazar发送它所毗邻的主机字符串和端口以及受害者装备上Bazar的运行时间。以下是此数据的示例,"/a9aadd987308f3a5b28d5a0c552c4324/4" 。 Bazar使用其私钥作为发送到C2服务器的“POST”的 “body” 中的数据对其举行加密。
“Cookies”中包罗“/a9aadd987308f3a5b28d5a0c552c4324/4”,以提供受害者ID和下令编号。
下令1:
该下令要求Bazar从受害者的系统中网络数据,例如OS信息、域、用户名、公共IP地址、位置和语言、所有已安装的软件、网络信息、共享文件夹、运行历程列表、时区、CPU信息、硬盘驱动器容量、物理内存容量以及Bazar是否在VM中运行。它挪用GetVersionExA()和GetProductInfo() API来获取Windows的版本和服务包信息。
为了获取受害者装备的公共IP地址,Bazar将STUN请求(UDP数据包)发送到Google的一台STUN服务器,例如“stun2.l.google.com”,以检索公共IP地址。以下是请求Bazar发送STUN数据包的下令的Wireshark屏幕截图。
使用Google STUN服务获取受害者的公共IP地址
Bazar执行多个下令以从受害者的装备获取网络相关信息和域信托,下令是“net view /all”,“net view /all /domain”和“nltest.exe /domain_trusts /all_trusts”。
然后它枚举系统注册表来网络受害者装备上已安装软件的列表,下图是系统注册表的截屏,显示在“HKLM software MicrosoftWindowsCurrentVersionUninstall” 子项下的已安装软件的部门列表。
受害者装备上安装的软件信息
Bazar挪用CreateToolhelp32Snapshot(),Process32First(),Process32Next()和OpenProcess()API来网络有关受害者系统上正在运行的历程的信息。
Bazar还会执行一些WMI查询字符串,例如“Select * From Win32_Processor”、“Select * From Win32_DiskDrive”和“Select * From Win32_PhysicalMemory”来获取有关CPU、驱动器和物理内存的信息。
它从系统注册表中的“HKLM SYSTEMCurrentControlSetServices disk Enum”中获取硬盘形貌。我的研究环境(Oracle VM VirtualBox),它是“IDEDiskVBOX_HARDDISK ___________________________ 1.0 _____5 &33d1638a&0&0.0.0”。然后,Bazar搜索要害字“VBOX”和“VMware”,以确定Bazar是否在虚拟机上运行。
完成此网络后,它将“POST”请求的“body”中网络的所有信息发送到C2服务器。讲述下令字符串“/ a9aadd987308f3a5b28d5a0c552c4324 /3”包罗在“Cookies”中,下图显示了恶意软件即将通过挪用BCryptEncrypt()加密网络的数据时的情形。
RSA算法用于加密从受害者装备网络的敏感信息
下令10、11:
这些下令可以包罗下载其他恶意软件的链接,也可以直接包罗恶意软件。 Bazar将此恶意软件注入到以下列表中的一个新建立的历程中,这些历程是解密后的常量字符串。
"c:windowssystem32calc.exe"
"c:windowssystem32cmd.exe"
"c:windowssystem32notepad.exe"
"c:windowssystem32svchost.exe"
"c:windowssystem32explorer.exe"
"c:windowssyswow64calc.exe"
"c:windowssyswow64explorer.exe"
"c:windowssyswow64cmd.exe"
"c:windowssyswow64svchost.exe"
"c:windowssyswow64notepad.exe"
然后在“POST”请求中回复“文件未下载”、“加载程序已启动”、“程序正在运行”或“程序启动错误”,并讲述下令串“/a9aadd987308f3a5b28d5a0c552c4324/3”,从而更新C2服务器的状态。
下令12、13:
C2服务器用一个剧本文件在下令中回应Bazar,然后,Bazar解密剧本文件并将其保存到Windows临时文件夹中。最后,Bazar通过挪用API CreateProcessA()来运行它。
当发生错误时,Bazar会通过响应“程序正在运行”或错误新闻“程序启动错误”,“无剧本”或“无内存”来通知C2服务器该剧本的状态。
该新闻接纳rsa加密,作为POST请求的“body”数据发送,并附上“Cookies”值的讲述下令字符串“/a9aadd987308f3a5b28d5a0c552c4324/3”。
下令16:
Bazar从C2服务器的下令中读取文件路径,并网络文件的内容。它将网络到的数据作为“POST”请求的“body”发送回C2服务器,讲述下令字符串为“/a9aadd987308f3a5b28d5a0c552c4324/3”。
下令17:
C2服务器用一段在下令中经由rsa加密的本机代码举行响应,Bazar使用C2服务器的公钥解密本机代码(ASM代码),并将其部署到要执行的新建立线程上。为此,它需要挪用一些API,如VirtualAlloc()、memcpy()、VirtualProtect()和CreateThread()。下图提供了相关ASM代码的部门视图。
Bazar处置吸收到的本机代码的代码片断
与其他下令一样,它也以相同的方式向C2服务器响应状态。新闻可能是“程序正在运行”或错误状态,例如“无代码”,“无内存”和“程序启动错误”等。
下令100:
当Bazar收到此下令时,它将通过挪用API TerminateProcess()来自我终止。
总结
本文所有涉及由Bazar下载程序下载的Bazar载荷,本文已经先容了Bazar变体使用的三种主要的反剖析手艺。此外,本文还展示了Bazar若何与C2服务器通讯,Bazar支持哪些控制下令以及Bazar能够使用哪些下令在受害装备上执行哪些恶意操作。
本文翻译自:https://www.fortinet.com/blog/threat-research/new-bazar-trojan-variant-is-being-spread-in-recent-phishing-campaign-part-II: