文章目录

  • 基础知识
    • 安卓系统
      • 目录结构
      • 组件基础
      • APK目录结构
    • ADB使用
    • Drozer
  • 客户端安全测试
    • 反编译测试(脱壳与混淆)
      • 脱壳
    • 回编译测试
    • 本地敏感信息存储
    • 四大组件安全
    • 本地注入
    • 动/静态扫描
    • 安全的通信方式
    • HOOK
      • 开源移动端扫描工具
      • APP安全在线检测系统
  • 服务端渗透测试
    • SSL证书抓包问题
      • 安装证书问题
      • 证书校验问题

前言:这是一份资料整理,不是一份教程,教程在“心中”。
很多时候对产品进行测试,但是总会遇到一些重复的问题,后来发现大部分时间都花在问题检索和筛选上了(检索五分钟,测试一分钟),因此有了这份总结。学会把时间花费在有意义的事情上,而不是重复的无意义的工作上。这是自我生命的一种救赎吧。

基础知识

安卓系统

目录结构


重要目录:system,data

学习资料

  1. https://www.cnblogs.com/xww0826/p/10359520.html
  2. https://blog.csdn.net/scotfield_msn/article/details/52455322

组件基础

四大组件:Activity、Broadcast Receiver、Service、Content Provider

学习资料

  1. Android四大组件知识点总结
  2. Android四大组件详解
  3. Android组件安全
  4. Android组件安全详解
  5. Android四大组件全面解析,夯实基础。

APK目录结构

AndroidManifest.xml:包含应用的大部分配置信息、包名、应用组件、组件安全设置、应 用所需权限,等等。  
classes.dex:包含由开发人员编写的源代码生成的Dalvik字节码,以及应用在设备上运行 时所执行的内容。  
resources.arsc:包含编译过的资源。  
Res:包含应用所需的原始资源,比如应用图标等图片。  
Assets:用于存放开发人员感兴趣的音乐、视频、预置的数据库等文件,这些文件会与应 用绑定。  
META-INF:用于存放应用签名和应用所用到的所有文件的SHA1摘要。

APK文件存储位置

/data/app/   用户安装应用的存放位置,全局可读可复制  
/system/app/   存放系统自带的应用程序,全局可读可复制  
/data/app-private/   存放禁止复制的应用,有root权限便可提取。

ADB使用

基础知识
ADB的全称为Android Debug Bridge,就是起到调试桥bai的作用。通过ADB我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。ADB的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下ADB会daemon相关的网络端口,所以当我们运行Eclipse时ADB进程就会自动运行。

学习资料

  1. adb 工具是什么
  2. ADB官网下载
  3. ANDROID APP安全渗透测试(一)

命令学习

adb connect 127.0.0.1:62001 链接夜神模拟器
adb devices 查看连接
adb logcat  打印
logcatadb install  安装,覆盖安装是-r
adb uninstall卸载
adb push   推送本地文件至 Android 设备
adb pull    推送Android文件至本地
adb shell mount -o remount rw / 修改系统读写权限
adb root  获得root权限
adb kill-server  重启

Drozer

基础操作

python基础环境
python2.7----drozer使用python2.7编写不支持python3.x,所以只能装python2.7,。使用minicoda版python时一直报“ImportError: No module named drozer.cli.console”,改装官方版python2.7未出现问题未深究原因。
python其他库----pip install protobuf pyOpenSSL Twisted service_identity pyyaml

临时变量设置:set path=D:\Language\Python27;D:\Language\Python27\Scripts;%path%
运行目录:D:\Language\Python27\Scripts

基本用法:

  1. list查看支持哪些模块
  2. help module_name,或者run module_name -h查看各module的用法
  3. run module_name module_options来对app进行检测

学习资料

  1. drozer安装使用教程(Windows)
  2. 安卓渗透测试工具——Drozer(安装和使用)
  3. Drozer 安装和使用 (Mac)
  4. Windows下夜神模拟器的Drozer安装与连接
  5. drozer官网下载安装

