XMan 冬令营 哈尔滨 day1移动应用程序渗透测试

XMan 冬令营 哈尔滨 day1移动应用程序渗透测试,第1张

概述参加了华为XMan冬令营,身边大佬云集,菜鸡我瑟瑟发抖,今日学习记录如下01安卓系统架构与机制应用层:系统内置的应用程序以及非系统级的应用程序都属于应用层,负责与用户进行直接交互,通常都是用Java进行开发的    应用框架层:应用框架层为开发人员提供了开发应用程序所需

参加了华为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 Studio

AndroID Studio是用于开发AndroID应用程序的标准环境。您可以使用它来修改应用程序,或者通过伤真器在虚拟环境中运行应用程序。

Burp Suite

Burp Suite可以用作代理来检查往返于测试设备的流量

FrIDa

FrIDa是一个了不起的工具套件,可让您将自己的脚本注入到应用程序的运行进程中。这可用于检查被调用的功能,应用程序的网络连接以及绕过证书固定。

安装 https://www.jianshu.com/p/c349471bdef7

drozer

https://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 RecIEver

run app.broadcast.info -a packagename

run app.broadcast.send --component com.package.name --action androID.intent.action.XXX

Content ProvIDer

sql注入 目录遍历

run app.provIDer.info -a packagename

run scanner.provIDer.injection -a com.mwr.example.sIEve

run scanner.provIDer.traversal -a com.mwr.example.sIEve

Why

Intent本地拒绝服务检测 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移动应用程序渗透测试所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存