针对 Android 用户的 StrongPity 间谍活动

针对 Android 用户的 StrongPity 间谍活动

ESET 研究人员发现了一个活跃的 StrongPity 活动,该活动分发了一个木马化版本的 Android Telegram 应用程序,显示为 Shagle 应用程序——一种没有应用程序版本的视频聊天服务

ESET 研究人员发现了一个活跃的活动,我们将其归因于 StrongPity APT 组织。 该活动自 2021 年 XNUMX 月开始活跃,通过一个冒充 Shagle 的网站分发了一个恶意应用程序——一种随机视频聊天服务,可在陌生人之间提供加密通信。 与不提供官方移动应用程序访问其服务的完全基于网络的真正 Shagle 网站不同,山寨网站仅提供 Android 应用程序下载,并且无法进行基于网络的流式传输。

博文要点:

  • 之前只有一个其他 Android 活动被归因于 StrongPity。
  • 这是首次公开记录所描述的模块及其功能。
  • 模仿 Shagle 服务的山寨网站用于分发 StrongPity 的移动后门应用程序。
  • 该应用程序是开源 Telegram 应用程序的修改版本,使用 StrongPity 后门代码重新打包。
  • 基于与之前的 StrongPity 后门代码的相似性以及应用程序使用早期 StrongPity 活动的证书签名,我们将此威胁归因于 StrongPity APT 组织。
  • StrongPity 的后门是模块化的,其中所有必要的二进制模块都使用 AES 加密并从其 C&C 服务器下载,并具有各种间谍功能。

该恶意应用程序实际上是合法 Telegram 应用程序的一个功能齐全但已被木马化的版本,但它显示为不存在的 Shagle 应用程序。 在本文的其余部分,我们将其称为假冒的 Shagle 应用程序、木马化的 Telegram 应用程序或 StrongPity 后门。 ESET 产品将此威胁检测为 Android/StrongPity.A。

这个 StrongPity 后门具有各种间谍功能:它的 11 个动态触发模块负责记录电话、收集短信、通话记录列表、联系人列表等等。 这些模块是第一次被记录下来。 如果受害者授予恶意 StrongPity 应用程序可访问性服务,其模块之一也将能够访问传入的通知,并将能够从 Viber、Skype、Gmail、Messenger 和 Tinder 等 17 个应用程序中窃取通信。

该活动的目标可能非常狭窄,因为 ESET 遥测技术仍未识别出任何受害者。 在我们的研究过程中,可从山寨网站获得的恶意软件分析版本不再处于活动状态,并且不再可能成功安装它并触发其后门功能,因为 StrongPity 尚未为其木马化的 Telegram 应用程序获取自己的 API ID。 但如果威胁行为者决定更新恶意应用程序,这种情况随时可能发生变化。

概述

这个 StrongPity 活动围绕着从包含单词“dutch”的域传送的 Android 后门展开。 本网站冒充名为Shagle的合法服务 沙格网. 在图 1 中,您可以看到这两个网站的主页。 该恶意应用程序直接从冒充网站提供,从未在 Google Play 商店中提供。 它是合法 Telegram 应用程序的木马化版本,呈现为好像是 Shagle 应用程序,尽管目前没有官方的 Shagle Android 应用程序。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 1. 比较左侧的合法网站和右侧的山寨网站

正如您在图 2 中看到的那样,假网站的 HTML 代码包含它是从合法网站复制的证据 沙格网 1月XNUMX日现场st, 2021, 使用自动化工具 的HTTrack. 恶意域是在同一天注册的,因此山寨网站和假冒的 Shagle 应用程序可能从那天起就可以下载了。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 2. HTTrack 工具生成的日志记录在虚假网站的 HTML 代码中

受害者

七月18th, 2022,我们在 VirusTotal 的 YARA 规则之一是在恶意应用程序和模仿网站的链接时触发的 沙格网 被上传。 同时,我们接到通知 Twitter 关于那个样本,虽然它是错误的 归因于巴哈姆特. ESET 遥测数据仍未识别出任何受害者,表明该活动的目标很可能很狭窄。

