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渗透测试学习的更多相关文章

  1. 【渗透测试学习平台】 web for pentester -2.SQL注入

    Example 1 字符类型的注入,无过滤 http://192.168.91.139/sqli/example1.php?name=root http://192.168.91.139/sqli/e ...

  2. 【渗透测试学习平台】 web for pentester -1.介绍与安装

    web for pentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术. 官网:https://www.pentesterlab.com 下载地址: ...

  3. 【渗透测试学习平台】 web for pentester -7.文件包含

    Example 1 输入单引号,报错,得到物理路径 可通过../../../../etc/paaswd 读取敏感信息 可包含本地文件或远程文件 https://assets.pentesterlab. ...

  4. 渗透测试学习 二十九、kali安装,信息搜集,服务器扫描

    kali安装,信息搜集,服务器扫描 kali介绍 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.由Offensive Security Ltd维护和资助.最先由 ...

  5. 渗透测试学习 十三、 SQLmap使用详解

    SQLmap介绍 sqlmap是一个由python语言编写的开源的渗透测试工具,它主要是检测SQL注入漏洞,是一款功能强大的SQL漏洞检测利用工具. 他可以检测的数据库有:access.msSQL.M ...

  6. 渗透测试学习 三十一、MSF

    术语 测试者利用系统程序或服务的漏洞进行攻击的一个过程——渗透攻击(exploit),攻击载荷(payload) 攻击者在目标系统上执行的一段代码,该代码具有反弹链接,创建用户.执行其他系统命令的功能 ...

  7. 渗透测试学习 九、 MSsql注入上

    MSsql注入漏洞详解 (Asp.Aspx站,常见于棋牌网站.考试网站.大学网站.政府网站.游戏网站.OA办公系统) 大纲:msSQL数据库调用分析 msSQL注入原理 msSQL注入另类玩法 msS ...

  8. 渗透测试学习 二、Windows基础

    系统目录  服务  端口  注册表  黑客常用DOS命令(在拿到shell时会用到) 一.  系统目录 Windows目录  系统的安装目录 System32àconfigàSAM文件  是用户密码的 ...

  9. 2019-10-28:渗透测试学习,sqlmap的使用,笔记

    sqlmap工具的使用sql注入工具,明小子,啊D,萝卜头,穿山甲,sqlmap等开源自动化注入利用工具,支持的数据库有12种,在/plugins中可以看到支持的数据库种类,在所有注入利用工具中是最好 ...

  10. 渗透测试学习 二十八、WAF绕过详解

    大纲: WAF防护原理讲解 目录扫描绕过WAF 手工注入绕过WAF sqlmap绕过WAF 编写salmap绕过WAF 过WAF一句话编写讲解 菜刀连接绕过WAF webshell上传绕过WAF 提权 ...

随机推荐

  1. chrome谷歌浏览器多开(独立环境 独立cookie)

    复制下面代码(路径) "C:\Program Files\Google\Chrome\Application\chrome.exe" --user-data-dir="D ...

  2. HarmonyOS实战[一]——原理概念介绍安装:基础篇

    [本文正在参与"有奖征文|HarmoneyOS征文大赛"活动] 相关文章: HarmonyOS实战[一]--原理概念介绍安装:基础篇 HarmonyOS实战[二]-超级详细的原子化 ...

  3. 14.4 Socket 双向数据通信

    所谓双向数据传输指的是客户端与服务端之间可以无差异的实现数据交互,此类功能实现的核心原理是通过创建CreateThread()函数多线程分别接收和发送数据包,这样一旦套接字被建立则两者都可以异步发送消 ...

  4. 7.5 通过API判断进程状态

    进程状态的判断包括验证进程是否存在,实现方法是通过枚举系统内的所有进程信息,并将该进程名通过CharLowerBuff转换为小写,当转换为小写模式后则就可以通过使用strcmp函数对比,如果发现继承存 ...

  5. JWT( JSON Web Token —— JSON Web 令牌 )的学习笔记

    一.跨域认证的问题 互联网服务离不开用户认证.一般流程是下面这样: 1.用户向服务器发送用户名和密码. 2.服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色.登录时间等等. ...

  6. Oracle配置DCD避免会话被防火墙强制断开

    今天有客户反馈应用测试连接Oracle数据库的会话半小时左右未做操作就会被中断,报错ORA-3113,询问数据库是否有这样的超时设置,能否取消掉这个限制? 登上环境查看监听日志发现连接的IP和数据库I ...

  7. .NET Core开发实战(第34课:MediatR:轻松实现命令查询职责分离模式(CQRS))--学习笔记(下)

    34 | MediatR:轻松实现命令查询职责分离模式(CQRS) 实际上我们在定义我的查询的时候,也可以这样定义,例如我们定义一个 MyOrderQuery,把订单的所有名称都输出出去 namesp ...

  8. Linux 列出文件的绝对路径

    1.使用ls中列出文件的绝对路径ls | sed "s:^:`pwd`/:" 2.列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归find $PWD -maxd ...

  9. 使用mail发送邮件

    使用mail发送邮件 ​ 只做个简单介绍,使用场景不多 1.安装mail yum install mailx -y 2.配置 ​ 1)配置文件在/etc/mail.rc,有兴趣的可以仔细读一下默认的配 ...

  10. 快速上手typescript(基础篇)

    壹 ❀ 引 在javascript开发中,你可能也遇到过我这样的苦恼,在维护某段几年前的老旧代码时,我发现了某个数据加工方法fn,而且根据现有逻辑来看fn的某个参数是一个数组,因为新需求我需要对数组做 ...