TrickMo:TrickBot变种绕过双因子认证

 ang010ela 嘶吼专业版


TrickMo:TrickBot变种绕过双因子认证

IBM X-Force研究人员发现一款安卓恶意软件使用TrickBot***来感染用户。该app被命名为TrickMo,可以绕过银行交易认证所用的双因子认证和强认证。研究人员分析认为TrickMo仍然在开发中,目前主要***德国用户。德国也是TrickBot最早出现的地方。

TrickMo:TrickBot变种绕过双因子认证

桌面***和移动组件

***尝试注入移动设备的过程至少有十年的历史。当用户在桌面感染了Trickbot这样的恶意软件后,就会看到一个请求移动设备操作系统类型和电话号码的web注入。然后,如果表明使用的是安卓设备,***就会用web注入伪装成银行欺骗受害者安装伪造的安全app。该app的目的就是获取和使用登入网上银行网站所需的安全验证码。

研究人员分析发现恶意安卓app最可能是通过TrickBot传播的,因此将其命名为TrickMo。TrickMo也是交易认证码窃取恶意软件中最新的版本,其主要功能有:

· 窃取个人设备信息

· 拦截SMS消息

· 记录定向应用的一次性密码

· 锁定手机

· 从设备上窃取图片

· 自毁和移除

因为银行会发布更多的高级安全措施,银行恶意软件也在不断地更新。比如,TrickMo可以打破最新的一次性密码方法。

TrickMo:TrickBot变种绕过双因子认证

恶意软件分析

研究人员分析发现TrickMo滥用了accessibility服务。任意app可以请求accessibility权限,并实现屏幕读取、修改对象大小和颜色、听力增强等功能。近年来,许多恶意安卓应用都在***场景中使用了accessibility服务。

安装成功后,TrickMo组件就会打开和发送视图开启用accessibility设置活动,让用户授予其accessibility权限,然后使用accessibility服务进行恶意活动,涉及的恶意活动包括:

· 防止用户卸载app;

· 修改设备的设置使其成为默认SMS APP;

· 监控当前运行的应用程序;

· 擦除屏幕上的文本。

安卓操作系统中包含许多需要同意或拒绝的对话框,程序根据用户在屏幕上的按钮或输入来执行动作。TrickMo用户使用accessibility服务来识别和控制部分屏幕,并在给与用户选择之前自己先做出选择。

在下图中,可以看到恶意软件可以在呈现给用户对话框时检测到,并根据预定义的选择让用户做出选择。

TrickMo:TrickBot变种绕过双因子认证

图 2: accessibility服务中自动按键的函数

TrickMo:TrickBot变种绕过双因子认证TrickMo的驻留能力

TrickMo与常见的安卓恶意软件不同,它注册了一个监听“android.intent.action.SCREEN_ON”和“android.provider.Telephony.SMS_DELIVER” 广播动作的接收器。然后用AlarmManager来设置一个暂停的intent来在预定义的时间后运行自己的服务。换句话说,TrickMo的服务会在设备设备交互或接收到新的SMS消息后启动。

TrickMo:TrickBot变种绕过双因子认证图 3:当接收到SCREEN_ON广播后启动恶意软件服务

TrickMo:TrickBot变种绕过双因子认证配置

TrickMo用共享的preference机制来保存恶意软件运行时使用的设置和数据。其中一些设置是布尔值,表示一些可以被C2服务器或SMS消息关闭的特征,可以有效地指导恶意软件执行特定任务。

其中一些设置包括:

· C2服务器的URL;

· 服务唤醒的时间间隔;

· 重要的package名;

· Accessibility权限状态;

· 锁定屏幕状态;

· 录音状态;

· SMS APP状态;

· Kill switch状态。

混淆

为了隐藏自己,阻止研究人员分析,TrickMo使用了混淆器来混淆函数、类和变量的名。2020年1月的一个TrickMo版本中就含有检查app是否运行在root设备或模拟器上的代码来防止被分析。

如下图所示,可以看到加密和解密的共享preference文件,使用java “PBEWithMD5AndDES”算法进行加密。

TrickMo:TrickBot变种绕过双因子认证

TrickMo:TrickBot变种绕过双因子认证

图 4: TrickMo的加密和解密的共享preference文件

TrickMo:TrickBot变种绕过双因子认证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消息。

TrickMo:TrickBot变种绕过双因子认证图 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”。

TrickMo:TrickBot变种绕过双因子认证

TrickMo:TrickBot变种绕过双因子认证

图 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/

TrickMo:TrickBot变种绕过双因子认证

上一篇:TrickMo:TrickBot变种绕过双因子认证


下一篇:Kafka分区分配策略(Partition Assignment Strategy)