【移动安全】Android应用动态注入攻击与防范

背景


    移动设备如智能手机和平板电脑已成为人们日常生活和工作的不可或缺的一部分。庞大的用户群体使得移动端成为攻击者的主要目标。移动设备中存储着大量敏感信息,包括个人身份信息、银行卡信息、地理位置等。未经保护的设备容易成为黑客攻击的目标,导致用户隐私泄漏。






TIPS 知识补充
1. Adb工具

    Adb(Android Debug Bridge)是一种用于与Android设备通信的命令行工具。它提供了一组命令,允许开发者和系统管理员在计算机和Android设备之间执行各种操作。

2. Frida工具

    Frida 是一款用于动态分析、逆向工程和代码注入的强大工具。它支持多种平台,包括 Android、iOS、Windows、macOS 和 Linux。Frida 允许用户在运行时动态地修改和监视应用程序。

3. Objection工具

    Objection 是一个用于移动应用安全测试和逆向工程的工具,它构建在 Frida 之上。Objection专注于 Android 和 iOS 应用的动态分析,为安全研究人员和逆向工程师提供了一套强大的工具和接口。


PART.1


概念简述

动态注入攻击是一种常见的移动应用程序攻击手段,它利用恶意代码将自己注入到应用的运行时环境中,从而绕过应用程序的正常安全机制,可能导致用户数据泄露、隐私泄露等安全问题。

PART.2


环境准备

1. Kali Linux系统

2. 一台已root的Android手机

3. USB数据线一根

4. 待测试Android APP一个

5. Adb、Frida、Objection、Frida hook脚本


PART.3


工具安装

01 安装adb

打开终端并运行以下命令安装 adb:

sudo apt-get update

sudo apt-get install android-tools-adb android-tools-fastboot

【移动安全】Android应用动态注入攻击与防范

运行以下命令验证 adb 是否正确安装:

adb version

【移动安全】Android应用动态注入攻击与防范

02 安装Frida

frida 使用 Node.js,首先需要安装 Node.js。使用以下命令安装 Node.js:

sudo apt-get update

sudo apt-get install nodejs npm

【移动安全】Android应用动态注入攻击与防范

用pip3安装 frida:

sudo pip3 install frida==16.1.10

【移动安全】Android应用动态注入攻击与防范

安装frida-tools:

pip3 install frida-tools

【移动安全】Android应用动态注入攻击与防范

验证frida是否安装正确,出现以下界面说明安装正确:

Frida version

【移动安全】Android应用动态注入攻击与防范

安装 Frida-Server:

首先,在 Frida GitHub Releases 页面下载适用于目标设备的 Frida-Server 版本,笔者是arm64(注:frida-server和frida版本必须保持一致,否则连接会报错)

【移动安全】Android应用动态注入攻击与防范

将Android设备通过USB连接到kali的adb:【移动安全】Android应用动态注入攻击与防范

然后将frida-server-16.1.10-android-arm64.xz解压拷贝到Android设备上,进入adbshell,用su命令提升为root权限:

【移动安全】Android应用动态注入攻击与防范

找到frida-server文件:

【移动安全】Android应用动态注入攻击与防范

为frida-server添加可执行权限:chmod +x frida-server

【移动安全】Android应用动态注入攻击与防范

03 安装objection

pip3 install objection

【移动安全】Android应用动态注入攻击与防范

运行以下命令验证objection是否安装正确:

objection version

【移动安全】Android应用动态注入攻击与防范


PART.4


攻击复现

01 用frida进行动态注入调试攻击

    用adb连接Android手机启动frida-server

【移动安全】Android应用动态注入攻击与防范

新开一个终端,进行端口转发(27042为frida默认端口)  【移动安全】Android应用动态注入攻击与防范

这里对开源工具Hijack进行攻击测试,首先用以下命令找到APP的包名:frida-ps -Uai【移动安全】Android应用动态注入攻击与防范

用以下命令对APP进行js注入,该脚本的作用是列出APP的所有类(js脚本可网上找也可自己编写):frida -U -f 包名 -l 脚本路径【移动安全】Android应用动态注入攻击与防范

列出所有类和方法:【移动安全】Android应用动态注入攻击与防范

跟踪某个方法:frida-trace -U -f 包名 -m “方法名”【移动安全】Android应用动态注入攻击与防范

跟踪某个类:frida-trace -U -f 包名 -i “类名”【移动安全】Android应用动态注入攻击与防范

02 用objection进行动态注入调试攻击

将objection注入应用:objection -g  包名 explore 

【移动安全】Android应用动态注入攻击与防范

   查看内存中加载的库: memory list modules                              

【移动安全】Android应用动态注入攻击与防范

查看库的导出函数:memory list exports libssl.so                                                         【移动安全】Android应用动态注入攻击与防范

查看当前可用的activity:android hooking list activities                                                     【移动安全】Android应用动态注入攻击与防范

启动activity: android intent launch_activity activity名                                     【移动安全】Android应用动态注入攻击与防范

列出内存中所有的类: android hooking list classes                                                       【移动安全】Android应用动态注入攻击与防范

PART.5


安全建议


代码混淆和加固

使用代码混淆工具,以增加应用程序代码的复杂性,使其难以被分析和理解。应用程序加固工具可以对应用进行加密和保护,使攻击者更难以获取应用程序的源代码或进行动态分析。


检测模拟器和虚拟环境

针对模拟器和虚拟环境的检测,以防止攻击者在非真实设备上运行应用程序进行分析。例如,可以检测虚拟设备的特征或使用硬件相关的信息来验证设备的真实性。


反调试

在应用程序中实施调试检测机制,以阻止调试器的附加。这可以通过检查调试标志、使用反调试技术等方式来实现。可以在应用程序中检测Frida 和Objection 这样的工具的存在,使用一些防御检测库,如Anti-Frida来检测Frida 的运行。


敏感信息保护

对于应用程序中的敏感信息,例如密钥、令牌等,采用安全的存储和处理方式,以防止攻击者通过动态注入攻击获取这些敏感信息。


及时更新和监控

及时更新应用程序,以包含最新的安全修复和防护措施。监控应用程序的行为,检测异常活动,并采取相应的响应措施。



END




原文始发于微信公众号(安全驾驶舱):【移动安全】Android应用动态注入攻击与防范

版权声明:admin 发表于 2024年2月19日 下午5:22。
转载请注明:【移动安全】Android应用动态注入攻击与防范 | CTF导航

相关文章