归因

模仿者 Shagle 网站分发的 APK 使用与 3 年发现的木马化叙利亚电子政府应用程序相同的代码签名证书(见图 2021)进行签名 趋势科技,这也归功于 StrongPity。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 3. 该证书签署了假的 Shagle 应用程序和木马化的叙利亚电子政府应用程序

伪造的 Shagle 应用程序中的恶意代码在 StrongPity 之前的移动活动中被发现,并实施了一个简单但功能强大的后门。 我们已经看到此代码仅在 StrongPity 开展的活动中使用。 在图 4 中,您可以看到一些添加的恶意类,其中许多混淆名称甚至在两个活动的代码中都是相同的。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 4. 木马化的 Syrian e-gov 应用程序(左)和木马化的 Telegram 应用程序(右)的类名比较

将这次活动的后门代码与木马化的叙利亚电子政府应用程序 (SHA-1: 5A5910C2C9180382FCF7A939E9909044F0E8918B),它具有扩展的功能,但使用相同的代码来提供类似的功能。 在图 5 和图 6 中,您可以比较两个示例中负责在组件之间发送消息的代码。 这些消息负责触发后门的恶意行为。 因此,我们坚信假冒的 Shagle 应用程序与 StrongPity 组织有关。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 5. 负责在木马化的叙利亚电子政府应用程序中触发恶意功能的消息调度程序

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 6. 负责在虚假 Shagle 应用程序中触发恶意功能的消息调度程序

技术分析

初始访问

正如这篇博文的概述部分所述,假冒的 Shagle 应用程序托管在 Shagle 山寨网站上,受害者必须从该网站选择下载和安装该应用程序。 没有任何诡计暗示该应用程序可从 Google Play 获得,我们不知道潜在受害者是如何被引诱到或以其他方式被发现的假冒网站。

工具箱

根据山寨网站上的描述,该应用程序是免费的,旨在用于结识新朋友并与他们聊天。 然而,下载的应用程序是恶意修补的 Telegram 应用程序,具体为 Telegram 版本 7.5.0(22467),该版本于 25 月 XNUMX 日左右可供下载th2022。

重新打包的 Telegram 版本使用与合法 Telegram 应用程序相同的包名称。 包名称应该是每个 Android 应用程序的唯一 ID,并且在任何给定设备上都必须是唯一的。 这意味着如果潜在受害者的设备上已经安装了官方 Telegram 应用程序,则无法安装此后门版本; 参见图 7。这可能意味着以下两种情况之一 - 威胁行为者首先与潜在受害者通信并推动他们从其设备上卸载 Telegram(如果已安装),或者该活动的重点是很少使用 Telegram 进行通信的国家/地区。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 7. 如果设备上已经安装了官方 Telegram 应用程序,则无法成功安装木马化版本

StrongPity 的木马化 Telegram 应用程序应该像官方版本一样工作,使用 Telegram 网站上详细记录的标准 API,但该应用程序不再工作,因此我们无法检查。

在我们的研究过程中,可从山寨网站获得的当前版本的恶意软件不再处于活动状态,并且不再可能成功安装它并触发其后门功能。 当我们尝试使用我们的电话号码注册时,重新打包的 Telegram 应用程序无法从服务器获取 API ID,因此无法正常工作。 如图 8 所示,应用程序显示了一个 API_ID_PUBLISHED_FLOOD 错误。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 8. 使用电话号码注册期间显示的错误

基于电报的 错误文档,似乎 StrongPity 还没有获得自己的 API ID。 相反,它使用 Telegram 开源代码中包含的示例 API ID 进行初始测试。 Telegram 监控 API ID 使用情况并限制示例 API ID,因此它在已发布的应用程序中的使用会导致图 8 中所示的错误。由于该错误,无法再注册和使用该应用程序或触发其恶意功能. 这可能意味着 StrongPity 运营商没有考虑清楚这一点,或者可能有足够的时间在发布应用程序和 Telegram 因 APP ID 过度使用而将其停用之间监视受害者。 由于从未通过该网站提供该应用程序的新版本和可用版本,这可能表明 StrongPity 已成功将恶意软件部署到其所需目标。

