一种涉诈APP分析方法

2022-04-27 11:51翟福龙
网络安全技术与应用 2022年4期
关键词:诈骗特征算法

◆翟福龙

一种涉诈APP分析方法

◆翟福龙

(奇安信科技集团股份有限公司 上海 201101)

随着科技的发展和生活水平的提高,人们每天的生活与互联网越来越息息相关。移动端互联网应用的多样性,也吸引了一部分不法分子,利用仿冒APP、涉诈APP、涉赌APP等形式,获取不义之财,使用者也因此承受了巨大的经济损失。为解决目前存在的问题,针对此类APP,如何快速提取APK以及通过相关工具对APK进行后续的相关分析,并判断是否涉诈,显得尤为重要,本文分享并总结了一种涉诈APK分析的方法。

APP;APK;静态分析;动态分析

近年来,随着移动通信技术的高速发展,我国已经全面进入移动互联网时代,手机得益于自身的便捷性,也成为更多人获取新闻、完成工作、休闲娱乐中不可或缺的一样日常用品。人们通过手机上安装的各式各样的应用程序(APP)来享受互联网所提供的各项服务。近9亿网民中,使用手机上网的比例高达99.1%,移动互联网服务便捷、即时、普惠的特点在移动互联网应用程序(APP)中得到充分体现。据不完全统计,移动互联网应用商店上架推广的APP有近400万款,总下载量超万亿次。

APP的广泛应用,在促进经济社会发展、服务民生等方面发挥着不可替代的作用。但与此同时,APP涉诈、涉赌、涉黄、强制授权、过度索权、超范围收集个人信息的现象普遍存在,如何及时发现并遏制涉诈APP的传播,提高APP应用的合法合规使用,已成为移动互联网行业面临的重要问题。

特别是使用依托Android系统而开发的APP应用程序,由于系统生态开放性,此类APP可以选择在正规应用市场进行上架,也可以通过分发平台等渠道进行推广、安装和使用。正是基于这一特点,犯罪分子往往通过URL链接、二维码以及直接发送APK安装包等方式诱导受害人下载并使用涉诈APP。如何实现对APK文件进行方便快捷的分析,对后续的取证及侦查方向具有重要的意义。

由于iOS系统的封闭性,造成涉诈APP在其生态圈的传播并不广泛,本文暂不涉及iOS系统下APP安装包IPA的分析工作

1 APK简介

APK(全称:Android APPlication Package,Android应用程序包)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个能被Android系统识别的文件才可以运行,而这种能被Android系统识别并运行的文件格式便是“APK”。

1.1 APK和APP区别

APK和APP的区别,APK是AndroidPackage的缩写,即Android安装包(APK)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。而APP是应用程序(APPlication)的缩写,包含APK文件。

1.2 APK文件组成

一个APK文件内包含被编译的代码文件(.dex文件),文件资源(Resources),原生资源文件(Assets),证书(Certificates),和清单文件(Manifest File)。

2 APK分析工具

2.1 开源软件

(1)APK Messenger

APK Messenger是一款非常实用的APK文件信息查看软件,使用这款软件可以轻松查看任何APK软件信息,APK的所有信息都可以显示出来,包括文件名称、包名、版本名、版本号、文件MD5。支持获取软件的高清图标,如果需要查找图标,可以在软件中直接查看并保存即可。还可以查看并提取APK文件的签名信息,包括证书MD5,证书SHA信息等。APK Messenger支持对文件自定义名称,让用户可以规范调整APK文件的名称。还拥有APK全限查看和提取功能,可以轻松提取APK的应用权限,同时会给出权限的注释。支持在线搜索功能,可以搜索六大应用市场的APK文件,生成APK信息文件报告,所有信息都显示在报告上。还具有查壳功能。是一款体积小巧,功能丰富的APP文件信息查看工具。

(2)jadx-gui反编译工具

jadx-gui是一款安卓反编译工具,安装后可以用来查看APK源码,支持zip、dex、jar、APK、class文件,可以算得上一键反编译,使用非常方便。通过加载APK文件可便于查看AndroidManifest.xml应用清单文件,可以了解应用程序的版本号、包名、权限、第三方公司的标识ID等内容。

(3)Android逆向助手

