移动APP漏洞自动化检测平台建设

前言:本文是《移动APP客户端安全笔记》系列原创文章中的第一篇,主要讲的是企业移动APP自动化漏洞检测平台建设,移动APP漏洞检测发展史与前沿技术,APP漏洞检测工具与平台,以及笔者的一些思考。希望能对移动App自动化漏洞检测感兴趣的同学有所帮助,限于笔者技术水平与文章篇幅,有些内容暂没有逐一详细分析,后续我争取多学习多分享,在此也欢迎大家指点和交流。

一、国内Android App漏洞检测发展简史
1.1石器时代 (2007-2011)

关键词:反编绎,人工审计

  • 2007年11年,Google正式发布了Android操作系统,2011年12月,Google发布了Android 2.3版本,Android 应用市场App数量突破10万个,随着Android系统的完善及Android设备数量的增加,Android超过塞班成为主流智能手机操作系统。与此同时,一些安全研究人员已经敏感的嗅到了Android客户端安全可能会成为未来的安全热点之一,不少传统的二进制安全研究人员开始转战移动安全。
  • 这个时间段国内对Android安全问题的关注主要集中在恶意App分析与检测,App逆向与破解以及Android系统Root。对于Android客户端安全问题刚主要集中在信息泄露,敏感权限使用的方面,通常使用反编绎工具分析APK源码,然后进行人工审计。

Paste_Image.png

图1 使用JD-GUI分析APK反编绎后的Java代码

1.2农业时代 (2012-2014)

关键词:自动化审计、静态分析、动态分析

  • 2012到2014年间,Google发布了Android4.0-5.0系统,此间爆出不了不少Android 相关漏洞,比如影响深远的Webview远程代码执行漏洞,HTTPS中间人漏洞,让越来越多的安全研究人员的焦点慢慢转向Android App客户端本身的安全漏洞挖掘上来。
    国内一些厂商也开始研发自己Android App自动化审计系统,其中最早的对外发布的腾讯金刚审计系统算是国内这类产品的鼻祖之一,其早期版本在功能上实现了Android App自动化静态分析与简单的动态分析,审计点包括:明文保存敏感信息,文件权限问题,日志信息泄露,组件权限问题,明文传输,拒绝服务等。
  • 此时遇到Android APP自动化审计遇到的主要问题有:1.静态分析主要依赖于关键词匹配,如果缺少上下文分析与可达性分析,开发者正好自定义了一个相同关键词的函数,或者存在漏洞的代码根本没有调用到,则会产生误报。2、大多Android App的代码与UI是紧密交互的,如果动态分析部分只进行了简单安装启动App与自动随机点击,无法覆盖App大部分界面与功能,则无法覆盖更多的应用执行路径,产生有效业务数据,容易导致漏报。

Paste_Image.png

图2 金刚审计系统主界面

1.3工业时代 (2015-至今)

关键词:模糊测试、污点分析、通用脱壳、UI自动化遍历

  • 从2015年开始,360捉虫猎手(现改名为360显微镜),阿里聚安全等开放的在线Android App漏洞检测平台的出现让开发者和安全研究者更加方便的进行漏洞审计,一些开源在线检测平台的出现(如MobSF)也降低了定制化APP漏洞审计系统的开发门槛。同时模糊测试,污点分析,通用脱壳,UI自动化遍历等学术界与工业界技术也开始被应用到移动App漏洞审计中。下面简单谈谈几种技术在Android App漏洞检测领域的应用,如果有读者感到兴趣的话后续再做详细分享。
    1.3.1 Android App Fuzzing
  • 一般而言Fuzzing技术常用于二进制漏洞挖掘,在移动安全领域常见于挖掘系统组件漏洞(如libstagefright),文件解析类应用漏洞(如adobe reader,视频播放器)及第三方组件漏洞,常使用的工具有:
    • peach/afl/honggfuzz,以及DroidFuzzer)/ MFFA等框架,为了提升成功率,通常可将几种工具与框架组件使用,如AFL+PEACH+MFFA。除此之外,fuzzing技术同样可用于测试Android 进程间通信(IPC),比如intent fuzzer)可以直接检测App拒绝服务等漏洞。

Paste_Image.png

图3 KCon2016上安全研究人员提出的组合fuzzing框架

