移动设备如智能手机和平板电脑已成为人们日常生活和工作的不可或缺的一部分。庞大的用户群体使得移动端成为攻击者的主要目标。移动设备中存储着大量敏感信息,包括个人身份信息、银行卡信息、地理位置等。未经保护的设备容易成为黑客攻击的目标,导致用户隐私泄漏。
Adb(Android Debug Bridge)是一种用于与Android设备通信的命令行工具。它提供了一组命令,允许开发者和系统管理员在计算机和Android设备之间执行各种操作。
Frida 是一款用于动态分析、逆向工程和代码注入的强大工具。它支持多种平台,包括 Android、iOS、Windows、macOS 和 Linux。Frida 允许用户在运行时动态地修改和监视应用程序。
Objection 是一个用于移动应用安全测试和逆向工程的工具,它构建在 Frida 之上。Objection专注于 Android 和 iOS 应用的动态分析,为安全研究人员和逆向工程师提供了一套强大的工具和接口。
动态注入攻击是一种常见的移动应用程序攻击手段,它利用恶意代码将自己注入到应用的运行时环境中,从而绕过应用程序的正常安全机制,可能导致用户数据泄露、隐私泄露等安全问题。
1. Kali Linux系统
2. 一台已root的Android手机
3. USB数据线一根
4. 待测试Android APP一个
5. Adb、Frida、Objection、Frida hook脚本
01 安装adb
打开终端并运行以下命令安装 adb:
sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot
运行以下命令验证 adb 是否正确安装:
adb version
02 安装Frida
frida 使用 Node.js,首先需要安装 Node.js。使用以下命令安装 Node.js:
sudo apt-get update
sudo apt-get install nodejs npm
用pip3安装 frida:
sudo pip3 install frida==16.1.10
安装frida-tools:
pip3 install frida-tools
验证frida是否安装正确,出现以下界面说明安装正确:
Frida version
安装 Frida-Server:
首先,在 Frida GitHub Releases 页面下载适用于目标设备的 Frida-Server 版本,笔者是arm64(注:frida-server和frida版本必须保持一致,否则连接会报错)。
将Android设备通过USB连接到kali的adb:
然后将frida-server-16.1.10-android-arm64.xz解压拷贝到Android设备上,进入adbshell,用su命令提升为root权限:
找到frida-server文件:
为frida-server添加可执行权限:chmod +x frida-server
03 安装objection
pip3 install objection
运行以下命令验证objection是否安装正确:
objection version
01 用frida进行动态注入调试攻击
用adb连接Android手机启动frida-server
新开一个终端,进行端口转发(27042为frida默认端口)
这里对开源工具Hijack进行攻击测试,首先用以下命令找到APP的包名:frida-ps -Uai
用以下命令对APP进行js注入,该脚本的作用是列出APP的所有类(js脚本可网上找也可自己编写):frida -U -f 包名 -l 脚本路径
列出所有类和方法:
跟踪某个方法:frida-trace -U -f 包名 -m “方法名”
跟踪某个类:frida-trace -U -f 包名 -i “类名”
02 用objection进行动态注入调试攻击
将objection注入应用:objection -g 包名 explore
查看内存中加载的库: memory list modules
查看库的导出函数:memory list exports libssl.so
查看当前可用的activity:android hooking list activities
启动activity: android intent launch_activity activity名
列出内存中所有的类: android hooking list classes
使用代码混淆工具,以增加应用程序代码的复杂性,使其难以被分析和理解。应用程序加固工具可以对应用进行加密和保护,使攻击者更难以获取应用程序的源代码或进行动态分析。
针对模拟器和虚拟环境的检测,以防止攻击者在非真实设备上运行应用程序进行分析。例如,可以检测虚拟设备的特征或使用硬件相关的信息来验证设备的真实性。
在应用程序中实施调试检测机制,以阻止调试器的附加。这可以通过检查调试标志、使用反调试技术等方式来实现。可以在应用程序中检测Frida 和Objection 这样的工具的存在,使用一些防御检测库,如Anti-Frida来检测Frida 的运行。
对于应用程序中的敏感信息,例如密钥、令牌等,采用安全的存储和处理方式,以防止攻击者通过动态注入攻击获取这些敏感信息。
及时更新应用程序,以包含最新的安全修复和防护措施。监控应用程序的行为,检测异常活动,并采取相应的响应措施。
原文始发于微信公众号(安全驾驶舱):【移动安全】Android应用动态注入攻击与防范