Nattevak 发表于 2022-4-22 15:03

Android锁机病毒分析

本帖最后由 Nattevak 于 2022-4-22 15:03 编辑

# 免流服务器
## 一、基本分析,并提取病毒样本

### 1.模拟真实场景,在模拟器中运行样本
  安装并运行免流服务器APK,启动后点击安装核心文件,提示申请ROOT权限,所以程序内部执行了su命令代码。
  通过代码提权,隐藏性较高,存在隐藏性危险。

  核心安装完成后根据提示重启


### 2.待病毒执行之后,观察可疑情况
  当重启之后,会发现 android 系统被锁,而且会发送大量的短信

  输入任意密码,尝试直接解锁,无法解锁,需要进一步分析


3.提取样本
  使用 adb shell 命令进入 android 系统的 shell
  使用 ps 命令查看进程,观察是否存在可疑进程

  进程可能会存在伪装,影响观察,所以直接前往Android安装apk的位置查看
  在 Android 中安装 apk 的位置有 3 个:
  1. /system/app(系统预装 app 所在目录,默认不可写,但是如果有 root 权限,则可以修改为可写)

  2. /data/app(用户安装 app 所在的目录,存储完整的 apk 文件)
  zs.ip.proxy-1.apk是之前安装的免流服务器APK

  3. /data/data/包名 (用户安装 app 生成的与包名一致的文件夹,存储 app 的相关配置数据等信息 )
  使用 adb pull 命令将路径下apk文件下载到本地



### 4.样本概况
文件: zs.ip.proxy-1.apk
大小: 799835 bytes
修改时间: 2016年3月16日, 23:26:10
MD5: 2EFCA46F34A565C2EF4052B89B6B364B
SHA1: 5493A958A592BB0B19C43ACB2C1F52C898885207
CRC32: 7F89A927

文件: stk3.apk
大小: 240372 bytes
修改时间: 2022年4月21日, 16:52:44
MD5: 44DBCF4F3410CF4CDCD9463B76AF0A91
SHA1: 1A2F265932EC81224AD4B922764E38413DADC8E1
CRC32: 7B31436E

## 二、行为分析,获取病毒行为
  在公开平台上搜索看是否有已经分析的报告
### zs.ip.proxy-1.apk


  打开zs.ip.proxy-1.apk即免流服务器APK查看概况信息


### stk3.apk


  打开stk3.apk查看概况信息


## 三、详细分析病毒代码,获取行为的恶意代码
### zs.ip.proxy-1.apk
  分析入口类的 onCreate 函数,其功能为从apk中assets目录中拷贝APK到SD卡中

  查看layout布局文件
  az是安装核心的函数

  az调用copyAppToSystem函数

  1.拷贝APP到系统目录:copyAppToSystem("/storage/sdcard0/stk3.apk");
  2.获取ROOT权限,执行su命令:getRoot();
Runtime.getRuntime().exec("su");
  3.修改系统目录:mount -o remount, rw /system/
  4.拷贝文件到系统目录:cp /storage/sdcard0/stk3.apk /system/app/
  5.修改文件权限为可读可写可执行:chmod 0777 /system/app/stk3.apk
  6.退出命令行:exit
  主要功能:拷贝自己资源中的 apk 到系统并修改权限

### stk3.apk
  分析入口类的 onCreate 函数,功能为启动com.android.stk3.llxfc服务

  查看服务代码,分析 onCreate 函数,只有发送恶意短信代码

  分析onStartComand函数,观察到其中中有对按钮的监听器的设置

  ①由于输入密码后需要点击解锁按钮,自然存在获取数据的函数,故搜索getText函数,同样定位到onClick函数处。
  ②解锁按钮必然要获取输入的内容进行比较,而比较就需要用到equals函数比较字符串,同样能定位到onClick函数处。
  根据响应代码,
`this.this$0.bjk0.getText().toString().equals("T") && this.this$0.bjk1.getText().toString().equals("F") && this.this$0.bjk2.getText().toString().equals("B") && this.this$0.bjk3.getText().toString().equals("4")`
  可知密码为TFB4
  输入密码TFB4,完成解锁


## 四、提取病毒特征,完成查杀
### 1.病毒特征
  MD5: 2EFCA46F34A565C2EF4052B89B6B364B
  MD5: 44DBCF4F3410CF4CDCD9463B76AF0A91