1.3.2 Android App 污点分析

  • 污点分析可分为静态污点分析与动态污点分析。静态污点分析不需要运行程序,以FlowDroid为例,目前主流的App静态污点分析技术主要包括如下步骤:

    • 解析应用AndroidManifest.xml,Layout配置文件和相关Dex字节码,根据预先建模的Android LifeCycle Model生成超调用图 ,又称过程间控制流图(Inter-procedural control flow graph, ICFG);
    • 根据定义的污点源和锚点(Source and Sink),将其转换为基于ICFG的后向或前向数据流问题进行求解;
    • 根据求解结果,回答是否存在从某输入到输出的数据流流动路径,以显式Intent问题为例,FlowDroid会检测到一个以发送intent的sink方法到最后接收intent的source的路径存在。
  • 动态污点分析则是在程序运行中过程,通过跟踪变量、内存及寄存器的值,依据执行流程跟踪污点数据的传播,最后达到跟踪攻击路径与获取漏洞信息的目的,以TaintDroid为例,需要对Android系统进行定制化修改以便对App运行过程中的污点数据进行跟踪,但由于Android设备或模拟器性能瓶颈问题,动态污点分析无法获取App所有可能的可执行路径。

  • 以往污点分析常用于Android恶意App分析,信息泄露检测等问题,现在越来越多的厂商也应用于App漏洞检测上(如阿里聚安全使用的基于TaintDroid方案)。相比传统的App漏洞检测,污点分析可以跟踪污点数据的传播过程,确定漏洞是否在实际环境中可能被触发,检测能力更加强大。目前也有不少开源的Android污点分析方案与工具如:TaintDroid、FlowDroid、amadroid及CodeInspect,在此之上也发展出一些针对Android App漏洞 检测方面的工具,如腾讯科恩实验室Flanker之前开源的JAADS

Paste_Image.png

图4 Flowdroid运行流程

1.3.3Android App 通用脱壳

  • App二次打包,破解等问题的泛滥催生了App加固产业的发展,两者技术在也攻防中不断发展和进化,目前国内主流的加固方案有梆梆,爱加密,百度加固,360加固,阿里聚安全,腾讯御安全/乐固,通付盾,NAGA等,对于在线漏洞检测平台来说,如果没有通用的自动化脱壳方案就意味无法对应用市场中的很多App代码进行静态分析,甚至由于应用被加固无法运行于模拟器中或特定测试设备中,影响动态分析结果。
    目前针对dex文件加固主流的脱壳方法有静态脱壳、内存dump、Dalvik虚拟机插桩,第一种方法需要针对厂商加密方案不断更新,基本不具备通用性,后面两者的开源代表作有:
  • ZjDroid
  • DexHunter

Paste_Image.png

图5 笔者整理的国内部分APP加固方案

1.3.4移动 AppUI自动化遍历

  • App UI自动化遍历常在App开发测试中用于检测App性能与兼容性,目前在App漏洞检测领域用的比较少(主要由于效率较低)。一般主流的App漏洞检测平台都包含动态分析,主要是安装App后自动运行App并监测App行为,通常使用的是Android Monkey test脚本或其它工具随机点击APP界面。
  • 实际上,为了更深入的检测App敏感信息泄露与后端WEB接口漏洞,仅靠随机点击App界面进行动态分析是不够的(比如现在大部分App功能需要注册登录后才能使用),如果能更好的模拟正常用户使用App的过程,则可以扩展监测Logcat日志,本地文件存储,网络通信等数据审计能力。
  • 目前APP UI测试框架按原理可分为黑盒与白盒两种,白盒测试需要在App开发时添加测试组件并调用,需要App完整源码,黑盒测试一般提取App界面的UI元素并根据算法进行遍历,无需App源码。笔者推荐的黑盒APP UI测试框架与工具主要有

Paste_Image.png

图6 appCrawler生成的APP测试报告

二、Android App漏洞检测
2.1 国内Android App在线漏洞检测平台

