贝博恩创新科技网

Per app hacking教程,如何安全高效入门?

本教程的内容仅用于授权下的安全研究、学习和教育目的,未经明确书面许可,对任何不属于你的应用程序进行渗透测试都是违法行为,请务必遵守当地法律法规和道德准则。

Per app hacking教程,如何安全高效入门?-图1
(图片来源网络,侵删)

Per App Hacking 的核心思想是,将你的移动设备(Android 或 iOS)看作一个“沙箱”,专注于分析和攻击单个应用程序本身,而不是整个操作系统,这通常涉及到抓取应用的网络流量、分析其本地存储的数据、逆向工程其逻辑等。

下面我将从通用思路、Android 平台、iOS 平台以及实战技巧和工具四个方面,为你提供一个结构化的教程。


Per App Hacking 的通用思路与流程

无论针对哪个平台,一个完整的 Per App Hacking 流程通常包括以下几个步骤:

  1. 信息收集

    Per app hacking教程,如何安全高效入门?-图2
    (图片来源网络,侵删)
    • 目标应用: 获取应用的 APK (Android) 或 IPA (iOS) 文件。
    • 应用基本信息: 包名、应用 ID、版本号、开发者信息等。
    • 服务器信息: 如果应用有后端 API,尝试发现其域名、IP 地址、端口和技术栈。
  2. 静态分析

    • 目的: 在不运行应用的情况下,分析其代码和资源,了解其功能、逻辑和潜在弱点。
      • 查看应用的权限请求。
      • 分析 AndroidManifest.xml (Android) 或 Info.plist (iOS)。
      • 反编译代码,查看关键逻辑(如加密算法、密钥、API 端点)。
      • 查看硬编码的敏感信息(如 API 密钥、URL、密码等)。
  3. 动态分析

    • 目的: 在真实运行环境中监控应用的行为,这是 Per App Hacking 的核心。
      • 网络流量抓取: 捕获应用与服务器之间所有的通信数据(HTTP/HTTPS)。
      • 文件系统分析: 检查应用在设备上存储了哪些数据(如 SQLite 数据库、SharedPreferences、文件缓存)。
      • 日志监控: 捕获应用的 Logcat (Android) 或 syslog (iOS) 输出,寻找敏感信息或错误。
      • API 调用监控: 实时追踪应用调用了哪些 API,以及传入了什么参数。
  4. 漏洞利用与测试

    • 目的: 基于前两步的分析结果,尝试发现并利用安全漏洞。
    • 常见测试项:
      • 不安全的直接对象引用: 修改 ID 参数来访问其他用户的数据。
      • 身份认证与会话管理漏洞: 测试弱密码、会话固定、越权访问等。
      • 数据泄露: 检查敏感信息是否明文存储或传输。
      • 业务逻辑漏洞: 比如支付绕过、优惠券滥用等。
      • API 漏洞: 如未授权访问、过度暴露、SQL 注入等。
  5. 报告与修复建议

    Per app hacking教程,如何安全高效入门?-图3
    (图片来源网络,侵删)

    将发现的漏洞、复现步骤、风险等级和修复建议整理成报告。


Android 平台 Per App Hacking 教程

Android 由于其开放性,是进行 Per App Hacking 的理想平台。

环境准备

  • 物理设备/模拟器:
    • 物理设备 (推荐): 一台已解锁 Bootloader 并 Root 的 Android 手机,Root 权限能让你获得最高级别的访问权限。
    • 模拟器: 使用 Genymotion 或 Android Studio 自带的模拟器,它们可以方便地开启 Root 模式。
  • 核心工具:
    • ADB (Android Debug Bridge): 用于与设备通信。
    • Burp Suite / OWASP ZAP: 用于抓取和篡改网络流量。
    • Frida: 动态插桩工具,用于在运行时 Hook 和修改应用的函数调用,是动态分析的利器。
    • JADX / JEB / Apktool: 用于反编译 APK,进行静态分析。
    • SQLite Browser: 用于查看应用的 SQLite 数据库。

实战步骤

安装并配置应用

  1. 将 APK 文件传输到你的设备上并安装。
  2. 在设备上打开开发者选项,并启用“USB 调试”。
  3. 连接设备到电脑,在终端中运行 adb devices 确认连接成功。

