导语:我们决定研究Asacub家族的一位现代成员,即最新版本的木马程序。这款木马的设计意图是窃取与俄罗斯最大银行之一的移动银行服务连接的安卓设备用户的资金。
2015年,我们第一次发现了Trojan-Banker.AndroidOS.Asacub家族,并对其第一个版本的恶意软件进行了检测、分析,然后发现与窃取资金相比,该恶意软件更擅长间谍活动。自那以后,该木马程序在其创造者的大规模发布活动(2017年春夏)的帮助下不断进化,并促使Asacub在去年移动银行木马攻击次数排行榜上拔得头筹,超过了Svpeng和Faketoken等其他家族。
因此,我们决定研究Asacub家族的一位现代成员,即最新版本的木马程序。这款木马的设计意图是窃取与俄罗斯最大银行之一的移动银行服务连接的安卓设备用户的资金。
Asacub版本
木马程序的核心部分是版本号,由两个或三个数字组成,以句号隔开。编号似乎在第9版之后重新开始。
Asacub这个名字在2015年末与版本4一起出现;以前的版本被称为Trojan-SMS.AndroidOS.Smaps。版本5.X.X-8.X.X在2016年很活跃,版本9.X.X-1.X.X在2017年也很活跃。在2018年,最活跃的发行版本是5.0.0和5.0.3。
与C&C通信
虽然Asacub的功能不断进化,但其网络行为,及其与命令与控制(C&C)服务器的通信方式变化不大。这有力的表明,该类银行木马虽然在功能上有所不同,但属于同一家族。
在POST请求的主体中,数据总是通过HTTP以加密的形式发送到C&C服务器,然后到相对地址 /something/index.php。在早期的版本中,相对路径的某些部分是局部可解的,单词和字母短组合的随机混合,以及下划线隔开的数字,例如“bee_bomb”或“my_te2_mms”。
Asacub一个早期版本流量示例(2015年)
传输和接收的数据使用RC4算法进行加密,并使用base64标准进行编码。C&C地址和加密密钥(一个用于不同的修改版本4.x 和 5.x,在后期版本中C&C是不同的)被放进木马程序内。在Asacub的早期版本中,.com、.biz、.info、.in、.pw被用作顶级域名。在2016版中,用户代理头的值发生了变化,URL中生成相对路径的方法也发生了变化:/index.php前面的部分是一个可发音(如果不是完全有意义的话)的单词和随机字母和数字的组合,例如“muromec280j9tqeyjy5sm1qy71”或“parabbelumf8jgybdd6w0qa0”。此外,来自C&C服务器的输入流量开始使用gzip压缩,所有C&C的顶级域名为.com:
自2016年12月以来,C&C通信方式的变化只影响了URL中相对路径的生成方式:可发音的单词被相当长的字母和数字的随机组合所取代,如“ozvi4malen7dwdh”或“f29u8oi77024clufhw1u5ws62”。在撰写本文时,还没有观察到Asacub网络行为的其他显著变化:
Asacub的起源
可以相当肯定地说,Asacub家族是由Trojan-SMS.AndroidOS.Smaps演变而来的。两个家族的木马程序与各自的C&C服务器之间的通信基于相同的原则,木马程序发送网络请求的相对地址以类似的方式生成,两个家族的木马程序可执行的可能命令组也有重叠。更重要的是,Asacub版本的编号是Smaps系统的延续。主要的区别是Smaps以纯文本的形式传输数据,而Asacub使用RC4算法加密数据,然后将其编码为base64格式。
让我们比较一下Smaps和Asacub的流量示例——一个向C&C服务器初始化的请求,其中该请求包含关于被感染设备的信息;以及来自服务器的响应,该响应包含一个执行命令:
smap请求
Asacub请求
来自Asacub流量解密数据:
{“id”:”532bf15a-b784-47e5-92fa-72198a2929f5″,”type”:”get”,”info”:”imei:365548770159066, country:PL, cell:Tele2, android:4.2.2, model:GT-N5100, phonenumber:+486679225120, sim:6337076348906359089f, app:null, ver:5.0.2″}
发送到服务器的数据
[{“command”:”sent&&&”,”params”:{“to”:”+79262000900″,”body”:”\u0410\u0412\u0422\u041e\u041f\u041b\u0410\u0422\u0415\u0416 1000 50″,”timestamp”:”1452272572″}}, {“command”:”sent&&&”,”params”:{“to”:”+79262000900″,”body”:”BALANCE”,”timestamp”:”1452272573″}}]
从服务器接收的指令
比较Asacub和Smaps将来自设备的传入SMS(用base64算法编码)转发到C&C服务器的格式:
smap格式
Asacub格式
来自Asacub流量的解密数据:
{“data”:”2015:10:14_02:41:15″,”id”:”532bf15a-b784-47e5-92fa-72198a2929f5″,”text”:”SSB0aG91Z2h0IHdlIGdvdCBwYXN0IHRoaXMhISBJJ20gbm90IGh1bmdyeSBhbmQgbmU=”,”number”:”1790″,”type”:”load”}
传播
银行木马通过钓鱼SMS(短信)传播,钓鱼SMS中包含一个链接和查看照片或彩信(MMS)的提议。该链接指向一个带有类似语句的网页,以及一个用于将木马的APK文件下载到设备的按钮。
木马下载窗口
Asacub以MMS应用程序或热门免费广告服务的客户端为幌子进行伪装。我们发现了Photo、 Message、Avito Offer以及MMS Message。
Asacub将自己隐藏在App图标下
Trojan的APK文件是从mmsprivate[.]site、photolike[.]fun、you-foto[.]site和 mms4you[.]me类似网站下载的,命名格式如下:
· photo_[number]_img.apk,
· mms_[number]_img.apk
· avito_[number].apk,
· mms.img_[number]_photo.apk,
· mms[number]_photo.image.apk,
· mms[number]_photo.img.apk,
· mms.img.photo_[number].apk,
· photo_[number]_obmen.img.apk.
要安装木马程序,用户必须在设备设置中允许安装来自未知来源的应用程序。
感染
在安装期间,根据木马程序的版本不同,Asacub会提示用户获得设备管理员权限或允许使用AccessibilityService。在获得权限后,它将自己设置为默认的SMS应用程序,并从设备屏幕上消失。如果用户忽略或拒绝请求,每隔几秒钟窗口就会重新打开。
木马程序请求设备管理员权限
木马程序请求允许使用AccessibilityService
安装后,木马程序开始与网络犯罪者的C&C服务器通信。所有数据都以JSON格式传输(解密后)。它包括关于智能手机模型、操作系统版本、移动运营商和木马程序版本的信息。
让我们深入了解一下2018年传播最广的版本——Asacub 5.0.3。
发送到服务器的数据结构:
{ “type”:int, “data”:{ data }, “id”:hex }
从服务器接收的数据结构:
{ “command”:int, “params”:{ params, “timestamp”:int, “x”:int }, “waitrun”:int }
首先,木马向服务器发送设备信息:
{ “type”:1, “data”:{ “model”:string, “ver”:”5.0.3″, “android”:string, “cell”:string, “x”:int, “country”:int,//optional “imei”:int//optional }, “id”:hex }
在响应中,服务器发送执行命令的代码(“命令”)、参数(“params”)和执行前的时间延迟(“waitrun”,以毫秒为单位)。
嵌入木马程序内的命令列表:
不同种类的Asacub最显著的区别就是可能的命令集。在本文研究的2015- 2016年初版本中,JSON格式的C&C指令包含了文本形式的命令名(“get_sms”、“block_phone”)。在以后的版本中,被传输的不再是命令的名称,而是它的数字代码。相同的数字代码对应不同版本中的一个命令,但是支持的命令集不同。例如,9.0.7(2017)版本提供了以下命令集:2、4、8、11、12、15、16、17、18、19、20。
在收到命令后,在通知C&C执行状态和任何接收数据之前,木马程序就试图执行该命令。“data”块中的“id”值与相关命令的“timestamp”值相等:
{ “type”:3, “data”:{ “data”:JSONArray, “command”:int, “id”:int, “post”:boolean, “status”:resultCode }, “id”:hex }
另外,木马程序将自己设置为默认的SMS应用程序,并且在接收到新的SMS后,将发送方的号码和base64格式的消息文本转发给网络犯罪者:
{ “type”:2, “data”:{ “n”:string, “t”:string }, “id”:hex }
因此,Asacub可以使用银行卡号或手机号码,发送将资金转移到另一个账户的短信,从而将资金从与该手机号码绑定的银行卡上提取出来。此外,该木马程序还拦截了来自银行的短信,这些短信包含一次性密码以及关联银行卡余额的信息。一些版本的木马程序可以自动从这类短信检索确认码,并将它们发送到所需的号码。更重要的是,用户无法通过手机银行查询余额或者更改设置,因为在收到代码40的命令后,木马程序会阻止银行app在手机上运行。
在安装期间木马程序创建的用户消息通常包含语法和拼写错误,并使用了Cyrillic字母和拉丁字母的混合。
该木马程序还使用了各种混淆方法:从最简单的,比如字符串连接以及类和方法重命名,以便在本地代码中实现功能,并在APK文件中的C/C++嵌入SO库,这需要使用额外的工具或去混淆动态分析,因为大多数Android应用程序的静态分析工具只支持Dalvik字节码。在Asacub的某些版本中,应用程序中的字符串使用与发送到C&C的数据相同的算法进行加密,但加密使用的密钥不同。
使用本机代码进行混淆的示例
使用字符串连接进行混淆的示例
Trojan中加密字符串的示例
Asacub的传播地图
Asacub主要针对的是俄罗斯用户,98%的感染(22.5万)发生在俄罗斯,因为网络犯罪者专门针对俄罗斯一家大型银行的客户。该木马程序还攻击了乌克兰、土耳其、德国、白俄罗斯、波兰、亚美尼亚、哈萨克斯坦、美国和其他国家的用户。
总结
Asacub的案例表明,移动终端恶意软件可以在对传播方案进行最小更改的情况下运行数年。
其传播方式基本上就是通过垃圾短信:许多人仍然会点击可疑链接;从第三方来源安装软件;并且不加思索就允许应用程序使用。与此同时,网络犯罪分子不愿意改变与C&C服务器的通信方式,因为这比修改可执行文件需要付出更多的努力,而获得的好处反而更少。在该木马程序的演变过程中,最重要的变化是对设备和C&C之间发送的数据进行加密。也就是说,为了阻碍新版本的检测,木马程序的APK文件和C&C服务器域名会定期更改,并且下载木马程序的链接往往也是一次性的。
攻击指标
C&C IP 地址:
· 155.133.82.181
· 155.133.82.240
· 155.133.82.244
· 185.234.218.59
· 195.22.126.160
· 195.22.126.163
· 195.22.126.80
· 195.22.126.81
· 5.45.73.24
· 5.45.74.130
下载Trojan的IP 地址:
· 185.174.173.31
· 185.234.218.59
· 188.166.156.110
· 195.22.126.160
· 195.22.126.80
· 195.22.126.81
· 195.22.126.82
· 195.22.126.83