Android 恶意样本分析——三层锁机样本破解

一、样本介绍

最近在吾爱上看到一个三层锁机的样本,恰好最近在学习研究Frida,通过动静态分析来彻底了解一下这个锁机样本。

二、实验环境

夜神模拟器+Kali

jadx-gui

Visual Studio Code

Android Studio

三、实验步骤

(1)静态分析

我们先通过jadx-gui打开恶意样本程序,开始静态分析:

我们在AndroidManifest.xml文件中可以找到样本的入口点,可以发现样本中存在三个service,这个是样本后续实现三层锁机的服务,我们进入MainActivity

代码解释:

1)我们可以看出入口处使用ADRTLogCatReader记录软件运行期间所产生的日志,这是大部分锁机样本都会用到的。

2)使用是startService启动服务,然后通过Class.forName隐式的跳转Activity,然后传入活动,并启动intent跳转

然后我们定位到跳转的类com.k7.qq2856437148.K7

代码解释:

1)首先我们使用WindowManager制作一个悬浮窗,然后把该窗口权限设置最高,这样就可以放置在顶层,用户除了点击串口界面,不能返回,初步到达了锁机的目的

2)我们继续分析,发现两处的代码被混淆,这里可能是一些字符串信息,可能包含我们的密钥

3)到了点击函数中,我们可以发现1处第一个判断语句,前面值来源于我们的文本框输入,后面是k7中存放的字符串,匹配成功后,这里也是我们的hook点

42处跳转到K71,3处将当前的窗口移除,4处停止进程,这就完成了锁机窗口的切换

我们进入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

常见的hook命令:
objection -g com.android.settings explore  //注入设置应用
android hooking list activities  //查看Activity,service相同
android intent launch_activity com.android.settings.DisplaySettings  //实现Activity跳转
android heap search instances com.android.settings.DisplaySettings   //搜索类的实例
android heap execute 0x2526 getPreferenceScreenResId    //主动调用实例
android hooking list classes  //列出内存中所有类
android hooking search methods display  //列出内存中所有的方法
android hooking watch class android.bluetooth.BluetoothDevice  //hook相关类的所有方法
android hooking watch class_method android.bluetooth.BluetoothDevice.getName --dump-args --dump-return --dump-backtrace  //打印具体方法的参数、返回值、堆栈信息
平时使用的就是这些,具体可以参考肉丝大佬的博客

我们使用objection,对样本进行初步的分析:

和我们之前静态分析的一样,样本有1个Activity和3个service,我们先看能不能直接实现跳转

我们发现不能直接跳转,那我们尝试查看一些函数信息,并初步对一些函数进行hook

我们hook类K7中的函数c失败,这是因为在我们启动时,实例已经加载所以没有hook上,我们在启动时便hook看看

主要是c函数的返回值等都为空,所以我们并没有获得实际有用信息,我们使用objection hook分析也初步结束了

Frida代码hook

经过我们前面的动静态分析,我们先对第一个hook点,编写代码hook:

Java.choose("com.k7.qq2856437148.K7",{onMatch:function(instance){console.log("Found instance:",instance);console.log("k7:",instance.k7.value);},onComplete:function() {console.log("search completed!")}})

我们这里只需要hook出k7的值即可

我们输入字段值,然后进入第二层锁机

然后我们对第二个hook点开始hook

这里我们可以发现,第二层密钥就是将K7进行加密,我们hook加密函数即可,当然我们也可以编写代码把K7值hook出来得到密钥

Java.use("com.k7.qq2856437148.jiami").GetMD5Code.implementation = function(x) {var result = this.GetMD5Code(x);console.log("x,result",x,result);return result;}

我们随便输入密码,然后hook

输入密钥,我们进入最后一层

我们直接继续对加密函数hook即可

然后我们把密钥输入进去,可以发现最后一层锁机解除

四、实验总结

这里我利用frida技术对三层锁机进行了动静态分析,对锁机的样本原理进行了一个初步分析。我们发现三层锁机的密钥,第一层是固定密钥,这个可以通过动态调试获得,第二层则是根据你输入密码或产生的密钥,就只能通过编写加密程序,或者找到对应的hook点进行获得,第三层密钥和第二层密钥原理一样,只是加密方式比较复杂一点,这里直接hook出密钥结果最好。

