移动支付安全:银行业木马黑产报告
1. 背景
随着智能手机和各种数码终端的普及,移动支付已经融入到了人们的生活中,各种扫码支付、银行转账在手机上都能很简单完成。人们出行基本只需带上手机,就能在超市、美食店等消费场所进行消费,目前已步入到零现金支付时代。在移动支付给生活带来巨大便利的同时,移动支付安全也成为目前最热门的话题。
由于利益驱使,各类热门银行app早已被黑客作为攻击目标,从2014年劫持银行到目前通过so保护自身来劫持国内银行,其防止被反编译技术水平一直在提高。同时伴随着网络上出现的各种仿冒应用,使得用户对银行app真假难辨,为了保证用户自身财产安全,下载银行app应该从银行官方站点或正规站点获取。
2. 银行类木马概述
目前已知的银行类木马主要分为两大类:一类是仿冒应用,另一类是劫持类木马。
仿冒银行应用:主要通过伪装成为热门银行app进行获取用户银行账号信息,对用户的财产安全带来巨大危害、或者伪装成为嵌入广告的银行app来赚取广告费用,会对用户造成流量消耗,给用户带来一定损失。
劫持银行类木马:主要是通过Activity劫持某个或某些银行特定窗口,并启动自己伪装的银行界面覆盖原窗口界面,当用户输入个人账户信息时,则会被黑客获取到,给用户的财产造成损失。
3. 银行劫持类木马
3.1. 劫持技术简介
目前已知的app劫持技术主要可以分为Activity劫持、安装劫持、函数执行劫持等,下面对上述劫持技术介绍如下:
Activity劫持是指当启动某个特定窗口组件时,被木马探知,若该特定窗口界面是木马预设的攻击对象,木马将启动自己伪装的界面覆盖原特定窗口界面,在用户毫无察觉的情况下收集用户的个人隐私信息,并把数据回传给服务端。
安装劫持是指劫持木马通过监听android.intent.action.PACKAGE_ADDED和android.intent.action.PACKAGE_REPLACED 并实施intent攻击,主要攻击手段是卸载删除掉真正安装的apk,并替换为攻击者伪造的应用。通过伪装的应用来收集用户的个人隐私信息,并把数据回传到服务端。
函数执行劫持是劫持木马通过hook特定函数进行修改此函数功能,来实现对修改原app的返回数据等信息,通过劫持函数执行流程或结果来达到劫持木马攻击目的。
目前,对于热门银行类的劫持木马大多数采用Activity劫持,实施简单,效率高,所造成的危害巨大。
对目前已有木马库,其Activity劫持技术发展历史如图3-1所示:
图3-1 Activity劫持技术发展历史
3.2. 银行劫持木马的发展演变
通过对已有的银行劫持木马进行分类整合,发现其从最初期的劫持银行APP是通过伪装其对应银行界面来直接获取银行账户相关信息,到目前的so解密后在进行Activity劫持来实现钓鱼,在技术方面已经有了巨大的提升,具体演变历史以及相关木马如图3-2、表3-1所示:
图3-2 银行劫持类木马历史演变
发现时间
木马名称
木马描述
2014年8月
A.Privacy.fakechinaworld.a
该木马启动后隐藏图标,伪造建行界面,窃取用户(建行卡号、密码),信用卡申请信息(姓名、职业、月收入、身份证号、手机号码、申请额度),在用户不知情的情况下,通过频繁发送短信和联网的方式上传远程控制端,同时木马会屏蔽用户短信,转发短信,给用户手机造成严重危害。
2014年10月
A.Privacy.googleApp.a
该应用是一款伪装成“google appstore”的木马,木马的主要行为是开机启动,卸载安全软件,在用户未授权的情况下,私自获取用户手机号码、收件箱短信、通讯录联系人信息、用户手机银行账户信息、用户手机银行证书等信息,并联网发送到指定邮箱和指定远程服务器;私自向用户通信录的联系人发送短信,私自拦截用户手机短信接收,解析短信内容执行指定操作,例如:更换服务器地址和邮箱账号,屏蔽短信等操作,私自拦截用户来电,屏蔽指定号码来电。
2015年10月
A.Payment.googla.ca
该程序是一款嵌入木马的应用程序,嵌入程序的木马的主要行为是在用户不知情的情况下发送指定短信到指定的号码,并进行自动回复,疑似恶意扣费行为;私自后台获取用户手机号码、用户通讯录联系人、用户手机银行账户信息、用户手机银行证书等信息,联网上传至指定URL,构成隐私窃取行为;私自联网获取数据,并通过短信发送给用户手机联系人,具有恶意传播属性;拦截用户短信接收,屏蔽指定短信,构成系统破坏。
2016年3月
A.Privacy.googleservice.a
该程序是一款银行劫持类木马。该木马的主要在用户未知情的情况下私自上传用户隐私信息、银行账户信息到指定服务器,具有隐私窃取属性;木马在未经用户允许的情况下私自发送短信,具有资费消耗属性;木马在用户不知情的情况下私自拦截用户短信,具有系统破坏属性;木马在用户不知情的情况下有道用户激活设备管理器并私自隐藏启动图标以达到不能正常卸载,造成流氓行为属性。
2017年6月
A.Privacy.cnbank.a
该程序是一款劫持银行类的木马。该木马主要是在用户未知情的情况下私自上传用户隐私信息、银行账户信息到指定服务器,具有隐私窃取属性;在用户未授权的情况下,私自拦截用户接收短信,根据短信内容执行拦截短信,发送短信等指定操作,具有远程控制属性;木马在用户不知情的情况下私自删除短信,具有系统破坏属性;运行之后会诱导用户获取设备管理权限,具有诱骗欺诈属性。
表3-1 银行劫持类木马历史演变
3.3. 银行app劫持木马分析
目前在已有木马库中通过对银行类劫持木马的整合,随着不同时期的发展,Activity劫持类银行木马从未作任何防防止反编译到现在通过类似加固(so加密保护)来保护自身防止被反编译分析;通过so库来躲避杀毒软件的查杀,是以前银行劫持类木马的升级版本。目前劫持类的技术一直在升级,对抗也越来越强烈。
下面则对Activity劫持类银行木马进行剖析,主要的对比流程图如图3-3所示:
图3-3劫持技术对比
3.3.1. 木马技术原理
此类木马主要是在用户未知情的情况下私自上传用户隐私信息、银行账户信息到指定服务器,具有隐私窃取属性;在用户未授权的情况下,私自拦截用户接收短信,根据短信内容执行拦截短信,发送短信等指定操作,具有远程控制属性;木马在用户不知情的情况下私自删除短信,具有系统破坏属性;运行之后会诱导用户获取设备管理权限,具有诱骗欺诈属性。
3.3.1.1 so库解密
在MyApplication类中加载了libload.so库,并在attachBaseContext方法中调用了libload.so中的函数 run。对dex解密则是在run中进行完成,如图3-4所示。
图3-4对dex文件进行解密
Libload.so库中对应的解密函数run,主要是通过调用Libload.so库中的rrr方法来实现解密,只需在rrr方法中找到解密位置直接下断点,则可拷贝出解密完成的dex文件:
图3-5对dex文件进行解密
通过动静态调试分析可知,libload.so利用反射机制调用crypto模块来实现对mycode.so进行AES解密操作,解密后的文件重命名为mycode.jar。解密完成后利用函数DexClassLoader加载执行mycode.jar,当加载完成后则会直接删除mycode.jar。故而在删除之前我们直接拷贝出解密后的文件mycode.jar,后面则可以对解密出来的文件进行静态分析。
拷贝出来的解密文件如图3-6所示:
图3-6解密之后的dex文件
3.3.1.2 防止卸载
激活设备管理器,防止被卸载,具体代码如图3-7所示
图3-7激活设备管理器
3.3.1.3 上传用户隐私
木马私自获取用户sim卡序列号、手机号码、手机型号、系统版本、手机运营商等信息,以json格式上传到到服务器,如图3-8所示。
图3-8上传设备信息
木马通过界面诱骗用户输入银行信息,之后打包用户信息,并通过邮件的方式上传用户输入的信息到指定邮箱。
获取用户输入信息并拼装,具体代码如图3-9所示:
图3-9获取用户输入信息
将用户银行信息写入到指定文件并压缩,并且通过邮件的方式发送到指定邮箱,如图3-10、图3-11所示。
图3-10打包信息并发送邮件
SH_1409295118134.txt内容:
图3-11获取的用户信息
针对交通银行、招商的钓鱼行为:
木马利用伪装页面私自获取用户的sim卡序列号、手机号码、登录密码等后,以json的格式上传到服务器。
招商银行对应的上传服务器:
3.3.1.4 劫持银行客户端
1) 劫持韩国银行
木马会劫持韩国银行APP的当前活动界面,伪造韩国银行界面,诱导用户输入银行账号相关的信息,例如:银行账号、密码等敏感信息,将用户银行信息写入到指定文件SH_1409295118134.txt并压缩,并且通过邮件的方式发送到指定邮箱,具有信息窃取和诱骗欺诈行为。
韩国多个手机银行APK包名,以及韩国手机银行对应的缩写如图3-12所示、图3-13所示:
图3-12韩国银行包名列表
图3-13韩国银行缩写
利用Activity劫持技术来查找用户手机使用的银行软件,设置相应的参数,启动伪造窗口,具体代码如图3-14、图3-15所示。
图3-14判断当前运行应用
伪造韩国银行界面,诱导用户输入银行账号相关的信息:
图3-15伪造银行界面
2) 劫持国内银行
木马会检测手机当前活动界面是否为中国邮政储蓄银行、交通银行、招商银行,如果检测到其中一个,则会直接打开其对应的伪造界面进行钓鱼,如图3-16所示。
图3-16启动钓鱼页面
伪装交通银行、招商银行的劫持界面,如图3-17所示:
图3-17伪造钓鱼页面
3.3.1.5 远程控制技术
木马拦截用户短信接收,解析短信内容,根据短信内容指定操作,如表3-2所示。
指令
功能信息
000#
“inter”的值为1,拦截广播,上传手机信息到服务器
0#
“inter”的值为0,拦截广播
555#
拦截广播,上传短信信息到邮箱
表3-2远程控制列表
当短信内容是“000#”,设置配置文件“inter”的值为1,拦截广播;当短信内容是“0#”,设置配置文件“inter”的值为0,拦截广播;当短信内容是“555#”,收集用户本机短信,并上传到邮箱,拦截广播,如图3-18所示。
图3-18远控操作代码
短信内容为控制命令“000#”时设置了“inter”为“1”,则以json格式上传用户手机sim卡序列号、手机号码、短信内容,发送者、发送时间到服务器,如图3-19所示。
图3-19远控操作代码
3.3.1.6 转发并删除短信
木马在用户不知情的情况下,私自拦截转发短信,并删除短信,如图3-20所示。
图3-20拦截用户短信
3.3.1.7 检测并卸载杀毒软件
私自扫描用户当前安装的应用程序,并且卸载手机指定的安全产品:”AhnLab V3 Mobile Plus 2.0″(韩国的一款手机安全产品),如图3-21所示。
图3-21诱导用户卸载安全软件
3.3.2 木马劫持技术总结
通过类似so加固动态解密的方法来防止被反编译,确实给逆向分析来一定困难。相比之前未作任何加解密操作的劫持程序,劫持原理都一样,但是在分析其原理的时候,则需要花更多的时间去研究其解密方式。so库动态加载解密数据还原技术还能防止绝大多少杀毒软件的静态检测,有效的防止了被杀毒软件检测为木马。感染这样的木马后,则会导致大多数杀毒软件很难以最快速度来判定其恶意性,这样则会给受害者的个人钱财带来巨大的损失;对整个移动端的银行app来极大的影响。
核心技术都是在java层实现劫持各类银行,目前升级为so库加载实现解密数据代码段,从而在解密后的java层中实现对各类银行的劫持。
3.3.3 溯源分析
黑客溯源主要是通过提木马中相关联的信息,包括上传隐私地址及邮箱等信息,通过对以上信息进行数据过滤、筛选和家族关联,然后对数据整合并进行网络追踪,达到定位具体黑客,从源头打击的目的。
具体溯源流程下图所示:
图:溯源流程
3.3.3.1 提取样本信息
域名/IP信息:103.**.**.147
邮箱帐号: ***@126.com
邮箱密码: dd***ab
3.3.3.2 对域名/IP信息溯源
对IP信息:103.**.**.147进行同IP网站查询,关联到9个域名信息曾经指向过此IP(如下图所示),经过whois域名信息查询,其中此主域名:***.com设置了隐私保护,通过其子域名的命名带有control字样极有可能是正查找的犯罪嫌疑人,由于其设置了隐私保护,没法继续去深挖下去,如图3-22所示。
图3-22 WHOIS查询结果
对于***.wang进行whois查询,发现其预留的注册者为* kunyi(*坤一),其联系电话为138***233,暂未获取到其他有价值的信息,WHOIS查询结果如题3-23所示。
此嫌疑人:* kunyi(*坤一) 电话:138***233 可能性30%
图3-23 “hdzz.wang”WHOIS查询结果
对***.win和***.cn进行whois查询,发现其是同一个注册者为张浩,预留的邮箱为:***@qq.com,如图3-14所示。对其邮箱信息关联支付宝,发现其注册了支付宝并且实名认证叫*浩,对其QQ号50***29进行搜索发现,其在百度贴吧中预留联系方式帮人代考计算机一级证书,此说明其具有计算机基础。
此嫌疑人:*浩 支付宝/邮箱:50***29@qq.com 可能性:60%
图3-24 “***.win”WHOIS查询结果
其在贴吧中想替人带考一级证书所预留的联系方式,如图3-25所示:
图3-25 预留联系方式
3.3.3.3 对邮箱信息溯源
首先已知的邮箱帐号密码去登录126网易免费邮箱时,发现密码已被修改,无法从此邮箱帐户信息去关联放马嫌疑人的信息。
然后通过邮箱z***44@126.com在目前已有的木马库中去关联样本,发现了MD5:f5246a6aeb4cfe56ee400c8a8ac4ca58的样本,分析此样本并从其提取到了另外一个新邮箱信息(邮箱帐号:***@126.com,密码:2***8)和手机信息(183***246),如图3-26所示。
图3-26 预留手机号码和邮箱
登录邮箱***@126.com后,通过分析其邮箱中邮件的数据,发现此邮箱注册了Apple ID、支付宝、淘宝、Facebook等相关的帐号。注册了如此多并且重要的帐户,试想此邮箱帐号被盗了后,其对自身造成的后果非常严重,其邮箱未被盗取的可能性为80%,下面则随着这条线索关联下去。通过对比样本的流出时间,发现此样本(md5: f5246a6aeb4cfe56ee400c8a8ac4ca5)仅仅只是作为测试所用,在邮箱中发现的测试数据都是英文描述(与后面生活与洛杉矶等大致吻合)。
进入到疑似犯罪嫌疑人的邮箱中,发现其测试数据及稳定运行后的窃取数据,如图3-27所示:
图3-27 用户信息
下面我们关联facebook帐号,通过搜索邮箱***@126.com能直接搜索到Xia (实名:*夏),查看其备注资料,性别女,发现其曾就职于西安外国语大学,现居地洛杉矶,具体如图3-28、图3-29所示。
图3-28 facebook上的基本信息
图3-29疑似犯罪嫌疑人的照片
通过邮箱***@126.com关联支付宝信息,通过之前的所获取的信息和邮箱中的数据,可以确定其真实姓名为*夏,陕西西安人,具体如图3-30所示。
姓名:*夏 性别:女 支付宝帐号:***@126.com 陕西西安人
图3-30疑似犯罪嫌疑人的照片
3.3.3.4 溯源结果
通过已有信息在样本库中进行关联,追溯到了疑似嫌疑人三个:* kunyi(*坤一)(30%)、*浩(60%)、*夏(80%);对于疑似嫌疑人丁夏(可能性:80%),对这类样本其经历了木马测试期、木马稳定期、木马伪装加固(so加密dex)等阶段,对抗主流的杀毒软件,此木马开发者一直在对技术进行更新。
1号疑似犯罪嫌疑人(可能性:80%)
姓名:*夏
性别:女
支付宝帐号:**@126.com(同时也是facebook帐号)
所属地区:陕西西安人
2号疑似犯罪嫌疑人(可能性:60%)
姓名:*浩
支付宝/邮箱:50***29@qq.com
所属地区:江苏 常州
3号疑似犯罪嫌疑人(可能性:30%)
姓名:* kunyi(*坤一)
电话:138**233
所属地区:山东 济宁
3.3.4 劫持银行分类
针对目前已有的劫持类样本,对其主要可以分为2大类:劫持国内银行和劫持韩国银行。目前劫持国内银行的技术水平在不断的升级,而对于劫持韩国银行则是在2014年处于高速发展阶段,目前阶段则未捕捉到新型变种样本。对劫持银行类木马的占有率如图3-31所示:
图3-31劫持银行分类
4 银行仿冒类应用
4.1. 国内银行仿冒应用
对目前木马库中所包含的国内银行仿冒应用进行统计,可以发现主要以中信银行、农业银行、余额宝、广大银行等为主,因为这几款app在国内使用率较高,才被仿冒开发者所盯上。国内主流银行基本都被各种仿冒、各种山寨,就连这种余额宝、蚂蚁花呗这种目前主流的支付端都存在大量的仿冒应用。对已有的仿冒样本进行汇总,如图4-1、图4-2所示:
图4-1仿冒国内银行应用
图4-2仿冒国内银行占比
4.2. 国内外银行仿冒应用
针对木马库中所有的仿冒银行进行汇总分类,发现仿冒国外银行主要以韩国银行为主,国内银行则以农业银行、光大银行、中信银行为主。随着目前各种银行app使用所带来的便捷,通过仿冒银行获取的金额则非常可观,在巨额利益的驱使下各种仿冒开发者百花齐放,各式各样的仿冒银行软件在网络上散播着,这就是导致各种银行仿冒越来越多的原因;国内外仿冒所占比例如图4-3所示:
图4-3仿冒国外银行占比
5 防御措施
由于这类银行木马会对用户个人钱财带来巨大损失,因此必须从源头来遏制住这样的危害。下面有几种防御措施:
1) 从正规网站上下载银行类的APP,对于不确信是否是安全的APP则拒绝安装。
2) 安装好杀毒软件,能有效的识别已知的木马。
3) 对于那些申请特殊权限尤其是短信读写、打电话及激活设备管理器的APP则需要谨慎使用。
4) 对于异常转账、扣费,请及时冻结银行账号,同时申请报案。
6 总结
虽然银行类木马技术含量不高,却可以对用户的个人钱财带来严重损失,其威胁不可小觑。对于银行劫持类木马,从最早2014年出现的简单劫持银行木马到最近出现的“so库加密保护”类银行劫持木马,这三年多的时间里,虽然劫持银行的木马各种各样,但主要的劫持技术仍以Activity劫持为主;目前so库加密实现自我保护的技术在增强,在其核心技术不变的情况下,研究人员只需花多花时间找到其解密位置,则能直接获取其解密后的dex,就能直接了解木马作者的劫持思路。然而对于银行仿冒应用,主要是从获取源头来进行遏制就能有效的杜绝,从正规网站或者正规渠道获取银行类app才能确保万无一失。
随着Android平台的日益普及,面向移动终端的劫持银行软件也日渐增多;随着银行app的广泛应用,实现自我保护劫持银行类的木马也逐渐多起来了,未来的安全对抗也越来越激烈。