2021-04-20 13:46:1311304人阅读
Kronos银行木马于2014年首次出现,在黑市中作为犯罪软件工具包销售,被犯罪分子用于信用卡诈骗、身份盗窃和电汇欺诈。2018年9月,出现了名为Osiris的新Kronos变体,并于2019年中左右停止了更新。2021年2月,Zscaler安全团队又确定了一个新的Kronos变体Ares,通过垃圾邮件活动向德语用户开展网络钓鱼。这三款恶意软件的命名规则应该是参考了希腊神话体系,Ares是宙斯的儿子、Kronos的孙子。因此Ares应算是Kronos的第三代变种。Ares当前仍处在开发阶段,它带有一个信息窃取插件,能从多个应用程序(包括VPN客户端、web浏览器)中获取证书,窃取文件和加密货币钱包。
Osiris和Ares目前被其幕后团队并行使用,本文将讲述新变种的开发及相关活动。
DarkCrypter
Osiris和Ares的最新样本均由DarkCrypter封装,DarkCrypter是一款由攻击者编写的C ++封装器,与已经被破解并泄漏的商业封装程序DarkCrypter无关,程序包含的PDB路径为d:\scm\Italy\dopplegang\DarkCrypter\Bin\Clean.pdb。DarkCrypter与Kronos/Osiris共享部分代码,比如字符串加密算法。解密字符串表后,前41个条目与旧Kronos变种相同,还增加了八个新的字符串(如下所示)来检测沙箱环境:
· atcuf32.dll
· umengx86.dll
· sandboxie.dll
· libctc_sandbox.dll
· atcuf64.dll
· antimalware_provider32.dll
· antimalware_provider64.dll
· libctc_onexecute.dll
如果反分析检查通过,封装器再执行后续步骤。目前发现的DarkCrypter至少有两个变种。
第一类变种使用Blowfish解密下一阶段的有效负载,但解密过程使用的密钥长度非传统Blowfish标准,通常Blowfish密钥大小在4字节到56字节之间,但DarkCrypter中的Blowfish支持288字节的硬编码密钥大小(不过仅有效使用了前72个字节)。Blowfish密钥是通过计算PE标头中每个节名称的djb2哈希,并将所得的哈希值与两个硬编码的值(分别映射的节名为.text(0xb80c0d8)和.sjdata(0xecae6faa))进行比较得出。
DarkCrypter的第二个变种以压缩格式而不是加密的Blowfish格式嵌入第二阶段有效负载。压缩算法与Ares相关组件相同,比如模拟位图图像头的封装器。
修改后的UPX Packer
攻击者还进行了UPX标头的修改,用.text,.data和.rdata之类的标准节名称替换了UPX节名(UPX0,UPX1等)。虽然仍然可以对文件进行解压、执行,但会破坏与命令行UPX解压缩工具的兼容性。下面的图1左侧显示了文件头修改的示例,其中的更改以红色突出显示。
图1.修改和还原的UPX标头
对这些更改可以很容易恢复为原始UPX节的名称,如图1右侧所示。然后可以使用UPX命令行实用工具静态解压缩此二进制文件,从而生成最终的可执行有效载荷。
BMPack
攻击者还一直在使用另一个名为BMPack的封装程序来处理Osiris和Ares有效负载。 BMPack首先使用基于XOR的算法和RC4来解密嵌入的数据,解密之后的文件看上去是一个位图图像,如图2所示。
图2.用于解压Osiris和Ares恶意软件有效载荷的假位图图像
仔细检查发现,它不是位图图像,而是具有特定数据结构的序列。通过对封装程序进行逆向工程,可以确定数据结构的格式,由三个DWORD值组成,分别代表压缩大小(红色),未压缩大小(绿色),下一个偏移量(蓝色),然后是压缩数据(橙色)。第一个数据结构的示例如下图3所示。
图3. BMPack数据结构的格式
每个解压的结构都包含一个PE文件的不同部分,由自定义加载程序重建并缝合在一起后执行。
Ares恶意软件
Ares目前处于开发阶段,攻击者还在继续尝试创建新插件和Web注入。在最新的Ares样本中,有一个被压缩在二进制文件中的嵌入式DLL模块,旨在建立持久性工作。它首先将自身复制到位置%APPDATA%\Adobe\AdobeNotificationUpdates.exe,然后创建名为AdobeNotificationUpdates的计划任务,目的是每两个小时执行一次Ares(截止至2050-05-02 12:05:00)。在许多DarkCrypter样本中都有类似的持久性代码。
Ares持久性模块与其PDB路径D:\scm\Italy\ares\source_ob\Release\startup.pdb中的其他模块具有相同的编译前缀。Ares使用哈希值F4S4G3S4U7C6P2P7来定位输出名称为“?Startup@@YAHPA_W@Z”的字符串,找到此函数的地址后再执行该模块。
Ares使用与Kronos相同的函数哈希算法,包括计算CRC64哈希、将摘要转换为大写十六进制字符、将结果映射到一个字母数字值,如下面的Python代码所示:
digest = hexdigest(crc64(function_name)).upper() out = "" for i in range(len(digest)): if i & 1 != 0: val = ord(digest[i]) % 9 + ord('0') else: val = ord(digest[i]) % 25 + ord('A') out += chr(val) return out
Ares与Kronos和Osiris代码大多重叠,但也存在一些显著差异,尤其是在C2通信方面。当前大多数Ares样本无法通过TOR与C2服务器通信,尚不清楚为什么大多数Ares样本都删除了TOR组件,可能是为了减少恶意软件的文件大小并逃避TOR网络流量的防火墙检测。但如果没有TOR,C2服务器更容易受到攻击。一些Ares样本试图通过对二进制文件中的大量C2 URL进行硬编码来解决此限制,我们就观察到过带有101个硬编码C2 URL的Ares样本。
Ares还稍微修改了bot ID生成代码,将字符串Kronos替换为字符串Ares,如图4所示。
图4. Kronos和Ares Bot ID生成之间的比较
Ares使用表1中所示的HTTP查询字符串参数。发送report.zip文件的HTTP请求是Ares唯一的,下面将对其进行详细讨论。
表1. Ares查询字符串参数
Ares命令
Ares支持命令多与Kronos和Osiris相同,有部分命令被修改,如恶意软件卸载命令(0x1)被删除。Ares四种修改后的命令如表2所示。
表2. Ares引入的新命令
命令0x3和0x4尝试在注册表项HKEY_CURRENT_USER\Software\Microsoft\CurrentVersion下分别将注册表值名称MSE设置为0和1,但此注册表项并不存在,两个函数都是没用的。这可能是恶意软件作者的疏忽,他在上述的路径中的Microsoft和CurrentVersion之间少加了一个Windows。该注册表值未在Ares的其他地方引用,可能用于将来。
最重要的修改之一是命令0x6,该命令下载、解压PE文件并将其映射到内存中执行。命令0x6专门搜索哈希值C3E0Q6R7F1H2G5A4(映射为字符串CollectInfo)的输出名称,找到后将两个字符串参数传递给CollectInfo输出。第一个字符串是C2服务器提供的模式,第二个是硬编码字符串“%APPDATA%\Google\report.zip”,用于从URL http://mydynamite.dynv6[.]net/panel/upload/stealer.dll处下载文件。响应的前四个字节是未压缩的文件大小,对文件解压用与BMPack相同的算法。
Ares还包含一个未引用的函数,该函数用于打开位于d:\scm\Italy\ares\source_ob\Binaries\Release\KittyDll.dll.cmp的文件,使用与命令0x6相同的过程将文件解压并映射到内存中。映射文件后,使用参数“%userprofile%Documents|*.txt|5 and NULL”调用CollectInfo。调用参数的目的将在下一节中介绍。需要注意的是,%userprofile%和文档之间缺少反斜杠字符,用作目录路径是无效的。
我们还确定了包含另一个未引用函数的Ares样本,该函数通过打开位于d:\scm\Italy\ Ares \source_ob\Binaries\Release\ VNC .dll.cmp的文件来加载VNC插件。与信息窃取器插件类似,此文件被解压映射到内存中,并调用输出MakeItStart。MakeItStart输出名称的解析与其他Ares函数相似,使用相同的基于crc64的散列算法,并将结果与F0U5R4R6Q8H1P3E5进行比较。终止VNC插件使用相同的过程,映射到MakeItStop,并将结果与散列值C6P3T6Q8H1P3E5A8进行比较。
命令0xC是Ares的最新改动,只出现在新样本中。
Ares Stealer
Ares Stealer由Ares下载,也通过CollectInfo进行调用。该恶意软件是用C ++编写的,用到了Boost和Curl库,Boost库编译在d:\scm\Italy\tools\boost_1_74_0\ Boost目录下。这个目录前缀与DarkCrypter的PDB路径,以及Ares未引用的测试函数试图加载插件的位置相同。通过该工件以及共享的压缩代码能看出,恶意软件作者可能已经开发了DarkCrypter,BMPack,Ares和Ares Stealer。
Ares Stealer对CollectInfo具有两个参数:竖线分隔的字符串和文件名字符串。以竖线分隔的字符串带有三个参数,这些参数由Stealer的文件抓取器功能使用:第一个参数是启动文件枚举过程的目录,第二个参数是搜索模式,最后一个参数是目录搜索深度。文件名字符串用于存储提取结果,并将其添加到zip文件中。
从Ares C2服务器观察到的命令字符串示例为“%userprofile%|pass*.txt|5”,用于搜索受害者的用户配置文件目录,查找具有前缀pass的文本文件,最高可达5层。
Ares Stealer能收集多数应用程序详细的系统信息和凭证,包括FTP客户端、VPN客户端、web浏览器、通讯软件和电子邮件客户端,还可以窃取文件、加密货币钱包、cookie和信用卡。
Stealer能从以下应用程序中提取信息:
FTP客户端:Filezilla
VPN客户端:NordVPN、OpenVPN、ProtonVPN
网页浏览器:火狐浏览器、谷歌浏览器、Microsoft Edge、Microsoft Internet Explorer、Chromium、Cyberfox、BlackHawk等
加密货币钱包应用:Coinomi、Guarda 、Atomic Wallet、Electrum、Ethereum、Bitcoin等
即时通讯客户端:Pidgin
电子邮件客户端:Outlook
Osiris
Osiris自2018年4月出现,在2019年中旬的最新变种引入了许多新功能,包括:
· 新的信标请求格式,包括有关受感染系统的信息
· Zlib压缩以减少请求和响应(包括Web注入)的大小
· 能够在受感染的主机上部署TeamViewer
· 通过Nirsoft的OutlookAddressBookView实用程序窃取受害者的Outlook联系人
· 将垃圾邮件发送到受害者的联系人列表
· 新的远程访问功能
攻击者有一台位于http://ylnfkeznzg7o4xjf[.]onion/kpanel/connect上的Osiris C2服务器,服务器指示信息窃取工作。比如web浏览器收获命令从http://qqkzfkax24p4elax[.]onion/kpanel/upload/sqlite3.dll下载sqlite3库,用于提取Google Chrome密码,从http://qqkzfkax24p4elax[.]onion/kpanel/upload/ffc64.exe下载用于从64位系统中获取Firefox凭据的模块。
C2还提供了一个web inject配置文件针对德国金融机构的客户,URL模式如下所示:
set_url https://*commerzbank.de* GPI
set_url https://*.de/*/entry* GPI
set_url https://*.de/banking-*/portal?* GPI
set_url https://*.de/banking-*/portal;* GPI
set_url https://*.de/portal/portal* GPI
set_url https://*.de/privatkunden/* GPI
set_url https://*.de*abmelden* GPI
......
当受害者浏览到与这些模式之一相匹配的网站时,会被从攻击者的域https://securebankingapp[.]com/中注入JavaScript代码。
此处显示了此Osiris实例的Web注入的完整列表。
攻击者还拥有另一个活动的Osiris C2服务器,位于http://qqkzfkax24p4elax[.]onion/kpanel/connect.php。此C2服务器还提供了用于窃取凭据的命令,但是Web注入配置文件为空。C2服务器也提供了使用Nirsoft的OutlookAddressBookView提取受害者电子邮件联系人列表的命令,命令从以下位置下载:
http://qqkzfkax24p4elax[.]onion/kpanel/upload/oabv32.exe (32-bit)
http://qqkzfkax24p4elax[.]onion/kpanel/upload/oabv64.exe (64-bit)
结论
Ares是Kronos银行木马的新变种,似乎正处于早期开发阶段,代码包含数个bug和未使用的代码段。其幕后团队投入了大量资源来构建DarkCrypter、BMPack、Ares和Ares Stealer,因此随着恶意软件家族的不断成熟,与此威胁相关的活动可能会增加。
本文翻译自:https://www.zscaler.com/blogs/security-research/ares-malware-grandson-kronos-banking-trojan