Android逆向助手是一款针对安卓平台的强大逆向辅助软件,功能涵盖APK反编译打包签名;dex/jar互转替换提取修复;so反编译;xml、txt加密;字符串编码等。

(4)Android killer

Android Killer是一款可视化的安卓应用逆向工具,集APK反编译、APK打包、APK签名,编码互转,ADB通信(应用安装-卸载-运行-设备文件管理)等特色功能于一身。

以上即为几款常用的针对APK分析的开源小工具,通过掌握以上基础工具及相关环境配置,相信对以后遇到的各类涉案APK自主手动分析会有所帮助。

2.2 商业软件

上述所介绍的APK分析开源软件,绝大多数都需要有一定的技术积累才能更好地使用,如很多软件都需要事先配置相关系统环境,下载JDK(Java SE Development Kit)并进行安装,还要对JAVA环境进行配置。

随着APK分析的热度不断升温,有一大部分技术积累较少的非专业人员也加入到了APK分析的浪潮之中,具有更好的人机交互、界面显示更加简洁、操作更加简单的商业软件,就成为这部分群体的选择。

(1)星源APP溯源分析平台

星源APP溯源分析平台是奇安盘古(上海)信息技术有限公司开发的一套APP溯源分析平台。通过汇聚APP样本,自动逆向脱壳、特征提取、静/动态分析,形成全面的APP元数据资源库,以此提供APP溯源和分析两大能力,溯源包括IP/域名、打包平台、客服平台、短信通道等落地信息,分析包括关联分析、布控预警、串案分析等。它是涉网犯罪的专属APP库,提供开放式能力对接。

(2)MSIE-20移动互联网APP检测取证系统

MSIE-20移动互联网APP检测取证系统,是捷兴信源信息技术有限公司自主研发的“应用动态行为监控技术”,相关监控模块包括:应用网络报文监测、应用调用短信收发监测模块、应用运行权限监测模块、用户文件访问监控模块等,这些模块分别嵌入应用程序层和操作系统层(包括应用程序编程接口层和系统层)中的监测模块,以完成相应的监测任务。

(3)金斗云在线服务平台

金斗云在线服务平台,是白虹科技公司为执法部门开发的一套服务平台。提供APP溯源分析工具。系统采取“智能+人工”的方式进行全方位的溯源分析,审核后出具《溯源分析报告》。

(4)手机应用分析系统

手机应用分析系统,是无糖信息技术有限公司为执法部门开发的一套服务平台,内嵌于无糖浏览器中,提供APP溯源分析工具。在输出的报告中,可以查询到APK的基本信息、接入SDK信息、应用权限、签名证书信息、动态网络抓包分析等内容。

3 涉诈APP分析方法

根据公安部发布的统计数据,电信网络诈骗案件共分为9大类,50余种小类,如图1所示。

图1 电信网络诈骗案件分类

360借条、百度有钱花、小米金融、平安e贷等,均为合法公司的小微贷款产品,有正规的网站并上架于各大正规应用市场。本文以其为例,探讨一种判别涉诈APK的分析方法。

3.1 疑似涉诈APP特征分析

(1)包名特征

与正常APK相比,涉诈APK的包名不规则,具体体现在:数字较多、大小写字母混杂、以“.”分割的分段较多。以下为百度有钱花、360借条、小米金融,正版APP的包名(图2):

图2 正版包名

以下为若干仿冒APP的包名(图3):

因此可以采用信息熵(代表着一个字符串的混乱程度)、数字占比统计、字段统计等方式,提炼机器可识别的包名特征。

(2)包大小特征

诈骗类APP多为简单的H5封装,通过统计发现,诈骗APP的大小与正常的APK包的大小有明显的区别,诈骗类APP的APK多在10M以下。

如图4所示为为样例APP的包大小分布,包括314个涉诈APP,223个正常APP。可以看出,大多数涉诈APP的APK拥有安装包较小的特征。

图4 涉诈APP和正常APP包的大小特征

(3)签名信息特征

如图5所示为对一个诈骗类APP分析结果中的签名信息,大部分信息和正常的APP没有区分度,除了签名的机构,可能体现出某些平台的特性。

根据签名信息,我们可以到对应的签名机构查询相关注册账号的信息,以及历史创建的签名,并据此和知识库中积累的涉诈APP签名信息进行比对,得出此项特征的比对结果。

