zoukankan      html  css  js  c++  java
  • 2. 移动安全渗透测试-(Android安全基础)

     2.1 Android系统架构

    1、应用程序层 平时所见的一些java为主编写的App

    2、应用程序框架层 应用框架层为应用开发者提供了用以访问核心功能的API框架

    android.app:提供高层的程序模型和基本的运行环境。

    android.content:包含对各种设备上的数据进行访问和发布。

    android.net:提供帮助网络访问的类,超过通常的java.net.接口。

    android.os:提供了系统服务、消息传输和IPC机制。

    android.provider:提供访问Android内容提供者的类。

    android.telephony:提供与拨打电话相关的API交互。

    android.view:提供基础的用户界面接口框架。

    android.util:涉及工具性的方法,例如时间日期的操作。

    3、C、C++本地库和Android运行时环境

    什么是运行时? 运行时就是一个供操作系统使用的系统,它负责将你用高级语言(比如 Java)编写的代码转换成 CPU/处理器能够理解的机器码 Android运行时(runtime)与库位于相同的层,ART和Dalvik都算是一种Android运行时环境,或者叫做虚拟机 Linux内核的上层是Android的本地库,这些库由c/c++编写 4、Linux内核与驱动层 最底层由Linux内核组成 Android的内存管理、进程管理、网络协议栈、驱动模型和安全等主要的系统服务依赖于Linux

    2.2 四大组件

    1、Activity  

    一个Activity通常就是一个单独的屏幕(窗口)  

    Activity的生命周期   

    onCreate()创建   

    onStart()启动   

    onResume()运行   

    onPause()待机   

    onStop()停止   

    onDestroy()销毁

    2、Service  

    Services 服务简单来说就是剥夺界面的Activity,Service一直运行于后台,不会与用户交互,可用来处理一些耗时的任务  它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下文(context)里面,其它的组件可以绑定到一个服务(Service)上面   

    Service的生命周期,

    IBinder onBind(Intent intent) 该方法是Service必须实现的一个方法,参数为意图,返回一个IBinder对象

    void onCreate() 当Service第一次被创建后,系统将立即回调该方法

    void onDestory()当Service被关闭之前会回调该方法

    3、Broadcast Receiver

    广播接收者  Broadcast 广播是用于应用程序之间传输信息的机制  

    Broadcast Receiver 广播接收者对发送出来的广播进行过滤接收并响应

    4、Content Provider  

    应用程序共享的空间,用于在不同的应用程序之间实现数据共享的功能

    2.3 五大存储

    1、SharedPreferences存储  

    以XML文件形式存储  

    SharedPreferences存储路径:/data/data/包名/shared_prefs/

    2、本地存储  

    getDataDirectory() 获取到Android中的data数据目录(sd卡中的data文件夹)  

    getDownloadCacheDirectory() 获取到下载的缓存目录(sd卡中的download文件夹)  

    getExternalStorageDirectory() 获取到外部存储的目录 一般指SDcard(/storage/sdcard0)  

    getExternalStorageState() 获取外部设置的当前状态 一般指SDcard  

    getRootDirectory() 获取到Android Root路径

    3、SQLite数据库存储  

    SQLite是一款轻量级的关系型数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能  Android 提供了一个SQLiteOpenHelper 帮助类,借助这个类就可以非常简单的对数据库进行创建和升级  SQLite数据库存储路径:/data/data/包名/database/  

    4、ContentProvider存储  

    一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去  而且ContentProviders是以类似数据 库中表的方式将数据暴露,也就是说ContentProvider就像一个“数据库”  那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基 本一样,只不过是采用URI来表示外界需要访问的“数据库”  大多数ContentProvider使用Android文件系统或者SQLite数据库来保持数据,但是也可以以任何方式来存储

    5、网络存储

    2.4 六大布局

    1、LineartLayout 线性布局

    2、FrameLayout 帧布局

    3、TableLayout 表格布局

    4、RelativeLayout 相对布局

    5、AbsoluteLayout 绝对布局

    6、GridLayout 网格布局

    2.5 arm架构和x86架构

    Android模拟器如夜神之类的,可以模拟运行arm,手机一般是arm,但是也不排除例外

    2.6 adb 常用指令

    【1】kill-server  杀死adb服务

    【2】start-server 开启服务

    【3】adb install aa.apk 快速安装一个apk

    【4】adb uninstall +应用的包名 快速卸载一个Android应用

    【5】adb shell 进入手机终端

    【6】adb pull test.txt 把一个文件从终端拉出来

    【7】adb push test.txt /mnt/sdcard 把一个文件从电脑推到手机

    【8】 cat 命令

    查看文件内容 cat demo.txt |grep aaa

    cat /proc/[pid]/maps 查看当前进程的内存映射信息 比如加载了那些so和dex cat /proc/[pid]/status 查看当前进程的状态信息 比如 TracerPid TracerPid是否为0,不为0表示该进程已经被ptrac cat /proc/[pid]/net/tcp/tcp6/udp/udp6 查看当前应用的端口号信息

    【9】touch/echo 命令 创建文件

    adb shell dumpsys activity top  查看当前应用activity的信息。

    adb shell dumpsys 把当前系统所以运行的四大组件打印出来

    adb jdwp 查看设备中可以被调试的应用的进程号

    【10】ps 说明:查看设备的进程信息,货值指定进程的线程信息。 用法 :ps |grep 过滤的内容 ps -t [pid]

    【11】 am start -D(debug运行) -n pkgname/pkgname.activityname 启动一个应用

    【12】am broadcast -a [广播动作]

    【13】 adb forward [(远程端)协议:端口号] [(设备端)协议:端口号]  端口转发,IDA调试时用

    2.7 AndroidManifest.xml解析

    一般APP的主入口文件就是这个文件,通过它可以启动APP,还有一些敏感的信息保存在里面

    2.8 使用burp suite 抓APP HTTPS包

    下载burp suite 安装包,监控本机IP

    打开手机浏览器访问IP:8080,下载安装burp suite的证书,打开APP即可在burp suite上看到数据包

    备注:对于有些品牌的手机,无法加载用户导入的证书,需要root设备才可以,

    Android 7.0之后只信任系统的证书,无法加载用户自定义的证书,解决办法,root设备,将证书名称base64之后,放在跟证书路径下即可

    2.9 drozer框架

    1.、安装

    第一步:从http://mwr.to/drozer下载Drozer (Windows Installer)

    第二步:在Android设备中安装agent.apk adb install agent.apk

    2、使用 连接上模拟器/真机

    nox_adb.exe connect 127.0.0.1:62001

    端口转发,转发到Drozer使用的端口31415 adb forward tcp:31415 tcp:31415

    开启Drozer console drozer console connect

    3、测试 确定攻击面

    run app.package.attacksurface com.tencent.qqmusic

    Attack Surface: 15

    activities exported 13

    broadcast receivers exported

    0 content providers

    exported 7 services exported

    2.10 自动化分析Inspeckage框架

    1、下载安装

    https://github.com/ac-pm/Inspeckage#information-gathering 

    2、使用 端口转发

    adb forward tcp:8008 tcp:8008

    127.0.0.1:8008

    Settings Disable FLAG_SECURE

    禁止截屏开关 SSL uncheck 是否关闭SSL验证

    Logcat 实时查看该app的logcat输出

    Tree View 可以实时浏览app的数据目录并直接下载文件到本地

    Package Information 应用基本信息(组件信息、权限信息、共享库信息)

    Shared Preferences LOG:app XML文件读写记录;

    Files:具体XML写入内容

    Serialization 反序列化记录

    Crypto 常见加解密记录(KEY、IV值)

    Hash 常见的哈希算法记录

    SQLite SQLite数据库操作记录

    HTTP HTTP网络请求记录

    File System 文件读写记录

    Misc. 调用Clipboard,URL.Parse()记录 WebView 调用webview内容

    IPC 进程之间通信记录

    +Hooks 运行过程中用户自定义Hook记录

  • 相关阅读:
    常用修图工具的一些使用技巧及问题解决方法——ai
    IIS7web服务器调试ASP.net程序遇到的一些故障的解决办法
    使用ecstore-sdk开发包制作易开店和启明星模板
    虚拟机安装Centos6.5服务器系统
    使用UltraISO制作光盘镜像
    安装配置Windows Live Writer做为博客客户端
    Winform关于OpenFileDialog的使用方法
    SQLServer的数据类型
    SqlServer把日期转换成不同格式的字符串的函数大全
    SQL字符串处理函数大全
  • 原文地址:https://www.cnblogs.com/hack404/p/10981107.html
Copyright © 2011-2022 走看看