2019 年 3 月 4 日,键盘记录恶意软件Agent Tesla被发现。最近,研究人员发现了OriginLogger,这是一个基于Agent Tesla的恶意软件。
我将在本文介绍 OriginLogger 键盘记录器恶意软件,看看它如何处理配置变量的字符串混淆,以及我在查看提取的配置时发现的内容。
Palo Alto Networks 客户通过 Cortex XDR 和具有云交付安全服务(包括 WildFire 和高级威胁预防)的下一代防火墙获得 OriginLogger 及其前身恶意软件 Agent Tesla 的保护。
在搜索过程中,我偶然发现了一个销售“完全无法检测”(FUD)工具的人在 2018 年发布的 YouTube 视频。此人展示了带有链接的 OriginLogger 工具,该链接可以从一个已知的网站购买该工具,该网站会传播恶意软件、漏洞利用等。
OriginLogger的部分功能
OriginLogger的全部功能
此外,他们还展示了 Web 面板和恶意软件生成器。
OriginLogger Web 面板
OriginLogger 生成器
上图显示的生成器图像对我来说特别有趣,因为它提供了一个默认字符串:facebook、twitter、gmail、instagram、movie、skype、porn、hack、whatsapp、discord,这可能是这个应用程序独有的。果然,在 VirusTotal 上的内容搜索显示了 2022 年 5 月 17 日上传的一个匹配文件(SHA256:595a7ea981a3948c4f387a5a6af54a70a41dd604685c72cbd2a55880c2b702ed)。
VirusTotal 搜索字符串
由于缺少依赖项,下载并尝试运行此文件会导致错误。但是,知道生成器的文件名 OriginLogger.exe,允许我扩展搜索并找到一个包含运行OriginLogger所需的所有文件的Zip归档文件 (SHA256: b22a0dd33d957f6da3f1cd9687b9b00d0ff2bdf02d28356c1462f3dbfb8708dd)。
Zip 压缩文件中的捆绑文件
settings.ini 文件包含生成器将使用的配置,在下图中我们可以看到 SmartWords 下列出的先前搜索字符串。
OriginLogger Builder settings.ini 文件
文件 profile.origin 包含客户在购买 OriginLogger 时注册的嵌入式用户名/密码。
OriginLogger 生成器登录屏幕
有趣的是,如果你逆向配置文件中的值,就会显示明文密码。
profile.origin 文件的内容
OriginLogger 生成器登录屏幕,以明文形式显示密码
当用户登录时,生成器会尝试向 OriginLogger 服务器进行身份验证以验证订阅服务。
此时,我有了两个版本的构建器。第一个(b22a0d*)包含在Zip文件中,编译于2020年9月6日。另一个包含SmartWords字符串(595a7e*)的版本是在2022年6月29日编译的,大约在第一个版本的两年之后。
更高版本通过 TCP/3345 向 IP 23.106.223[.]46 发出身份验证请求。自 2022 年 3 月 3 日起,此 IP 已解析到域 originpro[.]me。此域已解析为以下 IP 地址:
第二个 IP,204.16.247[.]26,由于解析了这些其他 OriginLogger 相关域而脱颖而出:
这个尝试连接到一个不同的IP地址进行身份验证。
PCAP 显示远程 IP 地址
与 originpro[.]me 关联的 IP 地址不同,74.118.138[.]76 不直接解析为任何 OriginLogger 域,而是解析为 0xfd3[.]com。在此域上逆向显示它包含mail.originlogger[.]com的DNS MX和TXT记录。
从 2022 年 3 月 7 日左右开始,相关域开始解析为 IP 23.106.223[.]47,它在最后一个八位字节中比用于 originpro[.]me 的 IP(使用 46)高一个值。
这两个 IP 地址共享了多个 SSL 证书:
共享 SSL 证书
以IP 23.106.223开头的两个服务器的RDP登录屏幕。X显示有多个帐户的Windows Server 2012 R2服务器。
RDP登录界面为23.106.223[.]
在进一步搜索该域时,我发现了用户 0xfd3 的 GitHub 配置文件,其中包含下图中所示的两个存储库。
用户 0xfd GitHub
由于 Agent Tesla 和 OriginLogger 都是商业化的键盘记录器,因此初始 dropper在不同的活动中会有很大的差异,不应被视为两者都是独一无二的。我将以下内容作为攻击释放 OriginLogger 的真实示例来展示,并表明它们可能非常复杂和模糊。
初始诱饵文档是一个Microsoft Word文件(SHA256: ccc8d5aa5d1a682c20b0806948bf06d1b5d11961887df70c8902d2146c6d1481)。打开时,该文件显示一张德国公民的护照照片以及一张信用卡。我不太确定这对普通用户有多大的吸引力,但无论如何,你都会注意到图像下方包含许多 Excel 工作表,如下图所示。
诱饵文件
这些工作表中的每一个都包含在单独的嵌入式 Excel 工作簿中,并且完全相同:
在每个工作簿中都有一个单一的宏,它只是保存要在以下位置执行的命令:
运行后,它将通过 MSHTA 下载并执行 hxxp://www.asianexportglass[.]shop/p/25.html 上的文件内容。该网站的屏幕截图如下图所示。
网站看起来合法
该文件在文档中间包含一个嵌入的混淆脚本作为注释。
网站隐藏评论
取消转换脚本会显示下图中所示的代码,该代码从 BitBucket 片段下载下一个有效负载 (hxxps://bitbucket[.]org/!api/2.0/snippets/12sds/pEEggp/8cb4e7aef7a46445b9885381da074c86ad0d01d6/files/snippet.txt)并使用名为 calsaasdendersw 的计划任务建立持久性,该任务每 83 分钟运行一次,并再次使用 MSHTA 执行 hxxp://www.coalminners[.]shop/p/25.html 中包含的脚本。
未转换的脚本
BitBucket 网站上托管的代码段包含进一步混淆的 PowerShell 代码和两个编码和压缩的二进制文件。
这两个文件中的第一个(SHA256: 23fcaad34d06f748452d04b003b78eb701c1ab9bf2dd5503cf75ac0387f4e4f8)是使用 CSharp-RunPE 的 C# 反射加载器。该工具用于挖空一个进程并在其中注入另一个可执行文件,在本例中,键盘记录器有效负载将放置在 aspnet_compiler.exe 进程中。
执行dotNet程序集中包含的方法的PowerShell命令
请注意调用 Execute 方法的 projFUD.PA 类。Morphisec 在 2021 年发布了一个名为“揭示 Snip3 Crypter,一种高度规避的 RAT 加载器”的博客,他们在其中分析了一个加密器即服务,并使用该工件对加密器的开发者进行指纹识别。
两个文件中的第二个(SHA256:cddca3371378d545e5e4c032951db0e000e2dfc901b5a5e390679adc524e7d9c)是 OriginLogger 有效负载。
如前所述,此分析的初衷是自动化并从键盘记录器中提取与配置相关的详细信息。为了实现这一点,我首先查看了如何使用与配置相关的字符串。
我不会深入研究恶意软件的任何实际功能,因为它是相当标准的,并且反映了对原有Agent Tesla 变体的分析。为了开始提取与配置相关的细节,我需要弄清楚用户提供的数据是如何存储在恶意软件中的。结果很简单,生成器将获取动态字符串值并将它们连接成一个巨大的文本块,然后将其编码并存储在一个字节数组中,以便在运行时进行解码。一旦恶意软件运行并命中需要字符串的特定函数,例如将屏幕截图上传到的 HTTP 地址,它会将偏移量和字符串长度传递给函数,然后该函数将在块中的该位置显示出文本。
为了说明这一点,你可以在下面看到用于主要文本块的解码逻辑。
OriginLogger 明文块解码
每个字节通过字节数组中的字节索引进行异或运算,并再次通过值 170 进行异或运算以显示明文。
对于生成器生成的每个示例,此文本块将根据配置的不同而有所不同,因此偏移量和定位将发生变化。查看下图中显示的原始文本很有帮助,但如果不将其连接起来观察,就很难确定边界在哪里结束或开始。
明文数据块
当需要分析恶意软件时,它也没有帮助,因为你无法辨别什么时候或在哪里使用了哪些内容。为了解决下一个问题,我需要了解OriginLogger如何处理拼接。
下面你可以看到负责分割字符串的函数,后面是包含偏移量和长度的各个方法的开头。
OriginLogger 字符串函数
在本例中,如果恶意软件在某个时间点调用了 B() 方法,它会将 2、2、27 传递给图像顶部的混淆后的无名函数。第一个整数用于存储解码字符串的数组索引。然后将第二个整数(offset)和第三个整数(length)传递给GetString函数以获取文本。对于这个特定条目,结果值(如下所示)在创建它上传的 HTML 页面期间使用,以显示被盗数据。
了解字符串解析的工作原理后,我就可以自动提取这些字符串。首先,查看底层中间语言 (IL) 汇编指令会有所帮助。
用于字符串函数的 OriginLogger IL 指令
对于每一个这样的查找,函数块的结构将保持不变。在上图中的索引 6-8 处,你将看到三个 ldc.i4.X 指令,其中 X 指示一个整数值,该整数值将在调用之前描述的拼接函数之前被推入堆栈。这种整体结构创建了一个框架,然后可以使用该框架来匹配二进制文件中的所有相应函数以进行解析。
利用这一点,我编写了一个脚本来识别编码的字节数组,确定异或值,然后以恶意软件使用的相同方式拼接解码的块。此时,你可以滚动浏览解码的字符串并查找感兴趣的内容。一旦识别出某些内容,知道了偏移量和随后的函数名,就可以利用恶意软件了。
OriginLogger 解码字符串
此时,我开始重命名混淆的方法以反映它们的实际值,这使得分析更容易。
OriginLogger FTP 上传函数
需要注意的是,通过将字符串类型指定为委托并识别感兴趣的令牌,可以使用 de4dot 及其动态字符串解密功能来实现相同的字符串反混淆,这对于单个文件分析非常有效。
下图是2020年3月上传的Chrome密码恢复代码:
Chrome 密码恢复
将上图与带有重命名方法的OriginLogger示例代码进行比较,如下图所示。
OriginLogger Chrome 密码窃取函数
使用这个工具,我提取了1917个不同的配置,这可以深入了解所使用的泄露方法,并允许基于底层基础设施对样本进行聚类。例如,为将键盘记录器和屏幕截图数据上传到的示例配置的 一个URL 是 hxxps://agusanplantation[.]com/new/new/inc/7a5c36cee88e6b.php。该 URL 不再处于活动状态,因此我开始搜索有关它的历史信息,以了解这些 HTTP POST 请求的接收端是什么。通过将域插入 URLScan.io,它会在同一目录中显示面板的登录页面,但更重要的是,在四个月前扫描此主机时,在此主机上观察到了 OriginLogger Web 面板(SHA256:c2a4cf56a675b913d8ee0cb2db3864d66990e940566f57cb97a9161bd262f271)。
域的 URLScan.io 扫描历史记录
同样,其中一种泄露方法是通过 Telegram 木马。为了使用它们,OriginLogger 需要包含一个 Telegram 木马令牌,以便恶意软件可以与之交互。这为分析正在使用的基础设施提供了另一个独特的机会。在这种情况下,我可以使用令牌以相当于 whoami 命令的方式查询 Telegram,并观察木马创建者使用的名称。下面是一些显示相关命名的示例。
与其他商业销售的键盘记录器一样,OriginLogger 被全球范围内的各种各样的人用于各种恶意目的。
SMTP 仍然是用于泄露数据的主要机制,这很可能是因为:
流量将比其他包含的协议能更好地与正常用户流量融合在一起。攻击者获得被盗的电子邮件账户相对容易。
电子邮件提供商通常提供大量存储空间。
在1909个样本中,被盗数据有296个唯一的电子邮件收件人地址和334个用于发送数据的唯一电子邮件帐户凭证。
FTP在1888个示例中配置,使用56个惟一的FTP服务器和79个惟一的FTP帐户,多个帐户登录到不同的目录,可能基于不同的活动。在56个可访问的服务器中,只有11个被限制,有442个唯一的受害者,有些受害者被记录了数百次。
Web上传到OriginLogger面板的功能紧随其后,并在1866个示例中进行了配置,上传到92个惟一的url。在分析这些url时,用于上传的PHP文件在文件名中显示了字母数字字符的模式,在目录结构中显示了两个额外的模式。查看下图所示的web面板的源代码,可以看到PHP文件名是一些随机字节的MD5值,放在/inc/(传入)目录中。
用于setup.php的OriginLogger源代码
注意,许多键盘记录器购买者可能没有太多技术经验,并且倾向于使用为他们创造一切的“全方位服务”供应商。我怀疑这是许多 URI 具有相似结构的原因。例如,下面结构始终重复:
目录的第一级显示不太可能自动生成的值,这可能与帐户相关:
同样,此目录结构将 inc 更改为 mawa 并将 webpanel 附加到名称:
对于最后一种泄露方法,我们在1732个样本中发现了Telegram,其中 181 个独特的 Telegram 木马接收被盗数据。除了能够为木马发出 whoami 之外,我们还能够查询与上传被盗信息的渠道相关的信息。
主要渠道
最后,一个不经常使用的功能是 OriginLogger 能够在感染受害者系统后下载额外的有效负载。在本文讨论的示例中,只有两个配置为下载其他恶意软件。
OriginLogger 与 Agent Tesla 非常相似,是一种商品化的键盘记录器恶意软件,它们之间具有许多重叠的相似之处和代码,但区分两者以进行跟踪和理解非常重要。虽然键盘记录器基本上都是为低级的攻击者服务的,但其危害性也不容小觑。
参考及来源:https://unit42.paloaltonetworks.com/originlogger/