APP动态分析系列 - 实战:某木马APP行为过程分析

admin 2024年3月26日21:08:15评论10 views字数 4344阅读14分28秒阅读模式
APP动态分析系列 - 实战:某木马APP行为过程分析

APP动态分析系列 - 实战:某木马APP行为过程分析

APP动态分析系列 - 实战:某木马APP行为过程分析

大狗涉网线索分析平台是无糖信息旗下一款针对“新型电信网络诈骗犯罪”的专业化、智能化、跨境化等特征提供诈骗网站的识别、监控及线索数据的溯源分析和嫌疑人追踪一体化服务能力。为公安部门在预警防范、侦查破案提供多方位、深层次、多类型的情报信息及数据支持,助力公安机关形成反网络犯罪的打击能力。

网络犯罪的对抗在逐步升级,恶意APP开始广泛的运用一些对抗手段来对抗检测,例如:模拟器检测、对通信过程加密、使用非HTTP协议进行通信、远程加载经过加密处理的配置文件等。此外,实战中也存在一些特定的关键线索信息无法通过简单静态解析或动态抓包来提取的情况。通常面对这些难题,我们需要引入基于Frida的动态插桩技术,并根据相关教程,安装前置的Python、Frida、安卓模拟器及其依赖环境,而这些繁琐的过程可能会对有意愿了解和使用该类技术的人员造成阻碍。

因此,此次《大狗涉网线索分析平台》的《云真机操作台》引入了Frida与实时日志(logcat)功能,让大家省去安装烦恼,随时随地都可以在无糖浏览器中使用Frida脚本来动态调试恶意APP。

01
案例解析

在工作中,我们关注到有一类伪装成 “红包助手”,“游戏外挂”的APP木马开始频繁出现。在用户安装该APP后,会要求打开“无障碍”功能(图1),之后该手机则会被网络犯罪人员远程控制,实施远程控制屏幕、窃取短信、进行录音等操作。

APP动态分析系列 - 实战:某木马APP行为过程分析

图1. 通过云真机启动APP木马

简单的初步分析无法观察到有意义的信息或传输数据。为了进一步了解该恶意APP的情况,我们结合反编译工具(常见的有jadx、jeb等,这里以jadx为例)和大狗云真机操作台Frida脚本功能来完成反编译及动态调试工作。

jadx是一款优秀的开源Java反编译工具,可以方便我们快速的査看Android APP源码。

官方网站:https://github.com/skylot/jadx

02
确认入口

在逆向APP代码功能前,我们通常需要先确定APP启动入口。在jadx中打开APK文件后,选择左侧 “资源文件” 中的 AndroidManifest.xml 文件,可以通过默认初始化类和默认启动页面类来确认启动入口(图2)。

https://developerandroid.com/guide/topics/manifest/application-element?hl=zh-cn

https://developerandroid.com/guide/topics/manifest/intent-filter-element?hl=zh-cn

这里请参考Android官方文档application  name属性 及Activity的 intent-filter 属性的解释说明。

APP动态分析系列 - 实战:某木马APP行为过程分析

图2. 通过jadx查看AndroidManifest.xml确认入口

在jadx中提供了便捷操作,可以直接双击两个入口类的字符串查看相关代码。我们查看默认启动页面(MainActivity)的相关代码,其中会包含多个与页面(Activity)生命周期相关的事件定义,例如onCreate(页面创建)、onDestroy(页面销毁)等。进一步查看其中的 OnCreate部分的代码 ,通过对比分析后我们确认了该木马APP主要功能过程位于默认启动页面类中(图3)。

APP动态分析系列 - 实战:某木马APP行为过程分析

图3. 默认启动页面的onCreate方法定义

03
劫持流程

App里的功能代码往往按照一定的逻辑流程来执行,如果应用功能逻辑复杂,代码也会变得异常复杂,加之不少恶意APP为了对抗分析,对代码使用了混淆技术(图4),反编译后的java代码可读性极差,使得我们将难以通过肉眼观察代码并推断出程序的具体走向。