最后这里很多地方参考了肉丝大佬的博客和星球,对frida的理解进一步深入了,此次样本分析就到这里,还有什么问题请各位大佬指教。

Android恶意样本分析——frida破解三层锁机样本相关推荐

  1. 多层Android锁机样本分析

    Android锁机软件分析 作者:云在天(Harry)吾爱破解 原文地址:多层Android锁机样本分析 https://www.52pojie.cn/thread-701201-1-1.html ( ...

  2. Android锁机样本分析

    样本基本信息 样本包名:Android.qun.zhu.an.zhuo.kou.kou MD5值: 36f2db49dcb62247055df771dca47bde 来源:52破解论坛某求助贴. 样本 ...

  3. android锁机病毒源代码,Android 锁机样本母体分析

    本帖最后由 莫问刀 于 2018-8-17 09:49 编辑 --------------------------------------------------------------------- ...

  4. Android恶意代码分析流程,[原创]恶意代码plankton分析记录(1)

    2013-8-3 13:19 是简单了点,通过jd,你很难找出调用序列的 在smali上做更好点,对于这个,我们倒是也有个检测结果: ********************************* ...

  5. 013 Android锁机病毒分析

    文章目录 免流服务器-锁机病毒分析 秒抢红包-锁机病毒分析 免流服务器-锁机病毒分析 首先来分析这个免流服务器的锁机病毒,文件信息如下 文件: 免流服务器.apk 大小: 799835 bytes 修 ...

  6. 记一次lpk劫持样本分析

    lpk.dll病毒是比较常见的一类病毒,系统本身的lpk.dll文件位于C:\WINDOWS\system32和C:WINDOWS\system\dllcache目录. lpk.dll病毒的典型特征是 ...

  7. 一例针对中国政府机构的准APT攻击中所使用的样本分析

    SwordLea · 2015/05/28 15:43 作者:安天 微信公众号:Antiylab 博文地址:http://www.antiy.com/response/APT-TOCS.html 0x ...

  8. Android版本的 Wannacry 文件加密病毒样本分析 附带锁机

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  9. Android版本的Wannacry文件加密病毒样本分析(附带锁机)

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  10. Android版本的”Wannacry”文件加密病毒样本分析(附带锁机)

    一.病毒样本分析 点击免费激活,出现授权界面: 需要设备管理器,是想修改锁机密码,我们就授权,然后分析程序找到重置的密码就好了:授权之后,就被锁屏了,解锁屏幕会出现: 病毒作者真够狠的,竟然自己弄了一 ...

最新文章

  1. java 指针_java多线程学习二十二:::java中的指针
  2. 18行代码解决:(C语言)L1-046 整除光棍 (20分)
  3. 浅析 .Net Core中Json配置的自动更新
  4. python 长度queue_python:常见的数据结构
  5. Codeforces Round #182 (Div. 1)题解【ABCD】
  6. 通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多系统的统一登录(数据库源码级)附源码...
  7. java中有没有计时器_简单说一下java中计时器,实际需要,没有详解
  8. clickhouse小结--数据类型及常见客户端类型
  9. UVA10325 The Lottery【GCD+LCM】
  10. Java中对象的实例化
  11. 云计算之存储即服务 - 存储区域网络(SAN)
  12. 安卓10刷Magisk并安装JustTrustMe
  13. css层叠优先级,css优先级和层叠(示例代码)
  14. python123作业怎么提交_使用python提交作业
  15. Cause: org.postgresql.util.PSQLException: 错误: 对于可变字符类型来说,值太长了(255)
  16. 用回拨卡打电话来看代理模式+vb.net实现
  17. Java内存模型(JMM)详解
  18. 嵌入式 ssl协议详解
  19. Google 百度 图标收藏
  20. Microsoft edge 下载阿里云excel

热门文章

  1. iOS  两张图片合并成一张。
  2. 量化投资之股票统计套利:基于BP神经网络
  3. 移动修改服务器密码是什么,移动服务器密码
  4. mysql 参数 1_警告:mysql_result()期望参数1为资源,给定布尔值[重复]
  5. 如何为您的应用选择合适的微控制器?
  6. 【sql: 每天进步一点点】sql 中的 LIKE 用法
  7. 算法探索实录 - 4、递归
  8. 基于 SpringBoot 手写 RPC 框架
  9. 直播网站并发测试软件,HTTP/HLS/RTMP超级负载测试工具
  10. JSP时间TimeControl