命令学习

adb forward tcp:31415 tcp:31415   //端口转发
drozer.bat console connect   //连接run app.package.list -f sieve //关键字查找包名
run app.package.info -a com.mwr.example.sieve   //查看包信息
run app.package.attacksurface com.mwr.example.sieve   //攻击面分析:查看四个组件是否能被其他应用调用Activity
run app.activity.info -a com.mwr.example.sieve   //查看可被调用的 Activity
run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList   //启动可被调用的 Activity
help app.activity.start   //查看帮助Content Provider
run app.provider.info -a com.mwr.example.sieve   //查看可被访问的 Content Provider
run scanner.provider.finduris -a com.mwr.example.sieve   //查看可被访问的 Content Provider 的 URI (数据泄露)
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical   //查看 URI 的数据信息
help app.provider.query   //查询 app.provider.query
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"   //查看数据库所有表信息
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"   //查看单张表数据
app.provider.insert   //插入
app.provider.update   //更新
app.provider.delete   //删除
run app.provider.download content://com.mwr.example.sieve.FileBackupProvider/data/data/com.mwr.example.sieve/databases/database.db .   //下载数据库到本地 app.provider.download
run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts   //读取系统底层文件 app.provider.read
run scanner.provider.injection -a com.mwr.example.sieve   //检测是否有 SQL注入
run scanner.provider.traversal -a com.mwr.example.sieve   //检查是否存在遍历文件的漏洞Service
run app.service.info -a com.mwr.example.sieve   //查看可使用的 services 命令
dz> run app.service.send com.example.srv com.example.srv.Service --msg 1 2 3 --extra float value 0.1324 --extra string test value   //向服务发送信息Broadcast
run app.broadcast.info -a com.mwr.example.sieve   //查看可以使用的 Broadcastdrozer 命令检测集合
app.activity.forintent       Find activities that can handle the given intent
app.activity.info            Gets information about exported activities.
app.activity.start           Start an Activity
app.broadcast.info           Get information about broadcast receivers
app.broadcast.send           Send broadcast using an intent
app.broadcast.sniff          Register a broadcast receiver that can sniffparticular intents
app.package.attacksurface    Get attack surface of package
app.package.backup           Lists packages that use the backup API (returns trueon FLAG_ALLOW_BACKUP)
app.package.debuggable       Find debuggable packages
app.package.info             Get information about installed packages
app.package.launchintent     Get launch intent of package
app.package.list             List Packages
app.package.manifest         Get AndroidManifest.xml of package
app.package.native           Find Native libraries embedded in the application.
app.package.shareduid        Look for packages with shared UIDs
app.provider.columns         List columns in content provider
app.provider.delete          Delete from a content provider
app.provider.download        Download a file from a content provider that supportsfiles
app.provider.finduri         Find referenced content URIs in a package
app.provider.info            Get information about exported content providers
app.provider.insert          Insert into a Content Provider
app.provider.query           Query a content provider
app.provider.read            Read from a content provider that supports files
app.provider.update          Update a record in a content provider
app.service.info             Get information about exported services
app.service.send             Send a Message to a service, and display the reply
app.service.start            Start Service
app.service.stop             Stop Service
auxiliary.webcontentresolverStart a web service interface to content providers.
exploit.jdwp.check           Open @jdwp-control and see which apps connect
exploit.pilfer.general.apnproviderReads APN content provider
exploit.pilfer.general.settingsproviderReads Settings content provider
information.datetime         Print Date/Time
information.deviceinfo       Get verbose device information
information.permissions      Get a list of all permissions used by packages on thedevice
intents.fuzzinozer           fuzzinozer
scanner.activity.browsable   Get all BROWSABLE activities that can be invoked fromthe web browser
scanner.misc.checkjavascriptbridgeCheck if addJavascriptInterface is used and can beabused
scanner.misc.native          Find native components included in packages
scanner.misc.readablefiles   Find world-readable files in the given folder
scanner.misc.secretcodes     Search for secret codes that can be used from thedialer
scanner.misc.sflagbinaries   Find suid/sgid binaries in the given folder (defaultis /system).
scanner.misc.writablefiles   Find world-writable files in the given folder
scanner.provider.finduris    Search for content providers that can be queried fromour context.
scanner.provider.injection   Test content providers for SQL injectionvulnerabilities.
scanner.provider.sqltables   Find tables accessible through SQL injectionvulnerabilities.
scanner.provider.traversal   Test content providers for basic directory traversalvulnerabilities.
shell.exec                   Execute a single Linux command.
shell.send                   Send an ASH shell to a remote listener.
shell.start                  Enter into an interactive Linux shell.
simple.attack.activity       Gets information about exported activities then startthem
tools.file.download          Download a File
tools.file.md5sum            Get md5 Checksum of file
tools.file.size              Get size of file
tools.file.upload            Upload a File
tools.setup.busybox          Install Busybox.
tools.setup.minimalsu        Prepare 'minimal-su' binary installation on the device.

