Android 恶意样本分析——三层锁机样本破解
一、样本介绍
最近在吾爱上看到一个三层锁机的样本,恰好最近在学习研究Frida,通过动静态分析来彻底了解一下这个锁机样本。
二、实验环境
夜神模拟器+Kali
jadx-gui
Visual Studio Code
Android Studio
三、实验步骤
(1)静态分析
我们先通过jadx-gui打开恶意样本程序,开始静态分析:
我们在AndroidManifest.xml文件中可以找到样本的入口点,可以发现样本中存在三个service,这个是样本后续实现三层锁机的服务,我们进入MainActivity
然后我们定位到跳转的类com.k7.qq2856437148.K7
我们进入K71类中继续分析
我们可以发现基本原理和我们k7中一样,只是这里对密钥进行了加密处理,我们再查看k72,我们只需要对这里hook即可,即是我们的hook点2
k72的实现原理和k71一样,也是采用加密算法对密钥做了处理,我们只需要对这里hook,即是我们的hook点3
(2)动态分析
objection动态分析
首先,我们先需要配置frida环境,具体教程参考 上,我们启动frida_server
然后我们先使用objection工具对程序进行初步的hook动静态分析,objection的使用这里参考肉丝大佬安全客上的文章:https://www.anquanke.com/post/id/197657#h3-6
我们使用objection,对样本进行初步的分析:
和我们之前静态分析的一样,样本有1个Activity和3个service,我们先看能不能直接实现跳转
我们发现不能直接跳转,那我们尝试查看一些函数信息,并初步对一些函数进行hook
我们hook类K7中的函数c失败,这是因为在我们启动时,实例已经加载所以没有hook上,我们在启动时便hook看看
主要是c函数的返回值等都为空,所以我们并没有获得实际有用信息,我们使用objection hook分析也初步结束了
Frida代码hook
经过我们前面的动静态分析,我们先对第一个hook点,编写代码hook:
我们这里只需要hook出k7的值即可
我们输入字段值,然后进入第二层锁机
然后我们对第二个hook点开始hook
这里我们可以发现,第二层密钥就是将K7进行加密,我们hook加密函数即可,当然我们也可以编写代码把K7值hook出来得到密钥
我们随便输入密码,然后hook
输入密钥,我们进入最后一层
我们直接继续对加密函数hook即可
然后我们把密钥输入进去,可以发现最后一层锁机解除
四、实验总结
这里我利用frida技术对三层锁机进行了动静态分析,对锁机的样本原理进行了一个初步分析。我们发现三层锁机的密钥,第一层是固定密钥,这个可以通过动态调试获得,第二层则是根据你输入密码或产生的密钥,就只能通过编写加密程序,或者找到对应的hook点进行获得,第三层密钥和第二层密钥原理一样,只是加密方式比较复杂一点,这里直接hook出密钥结果最好。
最后这里很多地方参考了肉丝大佬的博客和星球,对frida的理解进一步深入了,此次样本分析就到这里,还有什么问题请各位大佬指教。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!