(4)封包平台特征

APP搭建人员,从域名“贩子”手中买到大量(备案)域名或境外域名,使用公开的源码或网站框架,接入第四方支付接口搭建网站。通过一些Web封装平台将网站封装成APP,并将APP上传至应用分发平台获得应用下载链接,在短链平台将应用下载链接转换成短链接。虚假APP的搭建流程如图6所示。

图5 对一个诈骗类APP分析结果中的签名信息

图6 虚假APP的搭建流程

①安卓应用的封装

安卓应用的签名封装较为简单,有很多平台、工具提供快速的一键封装,也可以由开发人员自行封装。主要流程如下:

生成证书的过程:

进入JAVA_HOMEin目录

在此处打开cmd,并输入keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore example.keystore

按照界面上的提示信息进行填写(图7):

图7 按照界面上的提示信息进行填写

签名的过程(图8):

图8 签名过程

可以发现,如果是批量的封装应用,可能使用同一个证书,那么证书的信息不会每次都反复输入,因此可通过证书信息,捕获同一平台批量签名的APK。

②iOS应用的封装

现在市面上的封装方法主要有三种:

★普通封装(无签名)。这种苹果APP的封装,只能够安装到越狱手机,没有越狱的手机是不能安装使用的。所以这种封装方式不被大家接受,使用的人很少。

★签名封装。顾名思义,就是用了企业签名的封装的APP,这种APP对于iOS苹果手机没有任何限制,都能下载使用。这种方式是之前很长一段时间被大家接受的方式,但是它也有不好的地方,就是容易掉签名,因为市面上的签名商,他们手里的签名都是共享了多个APP,只要一个APP被查违规,这个签名下的APP都无法使用,这就是为什么签名的APP经常出现掉签名的情况。

★描述文件封装。这种封装APP的方式是2019年才兴起的,就是把个人网站的手机端封装成描述文件,安装到苹果手机上使用,这个方法有一个好处就是不存在掉签这一说,只需要安装用户在描述文件里面安装好APP就可以正常使用了。

iOS封装主要成本就是企业签名,以现在的市场价格,企业签名稳定些的大概是500元左右一个月,一年下来就是6000元,而且还无法保障是否会掉签。一旦掉签,那之前安装的会员都得重新装一遍,给APP的推广带来了非常大的不便。因此目前使用描述文件APP比较流行,都是封装APP,效果都是一样的,但是描述文件封装需要做技术处理,不然在APP里面打开任何链接,都会跳转到苹果默认浏览器里面打开。这也是涉诈类APP较少在iOS系统中传播的原因。

③流行的封装平台

我们还以之前的314个涉诈APP为例,统计其签名issuer,排在前10位的如图9所示。

图9 涉诈APP的签名issuer

排在第一位的无法判断其特征;

排在第二位的为“不凡APP制作平台”;

排在第三位的为数字天堂公司;

排在第五位的推测是一个APKPacker工具

如图10和图11所示分别为对“不凡APP制作平台”和APKPacker工具进行试用,操作简单。

图10 不凡APP制作平台

对测试的封装APK进行检测,检测结果显示,签名信息即为bufanapp,如下所示(图11):

图11 检测结果

APKPACKER如图12所示。

图12 APKPACKER

生成证书的过程如下(图13):

图13 生成证书过程

综上可以看出,如果某一APP被判定为涉诈APP,那么和它使用相同证书、签名的APP有很大概率也是涉诈类APP。

(5)icon特征

诈骗类APP的应用icon与正常icon有较强的相似性,有的就是直接拿过来复用;有的在截图之后使用,与原图有微小的差异。可以构造一个涉诈APP的icon图像库,对于新抓取的APP,分析它的icon与图像库icon的相似度,当与图像库中的多个icon相似,则可在一个维度上认为该APP可能是诈骗应用。如图14所示为一个示例,可以看出,诈骗应用的logo很类似,或仅存在微小的变化。

图14 诈骗应用的logo特征

通过采用图片识别与对比的AI能力,可以将相近或相似的图标找出来,给涉诈判别提供依据。

(6)版本号特征

正常的APP版本号一般不断迭代,涉诈应用的版本号较低,且不会持续更新,在目前的统计中,1.0.0出现的次数较多。如图15举例,为随机抽取的举报的APP和正常的版本号对比。

