恶意代码分析-针对Android用户的StrongPity间谍活动
介绍
ESET研究人员发现了一个活跃的StrongPity活动,分发了Android Telegram应用程序的木马化版本,该应用程序呈现为Shagle应用程序——一种没有应用程序版本的视频聊天服务
ESET研究人员确定了一项积极的活动,我们将其归因于StrongPity APT集团。该活动自2021年11月以来一直活跃,通过一个冒充Shagle的网站分发了一个恶意应用程序——Shagle是一种随机视频聊天服务,提供陌生人之间的加密通信。与完全基于网络的正版Shagle网站不同,该网站不提供官方移动应用程序来访问其服务,该模仿网站仅提供Android应用程序可供下载,并且无法进行基于网络的流媒体。
然而,恶意应用程序实际上是合法Telegram应用程序的全功能但木马化版本,但被呈现为不存在的Shagle应用程序。在本博文的其余部分中,我们将将其称为假的Shagle应用程序、木马化的Telegram应用程序或StrongPity后门。ESET产品以Android/StrongPity.A的身份检测此威胁。
这个StrongPity后门具有各种间谍功能:其11个动态触发模块负责记录电话、收集短信、通话记录列表、联系人列表等。这些模块是第一次被记录下来。如果受害者授予恶意的StrongPity应用程序可访问性服务,其其中一个模块也将有权访问传入的通知,并能够从Viber、Skype、Gmail、Messenger和Tinder等17个应用程序中泄露通信。
该活动的目标可能非常狭窄,因为ESET遥测仍然无法识别任何受害者。在我们的研究期间,从模仿网站获得的恶意软件分析版本不再活跃,不再可能成功安装它并触发其后门功能,因为StrongPity尚未为其特洛伊木马化的Telegram应用程序获得自己的API ID。但如果威胁行为者决定更新恶意应用程序,这种情况可能会随时改变。
一览表
这个StrongPity活动围绕着一个从包含“荷兰语”一词的域交付的Android后门展开。本网站冒充shagle.com上名为Shagle的合法服务。在图1中,您可以看到两个网站的主页。恶意应用程序直接从冒名顶替的网站提供,从未从Google Play商店获得。这是合法Telegram应用程序的木马化版本,呈现为Shagle应用程序,尽管目前没有官方的Shagle Android应用程序。
比较左边的合法网站和右边的山寨网站
如图2所示,虚假网站的HTML代码包括使用自动工具HTTrack于2021年11月1日从合法的shagle.com网站复制的证据。恶意域名是在同一天注册的,因此自该日期以来,模仿网站和假Shagle应用程序可能已经可供下载。
虚假网站的HTML代码中记录的HTTrack工具生成的日志
受害者学
2022年7月18日,当上传恶意应用程序和模仿shagle.com的网站链接时,我们在VirusTotal的YARA规则之一被触发。与此同时,我们在推特上收到了关于该样本的通知,尽管它被错误地归因于Bahamut。ESET遥测数据仍然没有识别任何受害者,这表明该运动可能被狭隘地锁定。
归因
由模仿Shagle网站分发的APK使用与趋势科技在2021年发现的特洛伊木马化的叙利亚电子政务应用程序相同的代码签名证书(见图3)签名,该应用程序也归因于StrongPity。
该证书签署了假的Shagle应用程序和特洛伊木马化的叙利亚电子政府应用程序
在之前的移动活动中,StrongPity看到了假Shagle应用程序中的恶意代码,并实现了一个简单但实用的后门。我们看到此代码仅在StrongPity开展的活动中使用。在图4中,您可以看到一些添加的恶意类,其中许多混淆的名称甚至在两个活动的代码中都相同。
特洛伊木马化的叙利亚电子政府应用程序(左)和特洛伊木马的电报应用程序(右)的类名比较
将本次活动的后门代码与特洛伊木马化的叙利亚电子政府应用程序(SHA-1:5A5910C2C9180382FCF7A939E9909044F0E8918B)的后门代码进行比较,它具有扩展功能,但使用相同的代码来提供类似的功能。在图5和图6中,您可以比较负责在组件之间发送消息的两个示例中的代码。这些消息负责触发后门的恶意行为。因此,我们坚信假的Shagle应用程序与StrongPity集团相关联。
负责在特洛伊木马化的叙利亚电子政府应用程序中触发恶意功能的消息调度员
负责触发假Shagle应用程序中恶意功能的消息调度器
技术分析
初始访问
正如本博客文章的概述部分所述,假Shagle应用程序被托管在Shagle复制网站,受害者必须从中选择下载和安装该应用程序。没有诡计表明该应用程序可以从Google Play获得,我们不知道潜在受害者是如何被引诱或以其他方式发现假网站。
工具集
根据模仿网站上的描述,该应用程序是免费的,旨在用于与新朋友见面和聊天。然而,下载的应用程序是一个恶意修补的Telegram
应用程序,特别是Telegram
版本7.5.0(22467),该版本于2022年2月25日左右可供下载。
重新打包的Telegram版本使用与合法Telegram应用程序相同的软件包名称。软件包名称应该是每个Android应用程序的唯一ID,并且在任何给定设备上必须是唯一的。这意味着,如果官方Telegram应用程序已经安装在潜在受害者的设备上,则无法安装此后门版本;请参阅图7。这可能意味着两件事之一——要么威胁者首先与潜在受害者沟通,并在安装了电报时推动他们从他们的设备中卸载电报,要么该活动重点关注很少使用电报进行通信的国家。
如果设备上已经安装了官方Telegram应用程序,则无法成功安装木马版本
StrongPity的特洛伊木马化Telegram应用程序应该像官方版本一样工作,使用Telegram网站上有据可查的标准API——但该应用程序不再工作,因此我们无法检查。
在我们的研究期间,从模仿网站获得的当前版本的恶意软件不再活跃,不再可能成功安装它并触发其后门功能。当我们尝试使用电话号码注册时,重新打包的Telegram应用程序无法从服务器获取API ID,因此无法正常工作。如图8所示,该应用程序显示API_ID_PUBLISHED_FLOOD错误。
根据Telegram的错误文档,StrongPity似乎还没有获得自己的API ID。相反,它使用了Telegram开源代码中包含的示例API ID进行初始测试。Telegram监控API ID的使用情况并限制示例API ID,因此它在已发布的应用程序中的使用会导致图8所示的错误。由于该错误,无法再注册和使用该应用程序或触发其恶意功能。这可能意味着StrongPity运营商没有仔细考虑这一点,或者也许在发布应用程序和Telegram因APP ID过度使用而停用应用程序之间有足够的时间来监视受害者。由于该应用程序从未通过网站提供新的工作版本,这可能表明StrongPity已成功将恶意软件部署到其所需的目标。
因此,在我们研究时,假网站上提供的假Shagle应用程序不再活跃。然而,如果威胁行为者决定更新恶意应用程序,这种情况可能会随时改变。
StrongPity后门代码的组件和所需的权限附加到Telegram应用程序的AndroidManifest.xml文件中。如图9所示,这可以轻松查看恶意软件所需的权限。
AndroidManifest.xml,突出显示了StrongPity后门的组件和权限
从Android清单中,我们可以看到恶意类被添加到org.telegram.messenger软件包中,以显示为原始应用程序的一部分。
初始恶意功能由定义操作后执行的三个广播接收器之一触发——BOOT_COMPLETED、BATTERY_LOW或USER_PRESENT。第一次启动后,它会动态注册其他广播接收器,以监控SCREEN_ON、SCREEN_OFF和CONNECTIVITY_CHANGE事件。然后,假的Shagle应用程序使用IPC(进程间通信)在其组件之间进行通信,以触发各种操作。它使用HTTPS联系C&C服务器,发送有关受损设备的基本信息,并接收包含11个二进制模块的AES加密文件,这些模块将由父应用程序动态执行;见图10。如图11所示,这些模块存储在应用程序的内部存储中,/data/user/0/org.telegram.messenger/files/.li/。
StrongPity后门接收包含可执行模块的加密文件
从服务器收到的模块存储在StrongPity后门的内部存储中
每个模块负责不同的功能。模块名称列表存储在sharedconfig.xml文件中的本地共享首选项中;见图12。
模块在必要时由父应用程序动态触发。每个模块都有自己的模块名称,并负责不同的功能,例如:
libarm.jar(cm模块)-记录电话
libmpeg4.jar(nt模块)-从17个应用程序收集传入通知消息的文本
local.jar(fm/fp模块)–在设备上收集文件列表(文件树)
phone.jar(ms模块)-通过泄露联系人姓名、聊天消息和日期来滥用辅助功能服务来监视消息应用程序
resources.jar(sm模块)-收集存储在设备上的短信
services.jar(lo模块)–获取设备位置
systemui.jar(sy模块)-收集设备和系统信息
timer.jar(ia模块)-收集已安装应用程序的列表
toolkit.jar(cn模块)-收集联系人列表
watchkit.jar(ac模块)-收集设备帐户列表
wearkit.jar(cl模块)-收集通话记录列表
StrongPity后门使用的模块列表
如图13所示,所有获得的数据都存储在/data/user/0/org.telegram.messenger/databases/outdata中,然后使用AES加密并发送到C&C服务器。
泄露到C&C服务器的加密用户数据
与为移动设备发现的第一个StrongPity版本相比,这款StrongPity后门扩展了间谍功能。它可以要求受害者激活无障碍服务并获得通知访问权限;见图14。如果受害者启用它们,恶意软件将监视传入的通知,并滥用辅助功能服务来泄露来自其他应用程序的聊天通信。
图14。来自受害者的恶意软件请求、通知访问和可访问性服务
通过通知访问,恶意软件可以读取来自17个目标应用程序的通知消息。以下是他们的包裹名称列表:
Messenger(com.facebook.orca)
Messenger Lite(com.facebook.mlite)
Viber – 安全聊天和通话(com.viber.voip)
Skype(com.skype.raider)
LINE:通话和消息(jp.naver.line.android)
Kik — 消息和聊天应用程序(kik.android)
探戈直播和视频聊天(com.sgiggle.production)
环聊(com.google.android.talk)
电报(org.telegram.messenger)
微信(com.tencent.mm)
Snapchat(com.snapchat.android)
Tinder(com.tinder)
徒步旅行新闻和内容(com.bsb.hike)
Instagram(com.instagram.android)
推特(com.twitter.android)
Gmail(com.google.android.gm)
imo-国际电话和聊天(com.imo.android.imoim)
如果设备已经植根,恶意软件会默默地尝试授予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模式和硬编码密钥来解密下载的模块:
结论
由StrongPity APT集团运营的移动活动冒充合法服务来分发其Android后门。StrongPity重新打包了官方Telegram应用程序,以包含该组后门代码的变体。
该恶意代码、其功能、类名和用于签署APK文件的证书与之前的活动相同;因此,我们非常有信心地相信此操作属于StrongPity组。
在我们研究时,由于API_ID_PUBLISHED_FLOOD错误,复制网站上提供的样本被禁用,导致恶意代码没有被触发,潜在的受害者可能会从他们的设备中删除不工作的应用程序。
代码分析显示,后门是模块化的,额外的二进制模块是从C&C服务器下载的。这意味着,当由StrongPity组操作时,可以随时更改使用的模块的数量和类型,以适应活动请求。
根据我们的分析,这似乎是StrongPity的Android恶意软件的第二个版本;与其第一个版本相比,它还滥用可访问性和通知访问,将收集的数据存储在本地数据库中,尝试执行su命令,并且大多数数据收集使用下载的模块。
IoCs
文件
SHA-1 | 文件名 | ESET检测名称 | 描述 |
---|---|---|---|
50F79C7DFABECF04522AEB2AC987A800AB5EC6D7 | video.apk | Android/StrongPity.A | StrongPity backdoor (legitimate Android Telegram app repackaged with malicious code). |
StrongPity backdoor (legitimate Android Telegram app repackaged with malicious code). | libarm.jar | Android/StrongPity.A | StrongPity mobile module responsible for recording phone calls. |
5A15F516D5C58B23E19D6A39325B4B5C5590BDE0 | libmpeg4.jar | Android/StrongPity.A | StrongPity mobile module responsible for collecting text of received notifications. |
link
https://www.welivesecurity.com/2023/01/10/strongpity-espionage-campaign-targeting-android-users/