APP评估中4项公共组件漏洞组件
Content Provider配置错误,导致数据泄漏
组件Activity配置错误,导致登录页面被绕过
组件Service配置错误,导致非法权限提升
组件Broadcast Receiver配置错误,导致拒绝服务、非法越权

客户端安全测试

集成测试工具:AndroidKiller_v1.3.1

反编译测试(脱壳与混淆)

脱壳

基础知识:
脱壳原理:Android Apk加壳技术实战详解(精彩转载) dumpDex 脱壳原理 Android逆向之路—脱壳360加固原理解析 软件加壳的原理及实现
查壳工具:ApkScan-PKID
脱壳工具:FDex2、dumpDex

回编译测试

本地敏感信息存储

四大组件安全

本地注入

动/静态扫描

安全的通信方式

HOOK

开源移动端扫描工具

一、MobSF
安装使用见此处
学习资料:
MobSF官方学习文档:https://mobsf.github.io/docs/#/zh-cn/
MobSF官放github:https://github.com/MobSF/Mobile-Security-Framework-MobSF
快速学习使用参考:https://www.jianshu.com/p/4ba4312985ee

APP安全在线检测系统

腾讯金刚审计系统 http://service.security.tencent.com/kingkong 免费 无限制
腾讯御安全 http://yaq.qq.com/ 免费 查看漏洞详情需认证
阿里聚安全 http://jaq.alibaba.com/ 免费 查看漏洞详情需认证
360显微镜 http://appscan.360.cn/ 免费 无限制
360APP漏洞扫描 http://dev.360.cn/html/vulscan/scanning.html 免费 无限制
百度MTC http://mtc.baidu.com 9.9元/次 无限制
梆梆 https://dev.bangcle.com 免费 无限制
爱内测 http://www.ineice.com/ 免费 无限制
通付盾 http://www.appfortify.cn/ 免费 无限制
NAGA http://www.nagain.com/appscan/ 免费 无限制
GES审计系统 http://01hackcode.com/ 免费 无限制
盘古出品的Janeushttp://appscan.io
Janus http://cloud.appscan.io
APP逆向main_classify_list https://android.fallible.co/
java在线反编译Java decompiler online http://www.javadecompilers.com
腾讯电脑管家:哈勃 http://habo.qq.com/
腾讯TSRC:金刚 http://service.security.tencent.com/
阿里聚安全:http://jaq.alibaba.com/
西安交通大学 sanddroid:http://sanddroid.xjtu.edu.cn/#home
金山火眼:http://fireeye.ijinshan.com/analyse.html
瀚海源文件B超:https://b-chao.com

来源:https://www.jianshu.com/p/81bc16a7ac67 https://www.jianshu.com/nb/24453921

服务端渗透测试

SSL证书抓包问题

安装证书问题

