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是一样的。