因此,在我们进行研究时,假冒网站上提供的假冒 Shagle 应用程序不再活跃。 但是,如果威胁行为者决定更新恶意应用程序,这可能会随时发生变化。

StrongPity 后门代码的组件和所需的权限附加到 Telegram 应用程序的 AndroidManifest.xml 文件。 从图 9 中可以看出,这可以很容易地看出恶意软件需要哪些权限。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 9. 突出显示了 StrongPity 后门的组件和权限的 AndroidManifest.xml

从 Android 清单中我们可以看到恶意类被添加到 org.telegram.messenger 包显示为原始应用程序的一部分。

最初的恶意功能由三个广播接收器之一触发,这些接收器在定义的操作后执行 - 启动_完成, 电量不足USER_PRESENT. 第一次启动后,动态注册额外的广播接收器进行监听 屏幕开启, 屏幕关闭连接性改变 事件。 然后,伪造的 Shagle 应用程序使用 IPC(进程间通信)在其组件之间进行通信以触发各种操作。 它使用 HTTPS 联系 C&C 服务器,发送有关受感染设备的基本信息,并接收包含 11 个二进制模块的 AES 加密文件,这些模块将由父应用程序动态执行; 参见图 10。如图 11 所示,这些模块存储在应用程序的内部存储中, /data/user/0/org.telegram.messenger/files/.li/.

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 10. StrongPity 后门接收包含可执行模块的加密文件

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 11. 从服务器接收到的模块存储在 StrongPity 后门的内部存储中

每个模块负责不同的功能。 模块名称列表存储在本地共享首选项中 共享配置文件 文件; 参见图 12。

必要时,模块由父应用程序动态触发。 每个模块都有自己的模块名称,并负责不同的功能,例如:

  • 库文件 (cm 模块) – 记录电话
  • libmpeg4.jar (nt 模块)——收集来自 17 个应用程序的传入通知消息的文本
  • 本地.jar (fm/fp 模块) – 收集设备上的文件列表(文件树)
  • 手机.jar (ms 模块)——滥用辅助功能服务通过窃取联系人姓名、聊天消息和日期来监视消息传递应用程序
  • 资源.jar (sm 模块)——收集存储在设备上的 SMS 消息
  • 服务文件 (lo 模块) – 获取设备位置
  • 系统界面.jar (sy 模块)——收集设备和系统信息
  • 定时器.jar (ia 模块)——收集已安装应用程序的列表
  • 工具包.jar (cn 模块) – 收集联系人列表
  • watchkit.jar (ac 模块)——收集设备帐户列表
  • wearkit.jar (cl 模块)——收集通话记录列表
StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 12. StrongPity 后门使用的模块列表

所有获得的数据都存储在明文中 /data/user/0/org.telegram.messenger/databases/outdata,在使用 AES 加密并发送到 C&C 服务器之前,如图 13 所示。

StrongPity 针对 Android 用户 PlatoBlockchain 数据情报的间谍活动。垂直搜索。人工智能。

图 13. 泄露到 C&C 服务器的加密用户数据

与为移动设备发现的第一个 StrongPity 版本相比,这个 StrongPity 后门扩展了间谍功能。 它可以请求受害者激活无障碍服务并获得通知访问权限; 请参阅图 14。如果受害者启用它们,恶意软件将监视传入的通知并滥用辅助功能服务以从其他应用程序中窃取聊天通信。

图 14. 来自受害者的恶意软件请求、通知访问和可访问性服务

