Android病毒分析实战(二)

移动安全星球 / 152 /

ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz

今天星友求助一个类似杀猪盘的样本。该样本有以下几个点需要攻克:

1、AndroidManifest.xml经过处理:
file
2、整个样本的字符串全部经过加密,解密方法名经过强混淆:
file
3、资源文件也经过了混淆:
file
4、样本伪加密:
file
5、样本无法安装(签名问题):
file

接下来我们来解决一下2、5两个问题。

样本无法安装

我们看样本安装报错,提示签名问题,我们直接上Xposed模块:核心破解
核心破解的主要功能:
1、允许降级安装应用
2、允许安装签名错误的apk
3、允许在使用不同签名的情况下覆盖安装
缺点:
当前版本只支持安卓10-12
file

强混淆方法hook、字符串解密

file
接下来我们hook一下这个加密方法,简单的hook我们直接使用objection即可:

hook 监测该类,可以看到只有这一个方法:

objection -g com.biaoqyun.tongchengaglao explore
android hooking watch class b6p.alur0e.fmjoi

file
我们直接复制,hook该方法,报错,找不到这个方法:
file
这样看直接hook这个方法显然是有问题,因为其中包含了各种字符,frida在解析这个方法时由于乱码的原因,无法正常解析道这个类,这样看来我们只能想其他办法了。

曲线救国,可以试试hook它的上层调用a.c,打印对应的参数和返回值来看,其中的参数即是解密后的字符串。

得到结果如下:

android hooking watch class_method com.g
aoyuan.mianshu.k.c.a --dump-args --dump-return

file
从上图我们可以看到有RSA密钥,以及返回的一些URL。

这样的缺点是只能知道这一块的字符串解密内容,其他的还是无法定位,这样看还是需要hook这个混淆的方法。

我们的大佬提供了解决方法,可以hook混淆方法,展示一下hook到的结果:
file
我们也可以根据打印出来的字符串在jadx中搜索对应的字符串然后继续分析代码

hook代码如下:

Java.perform(
    function() {
 
        var targetClass = "b6p.alur0e.fmjoi";
 
        var hookCls = Java.use(targetClass);
        var methods = hookCls.class.getDeclaredMethods();
 

        var methodname = encodeURIComponent(methods[0].toString().replace(/^.*?\.([^\s\.\(\)]+)\(.*?$/, "$1"));//对字符串进行js自己编码

 
        hookCls[decodeURIComponent(methodname)]//使用的时候再去解码
            .implementation = function (x) {
                console.log("参数:", x);
                var result = this[decodeURIComponent(methodname)](x);
                console.log("返回值:",result);
                return result;
            }
    }
)

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file


Android病毒分析实战(二)
作者
移动安全星球
许可协议
CC BY 4.0
发布于
2023-08-27
修改于
2024-12-22
Bonnie image
尚未登录