也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大
少走了弯路,也就错过了风景,无论如何,感谢经历
0x01 从 Play Store中提取 .apk 文件
1.1 问题的来源
当想要从 Play Store获取 apk 文件时,我们可以将应用程序提取出来,而无需先将其安装到 Android 上,然后再将其从设备中提取为 apk。 为了缩短应用程序的分发时间,用于测试或逆向工程和打补丁
1.2 故障排除步骤
- 转到网页:https://apkcombo.com/apk-downloader/
- 并从 Play Store 中搜索能要下载的应用程序
- 在上图中,按 “meatballs” 按钮 3 个点,然后按分享按钮
- 然后,按复制到剪贴板按钮,将其粘贴到 APK 下载器网页上
- 按Generate Download Link按钮,它将是apk的Download按钮
- 你可以安装应用程序,并将其安装在模拟器或其它设备上
0x02 如何安装Android LSPosed 框架(Android 8.1 ~ 12)?
本文将介绍如何安装Android LSPosed 框架,以帮助测试人员修改安装在手机上的应用程序的工作方式。 不需修改应用程序,我们将在程序启动时进行修改(Android Runtime – ART)
2.1 设备准备步骤总结
- 请将设备Root成功,测试人员使用红米Note8 MIUI 11.0.1 Android版本9PKQ1.1906.001
- 使用上述版本的 Magisk 为 root 测试人员安装了 Magisk v23+
- 从 Magisk repo中安装 Riru v25+
- 从 Magisk repo中安装 LSPosed
2.2 安装示例
- 安装 Magisk v23+,测试人员在设备root后安装了它
-
转到 Magisk 程序,并选择如图所示的图标
-
按放大镜的图标
- 如图所示,找到 Riru 并按下载
-
按允许
-
当下载完成后,按安装按钮进行安装
-
安装完成后,按下Reboot按钮
-
回去再看一下Module,你会看到Installed成功的状态
-
然后,再重复一次安装 LSPosed
-
按Install进行安装
-
安装完成后按重启按钮
-
将出现一个 LSPosed 图标,按下它
-
你会发现 Modules 为 0,还没有安装任何模块
-
试了一下,找不到任何模块
-
LSPosed 安装完成
0x03 如何使用 SSH 服务器通过 SSH 访问 Android
3.1 简介(概述)
目的是能够通过 “Wifi” 网络访问 “Android”,通过 “FTP” 管理各种 “文件”,例如在 “电脑” 和 “Android” 手机之间传输文件,或通过 “Telnet” 等命令进行管理
3.2 步骤
- 在 “Android” 设备上,通过 “Google Play” 下载并安装 “SSH Server” 程序
- 然后选择
- 命名要使用的 “配置文件” 和 “端口”。 然后按 “Android”上的 “返回” 按钮“保存”
- 然后创建一个 “用户” 和 “密码”,按 "Android"上的 “返回” 按钮来 “保存”
- 在 “计算机” 中,我们可以通过设置“IP地址”、“端口”、“用户名”和“密码”来使用支持“SSH”的程序,例如“WinSCP”或“Putty”
0x04 如何获取设备安装的.apk文件(app应用路径)
4.1 简介(概述)
需要一个已经 "安装 "在 “Android” 设备上的 “.apk” 文件,该文件可以从 “Google Play” 或 “未知来源” 获得,以便在 “模拟器” 或 “逆向工程” 中进行测试
4.2 步骤
- “Android”设备必须先“Root”
- 然后使用“文件管理器”(例如“根浏览器”)或使用有线连接或通过 FTP 访问 “Android” 文件系统
- 切换道
/data/app/
路径,选择需要的.apk
- 通过 “FTP”、有线或 “电子邮件” 将其 “复制” 到你的计算机
0x05 如何设置 Drozer
Drozer是MWR Labs开发的一款Android安全测试框架。是目前最好的Android安全测试工具之一
Drozer官方文档说道:“Drozer允许你一一个普通android应用的身份与其他应用和操作系统交互。”在Web世界已经有了许多安全测试工具了,我们只需要给出一个目标,这些工具就会自动为我们安全测试报告。但Drozer与这样的自动化扫描器不同,Drozer是一种交互式的安全测试工具。使用Drozer进行安全测试,用户在自己的工作站上输入命令,Drozer会将命令发送到Android设备上的代理程序执行。其官方文档说道:“Drozer允许你一一个普通android应用的身份与其他应用和操作系统交互。
5.1 Drozer下载与环境配置
Drozer下载地址:
- https://labs.f-secure.com/tools/drozer/
需要下载一个Windows客户端和一个安卓客户端:
- 【windows客户端】下载drozer (msi)安装包,或者下载python的whl格式安装包drozer (Python.whl)
- 【安卓客户端】drozer (Agent .apk only)
https://github.com/FSecureLABS/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk
- drozer使用指南
https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf
5.2 Python环境安装
https://www.python.org/downloads/release/python-2718
因为Drozer 需要Python环境,但只能选择Python2.7或Python3.6
PS:注意,要把Python的PYTHON_HOME和PYTHON_HOME\Scripts加入到环境变量,如下:
5.3 模拟器安装drozer Agent App
有夜神、网易MuMu等Android模拟器,依据个人情况自主选择,此处选择网易MuMu模拟器
https://mumu.163.com/
在逍遥安卓模拟器中安装运行drozer Agent App,并打开Embbdded Server:
PS:安装好后打开 drozerAgent应用,点击右下角的开启按钮
打开命令行工具,并cd切换到安卓模拟器的安装路径,运行adb devices命令,查看是否能看到模拟器。如果看不到,重启模拟器试试
切换到drozer安装目录,其实也可以不用切入,因为我们已经加入了环境变量
使用 adb 进行端口转发,转发到上边Drozer使用的端口 31415,并进入Drozer 控制台:
adb.exe forward tcp:31415 tcp:31415
drozer console connect
用list命令列出Drozer所有功能模块,如能正常显示,则说明Drozer已正确安装
dz> list
5.4 Drozer启动报错解决方法
执行报错解决方案:
问题:ImportError: No module named google.protobuf
解决方法:pip install protobuf
问题:ImportError: No module named OpenSSL
解决方法:pip install pyOpenSSL
问题:drozer Server requires Twisted to run.
Run 'pip install twisted' to fetch this dependency.
解决方法:pip install twisted
问题:UserWarning: You do not have a working installation of the service_identity module: 'No module named service_identity'. Please install it from https://pypi.python.org/pypi/service_identity and make sure all of its dependencies are satisfied.
解决方法:pip install service_identity
0x06 如何通过ADB检索软件包信息
6.1 简介(概述)
本文将介绍一种检索安装在我们 “Android” 设备上的各种 “Package” 信息的方法,我们通常可以检查这些信息。当设备通过 "Root “完成后。并进入”/data/data
"文件夹,会有一个所有 “Package” 的列表,但这次我们将通过ADB使用该命令
6.2 步骤
- 连接 Android 设备或模拟器。您可以从以下位置获取更多信息
- 如何通过 Appie2 使用 ADB
- 如何在移动设备上连接 ADB shell
- 使用以下命令
adb shell "pm list packages"|cut -f 2 -d ":"
0x07 如何通过Drozer检索软件包信息
7.1 简介(概述)
在这篇文章中,我们将介绍一种方法来检索安装在我们“Android”设备上的各种“Package”信息,通常我们可以检查这些信息。 当设备通过 "Root “完成后。并进入”/data/data
"文件夹,会有一个所有 “Package” 的列表,但这次我们将通过 “Drozer” 命令来使用
步骤(步骤)
安装“Drozer”可以从 (https://www.mwrinfosecurity.com/products/drozer/)
“Drozer”可以通过“Appie2”运行,可以从以下网址下载 (http://sourceforge.net/projects/appiefiles/files/Appie2.zip/download)
打开程序“Drozer”并按“OFF”按钮为“ON”(如何设置 Drozer)。
然后使用连接命令如下
7.2 步骤
- 安装 “Drozer” 可以从(https://www.mwrinfosecurity.com/products/drozer/)下载
- “Drozer” 可以通过 “Appie2” 运行,可以从(http://sourceforge.net/projects/appiefiles/files/Appie2.zip/download)下载
- 打开 “Drozer” 程序,将 “OFF” 按钮按成 “ON”(如何设置Drozer)
- 然后使用下面命令连接,如下:
C:\Users\wsunpachit\Desktop
λ adb forward tcp:31415 tcp:31415
C:\Users\wsunpachit\Desktop
λ drozer console connect
- 在 “Drozer控制台” 使用以下命令
dz> run app.package.list
android (Android System)
com.android.SSLTrustKiller (Android SSL TrustKiller)
com.android.backupconfirm (com.android.backupconfirm
com.android.browser (Browser)
com.android.certinstaller (Certificate Installer)
com.android.contacts (Contacts)
com.android.defcontainer (Package Access Helper)
com.android.gallery (Camera)
com.android.htmlviewer (HTML Viewer)
com.android.inputdevices (Input Devices)
com.android.inputmethod.latin (Android keyboard (AOS)
com.android.keychain (Key Chain)
com.android.launcher (Launcher)
com.android.location.fused (Fused Location)
com.android.magicsmoke (Magic Smoke Wallpaper)
com.android.musicvis (Music Visualisation Wallpaper)
com.android.noisefield (Bubbles)
com.android.packageinstaller (Package installer)
com.android.phasebeam (Phase Beam)
com.android.phone (Phone)
com.android.providers.applications (Search Applicatis Provider)
com.android.providers.contacts (Contacts Storage)
com.android.providers.downloads (Download Manager)
com.android.providers.downloads.ui (Downloads)
com.android.providers.drm (DRM-Protected Content Stoge)
com.android.providers.media (Media Storage)
com.android.providers.settings (Settings Storage)
com.android.providers.telephony (Phone/Messaging Stoge)
com.android.providers.userdictionary (User Dictionar
com.android.provision (com.android.provision)
com.android.settings (Settings)
com.android.sharedstoragebackup (com.android.sharedsragebackup)
com.android.smspush (com.android.smspush)
com.android.soundrecorder (Sound Recorder)
com.android.systemui (System UI)
com.android.vending (Google Play Store)
com.android.vpndialogs (VpnDialogs)
com.android.wallpaper (Android Live Wallpaper)
com.android.wallpaper.holospiral (com.android.wallpar.holospiral)
com.android.wallpaper.livepicker (Live Wallpaper Picr)
com.cyanogenmod.filemanager (File Manager)
com.example.android.livecubes (Example Wallpapers)
com.example.android.softkeyboard (Droid4X IM)
com.google.android.gms (Google Play services)
com.google.android.gsf (Google Services Framework)
com.google.android.gsf.login (Google Account Manager
com.google.android.location (Network Location)
com.google.android.syncadapters.contacts (Google Concts Sync)
com.haimawan.push (ๆตท้ฉฌ็Žฉ)
com.mwr.dz (drozer Agent)
com.saurik.substrate (Cydia Substrate)
com.svox.pico (Pico TTS)
eu.chainfire.supersu (SuperSU)
me.haima.androidassist (ๅบ”็”จไธญๅฟƒ)
me.haima.helpcenter (HelpCenter)
- 上面的输出会看到安装在 “Android” 设备上的所有 “Package” 信息
0x08 如何通过 Drozer 检索每个包的信息
8.1 简介(概述)
在本文我们将通过 “Drozer” 命令来检查每个 “应用程序” 的 “软件包” 信息,这使我们能够看到文件中包含的基本信息,包括文件中的 “使用许可”
8.2 步骤
- 安装 “Drozer” 可以从(https://www.mwrinfosecurity.com/products/drozer/)下载
- “Drozer” 可以通过 “Appie2” 运行,可以从(http://sourceforge.net/projects/appiefiles/files/Appie2.zip/download)下载
- 打开 “Drozer” 程序,将 “OFF” 按钮按成 “ON”(如何设置Drozer)
- 然后使用下面命令连接,如下:
C:\Users\wsunpachit\Desktop
λ adb forward tcp:31415 tcp:31415
C:\Users\wsunpachit\Desktop
λ drozer console connect
- 在 “Drozer Console” 中使用命令列出 “Android” 上安装的所有软件包
dz> run app.package.list
org.owasp.goatdroid.fourgoats (FourGoats)
- 通过使用命令来检查每个 “Package” 的信息
dz> run app.package.info -f org.owasp.goatdroid.fourgoats
Package: org.owasp.goatdroid.fourgoats
Application Label: FourGoats
Process Name: org.owasp.goatdroid.fourgoats
Version: 1.0
Data Directory: /data/data/org.owasp.goatdroid.fourgoats
APK Path: /data/app/org.owasp.goatdroid.fourgoats-1.apk
UID: 10040
GID: [3003]
Shared Libraries: null
Shared User ID: null
Uses Permissions:
- android.permission.SEND_SMS
- android.permission.CALL_PHONE
- android.permission.ACCESS_COARSE_LOCATION
- android.permission.ACCESS_FINE_LOCATION
- android.permission.INTERNET
Defines Permissions:
- None
- 从上面的结果来看,“Uses Permissions” 部分的结果与如何通过 Drozer 访问 “AndroidMenifest.xml” 的结果相同
0x09 如何读取Android应用程序权限
9.1 简介(概述)
AAPT(Android Asset Packaging Tool)程序是随我们所安装的Android SDK 一起提供的。通常情况下,AAPT 负责将属于资源的文件合并成一个APK文件中,然后将其与 .dex 文件通过 javac 编译成 .class,然后再转换为 .dex,如下图所示
另外,它可以用来从APK中提取各种重要数据,例如:检查应用程序要求许可权限的Android权限信息
9.x2 步骤(步骤)
- 安装 Appie 或 Android Studio
- 将检查文件复制到桌面
- 使用以下命令
//aapt d permission followed by application
aapt d permissions diva.apk
- 将得到以下结果
0x10 如何安装移动安全框架-MobSF
10.1 简介(概述)
本文介绍安装程序。“Mobile-Security-Framework-MobSF”,帮助 “Android”(.apk)和 “iOS”(.ipa)的 "二进制 "检查,以减少漏洞测试的时间。其中可以为 "Windows "和 "Linux "安装,具体步骤如下
10.2 步骤
卡利Linux
下载“MobSF”
提取“Zip”文件。
步骤(Steps)
1)Kali Linux
- 下载 “MobSF”:https://github.com/MobSF/Mobile-Security-Framework-MobSF
- 解压 “zip” 文件
- 使用命令激活 “MobSF 服务器”
python manage.py runserver
- 如果出现如图所示的问题,请使用以下命令:
pip install -r requirements.txt --user
- 然后转到我们可以调用的“Web Browser”( http://localhost:8000/ 如下),它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议
0x11如何安装移动安全框架-MobSF (Docker)
11.1 简介(概述)
在 Mac OS 上使用 Docker 安装 "Mobile-Security-Framework-MobSF"可以下载pdf
11.2 步骤
1)安装Docker
- 下载 Docker for MacOs 安装:https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac
- 双击 Docker.dmg 文件并将其拖入应用程序,来安装该文件
- 去注册:https://cloud.docker.com
- 你会收到一封确认的电子邮件。要注册,请按 “OK” 按钮
- 转到右上角,点击登录
- 使用,我们已经注册的用户账户
2)安装和使用 “移动安全框架-MobSF”
- 使用以下命令
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
- 转到 Web 浏览器,并进入URL:http://0.0.0.0:8000/
3)参考
- https://github.com/MobSF/Mobile-Security-Framework-MobSF
0x12 如何使用 QARK (Quick Android Review Kit) ?
12.1 简介(概述)
QARK是一个免费的Android安全测试工具。它也很方便,缩短了测试时间。包括拥有一个帮助创建 .apk
的工具,它可以帮助制作 POC 来理解应用程序攻击
12.2 步骤
- 从 https://github.com/linkedin/qark 下载
- 在使用 MAC 的示例中,进入到 qark 文件夹中,并使用以下命令运行它
python qarkMain.py
- 该程序会要求安装Android SDK,选择Y,并稍等片刻。从再次询问在哪里测试,我们通常会得到
.apk
文件进行测试,或者安装在Android设备上,选择数字 1
- 在第一种方法中,需要花时间点我们的
.apk
程序,把你要测试的文件复制粘贴到想要的文件夹中,然后填上数字1和你要测试的.apk
文件的目录,如下所示:
- 完成后,等待处理
- 完成后,我们可以去Report文件夹中查看报告,如下:
- 另一种方式,可以通过选择如图所示的菜单,从我们已经安装的设备中拉取程序。最初,我们必须将Android设备的信号线插入到运行QARK的计算机中
- 然后,程序将显示一个已安装程序的列表,让我们输入要查看的程序编号
- 等到它完成,QARK将询问它是否会创建一个程序,来展示如何攻击该漏洞(POC),我们可以这样做
- 该程序将自动通过网络安装
-
从检查结果来看,有一个有趣的菜单,就是Exploit,即不同的Android组件的导出部分。你可以,从下面的文章中了解更多信息:
- 如何理解Intents
- 如何通过不受信任的输入来测试安全决策 - Android
-
尝试运行导出的Activity
- QARK 漏洞利用程序,可以调用易受攻击的程序页面
0x13 如何为越狱设备设置 Frida
13.1 简介(概述)
本文讨论如何在已root的Android设备上安装Frida
13.1 步骤
1)设备已经被ROOT
2)安装Android Studio程序
- 在MacOS上使用时,adb程序位于以下文件夹中
//adb folder
cd /Users/root/Library/Android/sdk/platform-tools/
// can be run using the command
./adb
- 或通过Appie程序在Windows上使用
3)使用以下命令安装 Frida
// install pip
sudo easy_install pip
which pip
pip --version
//install Frida
pip install frida
frida --version
- 要通过数据线或 Wifi 在 Android 设备或模拟器上使用 adb 程序,必须先进行设置
// connect to adb via network
adb connect 127.0.0.1:5555
//check if you can connect to the device
adb devices -l
- 从 https://github.com/frida/frida/releases 下载 Frida 服务器
- 然后使用以下命令安装Frida服务器,如下:
//frida-server is the location of the program on the desktop
adb push frida-server /data/local/tmp/
adb shell
chmod 755 /data/local/tmp/frida-server
su
/data/local/tmp/frida-server &
- 使用命令验证我们的 Mac OS 是否可以连接到 Frida 服务器,并且 Android 软件包必须如图所示可见:
frida-ps -aU
- 如果,在下面的示例中看不到上述 Android 软件包,请重新启动设备,并再次执行上述步骤
0x14 如何为模拟器(Genymotion)设置Frida?
解释如何,在 Android 模拟器上安装Frida服务器,在MacOS上测试连接
安装Genymotion Emulator 好了后,再安装Android Studio运行ADB How to install Android Studio
将模拟器连接到ADB,访问模拟器目录,如下所示
cd /Users/root/Library/Android/sdk/platform-tools/
./adb connect 127.0.0.1
./adb devices
./adb shell
cd data/local/tmp
安装 Busy box 程序以便能够使用来自 https://busybox.th.uptodown.com/android/download 的 wget 命令
要在 MacOS 上安装 Frida 客户端,请参阅文章如何在 MacOS 上安装 Frida。
首先尝试检查版本 frida,如果是旧版本,则可能有问题。 要连接我们将在模拟器中安装的 Frida 服务器,可以从命令中检查版本
安装Busy box程序,以便能够从https://busybox.th.uptodown.com/android/download,使用wget命令
安装Frida客户端成功后,尝试检查一下frida的版本,如果是旧版本,可能会有问题。要连接我们将安装在模拟器上的Frida-Server,可以通过以下命令来检查版本:
frida --version
然后通过检查 Frida 服务器的版本下载到模拟器,如下所示 https://github.com/frida/frida/releases ,对于 Android 来说,选择 Android x86 ,并尝试先安装与客户端相同的版本。使用不断更新的下一个版本
wget https://github.com/frida/frida/releases/download/12.8.0/frida-server-12.8.0-android-x86.xz
unxz frida-server-12.8.0-android-x86.xz
chmod 777 frida-server-12.8.0-android-x86
mv frida-server-12.8.0-android-x86 frida-server
su
/data/local/tmp/frida &
然后切换到Mac OS机器上,使用Frida客户端命令连接,查看Android Emulator上是否有进程
frida-ps -aU
如果在模拟器中安装frida服务器无法运行或无法连接,请删除我们下载的文件夹中的文件,这里是cd data/local/tmp
,此外,frida服务器会创建一个文件夹来跟踪并删除所有文件
rm frida-server
rm -r re.frida.server
参考链接:
https://blog.itselectlab.com/?p=14313
https://blog.itselectlab.com/?p=13756
http://blog.itselectlab.com/?p=1449
http://blog.itselectlab.com/?p=1475
http://blog.itselectlab.com/?p=7565
http://blog.itselectlab.com/?p=10052
http://blog.itselectlab.com/?p=5019
http://blog.itselectlab.com/?p=5032
http://blog.itselectlab.com/?p=10060
http://blog.itselectlab.com/?p=9059
http://blog.itselectlab.com/?p=11688
http://blog.itselectlab.com/?p=10179
http://blog.itselectlab.com/?p=10725
http://blog.itselectlab.com/?p=13059
你以为你有很多路可以选择,其实你只有一条路可以走