IBM X-Force研究人员发现一款安卓恶意软件使用TrickBot木马来感染用户。该app被命名为TrickMo,可以绕过银行交易认证所用的双因子认证和强认证。研究人员分析认为TrickMo仍然在开发中,目前主要攻击德国用户。德国也是TrickBot最早出现的地方。
桌面木马和移动组件
木马尝试注入移动设备的过程至少有十年的历史。当用户在桌面感染了Trickbot这样的恶意软件后,就会看到一个请求移动设备操作系统类型和电话号码的web注入。然后,如果表明使用的是安卓设备,木马就会用web注入伪装成银行欺骗受害者安装伪造的安全app。该app的目的就是获取和使用登入网上银行网站所需的安全验证码。
研究人员分析发现恶意安卓app最可能是通过TrickBot传播的,因此将其命名为TrickMo。TrickMo也是交易认证码窃取恶意软件中最新的版本,其主要功能有:
· 窃取个人设备信息
· 拦截SMS消息
· 记录定向应用的一次性密码
· 锁定手机
· 从设备上窃取图片
· 自毁和移除
因为银行会发布更多的高级安全措施,银行恶意软件也在不断地更新。比如,TrickMo可以打破最新的一次性密码方法。
恶意软件分析
研究人员分析发现TrickMo滥用了accessibility服务。任意app可以请求accessibility权限,并实现屏幕读取、修改对象大小和颜色、听力增强等功能。近年来,许多恶意安卓应用都在攻击场景中使用了accessibility服务。
安装成功后,TrickMo组件就会打开和发送视图开启用accessibility设置活动,让用户授予其accessibility权限,然后使用accessibility服务进行恶意活动,涉及的恶意活动包括:
· 防止用户卸载app;
· 修改设备的设置使其成为默认SMS APP;
· 监控当前运行的应用程序;
· 擦除屏幕上的文本。
安卓操作系统中包含许多需要同意或拒绝的对话框,程序根据用户在屏幕上的按钮或输入来执行动作。TrickMo用户使用accessibility服务来识别和控制部分屏幕,并在给与用户选择之前自己先做出选择。
在下图中,可以看到恶意软件可以在呈现给用户对话框时检测到,并根据预定义的选择让用户做出选择。
图 2: accessibility服务中自动按键的函数
TrickMo的驻留能力
TrickMo与常见的安卓恶意软件不同,它注册了一个监听“android.intent.action.SCREEN_ON”和“android.provider.Telephony.SMS_DELIVER” 广播动作的接收器。然后用AlarmManager来设置一个暂停的intent来在预定义的时间后运行自己的服务。换句话说,TrickMo的服务会在设备设备交互或接收到新的SMS消息后启动。
图 3:当接收到SCREEN_ON广播后启动恶意软件服务
配置
TrickMo用共享的preference机制来保存恶意软件运行时使用的设置和数据。其中一些设置是布尔值,表示一些可以被C2服务器或SMS消息关闭的特征,可以有效地指导恶意软件执行特定任务。
其中一些设置包括:
· C2服务器的URL;
· 服务唤醒的时间间隔;
· 重要的package名;
· Accessibility权限状态;
· 锁定屏幕状态;
· 录音状态;
· SMS APP状态;
· Kill switch状态。
混淆
为了隐藏自己,阻止研究人员分析,TrickMo使用了混淆器来混淆函数、类和变量的名。2020年1月的一个TrickMo版本中就含有检查app是否运行在root设备或模拟器上的代码来防止被分析。
如下图所示,可以看到加密和解密的共享preference文件,使用java “PBEWithMD5AndDES”算法进行加密。
图 4: TrickMo的加密和解密的共享preference文件
C2通信
窃取设备数据
为了与master主机进行通信,TrickMo的代码中含有一个硬编码的C2服务器URL地址。运行后,会通过非加密的HTTP请求周期性地连接到指定的服务器,并通过JSON对象发送含有受害者手机数据。窃取的数据包括:
· ID
· IMSI
· IMEI
· 手机号
· 运营商
· AID
· 型号
· 品牌
· 版本
· Build
· 电池电量
· Wi-Fi 连接状态
· 唤醒时间
· 恶意软件是否被设置为默认的SMS应用?
· 信号强度
· 屏幕尺寸
· 安装的应用列表
· 设备上保存的SMS消息
窃取和隐藏SMS消息
一些银行使用基于SMS的交易认证,TrickMo也被配置为周期性地窃取保存在设备上的SMS消息。
恶意软件会发送一个含有收集的设备数据和所有保存的SMS消息的包到C2服务器。因此使用了accessibility服务来将恶意软件设置为默认的SMS app,所以可以删除那些只有攻击者可以看到的SMS消息。
图 5: 发送到TrickMo C2服务器的设备数据和SMS消息
通过窃取的SMS建立的通信信道
此外,TrickMo还有一个自动发送SMS消息到C2服务器的机制。
在一些样本中,恶意软件使用该机制来发送重要动作的日志数据。恶意软件可以在设备上保存一个SMS消息,在收集号码域标记为internal。SMS消息就会例可发送给服务器,通知恶意软件运营者执行的任务。
下图是TrickMo发送给服务器的日志。如果恶意软件成功成为默认的SMS app,就会发送俄语的“the app has been replaced”。如果原始SMS app被复原了,就会发送“the app returned to its original place”。
图 6: 发送给攻击者C2服务器的SMS提供者替换日志
控制TrickMo
TrickMo的运营者可以通过2个信道控制恶意软件:
· 使用JSON对象通过明文的HTTP协议通过C2服务器;
· 通过加密的SMS消息。
有一些预定义的命令可以修改恶意软件的配置,使其执行特定的任务。包括:
· SMS控制
- 更新C2服务器地址——以http://开头的SMS
- 发送AES加密的SMS消息给发送者——以“sms://”开头的SMS
- 更新服务唤醒间隔——2
- Kill switch——4
· C2控制
- 更新C2服务器地址——1
- 更新服务唤醒间隔——2
- 锁定屏幕——5
- 在webview中展示一张来自任意URL的图片——11
- 发送任意SMS消息——8
- 窃取设备上保存的图片——12和13
- 用accessibility设置默认SMS app——6
- Kill switch——4
更多技术细节参见:
本文翻译自:https://securityintelligence.com/posts/trickbot-pushing-a-2fa-bypass-app-to-bank-customers-in-germany/如若转载,请注明原文地址