2.2开源Android App漏洞检测工具
1.MobSF

  • Github:https://github.com/ajinabraham/Mobile-Security-Framework-MobSF
    Mobile Security Framework(MobSF)是印度安全公司(http://opensecurity.in)开发的一个智能化、一体化的开放源代码的移动应用(Android / iOS)自动化测试框架,支持静态和动态分析,App后端Web API漏洞检测。
  • 主要特点:基于Python Django的开源在线漏洞检测框架,前端UI完善,基础功能全面,安装布署方便,但总体来说审计点偏少,不适合实战,更适合辅助分析与二次开发,国内目前不少在线APP检测的平台都有这个框架的影子。

Paste_Image.png

图7 MobSF生成的检测报告

2.Drozer
Github:https://github.com/mwrlabs/drozer

  • Drozer是MWR Labs开发的一个开源Android 安全测试框架,支持编写自定义模块。目前已经有不少介绍Drozer文章,这里就不多说了。

Paste_Image.png

图8 Drozer运行界面

3.Marvin
Github:https://github.com/programa-stic/
Marvin是西班牙Programa STIC组织发布一个开源Android App漏洞检测框架,该框架主要分为四个项目:

  • (1)Marvin-Django
    主要包含框架前端UI界面与数据库部分;
  • (2)Marvin static analyzer
    一个主要基于Androguard Static Android Analysis Framework 的Android App静态分析引擎。
  • (3)Marvin Dynamic Analyzer
    一个APP动态分析引擎,基于OpenNebula及Android-x86 模拟器,可搭建分布式分析系统,用于复现静态分析发布的漏洞与动态检测漏洞。
  • (4)Marvin toqueton
    一个自动化遍历APP UI的工具,用于分析APP UI控件并进行自动化交互遍历,辅助动态分析。
    主要特点:
    笔者刚看到这个项目发布时研究了一番,主要特点有可直接搜索下载Google应用商店或者上传应用进行分析,可编写自定义静态分析脚本,使用动态引擎复查静态分析的结果提升准确性,使用本地应用去遍历APP UI等,但仔细实践后发现动态分析环境(ubuntu+openNebula+Android-X86)的布署很麻烦,多次尝试都未成功。

Paste_Image.png

图9 Marvin主界面

4.Inspeckage
Github:https://github.com/ac-pm/Inspeckage
一个Xposed插件,用于调试分析Android App。
主要特点:

  • 使用方便,自带WEB界面,装Xposed插件可以分分钟开始挖漏洞;2.功能全面:查看Manifest信息,监控本地文件读写,查看文件内容,查看Logcat日志,查看网络通信请求(支持SSL uncheck),监控IPC通信,查看加密操作,调用未导出组件等。

Paste_Image.png

图10 Inspeckage主界面

三、IOS App漏洞检测

  • 一般来说iOS App由于iOS系统安全限制(非越狱环境),且无法直接反编绎获取App源码,其在安全性上远高于Android App,但近两年前随着XcodeGhost(分析文章),iBackDoor,AFNetworking中间人等后门事件与漏洞的曝光,iOS App安全性也慢慢受到国内开发者与安全研究人员的关注。
    3.1 常见IOS App漏洞测试工具
    测试iOS App安全性离不开一台越狱过的iOS设备,以及一些测试利器。在此简单简介两个iOS App安全测试工具:
    1.**Idb**

Paste_Image.png

图11 Idb主界面

  • 官网:http://www.idbtool.com
  • Github:https://github.com/dmayer/idb
  • Idb是一款开源的iOS App安全评估工具,作者是Danl A.Mayer。
    主要功能:
  • 1.查看应用以下信息:应用包名;注册的URL Schemes;SDK版本;应用数据文件夹位置;应用权限等,
  • 2.查看/下载应用数据文件;
  • 3.查看应用文件保护级别;
  • 4.Dump iOS keychain;
  • 5.检测应用是否加密;
  • 6.检测应用编绎安全选项(ASLR/PIE, DEP, ARC);
  • 7.查看应用的shared libraries;
  • 8.提取应用binary中的字符串;
  • 9.Class dump;
  • 10.查看应用URL Handler;
  • 11.Invoke and fuzz URL handlers;
  • 12.查看系统剪切板
  • 13.截屏
  • 14.安装系统证书;
  • 15.编辑 /etc/hosts文件;
  • 16.查看系统日志;

2.**Needle**


Paste_Image.png

图12 Needle主界面

  • Github:https://github.com/mwrlabs/needle
  • Needle是MWR Labs开发的一个开源iOS安全测试框架,同样支持开发自定义模块来扩展Needle的功能,目前主要功能包含对iOS应用数据存储,IPC,网络通信,静态代码分析,hooking及二进制文件防护等方面的安全审计。
  • 与drozer类似,Needle提供了一个shell界面,基本idb有的功能needle都有或者说以后也会有(因为可以自己写模块),而Needle还同时支持Cycript与Frida两个hooking方案,可以方便的加载hook脚本与执行命令。

3.2 IOS App自动化漏洞检测

  • 在很长一段时间内,iOS安全研究都主要集中在iOS系统安全漏洞挖掘中,由于iOS相对安全的系统机制保护与严格的审核机制,iOS App安全性一般比Android App要高不少,历史上出现的过一些iOS App漏洞也主要集中在iOS越狱环境下,但近年来XcodeGhost,AFNetworking框架中间人漏洞以及多个恶意SDK曝光也说明了iOS App安全性并没有我们想像的那么高,建设iOS App自动化漏洞审计平台对于拥有大量iOS App产品的企业来说还是很有必要的。
  • 为了提升公司iOS App安全漏洞审计能力与应急能力,笔者与riusksk(林大夫)从2015年底开始一起研发iOS App漏洞审计系统(后续并入金刚),目前已经成功上线近半年,也辅助发现了一些iOS App业务安全漏洞,详情可参考文章:浅谈iOS应用安全自动化审计
  • 此外360NirvanTeam(http://nirvan.360.cn)也上线了在线检测功能,开源方案MobSF也有iOS App在线审计功能。此类审计平台主要审计点有:BIN文件分析,第三方库漏洞检测,XCodeGhost检测,恶意SDK检测等。相对来说金刚更为全面,适合开发上线前自查与安全研究人员辅助分析,包含了私有API检测,开放端口检测,应用文件审计,网络通信数据审计,日志审计,classdump等功能,后续还会继续优化iOS App UI自动化遍历功能与URL scheme Fuzzing功能。

Paste_Image.png

图13 TSRC iOS App漏洞审计报告部分内容

四、构建移动App漏洞检测平台

  • 目前国内无论是3BAT,还是移动安全公司,都已经提供了移动APP漏洞检测产品,笔者平时也会对这些平台做一些深度体验,总体来说随着技术发展,构建APP漏洞检测平台门槛已经很低技术也很成熟了。
  • 在移动互联网时代,不同的企业对于移动APP产品安全性要求是不一样的,如金融,支付,通信,游戏类APP产品对App客户端安全,业务安全,后端服务器安全都提出了很高要求,定制企业自已的移动APP漏洞检测平台还是很有必要的。
    笔者仅从个人角度谈谈对如何构建移动App漏洞检测平台的几点看法:
    • (1)在平台建设之初可以参考业界优秀的同类产品与开源方案,目前大部分移动App漏洞检测平台后端基本功能都是使用Python/Java开发,便于快速开发迭代。
    • (2)移动APP安全威胁是不断变化的,漏洞审计规则也应该支持快速更新,同时企业移动App漏洞检测平台应该满足移动App产品正式上线前审计,上线后日常排查两个基本需求。
    • (3)很多开发人员和安全工程师对漏洞的理解是不一致的,在输出漏洞检测报告后,还需要提供详细的漏洞利用场景讲解与修复指引。
    • (4)多多关注学术界与工业界的新研究成果,如果能加入优化与利用,可以推动平台整个技术能力的进步。
    • (5)平台的主要建设者应该精通移动App漏洞挖掘实战,能够针对企业重点产品特性(如动态加载,热补丁等技术)提供专业的解决方案。
      同时笔者提出了一个甲方/乙方企业通用的移动App漏洞检测平台架构,企业可以在此基础上直接接入Web漏洞扫描系统扫描App后端Web漏洞,也可以收集URL测试业务安全漏洞。

Paste_Image.png

图14 移动App自动化漏洞检测平台架构(点击查看大图)

五、未来移动App漏洞检测平台发展方向

  • 在Google最新发布的Android 7.0系统增加了不少安全特性,如APP开发者可以使用系统提供的接口自主配置信任的证书,默认也不再信任用户安装的第三方CA证书,此举可提升Android App网络通信的安全性。
  • 可见未来移动APP安全问题还将不断变化,目前大部分移动APP漏洞检测平台最终的检测结果也需要专业的安全研究人员评估实际风险,历史上很多移动端严重漏洞也是需要结合业务场景的,所以说移动App漏洞检测平台也只是企业移动App安全建设中的一环,此外推动移动安全人才培养,移动App安全开发规范,应用加固,盗版监测等体系建设也同样重要。
    笔者个人认为未来移动APP漏洞检测平台可发展的几个方向有:
    • 1.机器学习
      机器学习在网络安全领域常用于恶意软件检测,流量检测等方面,目前也已经出现一些利用机器学习进行Android恶意应用等方面的开源工具android-malware-analysis与研究,未来同样也可能应用于Android App漏洞检测。
    • 2.威胁感知与大数据
      如何从移动App中挖掘数据,并分析,整合进而利用于漏洞检测与威胁感知也是未来移动APP漏洞检测发展方向之一。目前部分漏洞检测平台已经开始支持采集应用市场所有移动APP源码及运行过程中产生的网络通信数据(如域名,IP,URL等),进行聚合分析与WEB接口漏洞检测。同时四维智创,梆梆等安全公司开始推广移动应用威胁感知产品,此类产品通过SDK收集应用的行为与网络数据,用于检测APT攻击,防刷单等场景。

3.社区化

  • 目前国内已经有一些社区化的WEB漏洞检测平台,如Seebug,Tangscan等,盘古即将公测的Janus(http://appscan.io)也同样开始主打社区化,Janus支持社区用户自定义检测规则,后台结合海量全网应用数据,可用于全网应用快速漏洞扫描。同时社区化加入了安全研究员的人工审计流程,后续可以不断提升漏洞特征建模的细度与广度,提升平台检测能力。

参考资料:

本文来自:Android安全中文站

原文链接: http://www.jianshu.com/p/c1776ad393c6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据来源:中经数据库 主要指标110多个(全部都是纯粹的 市辖区 指标),大致是: GDP GDP增速 第一产业增加值占GDP比重 第二产业增加值占GDP比重 第三产业增加值占GDP比重 人均GDP 社会消费品零售总额 固定资产投资(不含农户) 新设外商投资企业数_外商直接投资 实际利用外资金额(美元) 一般公共预算收入 一般公共预算支出 一般公共预算支出_教育 一般公共预算支出_科学技术 金融机构人民币各项存款余额_个人储蓄存款 金融机构人民币各项存款余额 金融机构人民币各项贷款余额 规模以上工业企业单位数 规模以上工业企业单位数_内资企业 规模以上工业企业单位数_港澳台商投资企业 规模以上工业企业单位数_外商投资企业 规模以上工业总产值 规模以上工业总产值_内资企业 规模以上工业总产值_港澳台商投资企业 规模以上工业总产值_外商投资企业 规模以上工业企业流动资产合计 规模以上工业企业固定资产合计 规模以上工业企业利润总额 规模以上工业企业应交增值税 规模以上工业企业主营业务税金及附加 户籍人口数 年均户籍人口数 户籍人口自然增长率 第一产业就业人员占全部城镇单位就业人员比重 第二产业就业人员占全部城镇单位就业人员比重 第三产业就业人员占全部城镇单位就业人员比重 城镇非私营单位就业人员数 城镇非私营单位就业人员数_第一产业 城镇非私营单位就业人员数_第二产业 城镇非私营单位就业人员数_第三产业 城镇非私营单位就业人员数_农、林、牧、渔业 城镇非私营单位就业人员数_采矿业 城镇非私营单位就业人员数_制造业 城镇非私营单位就业人员数_电力、热力、燃气及水生产和供应业 城镇非私营单位就业人员数_建筑业 城镇非私营单位就业人员数_批发和零售业 城镇非私营单位就业人员数_交通运输、仓储和邮政业 城镇非私营单位就业人员数_住宿和餐饮业 城镇非私营单位就业人员数_信息传输、软件和信息技术服务业 城镇非私营单位就业人员数_金融业 城镇非私营单位就业人员数_房地产业 城镇非私营单位就业人员数_租赁和商务服务业 城镇非私营单位就业人员数_科学研究和技术服务业 城镇非私营单位就业人员数_水利、环境和公共设施管理业 城镇非私营单位就业人员数_居民服务、修理和其他服务业 城镇非私营单位就业人员数_教育 城镇非私营单位就业人员数_卫生和社会工作 城镇非私营单位就业人员数_文化、体育和娱乐业 城镇非私营单位就业人员数_公共管理、社会保障和社会组织 城镇非私营单位在岗职工平均人数 城镇就业人员数_私营企业和个体 城镇非私营单位在岗职工工资总额 城镇非私营单位在岗职工平均工资 城镇登记失业人员数 建成区面积 建设用地面积 建设用地面积_居住用地 液化石油气供气总量 液化石油气供气总量_居民家庭 人工煤气、天然气供气总量 人工煤气、天然气供气总量_居民家庭 液化石油气用气人口 人工煤气、天然气用气人口 城市公共汽电车运营车辆数 城市出租汽车运营车辆数 城市公共汽电车客运总量 道路面积 排水管道长度 建成区绿化覆盖面积 建成区绿化覆盖率 绿地面积 公园绿地面积 维护建设资金支出 土地面积 生活用水供水量 供水总量 全社会用电量 城乡居民生活用电量 工业生产用电量 房地产开发投资 房地产开发投资_住宅 限额以上批发和零售业法人单位数 限额以上批发和零售业商品销售总额 普通中学学校数 中等职业教育学校数 普通小学学校数 普通高等学校专任教师数 普通中学专任教师数 中等职业教育专任教师数 普通小学专任教师数 普通高等学校在校生数 普通中学在校生数 中等职业教育在校生数 普通小学在校生数 电视节目综合人口覆盖率 公共图书馆总藏量_图书 医疗卫生机构数_医院和卫生院 卫生人员数_执业(助理)医师 医疗卫生机构床位数_医院和卫生院 城镇职工基本养老保险参保人数 职工基本医疗保险参保人数 失业保险参保人数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值