通过通知访问,恶意软件可以读取来自 17 个目标应用程序的通知消息。 以下是他们的包名列表:

  • 信使(com.facebook.orca)
  • 信使精简版 (com.facebook.mlite)
  • Viber – 安全聊天和通话 (com.viber.voip)
  • Skype(com.skype.raider)
  • LINE:电话和信息(jp.naver.line.android)
  • Kik — 消息和聊天应用程序 (kik.android)
  • 探戈直播和视频聊天(com.siggle.production)
  • 视频群聊(com.google.android.talk)
  • 电报(org.telegram.messenger)
  • 微信 (com.tencent.mm)
  • 快照 (com.snapchat.android)
  • 火种 (comtinder)
  • 远足新闻与内容 (com.bsb.hike)
  • Instagram(com.instagram.android)
  • 推特 (com.twitter.android)
  • 电子邮件 (com.google.android.gm)
  • imo-国际电话和聊天(com.imo.android.imoim)

如果设备已经 root,恶意软件会悄悄地尝试授予权限 WRITE_SETTINGS、WRITE_SECURE_SETTINGS、REBOOT、MOUNT_FORMAT_FILESYSTEMS、MODIFY_PHONE_STATE、PACKAGE_USAGE_STATS、READ_PRIVILEGED_PHONE_STATE, 以启用无障碍服务,并授予通知访问权限。 然后 StrongPity 后门会尝试禁用 SecurityLogAgent 应用程序(com.samsung.android.securitylogagent),这是一个官方系统应用程序,有助于保护三星设备的安全,并禁用所有来自恶意软件本身的应用程序通知,这些通知可能会在未来出现应用程序错误、崩溃或警告时显示给受害者。 StrongPity 后门本身并不尝试对设备进行 root。

AES 算法使用 CBC 模式和硬编码密钥来解密下载的模块:

  • AES 密钥 – aaa不可能的事bbb
  • AES IV—— 无所谓

结论

由 StrongPity APT 组织运营的移动活动冒充合法服务来分发其 Android 后门。 StrongPity 重新打包了官方 Telegram 应用程序,以包含该组织后门代码的变体。

该恶意代码、其功能、类名和用于签署 APK 文件的证书与之前的活动相同; 因此,我们非常有信心地认为该操作属于 StrongPity 集团。

在我们进行研究时,由于以下原因,山寨网站上可用的样本已被禁用 API_ID_PUBLISHED_FLOOD 错误,这会导致恶意代码不会被触发,并且潜在的受害者可能会从他们的设备中删除无法运行的应用程序。

代码分析表明后门是模块化的,额外的二进制模块是从 C&C 服务器下载的。 这意味着所用模块的数量和类型可以随时更改,以适应 StrongPity 集团运营时的活动要求。

根据我们的分析,这似乎是 StrongPity 的 Android 恶意软件的第二个版本; 与其第一个版本相比,它还滥用了无障碍服务和通知访问,将收集的数据存储在本地数据库中,尝试执行 su 命令,并且对于大多数数据收集,使用下载的模块。

国际石油公司

SHA-1 文件名 ESET检测名称 产品描述
50F79C7DFABECF04522AEB2AC987A800AB5EC6D7 视频.apk 安卓/StrongPity.A StrongPity 后门(用恶意代码重新打包的合法 Android Telegram 应用程序)。
77D6FE30DAC41E1C90BDFAE3F1CFE7091513FB91 库文件 安卓/StrongPity.A StrongPity 手机模块负责通话录音。
5A15F516D5C58B23E19D6A39325B4B5C5590BDE0 libmpeg4.jar 安卓/StrongPity.A StrongPity 移动模块负责收集收到的通知文本。
D44818C061269930E50868445A3418A0780903FE 本地.jar 安卓/StrongPity.A StrongPity 移动模块负责收集设备上的文件列表。
F1A14070D5D50D5A9952F9A0B4F7CA7FED2199EE 手机.jar 安卓/StrongPity.A StrongPity 移动模块负责滥用辅助功能服务来监视其他应用程序。
3BFAD08B9AC63AF5ECF9AA59265ED24D0C76D91E 资源.jar 安卓/StrongPity.A StrongPity 移动模块负责收集存储在设备上的短信。
5127E75A8FAF1A92D5BD0029AF21548AFA06C1B7 服务文件 安卓/StrongPity.A StrongPity 移动模块负责获取设备位置。
BD40DF3AD0CE0E91ACCA9488A2FE5FEEFE6648A0 系统界面.jar 安卓/StrongPity.A StrongPity 移动模块负责收集设备和系统信息。
ED02E16F0D57E4AD2D58F95E88356C17D6396658 定时器.jar 安卓/StrongPity.A StrongPity 移动模块负责收集已安装应用程序的列表。
F754874A76E3B75A5A5C7FE849DDAE318946973B 工具包.jar 安卓/StrongPity.A StrongPity 手机模块负责收集通讯录。
E46B76CADBD7261FE750DBB9B0A82F262AFEB298 watchkit.jar 安卓/StrongPity.A StrongPity 移动模块负责收集设备帐户列表。
D9A71B13D3061BE12EE4905647DDC2F1189F00DE wearkit.jar 安卓/StrongPity.A StrongPity 手机模块负责收集通话记录列表。

