老男孩--手机端信息收集及渗透(3)
——–APP———-
APP资产收集
APP中含有连接服务器的相关域名、IP等信息,通过相关工具即可实现提取
AppInfoScanner
一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。
使用配置:
1 | cd AppInfoScanner |
运行方法:
1 | 扫描Android应用的APK文件、DEX文件、需要下载的APK文件下载地址、保存需要扫描的文件的目录 |
信息提取较少
MobSF
移动安全框架 (MobSF) 是一个适用于 Android、iOS 和 Windows Mobile 移动应用程序的安全研究平台。MobSF 可用于各种使用案例,例如移动应用程序安全、渗透测试、恶意软件分析和隐私分析。Static Analyzer 支持流行的移动应用程序二进制文件,如 APK、IPA、APPX 和源代码。同时,Dynamic Analyzer 支持 Android 和 iOS 应用程序,并为交互式插桩测试、运行时数据和网络流量分析提供了一个平台。MobSF 与您的 DevSecOps 或 CI/CD 管道无缝集成,由 REST API 和 CLI 工具提供便利,轻松增强您的安全工作流程。
项目地址:MobSF/Mobile-Security-Framework-MobSF
快速搭建:
1 | docker pull opensecurity/mobile-security-framework-mobsf:latest |
抓包实现
HTTP/S流量
1、Charles工具导出证书

将证书导出,推荐为cer后缀
2、Fidder导出证书

3、Burp导出证书

模拟器配置(夜神模拟器):

将证书导入即可
配置代理:

其他流量
抓不到数据包有两种情况:
1.反代理机制
2.证书问题
如果数据走的ssl https,那么数据包有三种验证情况:
情况1,客户端不存在证书校验,服务器也不存在证书校验。
情况2,客户端存在校验服务端证书,服务器也不存在证书校验,单项校验。
情况3、客户端存在证书校验,服务器也存在证书校验,双向校验。
开了浏览器后,访问baidu.com的话会一直提示,前提介绍到burp fiddler 需要配置模拟器安装证书才能抓取https(工具证书)
访问这个app的接受服务器就相当于利用的是burp证书,和原来的app证书不一样,这样就是证书问题。校验不通过,存在异常的情况。
怎么区别是反代理还是证书。最简单的方法是反编译,看反代理有没有代码。还可以自己推测。
反代理检测:
1、自身的抓包应用
用工具(packet capture)进行抓包,如果显示正常就证明是反代理,如果异常就是证书。这种是没有设置代理,只是抓包而已。
2.用Proxifier
如果设置系统代理:
APP检测到设置了代理,GG
相当于在模拟器或手机设置代理
app–>代理服务器–>burp–>服务端
如果用了proxifier,借助网络接口出口数据,不需要设置代理
相当于在网络出口设置代理
app–>(已经逃离了模拟器或者手机)proxifier–>本地burp–>服务器
app模拟器 模拟器的网络出口数据是通过本机进行的
那么应该怎么操作呢?在proxifier中,找到配置文件中的代理服务器,添加一个127.0.0.1:8888的https协议的代理
proxifier+charles
可以绕过简单的反代理机制
1、启动proxifier配置代理服务器和代理规则


配置代理规则:配置文件–>代理规则–>添加规则
找到夜神模拟器的对应进程:
C:\Program Files (x86)\Bignox\BigNoxVM\RT\NoxVMHandle.exe
G:\tools\nox_setup_v7.0.2.7_full\Nox\bin\Nox.exe
2、启动charles
3、点击想要抓包的应用

