Android漏洞挖掘技术
静态分析(控制流分析、数据流分析、结构分析)、动态分析、污点传播分析
过程内分析、过程间分析(函数调用)
漏洞挖掘开源工具:FlowDroid、AppAduit 、TaintDroid、AppIntent
反编译:Apk=>伪代码=>三地址码
Apktool(apk转换为smali)-dex2jar(dex转换为jar)-smali/baksmali(dex转换为smali)
aDFAer:基于过程间分析的Android程序隐私泄露检测的研究
Android操作系统结构:应用程序结构-安全机制(权限管理机制,沙箱机制)
隐私数据PII:日志信息,设备相关信息IMEI/SIM,通讯录和通话记录,短消息纪录,地理位置信息
隐私泄露:网络连接泄露,短信息发送泄露,向手机内部泄露
自动化隐私泄露检测工具:预处理(字节码>伪代码)、控制流分析(控制流图|调用信息图)、数据流分析(到达-定值分析、常量分析、别名分析、类型分析)、污点分析、传播路径(源点,锚点)
控制流分析(逻辑控制关系):控制流图CFG(基本块起始语句>生成基本块>添加控制流边)-调用关系图(Worklist算法)
基本块起始语句:第一条语句,调转语句的跳转目标,所有跳转语句的下一条语句
数据流分析(程序数据传递关系):
污点分析:源点(发送程序的数据点)-锚点(接收数据的程序点)-传播路径
动态污点分析:污点数据(对源点的数据加上特定标记)->运行程序->检测锚点的数据中是否包含有污点数据->只覆盖主要数据传播路径)
静态污点分析:正向污点分析(所有依赖污点源点的数据全都标记为被污染的数据)、逆向污点分析(可能污点锚点的数据标记为污点数据)
检测技术框架
静态程序分析检测技术:预处理、控制流和数据流分析、污点分析
过程内分析:每一个函数的到达定值、常量、别名和类型进行分析
过程间分析(函数调用之间的数据流合并):自底向上重复操作语句 S<-> IN [S](输入)-OUT [S](输出)-GEN [S](产生集)-KILL [S](消除集)
污点检测规则:API匹配规则statement、API危险程度risklevel(0,1,2)、API功能描述state-description
检测工具静态逻辑视图:Analyzer(总控模块,图形化显示界面|检测工具的驱动类)、Dedexer
(伪代码反编译模块)、EntryPointAnalyzer(分析入口提取模块)、InterAnalyzer(过程间分析模块)、ControlFlowAnalyzer(控制流分析模块) 、DataFlowAnalyzer(数据流分析模块:常量分析、别名分析、反射分析、数据依赖分析、类型分析子模块)、TaintAnalyzer(污点分析模块)、TaintGraphBuilder(可视化生成模块)
APPAudit:基于静态程序分析方法的ANDROID应用程序行为审计
敏感信息:短信、通话记录、位置信息、浏览器历史记录
AppAudit系统:Dalvik字节码和Manifest文件=>