概述
2023 年 3 月 21 日晚上,链安与中睿天下联合研发的监控系统检测到一种新型安卓木马。在经过睿士沙箱系统捕获样本之后,发现该安卓木马极有可能是原安卓网银盗号木马 SOVA 的变种。与此同时,意大利安全公司 Cleafy 发布了一篇题为《Nexus:一个新的安卓僵尸网络?》的报告,确认该病毒确实是 SOVA 的变种,并将其重新命名为 Nexus。
样本分析
样本名称: Chrome.apk
样本 SHA256 为: 376d13affcbfc5d5358d39aba16b814f711f2e81632059a4bce5af060e038ea4
样本文件大小: 4792032KB
主要行为列表
删除指定应用以其应用数据
安装并启动任意应用
隐藏自身应用图标
卸载保护
上传用户短信数据以及通讯录
使用 SmsManager 发送短信、 删除短信、取消短信通知
拨打电话
获取用户 cookie 信息并上传,注入 cookie 等
读取并上传数字钱包信息
记录并上传键盘输入记录
查询敏感信息手机数据(查询存储邮件、应用账号数据、IMSI 等手机信息)
设置静音
屏幕解锁
访问指定 Url
试图禁用管理员用户
开启辅助功能
监听手机重启事件
使用 DownloadManager 下载文件
安装测试
当木马安装完成后,手机主界面会出现一个类似 Chrome 浏览器的图标(如图1所示),与真实的 Chrome 图标略有差异。木马使用的图标较小,但在没有相关对比的情况下,基本上很难识别出这种差异。
图 1
当木马启动后,界面会提示用户需要开启“无障碍功能”。在用户点击界面任意位置时,将自动跳转到系统内的“无障碍功能”设置并自动启用该功能(如下图所示)。
在启动“无障碍功能”之后,程序会自动弹出并请求获取“设备管理员权限”(如图2所示)。
图 2
在恶意应用获得设备管理员权限后,它会在后台不断收集用户信息,用户很难察觉其存在。一旦设备管理员权限被授予,用户在尝试打开设备管理员权限设置界面时会发现界面迅速关闭,无法撤销权限。类似地,通过 adb 执行操作时也会遇到相同问题,界面会立刻关闭。这是因为恶意应用程序已经监控了设备管理员设置界面的开启动作,从而阻止用户撤销其权限。因此,用户需要启用 root 权限才能成功卸载此恶意应用。
adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity"
样本深度分析
基础信息
图 3
图 4
在使用 Incinerator 进行手动分析之前,通过“基础分析”模块,我们发现该样本程序具有加密壳(如图3所示)。这意味着恶意应用程序的开发者使用了一种加密方法来保护其代码,以防止分析和逆向工程。同时,我们注意到签名信息中使用了“CN=Android Debug”(如图4所示),这与正常的 Chrome 证书不一致。这可能意味着此恶意应用程序的开发者试图伪装成正常的 Chrome 应用,以便更容易地欺骗用户并获得其信任。
得益于 incinerator 具备 Apk 权限分析功能,我们可以在 Apk 的详细信息中获取相应的权限列表(如图5,6所示)。
图 5
图 6
在应用权限列表中,样本获取的权限中有 13 项被评定为“危险”的权限。其中有几个权限尤为危险:
发送短信(SEND_SMS)
读取短信(READ_SMS)
接收短信(RECEIVE_SMS)
读取联系人(READ_CONTACTS)
写入联系人(WRITE_CONTACTS)
读取电话号码(READ_PHONE_NUMBER)
普通应用通常不会申请一些涉及敏感操作的权限,如改写通讯录、读取和发送短信等。这些权限通常仅限于专门的通讯软件。然而,当恶意应用获取辅助功能权限后,它可以利用这一功能来自动开启其他权限,包括一些对用户隐私和安全具有潜在威胁的权限。
辅助功能是 Android 系统中一项强大的功能,旨在帮助有特殊需求的用户更好地使用设备。然而,这一功能也可能被恶意应用滥用,从而执行不受用户控制的操作。一旦恶意应用获得了辅助功能权限,它可以在用户不知情的情况下执行各种操作,如启用其他敏感权限,进而窃取用户数据和破坏其隐私。因此,用户需要谨慎授权辅助功能权限,避免将其授予不可信的应用。
代码中用辅助功能开启的权限列表如下:
android.permission.READ_SMS:允许应用程序读取短信消息
android.permission.SEND_SMS:允许应用程序发送短信消息
android.permission.RECEIVE_SMS:允许应用程序接收短信消息
android.permission.READ_CONTACTS:允许应用程序读取联系人列表
android.permission.WRITE_CONTACTS:允许应用程序编辑联系人列表
android.permission.READ_PHONE_STATE:允许应用程序读取设备电话状态和身份信息
android.permission.WRITE_EXTERNAL_STORAGE:允许应用程序写入外部存储,例如SD卡
android.permission.MODIFY_AUDIO_SETTINGS:允许应用程序修改声音设置
android.permission.READ_EXTERNAL_STORAGE:允许应用程序读取外部存储,例如SD卡
android.permission.INSTALL_PACKAGES:允许应用程序安装其他应用程序
android.permission.CALL_PHONE:允许应用程序拨打电话
android.permission.GET_ACCOUNTS:允许应用程序访问设备帐户列表
android.permission.READ_PHONE_NUMBERS:允许应用程序读取设备电话号码
android.permission.CLEAR_APP_CACHE:允许应用程序清除所有缓存文件
图 7
图 8
如上图所示,该应用首先硬编码了需要通过辅助功能开启的权限列表,接着向系统发起对这些权限的申请。在 PermissionsTask 环节中,应用会监听权限申请的动作。一旦监听到权限申请,该应用便利用辅助功能在权限申请界面上自动点击“同意”按钮。
静态代码分析
在使用 Incinerator 工具对样本进行自动脱壳并分析恶意行为代码后,我们发现以下主要功能:
1. 删除指定应用以其应用数据
恶意应用具有删除其他应用及其数据的能力,可能影响用户正常使用手机及其应用。
图 9
clearApp
方法确实是通过执行 pm clear package
命令(如图9所示)来删除与特定应用程序包相关的缓存数据,包括图片缓存、临时文件、数据库缓存等。这样可以帮助清理设备上的垃圾文件,释放存储空间。
而 deleteThisApp
方法则通过触发 android.intent.action.DELETE
intent 来实现应用的卸载(如图9所示)。当系统接收到这个 intent 时,会弹出一个卸载确认界面。通常情况下,用户需要在此界面上手动点击“同意”按钮才能完成卸载。然而,由于这个恶意应用具有辅助功能权限,它可以在卸载确认界面出现时自动点击“同意”按钮,从而在用户不知情的情况下完成卸载操作。这种做法进一步提高了恶意应用的隐蔽性和破坏性。
2. 安装并启动任意应用
恶意应用可以安装并启动其他应用,可能进一步传播恶意软件或将用户引导至恶意网站。
图 10
安装和卸载应用确实是通过辅助功能来实现的。这种方式可以方便地为用户自动化应用的安装和卸载过程。唯一的区别在于,为了实现这一功能,恶意应用需要适配不同厂商的安装应用包名和安装 Activity 的名称。
这样一来,恶意应用可以在各种不同的设备上成功执行安装和卸载操作,从而更加隐蔽地实现其恶意行为。这种策略使得恶意应用在各类设备上具有更广泛的攻击能力。
3. 隐藏自身应用图标
为了难以被发现和卸载,恶意应用会隐藏自己的应用图标(如图11所示)。
图 11
在这个恶意应用中,开发者使用了 setComponentEnabledSetting
方法来禁用 Launcher Activity。这样一来,用户就无法通过设备主屏幕上的应用图标(Launcher Icon)来操作或访问该恶意应用了。
setComponentEnabledSetting
方法可以用来启用或禁用应用程序组件,如 Activity、Service、BroadcastReceiver 等。在这种情况下,恶意应用通过禁用 Launcher Activity,达到了隐藏自身的目的,让用户更难以察觉其存在。这种做法进一步提高了恶意应用的隐蔽性,使其更难以被发现和移除。
4. 上传手机联系人等敏感信息
恶意应用可以窃取并上传用户的联系人、短信、Cookie 等信息,可能导致用户隐私泄露和财产损失。
图 12
图 13
如图12、13所示,恶意应用首先通过 content://sms
访问短信内容,然后经过一系列业务逻辑处理,将其整合到网络请求的数据中。除了短信数据,这个请求还包含了如 SIM 卡信息、受害者设备的 IP 地址、国家、城市和设备型号等信息。最后,这些数据会被发送到指定的服务器。
通过这种方式,恶意应用能够窃取用户的短信和设备信息,然后将这些数据发送给攻击者。攻击者可以利用这些信息进行各种违法活动,例如诈骗、窃取用户隐私、甚至是身份盗窃。
5. 使用 SmsManager 发送短信、 删除短信、取消短信通知、读取短信
5.1 上传短信
图 14
图 15
根据上述描述,该恶意应用通过监听收到短信的系统广播,从广播中提取收到的短信内容,然后将每一条短信发送给远程服务器。在完成这个过程之后,应用还会终止收到短信的广播,以免被用户或其他应用程序发现。如图15所示,super.execute
指的是将收集到的短信数据发送给远程服务器。
这种行为表明,该恶意应用在窃取用户短信方面采取了较为积极的手段。用户需要加强对此类应用的防范意识,以避免对其隐私和安全造成不良影响。
5.2 发送短信
图 16
调用系统 SmsManager 发送短信(如图16所示)。
6. 获取用户 cookie 信息并上传,注入 cookie 等
图 17
如图17所示,读取所有 cookie,上传到远程服务器,并且通过 CookieManager 把本地 cookie 删除。
7. 读取和上传数字钱包信息
7.1 读取余额
图 18
通过辅助功能,读取代表余额的 View 显示的字符内容,就是用户钱包的余额(如图18所示)。
7.2 读取 seed phrase
图 19
图 20
利用辅助功能,从表示 seed phrase 的 View 中读取内容(如图19、20所示)。
7.3 上传到服务器
图 21
把加密钱包信息发生到远程服务器。
8. 记录并上传键盘输入记录
图 22
图 23
上面两张图,图22所示监听键盘输入,通过辅助功能抽取数据,图23所示把这些数据上传到远程服务器。
9. 查询敏感信息手机数据(查询存储邮件 和应用账号数据,IMSI 等手机信息)
图 24
通过 AccountManager 获取账号信息,上传到远程服务器。
10. 把手机设置静音
图 25
通过 audio 系统服务器,把手机设置为静音(如图25所示)。
11. 监听手机重启事件
图 26
图 27
监听手机重启事件,手机重启后恶意就开始工作。
12. 使用 DownloadManager 下载 APK 并且安装
图 28
下载 apk 并且使用安装。
13. 拍照、录视频
图 29
图 30
14. 读取其他文档
图 31
图 32
15. 网络请求
代码中所有的 Log 都会上传,上传的服务器地址来自一段“加密”字符串(如图33、34所示)。
图 33
图 34
基于"aHR0cDovLzE5My40Mi4zMi44Ny8=" 是一段 Base64 编码。解码后,我们得到了 "http://193.42.32.87/" 这个网址,这是一个用于接收被收集数据的服务器地址。然而,在中国大陆地区,这个网址是无法访问的。因此,即使国内用户安装了这个恶意应用,他们的数据也不会被采集,因为数据无法成功发送至服务器。
另外,被 URL 字符串扫描器识别出的网址 "http://ip-api.com/json" 和 "https://icanhazip.com" 也因为 GFW 而无法访问。
总结
总的来说,这个恶意应用主要目的是窃取用户隐私,并对相关隐私数据进行了精细化处理。在分析过程中,发现了大量针对中国手机厂商华为、小米、OPPO 的特殊处理,暗示这款恶意应用可能主要针对中国区用户。
为了隐藏其恶意行为,应用使用了简单的加密壳来掩盖关键代码。这种手法在海外的恶意应用中并不常见。从窃取的数据类型来看,这款恶意应用的危害性较高,因为它窃取了短信、加密钱包、Cookie 等非常敏感的信息,可能对用户的财产安全造成影响。
技术手段方面,该恶意应用主要利用了 Android 的辅助功能和设备管理员权限。这种手法在恶意应用中较为常见。用户需要提高警惕,防范此类应用对其隐私和安全造成的威胁。
IOC 指标
SHA256:
376d13affcbfc5d5358d39aba16b814f711f2e81632059a4bce5af060e038ea4
724a56172f40177da76242ee169ac336b63d5df85889368d1531f593b658606b
f3fc80a8793e60a901da44b9ab315931699e64a4f3eddb8aba839fe860de46dc
ec5b083c017570f846f6925b7c79d9e5886525a9b7ba7e514dabad0325c0af5e
C2Server:
193.42.32.87
85.31.45.101
源地址:https://liansecurity.com/#/main/news/RGt-ZocBrFZDfCElrqy8/detail