网络安全公司 Lookout 近日披露,朝鲜黑客组织 APT37(又名 ScarCruft)利用一款名为“KoSpy”的新型安卓间谍软件,通过至少五款恶意应用成功渗透 Google Play 官方应用商店和第三方应用商店 APKPure。该恶意软件伪装成常用工具,窃取用户隐私数据,且自 2022 年 3 月以来一直活跃,手段隐蔽,危害极大。
KoSpy 攻击流程与技术细节
-
伪装上架与传播: APT37 将 KoSpy 伪装成正常应用,包括:
这些应用被上传至 Google Play 和 APKPure。其中,“카카오 보안”完全不提供承诺的功能,仅用于骗取权限。 APT37 可能通过以下方式传播这些恶意应用:
- 虚假广告:
在社交媒体、论坛等平台发布虚假广告,诱导用户下载。 - 短信/即时消息链接:
通过短信、即时消息等方式发送恶意链接,诱骗用户点击。 - 水坑攻击:
入侵用户经常访问的网站,并在网站上植入恶意下载链接。 -
文件管理器 (File Manager, com.file.exploer) -
手机管家 -
智能管理器 -
安全工具 -
软件更新工具 (Software Update Utility) -
权限获取: 安装后,应用会请求大量权限,包括:
这些权限被 KoSpy 用于窃取用户隐私数据。其中,
BIND_ACCESSIBILITY_SERVICE
权限尤其危险,它可以让 KoSpy 监控用户在其他应用中的操作,包括记录键盘输入。 READ_SMS,
WRITE_SMS
: 读取和发送短信READ_CALL_LOG,
WRITE_CALL_LOG
: 读取和修改通话记录ACCESS_FINE_LOCATION,
ACCESS_COARSE_LOCATION
: 获取精确或粗略位置READ_EXTERNAL_STORAGE,
WRITE_EXTERNAL_STORAGE
: 读取和写入外部存储RECORD_AUDIO: 录制音频
CAMERA: 使用摄像头
BIND_ACCESSIBILITY_SERVICE: 绑定辅助功能服务
-
后台运行与数据窃取: KoSpy 在后台持续运行,执行以下操作:
-
拦截短信和通话记录 -
实时跟踪 GPS 位置 -
读取和窃取本地文件 -
使用麦克风录音 -
使用摄像头拍照和录像 -
截屏 -
利用 Android 辅助功能服务记录键盘输入 -
数据回传与控制:
- Firebase Firestore:
KoSpy 使用 Firebase Firestore 作为数据中转站。Firebase Firestore 是 Google 提供的 NoSQL 云数据库,具有易于使用、实时同步等特点。攻击者利用 Firebase Firestore 存储窃取的数据,并从 C2 服务器获取配置信息。这使得攻击者可以轻松地管理和更新恶意软件,同时也增加了追踪和溯源的难度。 - C2 服务器 (Command and Control Server):
攻击者用于远程控制 KoSpy 的服务器。KoSpy 从 C2 服务器获取加密的配置文件,并根据配置文件中的指令执行相应操作。 - AES 加密:
KoSpy 使用硬编码的 AES 密钥对窃取的数据进行加密,然后再上传至 Firebase Firestore 和 C2 服务器。 -
反检测技术:
-
检查设备型号、制造商、IMEI 等信息是否为模拟器的特征值。 -
检查是否存在特定的模拟器文件或进程。 -
检查传感器数据(如 GPS、加速度计)是否异常。 - 反模拟器检测:
KoSpy 会检测自身是否运行在模拟器环境中。常见的检测方法包括: - 动态控制:
KoSpy 可以从 C2 服务器接收指令,动态开启或关闭某些功能,甚至下载新的恶意载荷,从而逃避安全软件的检测。 - 代码混淆:
雖然文章中未提及,但 APT37 可能會使用程式碼混淆技術來增加靜態分析的難度。
部分代码示例(推测):
虽然 Lookout 没有公布 KoSpy 的完整代码,但我们可以根据其功能推测部分代码片段:
// 获取 AccessibilityService 权限
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivity(intent);
// 使用 AccessibilityService 监听按键事件(AccessibilityService 类中)
public void onAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) {
CharSequence text = event.getText();
// 将 text 发送到 C2 服务器
}
}
// 使用 AES 加密数据
public static String encrypt(String data, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // 更具体的 AES 模式
cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(new byte[16])); // 使用 IV
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
return Base64.encodeToString(encryptedBytes, Base64.DEFAULT);
}
(注意: 这只是基于常见间谍软件功能的
推测 代码, 并非 KoSpy 的真实代码. 真实的恶意代码会更加复杂和隐蔽.)
APT37 与 APT43:朝鲜网络间谍活动
APT37 (ScarCruft) 和 APT43 都是朝鲜政府支持的黑客组织,长期从事网络间谍活动,窃取情报和破坏网络。
安全建议
- 谨慎下载应用:
尽量从官方应用商店下载,仔细检查权限。 - 启用 Google Play Protect:
自动扫描并阻止恶意应用。 - 安装安全软件:
安装移动安全软件并定期扫描。 - 手动卸载:
如安装了上述应用,请立即手动卸载。必要时恢复出厂设置。 - 警惕钓鱼:
不要点击可疑链接或下载未知附件。
Google 已从 Google Play 中移除了这些恶意应用,并下架了相关的 Firebase 项目。Google Play Protect 也可以自动保护用户。
原文始发于微信公众号(技术修道场):深入剖析:朝鲜APT37利用KoSpy间谍软件渗透Google Play,技术手段与防护
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论