APP动态分析系列 - 实战:某木马APP行为过程分析

图4. 使用了混淆技术的APP代码,使用了随机生成的类名与方法名

对于这种情况,我们往往需要通过动态调试技术来“动态”的“观察”或“修改”APP的流程(图5),从而了解APP的运行逻辑。基于Frida劫持函数的简化处理流程如下:

● 正常APP流程下,想了解某函数X的处理流程。这里假设该函数X,接收了2个参数,1和2,执行了功能代码(例如:计算1+2),得到返回值3

● 引入Frida之后,覆盖原来的函数X,把X覆盖为我们自行编写的函数X',当APP里的流程被执行后,原本传递给X的参数1与参数2,会进入函数X',在函数X'里,我们可以对参数1与参数2进行任意操作,比如输出参数1与参数2的值,这样一来,我们就可以在日志里“观察”参数1与参数2的值。

● 我们还可以任意设定函数X'的返回值, 原本APP流程里执行函数X,返回值是3,被Frida脚本劫持为X'后,我们将返回值修改为4。如果接下来的流程执行依赖于函数X的返回值,比如返回值是3的时候,执行打开网页;而返回值4,发送一条短信;显然,APP的执行流程被我们修改了。

APP动态分析系列 - 实战:某木马APP行为过程分析

图5. Frida观察或修改APP运行流程

以该样本里的代码isEmu_DIV_ID_lator函数为例,该函数用于“模拟器检测”,一旦发现是模拟器,则不进行后续的流程。为了绕过该木马APP对模拟器的检测,我们可以通过Frida来劫持isEmu_DIV_ID_lator函数,并强行修改该函数的结果,让APP认为它并不是在模拟器内运行的。具体操作如下:

● 在jadx中对要分析的函数右键选择生成脚本(图6)

● 在云真机操作台内,新增一个Frida脚本

● 将生成的脚本,粘贴到代码编辑框内,做一些修改(图7)

● 点击右上角【加载脚本】即可

APP动态分析系列 - 实战:某木马APP行为过程分析

图6. 使用jadx在目标函数上进行右键操作生成frida脚本

APP动态分析系列 - 实战:某木马APP行为过程分析

图7. 在云真机操作台内使用frida脚本修改isEmu_DIV_ID_lator函数返回值

大家可以自行试试将该函数的逻辑返回改为true验证该APP在检测到模拟器后的操作。值得注意的是,我们的云真机操作台本身就可以绕过常见的模拟器检查等操作,所以默认情况下,该木马APP也可以正常被运行。如果大家在使用的过程中遇到无法绕过的“模拟器检测”问题,可以联系我们。

当然,我们还会好奇,如果该APP如果通过了“无障碍”功能以后会显示什么界面呢?由于我们不方便真实去测试这个过程,那么我们也可以通过Frida脚本在云真机操作台中来进行这个测试。可以看到,通过劫持相关的方法返回值后,APP启动后会打开和平精英的官网进行伪装(图8)。

APP动态分析系列 - 实战:某木马APP行为过程分析

图8. 劫持函数返回值查看APP伪装的界面

04
请求定位

对APP的分析过程中,经常需要快速定位到与网络请求有关的代码片段,以便分析网络请求的目的地址、封包结构、加解密算法、上下文调用链条等等。但APP代码十分繁琐并被混淆时,快速定位到代码并不容易。以本APP为例,我们尝试通过Frida脚本来实现快速定位相关代码, 具体操作如下:

● 在云真机操作台中启动该APP

● 从脚本库中选择 “跟踪底层网络链接”脚本

● 点击【加载脚本】

● 在下方【日志】中查看输出结果(图9)

APP动态分析系列 - 实战:某木马APP行为过程分析

图9. 执行【跟踪底层网络链接】脚本产生的日志信息

通过脚本产生的日志信息,我们可以快速定位该网络请求发生的位置,即

parts.pill.rvjtaavycjjthtmotfeemfhybmtxsthygdornybsjbbvaztqbm2.vnqajlmwlxgevmzworgfxomztxixgfdthcalyvglbgyrhtzjro3.ovzugsavayfjwvncqbkbbsafqjrlyzblauyjcnfvxzxmnsjigh38 文件的第1750行。