方法一:修改APP配置文件
在AndroidManifest.xml中
修改项目的AndroidManifest.xml文件,在application中增加android:networkSecurityConfig="@xml/network_security_config",
android:networkSecurityConfig的值指向的是下一步创建的xml文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest ... ><application android:networkSecurityConfig="@xml/network_security_config"... >...</application>
</manifest>

配置文件:res/xml/network_security_config.xml,
在源码res目录下新建xml目录,增加network_security_config.xml文件工程名/app/src/main/res/xml/network_security_config.xml
network_security_config.xml文件内容为:
说明:certificates说明的src="system"表示信任系统的CA证书,src="user"表示信任用户导入的CA证书

<network-security-config><base-config cleartextTrafficPermitted="true"><trust-anchors><certificates src="system" overridePins="true" /> <!--信任系统证书--><certificates src="user" overridePins="true" /> <!--信任用户证书--></trust-anchors></base-config>
</network-security-config>

方法二:将证书安装到系统证书中(需要root)或者使用安卓虚拟机
系统证书的目录是:/system/etc/security/cacerts/
每个证书的命名规则为:<Certificate_Hash>.
Certificate_Hash表示证书文件的hash值,Number是为了防止证书文件的hash值一致而增加的后缀。
证书的hash值可以由命令计算出来,在终端输入openssl x509 -subject_hash_old -in <Certificate_File>,其中Certificate_File为证书路径,将证书重命名为hash.0放入系统证书目录,之后你就可以正常抓包了。


openssl x509 -inform DER -in cacert.der -out cacert.pem   //证书格式转换der->pem
openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1    //计算pem格式证书hash值
mv cacert.pem 9a5ba575.0   //证书重命名为系统证书名格式
adb remount    //挂在system系统adb push 9a5ba575.0 /system/etc/security/cacerts/     //将证书移动到系统证书目录chmod 644 /system/etc/security/cacerts/9a5ba575..0    //修改证书权限adb reboot //移动操作
adb push <cert>.0 /sdcard/
mv /sdcard/<cert>.0 /system/etc/security/cacerts/

注意事项
手机root操作
一、小米手机自带root为不完整root,需要进行完整root(即解锁system)。

brew install Caskroom/cask/android-platform-tools # 没有安装homebrew的先安装homebrew
adb devices # 测试adb是否安装成功,成功了会出现设备的hash值
adb root
adb disable-verity # 禁用系统验证

二、华为手机需要先解锁(淘宝店搜索可远程解锁),然后用奇兔刷机可root。

安卓虚拟机推荐:
VMOS:http://www.vmos.cn/

学习资料

  1. OpenSSL:证书格式的相互转换, 例如.pem,.crt,.cer,.pfx
  2. openssl的证书格式转换

证书校验问题

ROOT(可选虚拟机)+XPOSE+插件+SSL系统证书安装(可选择项)
插件:JustTrustMe、TrustUser(信任用户证书)

