李佳斌 裴洪卿 郑雄 孙艳宾 汪蓝
1. 浙江省杭州市公安局西湖区分局 2. 杭州平航科技有限公司
随着移动互联网的发展,出现了一条暗刷流量的网络灰色产业链,暗刷流量指手机未经使用者的主动使用操作,而会在系统后台暗自访问网站或进行数据传输,下载或者打开某个APP,从而达到提高目标网站访问流量、增加活跃度等目的。这些行为可能是由于手机安装了某些APP应用程序,由其暗自运行的行为,也有可能是一些系统刷机包内置后门程序触发产生的行为。而各类APP及网站等都需要大量的流量实现盈利,例如注册量、点击量等,更为常见的还有电商刷单炒信行为,高流量意味着高点击率以及高关注率,有了高流量,应用排行榜排名就会靠前,就会有更多的人群予以关注,从而扩大市场影响,带来商业上的丰厚回报。由于供需关系的影响,网络流量暗刷就形成了一条完整的产业链。网络暗刷的实现方式包括通过代码程序模拟用户访问行为的“机刷”和借助在其他APP、广告中植入JS暗刷点击代码,通过基于SDK增加其自身产品的访问量并不被手机使用者知晓的“JS暗刷”。本文针对常见的SDK中植入JS暗刷行为代码进行分析研究。
SDK是Software Development Kit的缩写,即“软件开发工具包”,SDK一般是封装某些特定功能(常见的比如:账号管理、支付、推送、统计等等)的程序组件,第三方SDK主要指软件开发人员所使用的第三方服务商所提供的可实现软件某些特定功能或接口的软件包、软件框架、硬件平台、操作系统等开发工具的集合(工具包)。如Google提供Android系统专属的开发工具,即Android SDK。由于Android系统拥有庞大的用户群体,而且每天都有大量的Android应用程序被发布到各大应用市场,例如应用宝、豌豆荚等。为了缩短开发时间和提高开发效率,Android应用开发人员一般只会开发核心功能而很少自主开发应用程序中所有的功能,非核心功能就可以通过使用第三方服务提供商提供的SDK来实现,例如广告推送、数据统计、社交网络、地图和信息推送平台。
第三方服务提供商在其SDK中封装了复杂的代码逻辑以及请求响应的过程,但同时提供调用该SDK的使用说明文档,因此应用开发人员并不需要了解SDK内部的逻辑原理,即可以根据文档集成SDK的功能。因此第三方SDK逐渐成为Android生态系统的重要组成部分,但基于这种快速开发模式,使第三方SDK在信息安全方面埋下了隐患。
第三方SDK通常都会根据自身的服务内容向开发人员提供调用说明和演示信息。以消息推送类的业务为例,如图1所示。根据SDK的调用流程,可以发现其嵌入APP后,会与业务服务器进行数据交互,进而实现消息推送功能。因此我们可以通过对SDK的逆向分析发现其连接的服务器以及针对通讯行为进行分析,可以还原其实现流程进而从中寻找与此类行为有关的内在特点。
Andriod SDK文件主要为jar格式,是一种常见的软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件,并将这些整合到一个文件中,以便开发Java平台应用软件或库。
一个Android应用程序的代码要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是APK文件,APK文件作为Android操作系统最广泛使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个APK文件内包含被编译的代码文件(.dex文件)、文件资源(Resources)、原生资源文件(Assets)、签名证书(Certificates)和清单文件(Manifest文件)。APK文件可以通过使用逆向工具Jadxgui打开并对其文件结构和内容进行查看分析。
由于SDK的jar文件需要嵌入APK文件中,因此通常都提供嵌入使用的说明文档或者开发手册,文档手册中也会包含SDK所需系统或应用权限等内容,这些权限的说明也有利于后续分析APK的权限范围和细节,如图2所示。
以广告类SDK为例,在实际使用场景中,广告推送服务并不需要很多或者很高级别的权限要求,只要能够连接网络、写入数据即可,即便如此也可以实现在手机用户不知情的情况下,通过后台模拟人工点击广告链接进行牟利。在这种情况下则需要对该APP的网络通讯行为以及相关数据进行甄别分析。
如果是一些恶意收集手机信息的SDK或应用,则会申请访问通讯录、短信、硬件等信息的权限。如果是木马类程序,则会申请更多的敏感权限,如申请读取、写入、发送、删除短信权限,再结合程序逻辑,可用以拦截短信验证码,或者发送申请验证码的短信。因此分析应用的权限对于安卓应用的取证分析非常重要。
本文介绍了环境工程本科生在水处理综合实验中探究式实验的开展和评价。通过评价问卷的统计分析,对传统实验与探究式实验在提高学习效果方面进行了比较,对探究式实验的有效性做出评价。
通过对比分析某短信拦截木马应用所申请的权限发现,实现特定功能时,必须要向安卓系统申请相应权限,但是广告类SDK仅需要访问网络等基础权限即可,需要授予的权限较少且较为基础,此其利用此类SKD实施的违法行为更加难以被发现。另一方面SDK都是提前预置在APP中,如果该APP已经申请了很多权限,那该SDK也可以调用相同的权限,因此SDK的行为不需要通过告知APP即可实现。我们可以通过分析APP权限范围的方法对其中的SDK进行分析。
第三方SDK的恶意行为除上述广告刷流量类型外,还包括以下几类:
流量劫持:第三方SDK通过恶意劫持APP流量,根据特定目标劫持访问的地址;
资费消耗:第三方SDK消耗用户的网络资费,甚至是订阅收费服务,恶意发送收费短信等;
隐私窃取:第三方SDK在用户不知情的情况下,窃取用户的通讯录、短信等个人隐私信息,甚至是未经授权的拍照,录音等高危敏感行为;
静默下载:第三方SDK在运行后台静默下载、安装其他恶意APP或木马病毒的行为;
恶意广告:第三方SDK可以向用户推送包含欺诈内容、木马病毒的连接,干扰用户正常使用APP;
敲诈勒索:第三方SDK恶意加密用户手机中的文件,干扰用户对手机的正常使用,并以恢复为由向用户敲诈勒索;
虚拟币挖矿:第三方SDK在用户不知情的情况下,利用手机的计算能力进行数字虚拟货币的获取,消耗用户的手机性能资源;
远程控制:第三方SDK在手机端启动本地服务器,接收远程控制端发来的控制指令,隐蔽上述恶意行为。
在某非法控制计算机信息系统案件中,嫌疑人将自己研发的SDK推广嵌入到其他开发者的APP中。用户安装这些APP后,涉案SDK会在手机用户不知情的情况下,通过网络与后台服务器进行连接,并自动访问服务器端推送的网站,通过提高网站访问流量实现非法盈利,具体调用流程如图3 所示。为还原犯罪实施过程,为案件侦办提供证据支撑,本案重点对涉案APP中的SDK及服务器端进行分析。
对涉案的应用程序SDK文件进行程序功能性分析,获取到涉案样本文件名为“XXX.jar”的文件,文件格式为“.jar”,文件大小为“100KB”,SHA256值为“XXX X”,使用“Jadx-gui-1.6.2”反编译软件打开该文件进行源码检验。
在程序源码显示版本号为“Manifest-Version:1.0”,经前期案件侦办,重点关注网络连接行为数据,因此可以通过搜索关键字“http”,寻找内置在SDK代码中与网络地址相关的数据,如图4所示。
通过对搜索结果的上下文代码查看分析,发现SDK具备向服务器发送http请求的行为,同时在发送请求时,确认服务正常并获取任务数据流。在上传地址中包含“qid”进行标识,以便服务器能够确认任务请求的来源,方便后续数据统计。从代码中也可以看到SDK同时判断服务器响应的状态码,如果状态码为200(响应正常),则会判断“server ok”并继续进行任务处理,如图5所示。
通过代码识别可以了解到,该SDK将获取的任务流数据存放在列表(List)中,存放数据包括“code”“loglevel”“time”“url”“data”等类型,在该案例中,参数loglevel是指任务的优先等级。在进一步判断数据长度等情况后,循环执行处理任务流数据,如图6所示。
程序循环执行过程中,调用“WebView”控件渲染网页。WebView就是“网络视图”,能在APP中直接加载并显示网页,可以将其视为一个内置浏览器。主要用于展示网络请求后的内容,包括网络地址请求的内容。APP如需要访问网络,可以不使用手机自带的浏览器,只需使用webView组件即可在APP内部展示网络页面。在webview控件后,发现该SDK使用“addJavascriptInterface”等方法处理“Javascript”数据(任务数据)。通过调用“MotionEvent”方法(MotionEvent是手指触摸屏幕产生的一系列事件)模拟触摸屏幕滑动动作。利用调用“sleep”实现休眠(sleep方法的作用是在指定的毫秒数内让当前“正在执行的线程”暂停执行),上传日志信息,如图7所示。
通过拦截SDK与后台服务器通讯数据,可以发现与其搭配的后台地址,经对该服务器勘查取证分析,可以发现后台管理主页内包含“任务”“基础数据”“运营数据”“辅助工具”“子项目”“消息推送”“系统相关”等内容。其中“任务”栏目下的显示状态为“开启”的任务有多个,包括名称为“撞库(XXX_拉新)”“手机号抓取_初次”“撞库(XXX_检测)”“撞库(XXXX_促活)”“手机号抓取_二次”“撞库(XXX_拉新_个人)”等任务,同时还对任务的运行数据进行统计。
通过对服务器数据的取证分析,发现在任务数据中,均会加入CNZZ统计链接。CNZZ站长统计是专业的实时网站流量统计分析系统,可以帮助网站管理员、运营人员、推广人员等实时获取网站流量,并从流量来源、网站内容、网站访客特性等多个方面提供网站的数据分析服务。从而帮助提高网站流量,提升网站的用户体验,让访客更多的沉淀下来变成会员或客户,通过更少的投入获得最大化的收入。
在对任务名称为“XXX_拉新”的任务数据进行分析时,发现其入口页面的url链接地址,对“XXX_拉新”的运行代码段进行分析,发现在访问上述链接后会执行一段代码,代码中通过构建某网站的地址参数实现该网站页面的访问行为。涉及的账号参数则存放在后台地址的代码中,具体参数包括“id”“sceneCode”“domain”“channel”“partnerId”“weight”等,如图8中所示。
在取证工作站的浏览器中输入访问任务地址,发现会自动跳转到“xxx领红包”页面中,并且自动发送包含有PID等参数的链接,实现自动申请领红包的行为,如图9所示。
通过对SDK和服务器数据的取证分析,可以发现该涉案团伙在未经手机用户授权的情况下,完成服务器状态判断以及任务申请、执行、统计等行为,而所有这些行为都不被手机用户直观发现,实现了网站流量暗刷的一系列操作。
结合对案例的取证分析,通过在应用程序中植入具有特定功能的SDK,利用网络和服务器端预先设置好的任务参数,可以实现SDK程序根据代码逻辑,在手机后台自动化处理预制任务,实现循环执行访问页面完成暗刷流量等行为,从而达到非法获利的目的。由于这种利用SDK进行违法犯罪的行为往往伴随正常应用程序的使用而进行,其行为并不会直接体现在手机应用程序界面中,具有隐蔽性强的特点,往往很难被手机用户发现,另一方面在对此类案件进行侦查取证时,涉及到应用程序逆向分析、代码功能逻辑分析以及服务器勘查取证等领域的技术,对办案部门有一定实际操作的技术要求。本文对暗刷流量类的涉案SDK关联要素进行取证分析研究,为侦办和打击此类违法犯罪活动的办案部门提供相关参考。