最后,在jadx中展开该文件后根据行数及上下文即可快速定位。(图10)。

APP动态分析系列 - 实战:某木马APP行为过程分析

图10. 快速定位的网络请求代码片段

至此,我们就清楚了该APP木马进行网络连接的底层过程在 rmnshfamhvzysyhmtmwrintpyndwfexxqsziwkzidyzdphbdxk49 

05
观察参数

接着根据上下文理解,通过字符串搜索,分析具体调用

 rmnshfamhvzysyhmtmwrintpyndwfexxqsziwkzidyzdphbdxk49 的函数就可以判断出上层功能函数。最后我们定位到调用函数在

 agmfxdqcjmzzjhjzqmlucvmzeectgnliwkkbsvczvxcfdrhhfy51 ,其方法的定义如下图所示(图11),具有两个参数,分别是木马回连的IP与端口:

APP动态分析系列 - 实战:某木马APP行为过程分析

图11. agmfxdqcjmzzjhjzqmlucvmzeectgnliwkkbsvczvxcfdrhhfy51函数定义

在【劫持流程】里我们讲到了“观察”与“修改”,这里我们希望知道木马APP回连的IP与端口是什么,那么我们就可以针对

agmfxdqcjmzzjhjzqmlucvmzeectgnliwkkbsvczvxcfdrhhfy51方法生成Frida脚本,来观察该方法的前两个参数,如下图(图12)所示,在下方【日志】内可以看到顺利打印出木马回连的服务器地址与端口号。

APP动态分析系列 - 实战:某木马APP行为过程分析

图12. 劫持agmfxdqcjmzzjhjzqmlucvmzeectgnliwkkbsvczvxcfdrhhfy51函数,获取IP与端口信息

06
样本溯源

在分析完该APP的功能逻辑后,我们可能还会关心一个问题:是否还有同类型APP,该APP当前传播的情况,样本演变历史如何。这一问题也可以接着在大狗平台 的“研判图谱”功能 中得以解决(图13)。

APP动态分析系列 - 实战:某木马APP行为过程分析

图13. APP研判图谱

在研判图谱中,从APP签发证书关系中我们就可以发现该样本不仅在中文环境,同时也在多种外文环境中进行传播,例如下图是某外文APP投毒网站(图14)。

APP动态分析系列 - 实战:某木马APP行为过程分析

图14. “研判图谱”中发现的某外文APP投毒网站

从图谱关联的结果来看,该样本上线时间跨度较长,已经存在了较长时间。加之存在英文与中文的多种版本,我们推测该样本存在多个团伙同时使用的情况。这表明该样本可能是某种付费服务的产品。之后根据样本特征及相关情报系统,我们也可很快的确实存在提供这种在线定制化服务的网站(图15)。由于犯罪服务的平台化,使得该样本的使用门槛大大降低,这可能导致未来一段时间内呈现爆发态势,值得关注与防范。

APP动态分析系列 - 实战:某木马APP行为过程分析

图15. 提供木马生成服务的网站

最后我们会分享更多关于实践工作中的技术经验,也同时欢迎相关公检法技术工作者注册 “无糖浏览器”,在 “知察社区” 中了解相关样本细节并自行通过大狗平台复现研究。

无糖浏览器-您身边的办案助手

01

下载地址(PC端与APP同链接):

http://browser.nosugar.tech

02

邀请码:注册邀请码可从已认证通过的公安民警处获得,完成注册流程并审核通过可开通完整使用权限。

如有疑问,可以扫描下方二维码进入无糖反网络犯罪研究中心。

APP动态分析系列 - 实战:某木马APP行为过程分析

原文始发于微信公众号(无糖反网络犯罪研究中心):APP动态分析系列 - 实战:某木马APP行为过程分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月26日21:08:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   APP动态分析系列 - 实战:某木马APP行为过程分析http://cn-sec.com/archives/2606669.html

发表评论

匿名网友 填写信息