图15 随机抽取的举报的APP和正常的版本号对比

3.2 涉诈APP分类算法设计

涉诈APP的恶意行为包括植入木马后门、窃取用户数据、仿冒正版APP进行诈骗、推送虚假广告等。涉诈APP的分类算法以大量的涉诈APP以及应用商店内爬取的合规APP作为正负训练样本。算法流程如下。

(1)特征提取

通过利用常用的分析软件,对疑似涉诈APP进行静态特征和动态特征的分析和提取。提取特征的思路主要为发现某个或者某类开发者、发现应用的异常行为等。常见的特征维度包括:应用名、包名、包的大小、logo、签名信息、代码特征、权限调用、访问文件记录、后台服务器特征、资源文件等,形成涉诈APP识别特征库。

(2)数据预处理

针对算法的需求,对各个维度的特征进行数值化、异常值处理,以及按需进行标准化、归一化等处理。对各个维度数值化的过程较为关键,例如利用涉诈APP的特征库,判断签名信息是否异常、包名是否异常、logo是否异常等。

(3)模型训练

选择机器学习中的分类算法,利用带标签数据进行模型训练。例如通过随机森林算法构造N棵决策树,准确率较高,能较好地处理缺失值,模型泛化能力强,训练速度快,容易做成并行化方法。

(4)模型优化

重要特征筛选:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。对每一棵决策树,选择相应的袋外数据(OOB),计算袋外数据误差,记为errOOB1。所谓袋外数据是指,每次建立决策树时,通过重复抽样得到一个数据用于训练决策树,这时还有大约1/3的数据没有被利用,没有参与决策树的建立。这部分数据可以用于对决策树的性能进行评估,计算模型的预测错误率,称为袋外数据误差,袋外误差经过证明是无偏估计的,因此在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计。随机对袋外数据OOB所有样本的特征X加入噪声干扰,再次计算袋外数据误差,记为errOOB2。假设森林中有N棵树,则特征X的重要性=∑(errOOB2-errOOB1)/N。这个数值之所以能够说明特征的重要性,是因为如果加入随机噪声后,袋外数据准确率大幅度下降(即errOOB2上升),说明这个特征对于样本的预测结果有很大影响,进而说明重要程度比较高。计算每个特征的重要性,并按降序排序,确定要剔除的比例,依据特征重要性剔除相应比例的特征,得到一个新的特征集,并重新训练。

(5)数据集更新

采用模型对未知的APP进行预测后,积累新的数据,更新数据集定期重新训练,不断优化模型。

通过使用上述涉诈APP分析算法,可以形成各种不同涉诈类型的识别模板,能在分析研判后,直接输出涉诈类型。针对自动化流程无法严格判别是否涉诈的,还可以借助人工分析的办法,对识别准确度进行极大的补充。

4 总结

以上内容整理总结了常用的APK分析工具,包括开源软件与面向特定用户的专用商业软件。并根据包名特征、包大小特征、签名信息特征、封装平台特征等维度,总结了一套涉诈APP分类算法。后续我们会继续沿着这个方向,探讨如何结合APK分析工具,将判别方法自动化,更好地为净化网络环境,做出自己的贡献。

[1]王庆飞,王长波,鲍娟.基于机器学习技术的Android恶意软件检测[J]. 科技资讯,2020(27).

[2]戴芬,刘洪伟,樊婕,等. Android手机APK程序逆向分析取证[J].刑事技术,2021,46(04).

[3]石兴华,曹金璇,芦天亮.基于深度森林的安卓恶意软件行为分析与检测[J]. 软件,2019(10).

[4]柯懂湘,潘丽敏,罗森林,等. 基于随机森林算法的Android恶意行为识别与分类方法[J]. 浙江大学学报(工学版),2019(10).

[5]卢建赟. Android恶意应用自动检测方法的研究与实现[D].北京邮电大学,2021.

猜你喜欢
诈骗特征算法
特别提醒:收到这条诈骗短信,千万不要点!!
根据方程特征选解法
离散型随机变量的分布列与数字特征
哪种算法简便
诈骗
Travellng thg World Full—time for Rree
不忠诚的四个特征
进位加法的两种算法
远程诈骗
一种改进的整周模糊度去相关算法