盘古分享

  hkwany       2017-08-12 16:43:44 1223  0

盘古分享是我比较期待的东西,故作为今天的日志主体,给我们一些实际流程干货,并且介绍了漏洞分析平台

系统安全

应用安全

恶意应用检测

大数据分析

 

一些重要的标签及属性

Minsdklevel

targetsdklevel

android:enable组件使能

android:export组件是不是可以被第三方应用进行调用

android:process:通常出现在service里面,该服务会不会当作一个单独的进程运行,并制定进程名

android:browserable 它允许在浏览器上启动该组件

 

.jar   .apk  .dex  .class文件结构

smali

基本类型

全限定名

Lcom/test/Foo  相当于在com.test包里有一个foo

方法那里I之后应该是大写L

 

Smali内的Dalvik codeDalvik指令)

寄存器

Op dest,source

move v0,v1  (v1->v0)

返回指令

const指令,定义

packed-switch分支跳转

if-cond v0,v1 根据运算结果跳转

it,gt,eq,ne,le,ge

p0this寄存器

arsc

Resource文件夹

arscDecoder去解开

res文件夹里——

drawble

layout values  

string.xml——abc_action_bar_home_deion

public.xml——<public type=”string” name=” abc_action_bar_home_deion” id=”0x7f070”>

从而锁定字符串的引用id

 

ELF

so文件

历史代码

第三方库

逻辑保护

IDA打开so  里面的import导入表标签和export导出表标签,实现与其它so或底层库之间的交流

 

常用组件

Intent用于交互,可以去打开一个界面,service

         action

         component

         category

         data

Activity

         onCreate

         onNewIntent

         Exported

         getTopActivity(写一个service,运行该getTopActivity方法,可以把调用栈最顶层的activity名称给打印出来,获得运行环境)

Service

         onStart

         onStartCommand

         Exported 组件暴露

         Android:process 服务运行是否以一个独立的进程

Receiver

         onReceive

         abortbroadcast 截断广播

ContentProvider

         Query

         Insert

         openFile

Webview

         setSavePassword

         setEnabled

         setUrL

PendingIntent当收到一个消息是底层运行

         Notification

getActivity

getService

getBroadcast

 

运行时目录结构

私有目录

/data/data/packagename

sdcard

Files缓存文件

database

 

分析工具

解包——Baksmali

反汇编——

反编译

代码审计

分析与调试

 

分析方法

代码实现漏洞*

——经验总结,历史安全问题分析

——特征提取,准确定位分析入口点

——代码扫描,借助工具减少分析成本

——大数据分析,寻找相同问题

分析工具与方法

反编译

动态跟踪调试

方法hook

——代码分析

——目标方法筛选

——编写脚本

——运行测试

重打包

——解包:apktool d apkname.apk

——修改

——打包

——签名

组件安全

四大组件,pedingIntent,webview

权限安全——权限滥用,权限不够

0-normal

1-dangerous

2-signature

3-signatureOrSystem

组件暴露:暴露给第三方应用的接口,让没有特定权限的第三方提权

能力泄露,隐私泄露,DoS

组件暴露相关信息:

enabled——默认为true,受applicationenabledManifest.xmlapplication标签下会影响应用和组件的使能信息

exported——默认为false

permission——Contentprovider可以单独指定readpermission writepermission

攻击窗口:动态注册,窗口期

aliasActivityActivity起别名,并targetActivity指向被起名的Activity,如果Activity为暴露,

aliasActivity为不暴露,那么aliasActivity会被暴露

Action

代码实现

组件劫持与监听         

启动方式

启动顺序

动态注册>静态顺序

priority

安装顺序

Service劫持

启动方式:仅指定action

Intent嗅探

未指定接收方权限,我们可以自己注册一个Receiver来嗅探监听

sendBroadcast(“”,”permission”)

pendingIntent误用——broadcastanywhere遗留问题

未指定内容的Intent

形式:new Intent()

然后在Manifest里设置了Intent权限有拨打电话,就可以利用

 

Webview远程代码执行

<sdklevel17   <4.2.2

setenabled(true)

addinterface

4.2.2之前有一段通用的攻击代码,完成通杀,反射操作

sdklevel11-16  3.0-4.1

setenabled(true)

webview.setenabled(true)

修复代码,直接remove

sdklevel>17

setenabled(true)

addinterface

权限接口暴露

未验证域名

webview明文密码存储

setsavepassword(true)记住密码,默认值为true,表示明文存储

潜在威胁——隐私泄露webview.db下明文存储

 

 

传输安全

https

handler.proceed()

证书验证失败后继续加载

不安全的https例子

 

存储安全

sdcard  android:permission.WRITE_EXTERNAL_STORAGE 存储权限申请

data

/sdcard/

/sdcard0/

getExternalStorageDirectory获得sd卡存储路径的api

敏感信息明文存储

数据污染

Fileoutput/ SharedPreferences /opendatabase

MODE_PRIVATE MODE_APPEND

MODE_WORLD_READBLE

MODE_WORLD_WRITEBALE

权限配置不当

 

加密安全

不安全加密算法——AES,DES,RC4等,密钥直接硬编码在程序里,逆向apk即可

加密算法误用

定值随机数

私钥泄露

 

zip目录遍历——解压zip,未检测文件名,可导致任意可写文件覆盖

通用拒绝服务——没有try  exception操作,传入畸形数据,但没有抛异常操作

配置安全——debbugable,默认为falseBackup,允不允许备份数据

android:debuggable=”true”

android:allowBackup=”true”

如何一步步发现漏洞

特征搜索

 

代码分析

验证

请先登录
+1 已点过赞
0
分享到:
登录后才能发贴或参与互动哦! 点击登录

全部评论 (0)