frida+r0capture
可以绕过反代理和所有证书问题
使用frida+r0capture
frida:frida/frida: Clone this repo to build Frida
Fr0ysue:https://links.jianshu.com/go?to=https\%3A\%2F\%2Fgithub.com\%2Fr0ysue\%2Fr0capture
frida版本和python版本以及Android要对应,python版本过高会导致frida不可用,以下是不严谨的版本对应关系
frida12.3.6 –> python3.7 –> Android5-6
frida12.8.0 –>Python3.8–>Android7-8
frida14–>Python3.8–>Android9
1、下载相关依赖
确保自己电脑安装python环境
1 | pip install frida |
安装与frida版本一致的frida工具
1 | pip list |
解压frida-server-16.7.13-android-x86.xz
2、将frida移动到模拟器
1 | 进入夜神模拟器文件夹进入夜神模拟器文件夹 |
新开一个终端
1 | adb forward tcp:27042 tcp:27042 (绑定虚拟机的端口到主机) |
3、选择要抓取的软件包
使用APK资源提取
4、进行抓包
1 | 抓包这个软件,并且结束的时候生成一个pcap文件(可以直接用wireshark打开) |
5、使用wireshark分析流量
Xposed&JustTrust&HOOK
可以绕过反代理、单向证书检测
1、在夜神模拟器中安装Xposed,打开后点一下version进行安装,需要root权限才能安装完成。
2、重启后,安装两个apk:JustTrustMe.apk和JustMePlush.apk,然后再次重启。然后再次开启代理
在Xposed上,点击三符号,然后选择模块
3、然后重启,其实就是利用这两个模块,把app里面的检测功能屏蔽掉。
然后在打开JustMePlush,选择牛牛棋牌,然后点一下说保存成功。
4、抓取数据包
——–APK———–
基础知识
1、反编译
将APK文件反编译成静态资源以及源码
2、反编译静态资源
APK实际上就是一个压缩包,可以通过直接修改后缀为zip的方式解压得到静态资源
3、反编译后的文件结构
assets文件夹
assets 这里存放的是静态资源文件(图片,视频等),这个文件夹下的资源文件不会被编译。不被编译的资源文件是指在编译过程中不会被转换成二进制代码的文件,而是直接被打包到最终的程序中。这些文件通常是一些静态资源,如图片、音频、文本文件等。
lib文件夹
lib:.so库(c或c++编译的动态链接库)。APK文件中的动态链接库(Dynamic Link Library,简称DLL)是一种可重用的代码库,它包含在应用程序中,以便在运行时被调用。这些库通常包含许多常见的函数和程序,可以在多个应用程序中共享,从而提高了代码的复用性和效率。
lib文件夹下的每个目录都适用于不同的环境下,armeabi-v7a目录基本通用所有android设备,arm64-v8a目录只适用于64位的android设备,x86目录常见用于android模拟器,x86-64目录适用于支持x86_64架构的Android设备(适用于支持通常称为“x86-64”的指令集的 CPU)
META-INF文件夹
META-INF:在Android应用的APK文件中,META-INF文件夹是存放数字签名相关文件的文件夹(通过对比实现校验apk文件是否被篡改)
4、加壳
为了加强Android保护强度,防止被静态反编译工具破解而泄露源码。
加壳分析
1、在线网站检测加壳
2、工具检测
apk查壳神器
ApkCheckPack
使用很简单,直接在命令行中通过指定目标apk即可使用
脱壳工具
未加壳
未加壳得源码:在得到apk的静态资源时,文件夹里存在一个classes.dex文件,需要使用dex2jar工具对其进行反编译
1、反编译得到jar包
使用命令:
d2j-dex2jar.bat [classes.dex所在路径]
直接将classes.dex文件复制到dex2jar文件夹中,cmd打开命令行直接执行命令
会在同级目录下生成一个classes-dex2jar.jar文件
2、分析jar包
打开jd-gui程序,将生成的jar文件导入即可
静态脱壳
需要搭配BlackDex64.apk使用
通过夜神模拟器将BlackDex64.apk安装
打开BlackDex64,选择脱壳的文件
查看DEX文件存储的文件
获得dex文件源码
通过未加壳的方式,对dex进行反编译,实现源码文件资源
动态脱壳
1、首先模拟器安装要测试的apk
2、物理机安装frida-dexdump
3、将 frida-server-16.6.6-android-x86.xz 复制到夜神模拟器bin目录下
手机模拟器实际上就是基于Linux为底层的操作系统
D:\杂项\Nox\bin\adb.exe 提供了接口可以实现连接到Linux底层
adb connect 127.0.0.1:62001
(每种模拟器的默认端口都不同),使用adb shell命令进行测试
4、将frida-serverx86上传的模拟器
app push [frida名称] /data/local/tmp
5、使用adb shell,给frida文件赋予执行权限
adb shell
chmod 777 /data/local/tmp/frida-server-16.6.6-android-x86
./frida-server-16.6.6-android-x86
6、获得包名
通过BlackDex64软件查看安装文件的包名
7、查看当前包名的pid
8、在主机上安装frida(在python中script可以看到frida工具已经安装)
pip3 install frida
pip3 install frida-tools
9、进入frida-dexdump文件夹
打开cmd执行
.\frida-dexdump.exe -U -p pid
成功脱壳
使用dex2jar获取jar包
使用jd-jui打开
小程序逆向反编译
首先要找到小程序的存放位置D:\Tencent\WeGame\WeChat Files\Applet
如果PC微信小程序软件包加密,文件以V1MMWXQ开头,需要先进行解密才可以反编译
使用工具UnpackMiniApp.exe,将文件目录的_APP_wxapkg拖动
会在wxpack文件夹下生成解密后的软件包
使用CrackMinApp进行反编译
如果工具不能使用,需要手动去反编译
首先打开工具箱里的nodejs文件夹,将解密后的小程序复制到此文件夹内,打开cmd命令,执行node.exe wuWxapkg.js [xxx.wxapkg]
会在改文件夹下生成[xxx]的文件夹
使用微信小程序开发者工具进行打开

获得到源码资源
