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记录
2. 移动安全渗透测试-(Android安全基础)的更多相关文章
- Android渗透测试Android渗透测试入门教程大学霸
Android渗透测试Android渗透测试入门教程大学霸 第1章 Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...
- 渗透测试工具sqlmap基础教程
转载请注明出处:http://blog.csdn.net/zgyulongfei/article/details/41017493 作者:羽龍飛 本文仅献给想学习渗透测试的sqlmap小白,大牛请绕过 ...
- Web渗透测试笔记(基础部分)
信息收集: dns信息收集 格式:dns... -参数 域名 -参数 示例: root@xxSec:~# dnsenum baidu.com root@xxSec:~# dnsenum -f dns. ...
- IOS渗透测试第一步-基础知识统一放送
原文: http://www.websecgeeks.com/2017/04/ios-application-pentesting-part-3.html http://www.websecgeeks ...
- 实验吧 这个看起来有点简单!&渗透测试工具sqlmap基础教程
题目地址:http://ctf5.shiyanbar.com/8/index.php?id=1 下载sqlmap,拖到python安装文件夹下面,在桌面创建sqlmap的cmd快捷方式,都不赘述. 教 ...
- 2019-9-19:渗透测试,HTML基础学习,html绘制表格
1,受理员业务统计表 效果图: 代码: <!DOCTYPE html><html><head> <title>表格1</title>< ...
- metasploit 一款开源的渗透测试框架
渗透神器漏洞利用框架metasploit from: https://zhuanlan.zhihu.com/p/30743401 metasploit是一款开源的渗透测试框架软件也是一个逐步发展与成熟 ...
- chapter1 渗透测试与metasploit
网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...
- Android App安全渗透测试(一)
一. 实验环境搭建 1. 安装JDK 2. 安装Android Studio 3. 模拟器或真机 我的是夜神模拟器和nexus 工具 Apktool ...
- 渗透测试工具BurpSuite做网站的安全测试(基础版)
渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...
随机推荐
- php使用微信登录
1.第一步 $hosturl = urlencode('');//异步回调地址 $wechatInfo = WechatInfo::get_wechat(); //查询appid $url = &qu ...
- SpringCloud-创建服务消费者-Ribbon方式(附代码下载)
场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 1w+的心路历程
鬼知道我是如何坚持下来的,如果非要找个理由,那或许是所谓的热爱. 公众号转眼间写了三年.写的内容围绕着安卓技术,源码剖析,生活感悟,职场人生. 很庆幸的是,得到大家的支持,每一条留言都会是一次交流,看 ...
- BIM工程信息管理系统搭建-系统功能需求
BIM工程信息管理系统功能需求 该系统是真实存在项目,项目于2013年开始研发到2014年初完成,按照当时技术能力和国内BIM现状,现在BIM技术已比之前好多了,不管是建模.展示等.均提高了不少,本博 ...
- <深度学习>Tensorflow遇到的坑之一
AttributeError: module 'tensorflow' has no attribute 'random_normal' AttributeError: module 'tensorf ...
- localStorage和sessionStorage的共同点和区别
共同点: 1.localStorage和sessionStorage都是用来存储客户端临时信息的对象. 2.他们均只能存储字符串类型的对象. 3.不同浏览器无法共享localStorage或sessi ...
- C# Parallel 多线程并发
Parallel并发执行多个任务 多线程的,主线程会参与计算---阻塞界面等于TaskWaitAll+主线程计算 常用方法 1.Invoke 尽可能并行执行提供的每个操作 Console.Write ...
- vivo web service:亿万级规模web服务引擎架构
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/ovOS0l9U5svlUMfZoYFU9Q vivo web service是开发团队围绕奇点 ...
- UWP GridView切换数据时界面闪动
在选择数据时,比如1-10集,和11-20集切换时,GridView需要切换对应的数据,但是会发生界面闪动. 这是默认的Item Transition导致的. 可以去掉默认的转换效果. <Gri ...
- 计算几何 val.2
目录 计算几何 val.2 几何单位结构体板子 旋转卡壳 基础概念 求法 模板 半平面交 前置芝士:线段交 S&I算法 模板 最小圆覆盖 随机增量法 时间复杂度 模板 后记 计算几何 val. ...