商业网络

IP Provider 初见 更多信息
141.255.161[.]185 NameCheap 2022-07-28 intagrefed Circuitchip[.]com C&C
185.12.46[.]138 猪肉包子 2020-04-21 网络软件段[.]com C&C

MITRE ATT&CK 技术

该表是使用 12版 MITRE ATT&CK 框架。

战术 ID 名字 产品描述
坚持 T1398 引导或登录初始化脚本 StrongPity 后门接收到 启动_完成 广播意图在设备启动时激活。
T1624.001 事件触发执行:广播接收器 如果发生以下事件之一,将触发 StrongPity 后门功能: 电量不足, USER_PRESENT, 屏幕开启, 屏幕关闭连接性改变.
防御规避 T1407 在运行时下载新代码 StrongPity 后门可以下载并执行额外的二进制模块。
T1406 混淆的文件或信息 StrongPity 后门使用 AES 加密来混淆下载的模块并隐藏其 APK 中的字符串。
T1628.002 隐藏工件:用户规避 StrongPity 后门可以禁用来自恶意软件本身的所有应用程序通知以隐藏其存在。
T1629.003 削弱防御:禁用或修改工具 如果 StrongPity 后门有 root,它会禁用 SecurityLogAgent(com.samsung.android.securitylogagent) 如果存在。
药物发现 T1420 文件和目录发现 StrongPity 后门可以列出外部存储上的可用文件。
T1418 软件发现 StrongPity 后门可以获得已安装应用程序的列表。
T1422 系统网络配置发现 StrongPity 后门可以提取 IMEI、IMSI、IP 地址、电话号码和国家/地区。
T1426 系统信息发现 StrongPity 后门可以提取有关设备的信息,包括互联网连接类型、SIM 序列号、设备 ID 和常用系统信息。
购物 T1417.001 输入捕获:键盘记录 StrongPity 后门记录聊天消息中的击键和来自目标应用程序的呼叫数据。
T1517 访问通知 StrongPity 后门可以收集来自 17 个目标应用程序的通知消息。
T1532 存档收集的数据 StrongPity 后门使用 AES 加密泄露的数据。
T1430 位置跟踪 StrongPity 后门跟踪设备位置。
T1429 音频捕获 StrongPity 后门可以记录电话。
T1513 屏幕录制 StrongPity 后门可以使用 媒体投影管理器 API。
T1636.002 受保护的用户数据:通话记录 StrongPity 后门可以提取通话记录。
T1636.003 受保护的用户数据:联系人列表 StrongPity 后门可以提取设备的联系人列表。
T1636.004 受保护的用户数据:短信 StrongPity 后门可以提取短信。
指挥和控制 T1437.001 应用层协议:Web 协议 StrongPity 后门使用 HTTPS 与其 C&C 服务器通信。
T1521.001 加密通道:对称密码学 StrongPity 后门使用 AES 来加密其通信。
渗出 T1646 通过 C2 通道进行渗透 StrongPity 后门使用 HTTPS 泄露数据。

时间戳记:

更多来自 我们安全生活