APP反取证分析实战记录分享
2023-6-1 09:55:39 Author: WIN哥学安全(查看原文) 阅读量:80 收藏

背景介绍

随着近几年网络犯罪打击力度不断加大,目前违法APP也愈发的隐蔽和难以分析。检测ROOT或模拟器环境是这类APP常见的反分析手段之一,雷电APP智能分析中也内置了绕过ROOT、模拟器检测功能。

但笔者最近遇到一个APP无法绕过,本文主要介绍下整个处理分析过程,希望给大家带来启发。

某日,同事联系到我,说有一个APP使用了绕过ROOT、模拟器功能,仍然是无效的。主要表现如下:模拟器中启动APP,提示“不支持在模拟器进行操作”,然后闪退。脚本启动后,还是自动闪退,可能需要人工分析下。

1.分析过程

遇到这种情况,说明在这个APP中,代码实现了一种新的模拟器环境检测方法。我们先使用反编译功能,查看下APK源码,进行初步分析。这次这个APP比较方便,没有进行加固,我们可以直接进行反编译。

通常我们要处理这种问题,可以先进行关键字搜索,通过特定的关键字,找到对应的代码。

例如:我们可以搜索APP中的提示”不支持在模拟器进行操作“,搜不到也可搜索”emulator”、“simulator”、“root”、“/su“这类关键字。

本次比较幸运,我们直接搜索”模拟器“,就找到了代码中的相关内容。

双击搜索结果,找到搜索目标类中对应的代码,通过分析代码逻辑,我们可以发现 "z5"变量是模拟器环境检测结果的标志。当"z5"为true时,环境检测不通过。我们初步推断,当”z5“为false时,是可以通过的。

接着向上进行代码追溯,“z5”为false的条件是,“i3”变量的值需要小于等于2。

那继续追溯“i3”变量,如下图所示,可以发现,“i3”初始值为0或1,并且有多个让“i3”自增的条件

(“i9”、“aVar”、“c6”)判断。结合本文开始的模拟器检测现象,初步判断这些条件应该是环境监测的指标。

后续目标通过上面的分析,就比较清晰了,只需要让这部分环境检测代码不运行即可。继续追溯“i9”、“aVar”、“c6”,发现“z6”变量为模拟器环境检测代码的标志变量。

通过“z6”的赋值代码,可以初步推断是,正常启动APP时进行检测,使用xposed调试时不进行检测。

经过上面的一系列分析,我们已经确定了环境检测的代码块,对应的判断条件就是“splashActivity.configBean.j()”这个方法。

通过快捷键Ctrl+鼠标左击,进度对应函数实现。可以发现该函数只进行了布尔值的返回。这就比较容易了,我们可以hook这个函数,返回false即可绕过模拟器环境检测。

2. 自动脚本生成

 步骤1  通过雷电APP智能分析——Frida脚本功能,我们可以根据类名、方法明选中hook的方法后,一键生成脚本。

 步骤2  打开生成的脚本,搜索“overload.implementation”,定位到hook的函数体位置,function函数就是目标函数。

 步骤3  删除不需要的内容,直接返回false,保存脚本。

 步骤4  验证修改后的脚本,运行后,可以发现APP能够正常运行,没有出现模拟器环境检测提示和闪退现象。

当然我们也可以手动编写脚本,通过导入脚本运行的方式,同样可以满足需求。

3. 使用技巧

我们在分析APP时,经常需要重新启动APP,如何让我们写的脚本每次都能自动运行。我们可以通过全局脚本的设置,将脚本作为全局脚本自动执行。

接下来我们就可以顺利地对该APP进行分析了。

Tips:

免责申明:本公众号所发布的文章及工具代码等仅限交流学习,本公众号不承担任何责任!如有侵权,请告知我们立即删除。

扫码回复“加群”加入交流群

往期精彩

工具获取回复“burp”“awvs”“nessus”“ladon”"Forfity"等可以。

快速攻击全自动化工具JuD

Exp-Tools 1.1.3版本发布

GUI-tools渗透测试工具箱框架

阿波罗自动化攻击评估系统

 微软 Word RCE附PoC

Clash最新远程代码执行漏洞(附POC)

禅道系统权限绕过与命令执行漏洞(附POC)

【附EXP】CVE-2022-40684 & CVE-2022-22954

网络安全应急预案合集

师傅们求点赞,求支持!

文章来源: http://mp.weixin.qq.com/s?__biz=MzkwODM3NjIxOQ==&mid=2247493045&idx=1&sn=e5c3b69abd121e5adc2e00857e72bee6&chksm=c0c84441f7bfcd57bc46b29d3dcf8ff6e07231019537cf7e29841c6346201dac0bcc7f9ded9c#rd
如有侵权请联系:admin#unsafe.sh