抓取网络流量 (HTTP)

  1. 在电脑上配置好 Burp Suite,确保监听端口(默认 8080)是开启的。
  2. 在手机上设置代理:Wi-Fi -> 修改网络 -> 高级选项 -> 代理 -> 手动,将代理服务器设置为你的电脑 IP,端口设置为 8080。
  3. 在手机上信任 Burp Suite 的 SSL 证书(通过 http://burp 下载并安装)。
  4. 打开目标应用,进行一系列操作,所有 HTTP 流量都会被 Burp Suite 拦截和分析。

抓取网络流量 (HTTPS)

  • 对于 HTTPS 流量,由于证书校验,需要让应用信任 Frida 的证书。
  • 使用 Frida 的 android-ssl-pinning-bypass 脚本,在应用启动时 Hook 相关的证书校验函数,从而绕过 SSL Pinning,这是 Per App Hacking 中最常见也最重要的一步。

文件系统分析

  1. 如果设备已 Root,可以直接使用 ADB 命令导出数据:

    # 导出应用的数据库文件 (通常在 /data/data/<包名>/databases/)
    adb shell "su -c 'cp /data/data/com.example.app/databases/mydb.db /sdcard/'"
    adb pull /sdcard/mydb.db
    # 导出 SharedPreferences 文件
    adb shell "su -c 'cp /data/data/com.example.app/shared_prefs/settings.xml /sdcard/'"
    adb pull /sdcard/settings.xml
  2. 使用 SQLite Browser 打导出的 .db 文件,分析数据。

动态插桩与 Hook

  1. 安装 Frida 服务端到你的设备上。
  2. 在电脑上,使用 Frida 脚本 Hook 关键函数,Hook 一个登录函数,打印出用户名和密码:
    // hook.js
    Java.perform(function() {
        var MainActivity = Java.use("com.example.app.MainActivity");
        MainActivity.login.implementation = function(username, password) {
            console.log("Username: " + username);
            console.log("Password: " + password);
            return this.login(username, password);
        };
    });
  3. 在终端运行 Frida 脚本:
    frida -U -f com.example.app -l hook.js --no-pause
  4. 在手机上启动应用并执行登录操作,你将在电脑终端看到打印出的敏感信息。

iOS 平台 Per App Hacking 教程

iOS 的封闭性使得 Per App Hacking 更具挑战性,但依然有办法。

环境准备

  • 设备: 一台已越狱的 iOS 设备,非越狱设备能做的事情非常有限。
  • 核心工具:
    • Cydia / Sileo: 越狱后的应用商店,用于安装工具。
    • Frida: 同样是动态分析的王者,iOS 版本也需要在设备上安装服务端。
    • Burp Suite / OWASP ZAP: 用于抓包。
    • class-dump / otool: 用于静态分析二进制文件。
    • iFile / Filza: 越狱环境下的文件管理器,可浏览应用的沙盒目录。

实战步骤

安装并配置应用

  1. 通过 Cydia 安装 Frida 服务端。
  2. 在电脑上安装 Frida 客户端 (pip install frida-tools)。
  3. 将 IPA 文件安装到设备上。

抓取网络流量

iOS 的网络配置与 Android 类似,但证书安装更复杂。

  1. 在电脑上配置好 Burp Suite。
  2. 在 iOS 的“设置” -> “无线局域网”中,点击当前 Wi-Fi 的 “i” 图标,配置代理为手动,填入电脑 IP 和 Burp 端口。
  3. 在 iOS 的“通用” -> “关于本机” -> “证书信任设置”中,打开对 Burp Suite SSL 代理的信任,这一步通常需要设备已安装 Burp 的根证书。
  4. 打开应用,流量即可被 Burp Suite 拦截。

绕过 SSL Pinning

  • 和 Android 一样,Frida 是绕过 iOS SSL Pinning 的首选方法。
  • 使用类似的 Hook 脚本,针对 iOS 中常用的网络库(如 AFNetworking, URLSession, AFSecurityPolicy)进行 Hook,禁用证书校验。

文件系统分析

  1. 使用 Filza 文件管理器,导航到应用的沙盒目录,通常路径为:/var/mobile/Containers/Data/Application/<一串随机字符>/DocumentsLibrary
  2. 在这里你可以找到应用存储的数据库、缓存文件、配置文件等。
  3. 使用 iFunBox 等工具可以方便地导出这些文件。

动态插桩与 Hook

  1. 确保电脑和设备在同一 Wi-Fi 下,Frida 服务端正在运行。
  2. 编写 Frida 脚本,Hook Objective-C 或 Swift 的方法,Hook 一个加密函数:
    // hook_ios.js
    if (ObjC.available) {
        try {
            var className = "NSString";
            var methodName = "- UTF8String";
            var hook = ObjC.classes[className][methodName];
            Interceptor.attach(hook.implementation, {
                onEnter: function(args) {
                    console.log("Original string: " + new ObjC.Object(args[2]).toString());
                },
                onLeave: function(retval) {
                    console.log("Returning UTF8 bytes...");
                }
            });
        } catch (error) {
            console.error("[!] Error: " + error.message);
            console.log(error.stack);
        }
    } else {
        console.log("[!] Objective-C runtime is not available.");
    }
  3. 在电脑上运行 Frida 脚本,Hook 应用运行时的函数调用。

进阶技巧与资源

  • 自动化: 学习使用 Python 脚本(如 requests 库)配合 Burp Suite API,可以自动化地发现和测试某些类型的漏洞(如 IDOR)。
  • API 安全: 专注于对应用的后端 API 进行测试,可以使用 Postman 等工具进行更精细的请求构造。
  • 学习资源:
    • 书籍: 《移动应用安全》、《iOS Application Security》、《Android Security Internals》。
    • 在线课程: PortSwigger Web Security Academy (Burp Suite 官方教程,很多原理相通)、OWASP Mobile Security Project。
    • 社区: 关注 OWASP Mobile Top 10 项目,参与安全会议(如 DEF CON, Black Hat)的移动安全议题。

Per App Hacking 是一个系统性工程,需要结合静态和动态分析,并熟练掌握多种工具,Android 的开放性使其入门相对容易,而 iOS 的挑战则更能锻炼你的逆向工程和底层理解能力。

再次提醒:请始终在法律和道德的框架内进行你的学习和研究。 祝你学习顺利!

分享:
扫描分享到社交APP
上一篇
下一篇