暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

移动安全初探之frida框架

第59号 2021-09-30
7168

frida是一个面向开发人员、逆向工程师和安全研究人员的动态检测工具,它可以帮助使用者在没有程序源代码的情况下对程序进行分析、监控。frida框架是一款hook框架,基于动态二进制插桩技术,研究人员在使用时只需要将自行编写的javascript代码通过python脚本注入到所要分析的程序进程中即可。frida还是一款易用的跨平台工具,原生支持Win、Mac、Linux、Android、iOS等平台。


由于其简单、跨平台的特性,在程序黑盒调试发挥出来强大的作用,在Android平台上已经超越了此前非常流行的Xposed框架。



01

frida下载地址


frida的官方网址为https://frida.re/,frida是一款开源框架,下载地址为https://github.com/frida/frida



02

frida安装部署


frida分为客户端和服务端,客户端即为分析端,服务端即为被分析端。以在Windows上进行Android应用分析为例,Windows为客户端,Android设备为服务端。本文下面均以Windows作为客户端,Android设备作为服务端举例进行。


首先进行frida客户端的安装部署,由于frida需要使用python脚本将javascript代码注入到被分析进程中,所以首先需要安装python环境。


本文所使用的python环境为python3.7.7,此处建议使用pyenv启动指定的python版本,方便在由于python版本和frida版本不匹配出现异常时可以快速切换python版本


pyenvinstall 3.7.7


pyenvlocal 3.7.7



使用pip安装frida,建议指定frida版本进行安装,本文使用的frida版本为12.8.0

pipinstall frida==12.8.0



安装frida-tools


pipinstall frida-tools==5.3.0



安装objection


pipinstall objection==1.8.4



上述安装过程结束后使用命令frida --version查看所安装的frida版本,版本无误则frida客户端的安装部署就成功了。



frida客户端安装成功后,接下来进行frida服务端的安装。


本文使用的Android设备为夜神模拟器最新版本(7.0.1.6),Android版本为7.1.2


https://www.yeshen.com/cn/download/fullPackage?beta



进入到夜神模拟器根目录


使用命令nox_adb.execonnect 127.0.0.1:62001,使电脑和模拟器建立连接

使用命令adb.exedevices和adb.exe shell getprop ro.product.cpu.abi查看目前正在运行的Android设备的状态和位数



https://github.com/frida/frida中下载相对应的frida服务端,版本、系统、位数均要正确。



下载解压后使用命令adb.exepush C:\ChangZhi\frida-server data/local/tmp/frida-server将frida服务端传送到Android设备中


给frida服务端分配权限并运行


chmod 777frida-server

./frida-server



上面的窗口不要关闭


新开一个命令行窗口,执行以下命令


adb.exeforward tcp:27042 tcp:27042


adb.exeforward tcp:27043 tcp:27043


进行端口转发



最后执行frida-ps-U命令,使用frida查看所连接的Android设备的进程列表,输出进程列表则证明frida的服务端可客户端均已安装部署成功。



若执行frida-ps-U命令报错或者无任何显示,则需要确认python版本、frida客户端版本、frida-tools版本、frida服务端版本是否匹配正确,重新安装部署即可。


编写脚本使用fridaHook Android应用程序


frida官方提供了进行Hook的javascript API(https://frida.re/docs/javascript-api/#java),只需要根据官方提供的JavascriptAPI编写js脚本即可实现对Android应用程序的Hook。


如下,编写一个helloWorld.js脚本,Hook“别摸我”应用进程,使其打印出“helloworld!”




通过frida-ps-U获取到应用进程包名后,使用下面的命令即可进行Hook操作


frida -U-l C:\frida\helloWorld.js com.deepnoite.bmw2



接下来使用官方文档中的 CTF APK来演示frida在Android逆向分析中的能力

首先下载官方提供的Hookpython脚本


https://frida.re/docs/examples/android/



然后下载官方提供的APK并安装到模拟器上,这个APP是一个石头剪子布的游戏,通过点击下方的R、P、S三个按键和机器进行石头剪刀布的游戏,游戏的结果会在屏幕上显示。



运行上面的Hook脚本,此时会发现,点击R、P、S三个按钮中的任何一个,每次游戏都会获得“WIN!”,这是由于frida在程序运行过程中修改了游戏的结果,使得返回的游戏结果都是机器输自己赢。


 

 




文章转载自第59号,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论