Android(安卓)APP渗透测试-总结相关推荐

  1. 【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端服务端)

    文章目录 前言 一.安全威胁分析 二.主要风险项 三.Android测试思维导图 四.反编译工具 五.Android客户端 漏洞一.Jnaus漏洞 漏洞二.数据备份配置风险漏洞 漏洞三.Activit ...

  2. 网络安全进阶篇(十一章-7)APP渗透测试篇(下)

    每日一句:重启可以解决很多问题,如虚拟机问题,模拟器问题等等,本文章的一些操作不成功的话,重启试试 一.快速自建一个App 1.App难写吗?(1) ~问:我不懂Java我能写App吗? 答:我觉得大 ...

  3. APP渗透测试准备(一)

    APP渗透测试准备(一) 文章目录 APP渗透测试准备(一) 环境准备 安装adb 安装frida frida hook实例 环境准备 Windows10 X64 Python 3.7 OppoR9s ...

  4. app渗透测试抓不到数据包怎么办?

    1.app渗透测试常见的模拟器有夜神,闪电模拟器等. 2.遇到问题,数据包抓不到? (1)最常见的解决方法调低模拟器安卓版本,使用MuMu模拟器,大部分app都适用,但是也有些app无法抓取. (2) ...

  5. 网络安全进阶篇(十一章-5)APP渗透测试篇(上)

    每日一句:渗透测试,一定要有耐心,所有的功能点都要测试.很多地方不亲身经历是没有太多的感受的. 一.App渗透测试原理 1.简介App渗透测试与Web渗透测试从某种角度说基本没有区别App其实就是手机 ...

  6. Burp Suite抓包夜神模拟器与安装证书完整版!(APP渗透测试)

    burp抓夜神模拟器包,用来做APP渗透测试等.(其他的模拟器也是这样) 看网上的都比较乱,就自己写一个吧. 一.下载夜神模拟器和burp 夜神官网:https://www.yeshen.com/ b ...

  7. aap渗透_Android App渗透测试工具分享

    这段时间因为某些原因接触了Android App渗透测试,发现了几个不错的App渗透测试工具(虽然这些工具早就出来了 2333),搭建测试环境的过程中遇到了一些问题,特地总结一下,希望能给大家带来帮助 ...

  8. android 测试工程 关闭混淆,如何对混淆的Android应用进行渗透测试?

    原标题:如何对混淆的Android应用进行渗透测试? 自动工具 在手工开始工作之前,有几个反编译工具和网站可以在很多混淆场景提供帮助.APK Deguard是其中之一.它最大只支持16Mb的APK文件 ...

  9. APP渗透测试通过burp抓取https包

    目录 0x01 前言 0x02 工具的准备 0x03 搭建流程 1.1 安装夜神模拟 1.2 配置burpsuite监听的ip及端口 1.3  夜神模拟器安装证书 1.4 夜神模拟器开启代理模式 1. ...

  10. aap渗透_某app渗透测试

    某 APP 渗透测试 Author :村长 Email:codier@qq.com Blog:codier.cn 比较详细 , 大牛轻喷. 0x001. 下载 app 安装了之后,挂个代理.分析之后, ...

最新文章

  1. CMakeFile命令之file
  2. 探索Julia(part4)--数组
  3. unity游戏中提示信息如何实现_Unity编辑器操作面试题集锦(上)
  4. 如何在ASP.NET 5和XUnit.NET中进行LocalDB集成测试
  5. Lucene的一些基本使用方法和概念 (JAVA)
  6. MFC非模态对话框实例
  7. win7查看隐藏文件_Win8系统查看隐藏文件的操作方法是什么?
  8. 随想录(公司程序员的九层楼)
  9. 损失函数 之 交叉熵
  10. python写字_用Python写书法作品,WOW!
  11. Relief 特征选择算法简单介绍
  12. 关于校园粮食浪费问题的调查
  13. IOL2020中国初选第一题题解
  14. Newline —— CRLF、LF、CR回车和换行
  15. Postman测试工具调试接口详细教程【向后端发送Json数据并接收返回的Json结果】
  16. 自费送几本豆瓣9.0高分Python书籍,助你涨薪至30K
  17. Hi3516CV500_SDK_V2.0.1.1 编译osdrv目录
  18. 美度舵手系列多功能计时腕表伴你行走世界
  19. 一场较真而纯粹的 VR 开发者技术会议
  20. 【解决】当你不小心将桌面文件位置直接位移到D盘,且桌面上出现D盘所有目录的解决办法!!!

热门文章

  1. mysql 的indexof函数
  2. 大数据分析10年本科专业排名:什么专业最热门,这问题太难了!!
  3. soft-attention--学习笔记
  4. IntelliJ IDEA配置开发环境
  5. hnu 数字电路 实验2.4 4位先行进位加法器
  6. 封闭空间以及封闭空间中的选项卡
  7. 吴裕雄--天生自然 诗经:正气歌
  8. win7安装theano吐血总结
  9. 让INPUT不可编辑
  10. 【Linux系统IO函数】lseek函数