### 2.手工查杀步骤
  ①根据代码解出密码,密码:TFB4,输入密码解锁,但这样不能清除病毒,每次开机都需要输入。
  ②卸载免流服务器.apk,删除安装包
  ③清理病毒文件
    /system/app目录:存放着stk3.apk文件,提示只读,需要修改 system 目录属性:mount -o remount, rw /system/,删除该文件;
    /data/app目录:存放着用户安装 app ,删除该文件;
    /data/data/zs.ip.proxy目录 和 /data/data/com.android.stk3目录:存放着两个文件的相关配置数据等信息,删除这两个文件;
    /strorage/sdcard0目录:存放着stk3.apk文件,删除该文件。

# 王者荣耀刷皮肤
## 一、基本分析,并提取病毒样本

### 1.模拟真实场景,在模拟器中运行样本
  三大巨头:王者荣耀刷皮肤、穿越火线刷枪、刺激战场透视自瞄

  这也。。。太明显的过分了。。。
  诱导安装激活的唯一方法应该就是设计一个充满诱惑力的名字了


### 2.待病毒执行之后,观察可疑情况
  成功被锁,根据激活提示已知这里是被更改了屏幕解锁密码并锁定屏幕了,大致没有其他行为


### 3.提取样本
  使用 adb shell 命令进入 android 系统的 shell
  使用 ps 命令查看进程,观察是否存在可疑进程
  进程可能会存在伪装,影响观察,所以直接前往Android安装apk的位置查看
  在 Android 中安装 apk 的位置有 3 个:
  1. /system/app(系统预装 app 所在目录,默认不可写,但是如果有 root 权限,则可以修改为可写)
  2. /data/app(用户安装 app 所在的目录,存储完整的 apk 文件)
只发现了这个APK,com.android.getbest-1.apk

  3. /data/data/包名 (用户安装 app 生成的与包名一致的文件夹,存储 app 的相关配置数据等信息 )
  直接分析安装的apk就行了

### 4.样本概况
文件: 王者荣耀刷皮肤.apk
大小: 261080 bytes
修改时间: 2016年3月19日, 22:57:58
MD5: CB9E3C9C5CDED91F96AA9662BA150DB8
SHA1: 3852A0324A1B57B23DE15A6D5298E61BF4C087E2
CRC32: D4DA0CB5

## 二、行为分析,获取病毒行为
  在公开平台上搜索看是否有已经分析的报告

  打开王者荣耀刷皮肤.apk查看概况信息


## 三、详细分析病毒代码,获取行为的恶意代码
  分析入口类的 onCreate 函数,jiemi函数瞩目,优先看一下

  查看jiemi函数,可知该程序采用了AES进行字符串加密

  checkAdmin函数,功能:检查设备管理器是否激活

  查看layout布局文件

  分析jihuo函数

  查看getAdmin函数

  跟踪分析com.android.getbest.MyAdmin类,找到关键函数LockNow和resetPassword,得到密码6699

  输入密码6699,完成解锁


## 四、提取病毒特征,完成查杀
### 1.病毒特征
  MD5: CB9E3C9C5CDED91F96AA9662BA150DB8

### 2.手工查杀步骤
  ①根据代码解出密码,密码:6699,输入密码解锁,但这样不能清除病毒,每次开机都需要输入。
  ②卸载免流服务器.apk,删除安装包
  无法直接卸载程序

  需要取消激活设备管理器

  ③关闭锁屏密码或更改为自己的密码(设置->安全->屏幕安全保护->屏幕锁定->输入PIN:6699)
  或删除系统文件中密码文件:/data/system/password.key


# 秒抢红包
## 一、基本分析,并提取病毒样本

### 1.模拟真实场景,在模拟器中运行样本
  激活设备管理器,观察执行操作的行为,便于后续解锁


### 2.待病毒执行之后,观察可疑情况
  成功被锁,观察锁屏上的信息,提供了一个随机码,是解锁序列号69426768;序列号解锁20元,无序列号解100元,看来这个序列号小值80元。。。


### 3.提取样本
  使用 adb shell 命令进入 android 系统的 shell
  使用 ps 命令查看进程,观察是否存在可疑进程
  进程可能会存在伪装,影响观察,所以直接前往Android安装apk的位置查看
  在 Android 中安装 apk 的位置有 3 个:
  1. /system/app(系统预装 app 所在目录,默认不可写,但是如果有 root 权限,则可以修改为可写)
  2. /data/app(用户安装 app 所在的目录,存储完整的 apk 文件)
只发现了这个APK,com.h-1.apk

  3. /data/data/包名 (用户安装 app 生成的与包名一致的文件夹,存储 app 的相关配置数据等信息 )
  直接分析安装的apk就行了

