APP 渗透测试与 WEB 渗透测试的区别及 APK 介绍

2024-06-14
来源:网络整理

1 简介

通常一些公司里不仅有WEB网站还会有APP软件、小程序等等,这些都是为了给用户提供更好的服务,但同时也存在很多的安全问题。

目前APP应用主要分为iOS,但是由于苹果的iOS操作系统不开源,操作系统相对封闭,而且iOS系统反编译的难度较大,所以APP系统的渗透测试一般都是在iOS系统上进行。

1.1. APK介绍

APK是应用程序包,当然你也可以叫它安装包,主要用于移动应用和中间件的分发和安全。

1.2. APP渗透测试简介

本质上APP渗透测试和WEB渗透测试没什么区别,APP应用其实就是APP中集成的网页。简单来说,如果你用电脑访问一个页面“/.php”,如果这个页面存在相关漏洞,那么如果你在APP中用手机访问这个页面,同样会出现相关漏洞。因为程序开发时使用的逻辑是一样的,只是打包时使用的打包方式不同,所以你在APP中看到的页面和你在电脑上看到的网页好像有点不一样,但是逻辑是始终一致的。

当然如果APP使用的是http或者协议,那么在抓包的时候,就跟挖掘WEB漏洞一样,可以使用浏览器直接访问并抓包,这样就可以对APP进行渗透测试了。但是也不排除有些APP使用的是其他协议,这时候就需要使用网络接口来抓包,获取其内容了。

2. 搭建测试环境

这里搭建测试环境其实就是搭建一个模拟器,在模拟器上运行APP,然后进行抓包。

2.1.

其实Burp也可以作为抓包工具使用,但是Burp在抓app包方面不是那么好用,所以这里就用它来抓APP包了。当然后续的测试都可以在Burp里测试。

2.1.1. 下载

这里建议从官网下载,没有任何限制,所以建议从官网下载。

下载链接:Web Tool for Free

这里我把页面翻译了一下,前面的英文是原意,填完这些信息就可以下载了,建议下载的时候使用一些小技巧,不然可能会比较慢。

2.1.2. 安装完成页面

这里的安装很简单,就不介绍了,我们直接看安装完成的页面就行。

2.1.3. 语言

由于这里的页面是英文的,如果觉得不太方便的话,可以使用中文翻译包来翻译。不过这个中文翻译和非中文翻译基本一样,子选项都是没有翻译的。至于怎么用,可以参考压缩包里的使用教程。

补丁包提取码:vqj5

2.2. 安装模拟器

我这里用的是,版本已经调整到 7.0了,下载安装就不说了,官网链接也不给,大家自己去搜吧。

2.2.1. 调整版本

默认下载的版本可能比较高,我这里调整一下版本,打开助手,这个默认是和模拟器一起安装的,点击右下角的添加模拟器,选择.0(位数随意),点击之后会自动下载安装,然后开机就可以了。

2.2.2. 调整页面

您刚刚下载的模拟器是平板模式,建议切换到手机模式。

2.2.3. 调整网络

这里的网络调整不是指设置为桥接模式,这里不要调整为桥接模式,如果调试完网络不通,请检查是否已经调整为桥接模式。

3.安装证书

这里提到安全证书的原因是,在抓包过程中可能会产生此类协议,而此类数据包需要使用证书进行授权。

但是如果设备是7.0+系统,且应用程序设置>=24的话,应用程序默认是不信任安装的用户证书的,所以就无法捕获到应用程序发起的请求了,然后就会看到一堆200 HTTP 到 xxx.xxx.xxx:443 的请求日志,这都是没有捕获成功的请求。

下面的方法是将证书安装到系统证书目录下,伪装成系统证书,这样就不会出现因为证书不受信任而无法抓包的问题了。

3.1. 工具下载

这是一个证书生成器,因为新版本拒绝有效期超过两年的证书,所以双击下载的.exe(确保关闭),会弹出对话框提示证书导入成功,如果弹出的内容说版本不对,请下载最新版本。

下载链接:

3.1.1. 设置

点击此处>>>>,勾选该复选框,弹出窗口时选择是,在旁边的框中可以设置端口,默认是8888,如果不改,就保持原样。

3.1.2. 导出证书

点击 -> -> -> -> Root to。导出后,您将能够在桌面上看到一个证书。我们将需要使用此证书。

3.2. 下载版本

向下滚动,选择顶部的 64 位 EXE,然后单击下载并安装。

下载:/ 对于 -

3.2.1. 添加环境变量

这个需要在cmd中执行,所以需要添加环境变量。

