参加了华为XMan冬令营,身边大佬云集,菜鸡我瑟瑟发抖,今日学习记录如下
01 安卓系统架构与机制应用层: 系统内置的应用程序以及非系统级的应用程序都属于应用层,负责与用户进行直接交互,通常都是用Java 进行开发的
应用框架层: 应用框架层为开发人员提供了开发应用程序所需要的API,我们平常开发应用程序都是调用这一层所提供的API,当然也包括系统应用。这一层是由Java 代码编写的,可以称为Java Framework。
系统运行层: c/c++库 & androID运行时库
JVM DVM ART
硬件虚拟层(HAL): 硬件抽象层是位于 *** 作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。
linux内核层 (linux Kernel) :
安卓动流程
Init -> Zygote进程启动 -> system启动
1 启动init时,会进入system/core/init/init.cpp的mian方法 启动java虚拟机
2 Zygote进程启动 : fork的方式 app_main->AndroIDRuntime->ZygoteInit
3 Systemserver进程启动 : Zygoteinit -> AndroIDRuntime ->Runtimeinit -> SystemServer -> 各种管理器
建议阅读Android8.0.1源码
02 应用渗透测试与调试工具使用ADB (AndroID DeBUG BrIDge)androird 开发/测试人员不可替代的强大工具
Adb kille-server Adb start-server Adb root Adb push Adb pull Adb connect Adb shell Adb install -t //-t 调试模式 Adb logcat //看日志 Adb exec-out screencap-p>sc.png //截屏
adb连接夜神模拟器 : adb.exe connect 127.0.0.1:62001
Apktool又名“AndroID的Burp套件”,是用于AndroID黑客攻击的必备工具。它可能是分析期间最常用的工具。
Apktool是用于反向工程APK文件的工具。它使您可以解压缩APK文件,并在进行一些修改后重新打包它们。这使您可以直接检查应用程序的资源,并将代码插入应用程序中以进行进一步分析。
AndroID StudioAndroID Studio是用于开发AndroID应用程序的标准环境。您可以使用它来修改应用程序,或者通过伤真器在虚拟环境中运行应用程序。
Burp SuiteBurp Suite可以用作代理来检查往返于测试设备的流量
FrIDaFrIDa是一个了不起的工具套件,可让您将自己的脚本注入到应用程序的运行进程中。这可用于检查被调用的功能,应用程序的网络连接以及绕过证书固定。
安装 https://www.jianshu.com/p/c349471bdef7
drozerhttps://github.com/FSecureLABS/drozer
JadxAndroID KillerIDA pro文件格式
arm arm-v7 x86
客户端数据安全安装包签名校验jarsigner -verify apk
客户端程序保护反编译为java代码
可使用jadx,androIDkiller等工具进行反编译
反编译为smali代码
apktool d
apktool b
smali代码的阅读
#注释
.method 方法
.locals n 寄存器个数n
invoke- 执行方法
应用完整校验
apkool d apk
校验hash值是否被改变
组件安全如何确认组件是否可以导出使用ApkTool解包,打开解包目录中AndroIDManifest.xml,对其中声明的各个组件,根据以下规则判断是否可导出:
显式声明了androID:exported="true",则可导出;
显示声明了androID:exported="false",则不可导出;
未显示声明androID:exported:
若组件不是Content ProvIDer:若组件包含<intent-filter>则可导出,反之不可;
若组件是Content ProvIDer:若SDK 版本<17 则可导出,反之不可
jroder
Activity有界面
run app.activity.info -a packagename
run app.activity.start--component com.example.package
com.example.package.welcome
Service无界面
run app.service.info -a packagename
run app.service.start--component com.example.package
com.example.package.sIEve.xxx
broadcast RecIEverrun app.broadcast.info -a packagename
run app.broadcast.send --component com.package.name --action androID.intent.action.XXX
Content ProvIDersql注入 目录遍历
run app.provIDer.info -a packagename
run scanner.provIDer.injection -a com.mwr.example.sIEve
run scanner.provIDer.traversal -a com.mwr.example.sIEve
WhyIntent本地拒绝服务检测 getIntent() Intent.getXXXExtra() 捕获到异常或畸形数据未作处理
ClassCastException异常导致的拒绝服务
NullPointerException异常导致的拒绝服务 ......
WebVIEw安全 WebVIEw 任意代码执行sqlite databases broswer
WebVIEw 密码明文存储WebVIEw 域控制不严格
setAllowfileAccessset
AllowfileAccessFromfileURLsset
AllowUniversalAccessFromfileURLs
敏感信息安全检查客户端程序存储在手机中的SharedPreferences配置文件
先遍历一遍整个程序的功能,再检查
检查客户端程序存储在手机中的SharedPreferences配置文件,通常是对本目录(data/data/packagename)下的文件内容(一般是xml)进行检查,看是否包含敏感信息。
检查客户端程序存储在手机中的sqlite 数据库文件
在检测sqlite 数据库文件,在私有目录及其子目录下查找以.db结尾的数据库文件
检查客户端程序apk包中是否保存有敏感信息
证书文件
逻辑Js文件
图片文件
其他文件 . . .
logcat日志
本地端口开放检测
外部动态加载DEX安全风险检测
风险位置:public DexClassLoader(String dexPath,StringoptimizedDirectory, String libraryPath, ClassLoaderparent)查看AndroIDManifest.xml 包package 值相对应路径下的文件中是否含有DexClassLoader()函数调用
进程安全 内存访问和修改通过对客户端内存的访问,有可能会得到保存在内存中的敏感信息(如登录密码,帐号等)。测试客户端内存中是否存在的敏感信息(卡号、明文密码等等)。
工具 Memspector 需要root权限
通信安全 抓包将模拟器设置代理为本机
更改burp代理设置为对应ip
@H_47_404@
在options中export出证书,拓展名为cer
在虚拟机的设置中导入证书即可
成功抓包!
http协议
https协议
校验不严格
双向校验
其他协议
androID应用渗透测试-应用调试 androID stuIDo 远程调试在手机上安装应用
将apk反编译为smali代码
安装smaliIDea插件
下载链接:https://bitbucket.org/JesusFreke/smali/downloads/smalidea-0.05.zip下载
AndroID Studio安装smalIDea。
进入Settings->Plugins点击Install plugin from disk选中下载好的压缩包->安装成功
adb连接虚拟机 adb connect 127.0.0.1:62001
adb shell ps | grep hfdc 找到进程pID
远程启动程序调试 adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity
查看待调试程序pID
adb shell ps | grep hfdcxy#
转发端口# [pID]为pID值
adb forward tcp:8700 jDWp:[pID]
配置AS中的remote deBUG
启动调试
IDA 远程调试有JNI 的程序 可以使用IDA来调试安卓程序里的so库文件
adb push H:\IDA7.0\dbgsrv\androID_x86_server /data/local/tmp
adb shell 进入手机shell 运行server
adb forward tcp:23946 tcp:23946 端口转发
在IDA里选择remote deBUG
attach to process
这样就可以调试了
03 AndroID应用渗透测试框架Xposed
androID应用渗透测试-渗透测试框架Xposed介绍Xposed是AndroID平台上最有名的一个框架。在这个框架下,我们可以加载很多插件App,这些插件App可以直接或间接 *** 纵系统层面的东西
Dalvik虚拟机在执行java层代码时如何识别JNI方法?
怎样才能将java层普通方法注册成JNI方法?
Xposed框架做了什么?
FrIDa通俗一点讲,FrIDa是为Native应用开发出来的一把瑞士军刀。从技术的角度讲,FrIDa是一个动态代码执行工具包。通过FrIDa你可以把一段JavaScript注入到一个进程中去,或者把一个动态库加载到另一个进程中去,并且FrIDa是跨平台的,也就是说,你可以对windows, macOS, GNU/linux, iOS, AndroID以及QNX 系统上的进程进行上述 *** 作。
为了使用方便,FrIDa工具包在基于自身API的基础上也提供了一些简单的小工具,你可以根据自己的需求直接拿来使用,或者可以作为你后续进行FrIDa脚本开发的参考示例
安装:下载相应的frIDa-server,frIDa-server的版本和frIDa版本要一致,否则运行可能会报错
给frIDa-server相应的权限,放到/data/local/tmp文件夹下
chmod777 frIDa-server
运行frIDa-server ./frIDa-server
AndroID端使用:转发端口
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
查看手机上应用进程列表,查看是否安装成功
frIDa -ps -U
以上是内存溢出为你收集整理的XMan 冬令营 哈尔滨 day1移动应用程序渗透测试全部内容,希望文章能够帮你解决XMan 冬令营 哈尔滨 day1移动应用程序渗透测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)