导语:趋势科技的研究人员最近对出现在叙利亚电子政务网站上的恶意 Android 恶意软件示例进行了调查,他们认为该示例可能是 StrongPity APT 组织研发的。
趋势科技的研究人员最近对出现在叙利亚电子政务网站上的恶意 Android 恶意软件示例进行了调查,他们认为该示例可能是 StrongPity APT 组织研发的。据研究人员所知,这是该组织首次被公开观察到使用恶意 Android 应用程序作为其攻击的一部分。
StrongPityAPT组织最早在2016年被发现,当时它已经开始针对加密软件(如TrueCrypt 和WinRAR)用户发起攻击。该组织在过去几年就开始一直活跃,但是它主要使用零日漏洞对目标实施攻击或监视用户及其行为。2019年7月StrongPity APT组织被曝光通过水坑攻击手段,使用恶意版本的WinRAR和其他合法软件包来感染目标。2020年7月,思科Talos团队和Bitdefender公司分别发布报告指出,APT组织StrongPity(又称Promethium)又对叙利亚库尔德族地区和土耳其发动水坑式攻击,实现监控和情报收集目的。
研究人员首先从 MalwareHunterTeam Twitter上共享的一个线程中了解到该示例。根据讨论线索,研究人员了解到共享示例是叙利亚电子政务 Android 应用程序的木马化版本,该应用程序会窃取联系人列表并从受害者设备收集具有特定文件扩展名的文件。
来自该线程的一个响应指出,恶意 APK 很可能是使用类似“水坑”的技术分发的:据称攻击者已经破坏了叙利亚官方电子政务网站,并用木马化版本的原始应用程序。由于此活动的可疑性质,研究人员决定进一步调查。
本文将讨论该组织与 Android 恶意软件相关的攻击策略、技术和程序 (TTP),以及为什么这些活动可归因于该攻击者。此外,研究人员还将深入了解攻击者的开发进度,并确定 StrongPity 生成的其他几个恶意 Android 恶意软件示例。最后,研究人员将简要讨论相关的恶意软件变种,包括 Android 木马的第二个版本,它似乎正在开发中并包含多项测试功能。
初步调查
研究人员做的第一件事是检查托管恶意 APK 文件的 URL (https://egov[.]sy/mobile/egov[.]apk)。在撰写本文时,可从该网站下载的应用程序版本是叙利亚电子政务 Android 应用程序的干净版本,与之前在 Twitter 上讨论的恶意应用程序不同。这意味着,在某一时刻,该应用程序的恶意版本已从网站中删除。
在VirusTotal上至少可以识别出六个具有相同应用程序名称(“بوابتي”)和匹配包名称(com.egov.app.*)的其他示例。研究人员验证了所有这些示例并得出结论,它们都是干净的。该应用程序的这些干净版本是在 2020 年 2 月至 2021 年 3 月期间创建的。研究人员相信它们都是来自叙利亚电子政务网站的官方应用程序。
Twitter 线程中提到的恶意示例可在 VirusTotal 上找到,截至撰写本文时,已检测到多个阳性结果。尽管一些杀毒软件厂商将识别出的恶意示例检测为Bahamut,但研究人员怀疑将Bahamut归因于Bahamut APT 组织是不对的。进一步的调查揭示了一些可能将恶意示例与 StrongPity APT 组联系起来的工件。
恶意示例分析
该应用程序的恶意版本 (fd1aac87399ad22234c503d8adb2ae9f0d950b6edf4456b1515a30100b5656a7) 创建于 2021 年 5 月(文件中的时间戳指向 2021-05-02,文件上传时间为 2021 年 5 月 24 日)。此应用程序使用不同的证书签名,并通过重新包装叙利亚政府的原始应用程序生成。另一方面,所有原始应用程序都使用另一个证书签名。
用于签署原始(顶部)和恶意应用程序(底部)的证书的比较
恶意应用程序对AndroidManifest.xml进行了修改,以包含对附加类的引用,并请求设备上的附加权限。
恶意应用修改后的 AndroidManifest.xml
插入代码概览
攻击者向此应用程序添加了以下类;其中一些类(com.egov.app.NetworkStatusService、com.egov.app.Receiver)在修改后的 AndroidManifest.xml 中被引用。
添加到恶意应用程序的类显示在图像的右侧,原始类显示在左侧
上图显示了许多其他类随机生成的类名和方法名,这种命名模式很可能是由软件混淆工具产生的。
恶意代码初始化
该应用程序的恶意版本中添加了两个主要的附加组件:服务和接收器。接收方启动恶意服务,恶意服务被声明为Android Service,它是一个可以在后台执行长时间运行任务的应用程序组件。
此恶意服务使用类名“com.egov.app.NetworkStatusService”声明,并由 Receiver 类启动,研究人员对 Receiver 配置和代码的分析发现了多种启动恶意 NetworkStatusService 服务的方法。
◼更改设备连接时启动该服务,djdeeu 类为 CONNECTIVITY_CHANGE 注册一个广播接收器,该服务可以从启动器活动或其他注册的接收器启动;
◼可以使用“警报”机制启动服务;
◼一旦启动恶意 NetworkStatusService 服务,它就会通过一组负责处理特定消息的消息处理程序执行其恶意功能;
后门的架构
该示例使用“处理程序”机制来调度触发恶意行为的消息,自定义枚举结构用于定义消息类型。
它定义了七种消息类型,如图 4 所示。
七个定义消息的代码
每个消息通过处理程序触发不同的行为,以下是每个特定消息的目的和行为的简要总结:
◼MSG_TRIG_ALARM_HEARTBEAT
收到此消息后,会设置心跳消息的周期性任务。
◼MSG_TRIG_ALARM_SYNC
收到此消息后,将设置同步消息的周期性任务。
◼MSG_HEARTBEAT
此消息触发心跳功能,该功能向命令和控制 (C&C) 服务器发送请求并接收带有加密载荷的响应。
加密后的有效载荷首先被保存在
接下来,将文件e.zip 解压到
最后,读取并解析该文件。这些属性被提取并作为配置设置写入本地共享首选项,允许恶意软件根据配置更改其行为。
◼MSG_SYNC
同步是一种重复的行为,它以 3000 秒的周期上传在受感染设备上收集的文件。
MSG_SYNC 的处理程序执行以下功能:
首先,它枚举
最后,它将zip文件上传到C&C服务器并删除
◼MSG_COLLECT
此消息的处理程序从受害者的设备收集数据。首先,它会收集联系信息,然后是有关可用 Wi-Fi 网络的信息。
然后搜索设备文件并收集与预定义文件扩展名匹配的所有文件:
文件收集代码片段
◼MSG_TRIG_ALARM_COLLECT
收到此消息后,将设置“收集消息”处理程序的周期性任务。
◼MSG_CONNECTIVITY
此消息将所有提到的消息一一发送。
后门的模块化功能
此示例使用高度模块化的组件来创建用于组件加载和卸载的灵活架构。函数 onCreate 和 onDestroy 展示了加载和卸载组件的常用方法。
显示 onCreate 和 onDestroy 函数的代码片段
以下是示例中使用的组件:
pekmek(加密管理器):使用 AES 来解密和加密文件和字符串;
ltymcr(Helper类):包含许多实用函数,例如计算唯一ID、解析配置文件、写入/读取共享首选项和定义加密密钥的函数;
显示 ltymcr(Helper Class) 组件的代码片段
Sadwoo:用作 PowerWakeLock 的组件;
phkyxc:用作 WifiWakeLock 的组件;
tfsdne:这是一个用于 C&C 通信的包装器,例如心跳和同步;
itxdrx(网络管理器):负责处理HTTP协议通信的组件;
itxdrx 组件中的代码
nhnhpi:负责管理 C&C 服务器的组件;
该组件包括初始 C&C 服务器的定义,初始值可以被覆盖。 StrongPity 后门能够通过“heartbeat”命令的配置更新来更新(包括删除和添加)其 C&C 服务器地址。
处理 C&C 服务器添加和删除的代码
调查结果
当研究人员了解到攻击者如何将干净的应用程序重新打包成木马变体后,研究人员决定在 VirusTotal 上搜索类似的示例。研究人员搜索了以类似方法重新打包并包含类似恶意组件的其他应用程序。
类似的恶意示例
研究人员发现了由同一攻击者生成的其他几个示例。研究人员确定这些示例是相似的,因为所有示例(除了最后一个示例)也是从正常应用程序重新打包并插入了类似的恶意代码。
在VirusTotal上发现了类似的恶意示例
示例 75dc2829abb951ff970debfba9f66d4d7c6b7c48a823a911dd5874f74ac63d7b 是关键归因因素,是与 StrongPity 攻击者的主要链接,因为它与多个研究小组先前使用的 C&C 服务器通信。
Windows 上的工具、策略和程序
在撰写本文时,尚无关于 StrongPity 在攻击中使用恶意 Android 应用程序的已知公开报告。为了增强研究人员对研究人员归因于 StrongPity 的准确性的信心,研究人员决定进一步检查他们的一些用于针对 Microsoft Windows 平台的示例,看看研究人员是否可以在他们的行动中识别出类似的工具、策略和程序(TTP)。
正如研究人员在 Android 应用程序中看到的那样,StrongPity 小组倾向于重新打包干净安装程序以生成这些应用程序的木马化版本。同样,这些后门的主要功能是从受害者的计算机中搜索、收集和窃取文件。
例如,以下示例:48f67be806b4e823280f03ee5512ffd58deb6f37ecc80842265d4e8d2ca30055。该示例首先将一个名为“TrustedInstaller.exe”的文件放到
“TrustedInstaller.exe”文件中使用的代码
然后它会创建
显示创建目录的代码
如果研究人员检查另一个 StrongPity 示例(12818a96211b7c47863b109be63e951075cf6a41652464a584dd2f26010f7535),其逻辑是类似的,它将一个正常的安装程序放入Temp目录,并为删除的恶意文件创建一个目录。
以下是 Windows 示例和 Android 示例之间的三个显着的相似之处:
1. 它们都通过使用原始的干净的应用程序伪装成正常的应用程序——Android样本将原始的应用程序重新打包成木马版本,而Windows样本则使用与原始程序一起打包的木马安装程序。
2. 收集和过滤受感染设备上的文件。
3. 两者都是高度模块化的,Windows 示例有一个独立的提取和文件搜索模块,该功能也可以在最新的 Android 测试示例中看到。
与 StrongPity 的可能联系
研究人员发现了一些将恶意 Android 示例与 StrongPity 攻击者联系起来的线索。
示例 74582c3d920332117541a9bbc6b8995fbe7e1aff 与 URL 通信,另一个 StrongPity 报告中提到了域名“upn-sec3-msd[.]com”。
域命名模式和域获取技术非常相似。例如,StrongPity 在 2020 年使用的域名具有与识别出的 Android 示例使用的域名类似的域名命名模式。
其中一个域名 networktopologymaps[.]com 很可能是在 Gandi 注册到期时购买的。该域名是通过 Porkbun 网络注册商获得的。
这类似于先前在 Talos 报告中提到的域 hostoperationsystems[.]com。该域名也是通过 Porkbun 获得的,具有类似的域名命名模式。
与StrongPity相关的另一个值得注意的地方是文件扩展名列表,研究人员在 Android 示例中看到过。适用于 Windows 系统的木马变体中提供了类似的文件扩展名列表。例如,研究人员之前检查过的一个示例收集了具有以下扩展名的文件:
正如研究人员之前提到的,没有关于 StrongPity 攻击者在攻击中使用恶意 Android 应用程序的公开报告。但是,研究人员检查了木马代码嵌入技术以及同一攻击者为 Windows 平台编写的恶意代码的木马功能,研究人员发现了一些类似的模式。这使研究人员相信这些可能属于同一个攻击者。
StrongPity 积极开发新的恶意android应用
研究人员认为,StrongPity Threat 攻击者正在积极为 Android 开发后门程序。根据研究人员确定的测试示例,研究人员可以看到攻击者尝试了多种技术来引诱潜在受害者:重新打包的应用程序、受感染的网站和流行应用程序的伪造变体。
根据研究人员在伪造的三星安全服务应用程序(75dc2829abb951ff970debfba9f66d4d7c6b7c48a823a911dd5874f74ac63d7b)中发现的附加功能,研究人员认为在研究人员发现的 APK 文件中,重新打包的应用程序的第一个版本可能与 Android 应用程序捆绑在一起下一版本的开发中。
在第二个版本中,研究人员观察到攻击者开发并包含了一些额外的组件,并增加了对更多消息类型的支持。
下表显示了攻击者定义的类型。
攻击者定义的消息类型
在这个版本中,MSG_COLLECT 不再存在,研究人员认为他们用 MSG_START_MODULES 替换了它,一条消息用于从共享首选项中读取所有模块名称,并逐个启动/初始化它们。
研究人员无法访问这些模块,但根据研究人员观察到的一些代码功能,研究人员相信这些模块旨在从受害者的设备收集数据并将收集到的数据写入本地 SQLite db 数据文件。但是,研究人员无法在野外找到任何这些模块。
该木马的第 1 版和第 2 版之间还有其他几个主要区别:
版本 2 中心跳消息的消息处理程序现在分为两个消息:heartbeat和taken_config。这些消息中的任何一个都可以接收来自 C&C 服务器的响应并解密响应以更新本地配置,类似于版本 1;
版本 2 使用不同的 AES 加密密钥:key("aaaanothingimpossiblebbb") 和 AES IV("aaaanothingimpos");
ScreenReceiver 类被添加到木马的第二个版本中。此 Receiver 的目的是通过 Screen_On 和 Screen_Off 事件启动恶意服务;
如果设备具有 root权限,版本 2 可以执行“su”命令。这里 root 权限的主要用途是它可以静默授予权限。此类权限包括可访问性、通知和其他。但是,研究人员没有发现任何证据表明该示例会尝试对设备进行 root 操作;
版本 2 中添加了两个组件用于辅助功能和通知;
版本 2 使用 SQLite 来存储收集的数据,此外,它不再使用 ZIP;
在版本 2 中,“MSG_START_MODULES”中使用的额外模块是通过 heartbeat 或 take_config 消息从 C&C 服务器下载的,有可能这些模块作为响应的一部分被解压到。
本文翻译自:https://www.trendmicro.com/en_us/research/21/g/strongpity-apt-group-deploys-android-malware-for-the-first-time.html如若转载,请注明原文地址