3.2.2. 执行命令

如果这里的cmd中心有返回信息的话,证明操作成功。

3.3. 证书格式转换及重命名 3.3.1. 转换为pem证书

将cer证书转换为pem证书,在cmd中输入以下命令进行转换:

openssl x509 -inform DER -in FiddlerRoot.cer -out FiddlerRoot.pem

3.3.2. 校验MD5

如下所示,我们生成的证书的哈希值是

openssl x509 -inform PEM -subject_hash_old -in 证书.pem

3.3.3. 重命名 pem 证书

您可以在桌面上看到.0证书。

ren FiddlerRoot.pem e5c3944b.0

3.4. 上传证书

这里需要把证书上传到模拟器,这里需要准备一个.0的模拟器。

3.4.1. 转移证书

点击夜神播放器侧边栏的电脑图标,选择打开电脑文件夹,会跳转到电脑上的C:\\\目录,将转换好的证书.0复制到该目录下。

3.4.2. 移动证书

下载MT ,拖到模拟器上完成安装,点击打开应用程序,打开左侧目录就可以看到刚才电脑目录下的证书。

在这里下载MT管理器后,将APK文件上传到模拟器。

3.4.3. 传输目录

点击右侧进入/etc//目录,然后长按左侧的.0文件点击复制,就可以复制到右侧打开的目录中。

3.4.4. 添加权限

你会发现,相对于其他现有的系统证书,.0 根本没有读取权限,去信任凭证里是找不到这个证书的,点击 MT 左上角,找到 Open

进入终端后输入以下命令,设置.0文件可读。

看一下/etc//目录下.0文件的权限,会发现它确实有读的权限。

3.4.5. 查找证书

点击模拟器的设置->安全->受信任凭据->系统,往下拉终于看到我们的证书了,尝试抓包,没有问题。

3.5. 模拟器代理设置

这里设置好代理之后,就可以捕获数据包了。

3.5.1. 网络设置

设置->WLAN->长按网络->修改网络->保存。这里的代理IP需要写入电脑的IP地址,端口就是fd的设置端口,默认是8888。设置完之后你会发现无法上网,那么这里就需要重启了,一般重启就能解决问题,如果还是不行的话重启电脑也可以解决。

3.5.2. 抓包测试

这里我在夜神模拟器的游戏中心打开一个游戏下载页面,可以看到页面的图片信息成功获取到了,并且还进行了流量管理,也能获取http流量。

4.APP应用信息收集

一般的WEB渗透测试,第一步都是收集网站的信息,APP渗透测试的第一步也是信息收集,但是APP的信息收集和WEB有点不一样,由于APP是封装的,所以需要反编译APK文件或者在访问APP时抓包,获取访问的域名、端口、参数等信息。

项目

