样本:https://www.52pojie.cn/thread-733283-1-1.html
Hash校验:CRC32: ACABCA87
MD5: 1D9C2A55A847EF5B982638DF32E26D76
SHA-1: 5515BABF14E44AA5AC3C056856EB48FCD5EBF400
锁机样图:
母包分析
下载样本后反编译大致可以判断该样本是用360加固过的
于是用avd新建一个360脱壳模拟器尝试脱壳,详情参考:https://www.52pojie.cn/thread-624275-1-1.html
顺利脱出了classes.dex,扔jeb分析,发现如下代码
发现该apk先新建/sdcard/tencent/QQTS/cnm
文件夹,然后su提权(如果没有root则删除之前新建的文件夹), 判断是否安装了com.example.xphuluxia(这是个叫防锁侠的app),如果安装了就卸载,然后开始把apk中的assets/sisk.txt
文件用java处理保存为/system/app/time.apk
,然后更改time.apk的权限,重启手机后会自动安装激活锁机app,但是adb shell仍然可以使用。
分析子包
adb pull /system/app/time.apk .
,把time.apk拉到电脑上分析看看
JEB打开,先去入口看看
查看Manifest.xml,入口仍是MainActivity
看见初始化了一个叫com.test.hlx.HLX的类
再观察下页面xml文件
初步判断大概有三个锁,第一二个是本地解锁的,而第三个则需要网络,根据xml提供的控件ID,找到
分别为2,3,1的控件ID,继续往下找,发现
第一次解锁没有任何实际意义,解锁按钮并没有设置响应事件,进入第二次解锁,响应事件是100000000
可以看到v2存储生成的一个5位数,显示出来的解密随机号v3是经过com.test.hlx.util.Replace.re进行替换翻转得到的,但是用于验证的随机数仍然是v2,所以以下指的随机数都是指v2,即是个正整数
发现是取输入字符串的前5位MD5加密3次然后跟e0119873a9724bcdb625ac612c933655比较,输入字符串后五位与由随机数经过com.test.hlx.util.PassWord.get进行一系列操作得到的五位字符进行比较,然后进入二次验证的响应事件100000001,更新随机号
发现该app会对“https://langzichao.wodemo.com/entry/475596”进行联网验证,先验证该网址是否存活,如果存活则会post相关信息
参考文章 : https://www.52pojie.cn/thread-678602-1-1.html (感谢大佬的文章)
总结&解决:
这个锁机病毒就是先诱导用户安装,打开时向用户申请设备管理器和root权限,成功获取到权限后将病毒本体释放到system/app下,重启设备后通过app构造一个全屏页面覆盖整个屏幕,从而实现了锁机
最简单办法是直接删除软件
由于adb仍然是可以命令行操作手机的,因此我们可以用USB线连接电脑与手机,打开shell或者cmd
adb shell su
mount -o rw,remount /system
cd /system/app
rm -rf time.apk
复制代码
获取system的读写操作权限后,直接删除time.apk,这个时候屏幕应该已经恢复正常了
然后可以去卸载原包,然后删除/data/data/com.test.hlx文件夹以及/sdcard/tencent/QQTS/cnm/wx.so这个释放的文件
个人感觉这个样本跟荒野行动盒子锁屏那个apk好像,看包名挺像出自那个作者的手笔。。。
另外这个貌似是个小论坛提供免费的个人站点啥的,第三次验证就是通过的这里,作者ID应该叫做langzichao
没事不要随便root机子!!没事不要随便root机子!!没事不要随便root机子!!(重要的事情说三遍)
最后,第一次写分析文章,写的不好,有不对的地方还希望各位大佬告诉小弟一声。。。