第1页
安卓应用程序 安全性分析
pLL(at)mobeisecurity.com
第2页
检查项目很多
组件安全 Activity劫持检测 Activity暴露检测 广播劫持检测 广播伪造检测 广播暴露检测 服务劫持检测 服务暴露检测 Content-provider暴 露检测
…
敏感方法 拨打电话 发送短信息 获取短信息 获取通信录 拦截短信 代码自修改 动态类加载 注册为设备管理器 …
第3页
检查项目很多
Ref: Android系统安全漏洞检测与利用(诸葛 建伟)
第4页
检查过程很复杂
• 开发者文档描述有问题
– 不清晰 – 有错误 – 很复杂
• 安全性依赖个人能力
– 审查很复杂 – 无现成工具
第5页
代码安全分析的几个层面
• 静态分析
– 配置文件上的安全检测(AndroidManifest.XML、 签名、hash)
– 代码层面上的安全检测 – 关联分析 – 代码逻辑上的分析
• 动态分析
第6页
安全评估动态检测方法
• Intent-fuzzer • Content-fuzzer • Drozer
第7页
恶意程序动态测试
• 代码覆盖能力测试
Anubis B-chao Fireeye
SMS_send _onCreate Y
Y
Y
SMS_send_o SMS_send_but nDestroy ton_onClick YY
NN
NN
SMS_send_vi ew_onTouch Y
N
N
SMS_send_wit SMS_sen h_conditions _receive NN
NN
NN
第8页
恶意程序动态测试
• 指纹特征
– b-chao(https://b-chao.com/) – DEVICEID:000000000000000;TEL:15555215554;IMSI:310260000000000 – fireeye(https://fireeye.ijinshan.com/) – name:TaintDroid Notification Service;packageName:org.appanalysis – anubis(https://anubis.iseclab.org/) – TEL:15555215554;IMEI:89014103211118510720 – foresafe(http://www.foresafe.com/) – DEVICEID:000000000000000;TEL:15555215554;IMEI:89014103211118510720;IMS
I:310260000000000
REF: DISSECTING THE ANDROID BOUNCER
第9页
配置文件上的安全检测
• 广告分析 • 部分组件安全 • 查杀特征
第10页
代码层面上的安全检测
• 代码扫描
第11页
代码层面上的安全检测
Dex、apk输入 预处理(反编译、代码预处理)
抽象语法树 控制流与符号表
数据流 污点传播分析
静态分析
第12页
关联分析
• 安全评估 • “恶意”行为是否经过”交互”?
– 调用序列问题 – 什么样子的交互?
第13页
关联分析
死代码or来自jni的调用?
第14页
逻辑上的问题
导致停止功能永远都不会被执行到
第15页
识别程序的意图
假淘宝分析结果,使用的权限比一般应用少得多
第16页
恶意|非恶意界限不明确
• 支付宝比faketaobao使用的权限还多 • 有些恶意程序没恶意行为
Ref:VisualThreat信息安全公司
第17页
攻击技术走在检测技术前头
• 混淆代码
– 1000a.1000b = 1000c – 1000.1000 = 1000
• reflection • 加密代码 • 加固 •…
第18页
攻击技术走在检测技术前头
Smali和java语法上的差别,导致常规分析工具 无法识别这是一个identifier还是一个number
第19页
还有更多工作要做
第20页
这里…
第21页
这里…
第22页
App的安全不只包含客户端代码安全