是一款适用于华为行动/红队/渗透测试团队场景的移动端(iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻队成员、红队成员快速收集移动端或静态WEB站点的关键资产信息并提供基础信息输出,如:、CDN、指纹信息、状态信息等。

项目:

4.1.1. 依赖项

首先在这里下载文件,这里就不演示下载了,下载完之后需要先下载依赖库,这里的截图是安装完成,说明已经满足要求了。

python -m pip install -r requirements.txt

4.1.2. 使用

这里我随便找了一个apk文件,请注意,最好不要用大厂的APP软件来测试,最好找一些非法的,这里我用的是妃子...

通过获取的信息,我们可以对相关的URL地址进行提权,用于测试。

同时大厂商制作的APK程序可能会加壳,小厂商则可能不会,加壳的主要目的是为了防止别人随意修改APK文件,或者破解等等,避免被别人乱搞。

python app.py android -i

验证 URL

这里有点尴尬的是,某小妾好像已经不提供服务了,所以网站已经关闭了。不过还是找到了一些内容。看到这几行字,我想你应该明白这是什么意思了。

概括

该工具可以在不抓包的情况下通过APK文件获取应用包中将要访问的网站地址和URL地址,并通过这些地址进行深度渗透测试。

当然你也可以用上面说的抓包方法来获取这些域名,不过需要逐项点击才能实现,而且并不是所有的工具都能获取到包里的所有数据。

4.2. APK反编译

反编译用到的软件和工具其实有很多,但是很多都没有更新,比如修改大师等等。

安卓修改大师好像复活了,但是有要求,虽然网上破解版很多,我测试了好几个都没能激活成功。同时安卓修改大师疑似感染了供应链病毒,可能最新版本已经解决问题了,但是没有最新破解版。很多打着羊肉串的幌子卖,说是10+版本,但是下载之后发现都是8+版本。同时下载之后软件开始调用cmd,也是比较迷惑,运行时就开始调用,但是还没打开就开始调用,所以我就没有用。

2020年9月起就不再更新了,这次还是用这个来演示,主要介绍反编译得到的内容,大家可以不用用这个,不适合做专业破解。

当然网上还有很多APP反编译工具,这里就不介绍了,大家可以自行百度搜索。

4.2.1. 下载

4.2.2. 基本配置步骤

下载后,需要进行一些配置才能使用。

4.2.2.1. 配置 Java

第一次打开时,它会告诉你如何配置 Java SDK 环境。暂时不用管它。

进入之后是英文的,此时点击,在里可以看到调整语言的选项,调整完重启就可以了。这里配置Java,最好是1.8的Java。

4.2.2.2. 更新和替换

这里需要先更新,直接去官网下载最新版本然后替换就可以了。

下载:|

这里可以看到根目录下有一个bin>>,里面可以看到一个.4.1,替换成最新的,我这里下载的最新的版本是2.7.0版本。

4.2.2.3. 修改相关信息

修改根目录下bin>下的.bat和.ini文件。

修改.bat,将其中原来的.4.1.jar替换为.7.0.jar。

这里同样适用。

修改

这里修改上面之后,测试不行,需要在这个里添加,不然会报错。

4.2.3. 使用

不是很懂很详细的反编译,我们需要的只是获取APP里面的相关信息,主要是一些IP,将页面转换成web界面,方便进行渗透测试。

4.2.3.1. 项目搜索

只需将下载的APK文件拖入分析中,然后在项目中搜索即可找到以 或 开头的地址。

4.2.3.2. 项目经理

在项目管理器里你还可以看到很多页面,你可以点进去看看,比如这里就可以看到很多IP地址。

4.2.4. 包装

一些大公司开发的APP,基本都会进行加壳,避免被破解或者反编译,如果加壳了就需要脱壳,当然一键脱壳的方法有很多,但是可能会存在一些问题,这些问题没有办法解决,只能提供一个思路。

当然也可以直接用一些查壳工具,有壳的话其实直接找人测试就可以了,如果没有权限,对APP开发也不是很了解的话,那么...

4.3. 信息收集

关于这个信息的收集,其实就是抓包,直接看结果。

不过这里还是要提一下,我发现关闭模拟器重启后抓包不了,直接拿不到数据。后来查了一下,发现是我宿舍网络和办公室网络的IP不一样,更换后重启还是没效果。后来我把模拟器里的代理关掉,让其可以上网,再设置代理,同时重启。所以.0以上抓包还是比较麻烦,问题也不少,但是也没办法。

4.3.1. 获取数据

这是我测试一个妾的时候打开的数据,其实可以看到PHP版本,IP地址,URL等信息,对于渗透来说已经足够了。

4.3.2. IP 地址使用情况

这里就获取到了IP地址,那么我们能不能利用这个IP地址来进行渗透测试呢?我们可以使用一些在线的端口扫描来进行测试。

4.4. 数据包监控

有些情况下可以设置不同的代理来监控访问地址和端口,类似本地使用。这里的工具都一样,我这里用的是Nox模拟器,但是一打开数据包监控,工具就自动退出了,可能是不能用吧,Thor模拟器好像可以用。

这里我放上了该工具的链接,其中也包含相关教程。

数据包拦截器:数据包拦截器(自适应拦截32位及64位手游数据包)【发布1.0.0.24】 - 『原创发布区』 - - LCG - LSG | 安卓破解 | 病毒分析 |

4.5. APK资源提取

有些情况下,你可能无法提取APK文件,这时你就需要使用APK资源提取工具了。网上有很多工具,我这里截图一下,不过我暂时没看到好的APK资源提取工具,就不提供啦。这里就直接看看效果吧。

萃取

这里可以将无法获取的APK文件打包,打包后即可获取。

4.5.2. 查看资源

这里其实通过解压就可以把APK文件给真正的解压出来,然后就可以看到相关的APK资源了。

5.小程序抓包

小程序中抓包其实还是比较麻烦的,因为微信的问题,有些时候抓包是抓不出来的,同时默认抓到的包都是http的,如果要抓包的话需要在默认浏览器安装证书。

5.1. 安装证书

这里安装证书必须要在控制面板里打开,选择安装证书,同时安装的时候一定要选择受信任的根证书颁发机构,这样安装的证书才会有效。

5.2. 抓包测试

这里安装完证书之后就可以进行抓包测试了,至于信息收集这里就不多说了,信息收集方法跟APP是一样的。

分享