首页
社区
课程
招聘
[原创]某Android SMS 木马逆向分析
发表于: 1天前 959

[原创]某Android SMS 木马逆向分析

1天前
959

最近实习主要在做Android的逆向和动态下发分析相关的工作,因此在业余时间找了一个真实的木马样本进行分析,IOC在威胁情报平台上尚无匹配记录,暂无法归属到已知木马家族。经过完整分析后发现,该样本的技术复杂度较简单。本文也被发到我的公众号上,欢迎各为移步:819K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7q4)9J5k6i4N6W2K9i4S2A6L8W2)9J5k6i4q4I4i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9J5c8X3y4D9b7$3t1%4g2p5g2W2f1@1R3K6M7Y4g2%4e0q4y4B7M7h3&6B7P5p5p5`.

本文针对一种比较新的(26年7月) Android SMS 劫持恶意软件开展逆向分析,完整还原了其 Loader、安装器及最终  Payload 的执行流程,分析了动态解密、内存加载、JNI 解包、DoH  获取配置、默认短信应用劫持及短信监听等关键技术,最终确定该样本属于以短信验证码(OTP)窃取为核心的 Android SMS Hijacking  恶意软件,具有多层加载、组件动态启用、官方 DoH 隐蔽通信以及 Builder 自动化生成等典型特征。

首先看AndroidManifest.xml,应用定义如下。

同时 attachBaseContext 方法被重写,结合Jadx反编译结果,推测样本使用了加壳保护。

其中对应风控模块的buildEnvReport里面包含大量俄语字符串,可以初步判断该样本可能来自俄语地区的威胁团伙。

在56.al平台尝试自动脱壳,但任务异常失败,报错如下。因此只能采用手动脱壳方式。

image-20260704082625614

脱壳对应的函数是nativeUnpack,位于libpmdkzpc.so,该函数未使用额外的代码混淆,核心逻辑如下。

该 JNI 函数首先通过 AssetManager 从 APK 的 assets 目录依次读取三个资源文件(hlqudr/tfuvugxs.cachehlqudr/cphxetqa.tmphlqudr/yccfliek.bin),将其内容按顺序拼接到一块连续缓冲区中。随后使用一个 32 字节循环密钥对拼接后的数据执行 XOR 解密,完成解密后,函数调用 zlib 的 inflate 接口对数据进行解压。在输出缓冲区不足时会自动扩容并重新解压,最终将还原得到的原始 Dex 数据封装为 Java 层的 byte[] 返回。

接下来编写 Unidbg 脚本模拟执行:

报错如下:

补全 JNI 方法实现:

报错如下:

缺少libandroid.so及对应的AAssetManager_fromJava等函数,需要使用VirtualModule补全运行环境。

运行后成功将内容 dump 为 Dex 文件,使用 Jadx 打开可以正常反编译。

image-20260704105547257

分析发现,该 Dex 文件主要实现了 VPN 功能和动态安装 APK 的逻辑。

我们可以在com.supuyami.xajijupuqi包的SuseqarolimoActivity_b320类(启动 Activity)中看到onCreate方法的核心逻辑:

下载Payload的逻辑位于Najohigeca类的invokeSuspend方法下,混淆后对应的名称是hesezewi,主要逻辑位于case 0分支。动态加载流程如下:

其中,m_ziutteqo方法在libqbflddv.so中通过 JNI 动态注册,我们可以使用 Unidbg 模拟执行该方法。

其中m_ziutteqo对应的偏移地址是0x4ca88,可以直接模拟执行获取目标 APK 文件。执行过程无报错,代码如下:

其整体执行流程如图所示。

该 APK 的入口类为 GexojofiApp51ef,其重写了 Application.attachBaseContext() 方法,并在应用生命周期最早阶段执行全部初始化逻辑。与第一层 Loader 相同,该样本再次采用 Native 代码完成解密,其中核心函数 fllzsswi() 位于 libldcaeux.so 中,其返回值为解密后的 DEX 字节流。当检测失败时,程序不会继续执行恶意逻辑,而是启动 QibabumupayipeAuth76ed Activity,仅显示一个 Loading... 界面,并禁止用户返回,从而制造程序仍在正常启动的假象,同时避免恶意逻辑暴露给分析环境。

脱壳函数fllzsswi位于libldcaeux.so中,代码逻辑如下:

参照第一节的脱壳方法进行修改,即可成功获得最终的 Dex 文件(恶意载荷)。

恶意载荷请求了大量敏感权限,主要集中在短信和通话相关功能:

权限请求流程的伪代码如下:

核心伪代码:


[内核课程]《Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

最后于 1天前 被ldz666编辑 ,原因:
收藏
免费 0
打赏
分享
最新回复 (3)
雪    币: 419
活跃值: (190)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
woc,格式为什么会这样
1天前
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
脱壳网站更新了可以重新试试看看
1天前
0
雪    币: 913
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
学习
11小时前
0
游客
登录 | 注册 方可回帖
返回