AP渗透测试学习
1、测试指标
2、测试环境
SDK: Java JDK ,Android SDK
工具: 7zip dex2jar jd-gui apktool activity 劫持工具
3、安装包签名
在Android中,包名相同的两个APK会被认为是同一个应用,新版本覆盖旧版本的时候签名证书必须一致。如果APK没有使用自己的证书进行签名,将失去对版本管理主动权。
检测: jarsinger.exe -verify APK 文件路径 -verbose -certs
需要注意的是只有使用直接客户端的证书签名的时候,才认为是安全的,Debug 证书、第三方(开发)证书均存在安全风险。
2、反编译保护
测试客户端的安装程序,判断是否能够反编译成代码, JAva代码和SO文件是否存在代码混淆等保护,未做保护的Java 代码,可以分析器运行的逻辑,并对代码中的缺陷对客户端和服务器端进行测试
测试步骤,将APK当成ZIP并解压,得到Classes.dex文件,使用 dex2java.bat 执行 dex2jar.bat classes.dex 文件路径
得到 classes.dex.jar 文件,然后使用 jd-GUI 打开 JAVA文件,可以得到JAVA代码
(注意,直接使用 smali2java打开 apk文件 ,也可以反编译 JAVA代码)
(注意:有时候使用 Apktool 能够解包并查看 Smali,但是dex2jar却不行,如果 dex2jar反编译失败的时候,可以试试能否恢复smali代码)
逆向之后如果源代码没有混淆则表明 不安全的,如果代码经过混淆,或者加壳措施,不能完整恢复代码,则是安全的
安全建议,建议客户端程序可以把关键的代码一JNI方式放在SO 库里,SO库中是经过编译的ARM汇编代码,可以对其进行夹壳保护,防止逆向分析。
3、应用完整性校验
测试客户端程序是否对自身完整性进行完整性校验,
java -jar apktool.jar d -f apk 文件路径 -o 解包目标文件夹
随便找一个解包目录里面的资源文件,修改它,推荐找logo之类的图进行修改。使用APKTool 将解包的目录重新打包成未签名的APK文件。 命令如下 :
java -jar apktool.jar b -f 待打包的文件夹 -O 输出的 apk路径
用SignAPK ,对未前面的APK文件进行签名,命令如下;
java -jar signapk.jar testkey.x509.pem testky.pk8 待签名 apk文件路径 签名 后输出apk 路径
将签名的APK安装 ,运行 ,确认是否存在自校验 需要注意之前安装的APK和修改之后的APK签名不同,就不能直接覆盖安装,二是需要卸载之前安装额APP。若应用完整性校验不适用MANIFEST.MF中的数据,且核心代码通过JNI技术写入 .so库,同时服务端进行相关校验,此时无风险。 若应用完整性与本地进行验证二不存在与其他问题或使用MANIFEST.MF 中的数据作为验证凭据(有新文件时它提示应用完整性验证失败) 此时低风险。 若在本地进行验证的基础上只通过MANIFEST,MF 对客户端原有文件进行校验二忽略性增文件校验,此时中风险,若未进行完整性校验此时高风险。
安全建议客户端每次开机启动时进行客户端自身的应用完整性校验,在验证逻辑中不适用MANIFEST.MF中的数据作为验证凭证,同时血药验证是否不属于客户端版本的新文件添加 ,验证过程服务器端完成。
组件安全:
描述 : 本项主要测试客户端是否包含后天服务,COntent Provider ,第三方调用和广播等组件,Internt权限的设置是否安全,应用不通过组成部分之间的机密数据传递是否安全,检查客户端是否存在组件劫持风险,产看客户端程序具有导出那些应用信息的权限,反编译APK文件之后,检查Android QMainfest文件中是否有多余的android:export 声明, 客户端是否存在导出其他应用信息的权限.
组件 ; 安卓APP 以组件未单位急性权限声明和生命周期管理
组件有什么用: 安卓系统额组件共有四张,主要用途分别是 :
Activity : 呈现可供用户交互的界面,是最常见的组件
Service : 长时间执行后台作业,常见于监控之类应用
Content Provice : 在多个APP之间共享数据,比如通讯录数据
Broadcast Receiver ;注册特定事假 ,并在其发生时激活。
什么是权限声明 : 安卓系统低音了许多权限声明项,分别对应一些操纵系统功能 .
权限声明有什么用 :
因为权限是以组件为单位,A组件调用组件B的的功能类访问操作系统API时,使用组件B的权限声明。 如果B作为导出组件,没有进行严格的访问控制,那么A就可以通过B来访问原本没有声明权限的功能构成本地权限提升。
使用APKtools解包 ,打开解包目录中的Androidmainfest.xml,对其中的声明的各个组件根据下面的规则判断是否可以导出.
AP渗透测试学习的更多相关文章
- 【渗透测试学习平台】 web for pentester -2.SQL注入
Example 1 字符类型的注入,无过滤 http://192.168.91.139/sqli/example1.php?name=root http://192.168.91.139/sqli/e ...
- 【渗透测试学习平台】 web for pentester -1.介绍与安装
web for pentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术. 官网:https://www.pentesterlab.com 下载地址: ...
- 【渗透测试学习平台】 web for pentester -7.文件包含
Example 1 输入单引号,报错,得到物理路径 可通过../../../../etc/paaswd 读取敏感信息 可包含本地文件或远程文件 https://assets.pentesterlab. ...
- 渗透测试学习 二十九、kali安装,信息搜集,服务器扫描
kali安装,信息搜集,服务器扫描 kali介绍 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.由Offensive Security Ltd维护和资助.最先由 ...
- 渗透测试学习 十三、 SQLmap使用详解
SQLmap介绍 sqlmap是一个由python语言编写的开源的渗透测试工具,它主要是检测SQL注入漏洞,是一款功能强大的SQL漏洞检测利用工具. 他可以检测的数据库有:access.msSQL.M ...
- 渗透测试学习 三十一、MSF
术语 测试者利用系统程序或服务的漏洞进行攻击的一个过程——渗透攻击(exploit),攻击载荷(payload) 攻击者在目标系统上执行的一段代码,该代码具有反弹链接,创建用户.执行其他系统命令的功能 ...
- 渗透测试学习 九、 MSsql注入上
MSsql注入漏洞详解 (Asp.Aspx站,常见于棋牌网站.考试网站.大学网站.政府网站.游戏网站.OA办公系统) 大纲:msSQL数据库调用分析 msSQL注入原理 msSQL注入另类玩法 msS ...
- 渗透测试学习 二、Windows基础
系统目录 服务 端口 注册表 黑客常用DOS命令(在拿到shell时会用到) 一. 系统目录 Windows目录 系统的安装目录 System32àconfigàSAM文件 是用户密码的 ...
- 2019-10-28:渗透测试学习,sqlmap的使用,笔记
sqlmap工具的使用sql注入工具,明小子,啊D,萝卜头,穿山甲,sqlmap等开源自动化注入利用工具,支持的数据库有12种,在/plugins中可以看到支持的数据库种类,在所有注入利用工具中是最好 ...
- 渗透测试学习 二十八、WAF绕过详解
大纲: WAF防护原理讲解 目录扫描绕过WAF 手工注入绕过WAF sqlmap绕过WAF 编写salmap绕过WAF 过WAF一句话编写讲解 菜刀连接绕过WAF webshell上传绕过WAF 提权 ...
随机推荐
- CLion搭建Qt开发环境,并解决目录重构问题(最新版)
序言 Qt版本不断更新,QtCreator也不断更新.在Qt4和Qt5时代,我一直认为开发Qt最好的IDE就是自带的QtCreator,可是时至今日,到了Qt6时代,QtCreator已经都12.0. ...
- uni-app 实现下拉刷新功能
我们在运用uni-app开发小程序或h5时,常常需要页面实现下拉刷新功能. 在 js 中定义 onPullDownRefresh 处理函数(和onLoad等生命周期函数同级),监听该页面用户下拉刷新事 ...
- 从零开始配置vim(27)——代码片段
我们之前介绍过缩写相关的内容,缩写是可以自动帮我们将缩写的单词展开成一段完整的话.但是代码本身是结构话的,仅仅使用缩写来配置是无法完成自动生成代码这个步骤的.好在我们大量的插件来进行配置.本篇我们将要 ...
- 深度学习应用篇-元学习[14]:基于优化的元学习-MAML模型、LEO模型、Reptile模型
深度学习应用篇-元学习[14]:基于优化的元学习-MAML模型.LEO模型.Reptile模型 1.Model-Agnostic Meta-Learning Model-Agnostic Meta-L ...
- 【深度学习项目二】卷积神经网络LeNet实现minst数字识别
相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别 [深度学习项目二]卷积神经网络LeNet实现minst数字识别 [深度学习项目三]ResNet50多分类任务[十二生肖分类] 『深度 ...
- C/C++ 通过HTTP实现文件上传下载
WinInet(Windows Internet)是 Microsoft Windows 操作系统中的一个 API 集,用于提供对 Internet 相关功能的支持.它包括了一系列的函数,使得 Win ...
- C/C++ 字符串拷贝处理
C语言的字符串操作 strtok 实现字符串切割: 将字符串根据分隔符进行切割分片. #include <stdio.h> int main(int argc, char* argv[]) ...
- Spring自带的这11个工具类,真香!
前言 最近有些小伙伴,希望我分享一些好用的工具类,帮他们提升开发效率. 今天这篇文章专门跟大家一起总结一下,Spring框架本身自带的一些好用的工具类,希望对你会有所帮助. 1 Assert 很多时候 ...
- 【链表】链表OJ-力扣2074. 反转偶数长度组的节点【超详细的算法解释】
说在前面 今天博主给大家带来的是力扣上的一道链表OJ,完成这道题后,博主感觉这题覆盖了很多链表的解题思想,另外,这道题对指针的控制也是比较高的.在这里博主将这道好题分享给大家! 另外,对于链表等数据结 ...
- 【奶奶看了都会】ComfyUI+SVD制作AI视频教程,附效果演示
AI一天,人间一年 大家好啊,我是小卷,最近AI绘画又发展出一些新玩意了,小卷因为工作的关系有一个月没关注AI的发展了,都有点跟不上版本节奏了... 1.comfyui的使用效果 今天给大家介绍下AI ...