### 4.样本概况
文件: 秒抢红包.apk
大小: 251271 bytes
修改时间: 2016年4月15日, 23:37:26
MD5: 033AE1BA78676130E99ACC8D9F853124
SHA1: B43F731C59FF37602CB9F971F893965EF19C9DEE
CRC32: AAC480FC

## 二、行为分析,获取病毒行为
  在公开平台上搜索看是否有已经分析的报告


  打开秒抢红包.apk查看概况信息


## 三、详细分析病毒代码,获取行为的恶意代码
  分析入口类的 onCreate 函数,调用了activiteDevice函数,并启动com.h.MyAdmin

  进入com.h.MyAdmin类,在onEnabled中发现了resetPassword函数以及重设的密码8985

  尝试密码8985,并没有解锁,看来不止这一层锁;说明就算给作者打钱得到这里的密码也不一定能完全解锁。

  继续分析,这里启动了com.h.s服务


### 代码分析
  分析com.h.s,获取了Flowers.xml文件,写入了pass以及passw

  查看Flowers.xml文件,可知m就是pass,值为69426768,passw加密了,但我们已经在代码部分得知passw=pass+8985,值为69435753。


### 编写解码代码
  由于需要解锁,而且有按钮、输入框,那么就需要使用到getText和equals函数,直接搜索这两个函数,定位到解锁位置。

  编写解密代码,获取到解密密码为69435753


### Smali 注入
  在 DU 类中的 decrypt 函数返回之前插入 log

  当调用时会输出 log,输出密码

  输入解密密码,解开了悬浮窗锁界面

  还有锁,这是安卓自己的PIN屏幕锁,我们之前已经通过resetPassword函数定位到了重设的密码8985

  尝试解锁,成功解开屏幕锁

  自此解锁完成,秒抢红包这个程序包含两层锁,密码分别为69435753和8985,但第一层锁解锁密码需要根据生成的随机数判断,密码样式为:随机数+8985。

## 四、提取病毒特征,完成查杀
### 1.病毒特征
  MD5: 033AE1BA78676130E99ACC8D9F853124

### 2.手工查杀步骤
  ①根据代码解出密码,密码:69435753和8985,输入密码解锁,但这样不能清除病毒,每次开机都需要输入。
  ②卸载秒抢红包.apk,删除安装包
  无法直接卸载程序

  需要取消激活设备管理器

  ③关闭锁屏密码或更改为自己的密码(设置->安全->屏幕安全保护->屏幕锁定->输入PIN:8985)
  或删除系统文件中密码文件:/data/system/password.key

bhwxha 发表于 2022-4-23 10:26

这种没什么技术含量的帖子 ,能给精华?!
移动安全区的版主是觉得论坛帖子技术含量低的严重,差中选字数多的,让此贴顶上?!
这种帖子通篇在水 , 没什么技术含量 , 在看雪给个优秀都难 , 在吾爱能拿精华 , 令人费解
{:301_1008:}

wuai920981023 发表于 2022-4-22 19:41


还是不要下载安装来路不明的app

nywangyu 发表于 2022-4-22 15:53

还是不要下载安装来路不明的app

vchopin 发表于 2022-4-23 13:37

确实这种帖子没有什么技术含量,纯水字数...

bingdi 发表于 2022-4-22 15:28

{:301_998:}以为有样本下载,有的话还可以扔模拟器里瞅瞅

chengsheng16 发表于 2022-4-22 15:41

给了思路,还有很长的路才能读懂。

hackerbob 发表于 2022-4-22 15:47

虽然我能差不多看懂代码,为啥我一打开一个样本就分析不出来呢?

Nattevak 发表于 2022-4-22 15:59

hackerbob 发表于 2022-4-22 15:47
虽然我能差不多看懂代码,为啥我一打开一个样本就分析不出来呢?

先搞点简单的练练手找找关键函数啥的,比如我这几个

hackerbob 发表于 2022-4-22 16:08

Nattevak 发表于 2022-4-22 15:59
先搞点简单的练练手找找关键函数啥的,比如我这几个
病毒分析主要记关键函数吗?
我一直是从最开始一点点看的。。。。。。

chenmintian 发表于 2022-4-22 16:17

支持一下楼主,写的很好~~

遂海 发表于 2022-4-22 16:41

很强,太厉害了

tabirs 发表于 2022-4-22 16:47

学习一下 谢谢楼主
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Android锁机病毒分析