——–APP———-

APP资产收集

APP中含有连接服务器的相关域名、IP等信息,通过相关工具即可实现提取

AppInfoScanner

项目地址:kelvinBen/AppInfoScanner

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

使用配置:

1
2
cd AppInfoScanner
python -m pip install -r requirements.txt

运行方法:

1
2
3
4
5
6
7
8
#扫描Android应用的APK文件、DEX文件、需要下载的APK文件下载地址、保存需要扫描的文件的目录
python app.py android -i <Your APK File or DEX File or APK Download Url or Save File Dir>

#扫描iOS应用的IPA文件、Mach-o文件、需要下载的IPA文件下载地址、保存需要扫描的文件目录
python app.py ios -i <Your IPA file or Mach-o File or IPA Download Url or Save File Dir>

#扫描Web站点的文件、目录、需要缓存的站点URl
python app.py web -i <Your Web file or Save Web Dir or Web Cache Url>

信息提取较少

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
2
3
4
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest

# Default username and password: mobsf/mobsf

抓包实现

HTTP/S流量

1、Charles工具导出证书

image-20250422143708653

​ 将证书导出,推荐为cer后缀

2、Fidder导出证书

image-20250422144237975

3、Burp导出证书

image-20250422144555190

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

image-20250422143523177

将证书导入即可

配置代理:

image-20250422145552048

其他流量

抓不到数据包有两种情况:
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配置代理服务器和代理规则

image-20250423095328356 image-20250423095407798

配置代理规则:配置文件–>代理规则–>添加规则
找到夜神模拟器的对应进程:
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、点击想要抓包的应用

image-20250423095526218

image-20250423095557054

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
2
3
4
pip install frida
pip install frida-tools

##注意下载版本

安装与frida版本一致的frida工具

1
2
3
4
5
6
pip list
frida-16.7.13-cp37-abi3-win_amd64.whl

#安装包
frida-server-16.7.13-android-x86.xz

解压frida-server-16.7.13-android-x86.xz

2、将frida移动到模拟器

1
2
3
4
5
6
7
8
9
10
11
12
13
#进入夜神模拟器文件夹进入夜神模拟器文件夹
>adb.exe push E:\hackerTools\tools\APK小程序\frida-server-16.7.13-android-x86 /data/local/frida

#打开虚拟机终端
adb shell
#切换到这个目录
cd /data/local
chmod 777 frida
#执行本文件(但是执行了还不能用需要映射一下)
./frida

(这个终端不可以关闭,关闭了就相当于给关闭frida了)
(下次用就直接启动执行就行了,但是每次都要绑定端口)

新开一个终端

1
2
3
4
5
6
7
8
9
adb forward tcp:27042 tcp:27042 (绑定虚拟机的端口到主机)

检测是否可以执行

frida-ps -U

frida-ps -R

(不用进模拟器终端,在外面执行)

3、选择要抓取的软件包

使用APK资源提取

image-20250422184032119

4、进行抓包

1
2
#抓包这个软件,并且结束的时候生成一个pcap文件(可以直接用wireshark打开)
r0capture.py -U -f [目标包名或者进程号] -v -p 名字.pcap

5、使用wireshark分析流量

Xposed&JustTrust&HOOK

可以绕过反代理、单向证书检测

1、在夜神模拟器中安装Xposed,打开后点一下version进行安装,需要root权限才能安装完成。

image.png

2、重启后,安装两个apk:JustTrustMe.apk和JustMePlush.apk,然后再次重启。然后再次开启代理

image.png

在Xposed上,点击三符号,然后选择模块

3、然后重启,其实就是利用这两个模块,把app里面的检测功能屏蔽掉。

然后在打开JustMePlush,选择牛牛棋牌,然后点一下说保存成功。

image.png

4、抓取数据包

image.png

——–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、在线网站检测加壳

  1. 南明离火-移动安全分析平台
  2. 摸瓜-查诈骗APP_查病毒APP_免费APK反编译分析工具

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

img

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

img

8、在主机上安装frida(在python中script可以看到frida工具已经安装)

pip3 install frida

pip3 install frida-tools

9、进入frida-dexdump文件夹

img

打开cmd执行

.\frida-dexdump.exe -U -p pid

img

成功脱壳

img

使用dex2jar获取jar包

img

使用jd-jui打开

img

小程序逆向反编译

首先要找到小程序的存放位置D:\Tencent\WeGame\WeChat Files\Applet

如果PC微信小程序软件包加密,文件以V1MMWXQ开头,需要先进行解密才可以反编译

使用工具UnpackMiniApp.exe,将文件目录的_APP_wxapkg拖动

image-20250303093556492

会在wxpack文件夹下生成解密后的软件包

使用CrackMinApp进行反编译

image-20250303093949117

如果工具不能使用,需要手动去反编译

首先打开工具箱里的nodejs文件夹,将解密后的小程序复制到此文件夹内,打开cmd命令,执行node.exe wuWxapkg.js [xxx.wxapkg]

会在改文件夹下生成[xxx]的文件夹

使用微信小程序开发者工具进行打开

image-20250303094828034

获得到源码资源

image-20250303095114113