Android端恶意锁屏勒索应用分析

仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述Android端恶意锁屏勒索应用分析相关的知识,希望能为你提供帮助。
一、前言5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“ 永恒之蓝” ,给100多个国家和地区10万台电脑造成了巨大的损失。到2017年为止,全球手机用户总量已经突破50亿,而作为占比超过50%的android系统中,同样有许许多多类似WannaCRY的勒索软件正在危害我们的财产安全。
接下来,以一款主流的Android端恶意锁屏勒索应用为例,结合人工分析的方式,深入剖析勒索应用的恶意行为。知己知彼,才能更好的防患于未来。
 
二、运行特征
这是一款伪装成” 秒赞大师” 的锁屏勒索恶意应用
 

Android端恶意锁屏勒索应用分析

文章图片

 
第一次点击启动之后,主界面会弹出诱骗激活设备管理员权限的对话框
 
Android端恶意锁屏勒索应用分析

文章图片

Android端恶意锁屏勒索应用分析

文章图片

 
当你点击激活后,恭喜你,你的屏幕将被锁定,无法进入手机的主界面,除非联系勒索者获得解密密码
 
Android端恶意锁屏勒索应用分析

文章图片

 
那么,接下来我们一起来分析下这款勒索软件的实现原理,并且破解出它的解锁密码
 
三、准备工作1. 分析工具:JEB/Android killer
JEB是一款收费的Android应用程序反编译工具,解析能力强,兼容性高。
Android Killer是一款免费的android应用程序反编译工具,集Apk反编译、Apk打包、Apk签名,编码互转,ADB通信等特色功能于一身。
可根据个人的习惯选择工具,这里将使用jeb进行分析
 
2. 分析环境:android模拟器
主要用于恶意应用的运行时分析,可使用android原生的模拟器,也可使用第三方如genymotion、天天模拟器等
 
四、流程分析应用整体运行流程图如下
 
Android端恶意锁屏勒索应用分析

文章图片

 
接下来,我们对整个流程进行详细的分析
 
1. 入口点
首先,我们使用jeb打开要分析的apk
 
Android端恶意锁屏勒索应用分析

文章图片

 
其中左边为该应用反编译出来的类列表,右边为AndroidManifest.xml清单文件的内容
 
Android端恶意锁屏勒索应用分析

文章图片

 
我们可以发现,应用的入口类为com.bugzapk.b,接下来我们分析下b类的执行逻辑,b类对应的界面如下,该界面只有一个按钮
 
Android端恶意锁屏勒索应用分析

文章图片

 
我们找到这个按钮的点击事件
 
Android端恶意锁屏勒索应用分析

文章图片

发现点击之后跳转到com.bugzapk.z类中
 
2. root权限
我们继续分析com.bugzapk.z类,首先分析入口函数onCreate
 
Android端恶意锁屏勒索应用分析

文章图片

 
在入口处做了一些界面相关的初始化工作,重点在于这个100000000线程
 
Android端恶意锁屏勒索应用分析

文章图片

 
我们可以看到,该应用首先会尝试将system分区mount为可写状态,再将应用挪入固件中,并且重启手机。如果你的手机有root过,并且给予了root权限,你将无法再通过普通的方式来卸载这个应用,就连刷机都无法清除。
 
Android端恶意锁屏勒索应用分析

文章图片

 
当获取root权限失败后,将会诱导你激活设备管理员权限。
 
Android端恶意锁屏勒索应用分析

文章图片

 
当你点击确定后,会跳转到com.bugzapk.c界面
 
3. 访问网络获取PIN码
分析com.bugzapk.c类的入口函数oncreate
 
Android端恶意锁屏勒索应用分析

文章图片

 
启动后,首先会运行100000000这个线程
 
Android端恶意锁屏勒索应用分析

文章图片

Android端恶意锁屏勒索应用分析

文章图片

 
这个线程会先解密字符串得到一个链接,并调用get方法访问网络获得一个字符串,接下来我们分析下加密的算法,这里进行了三层解密:decrypt-> 解密-> decoder
 
Android端恶意锁屏勒索应用分析

文章图片

 
这个decrypt函数首先将16进制字符串转换成字节,再将字节进行AES解密
 
Android端恶意锁屏勒索应用分析

文章图片

 
解密函数中有一个简单的字典,进行字符串替换。
 
Android端恶意锁屏勒索应用分析

文章图片

 
decoder函数会对字节进行异或,得到最终的url。
 
Android端恶意锁屏勒索应用分析

文章图片

 
根据这三个函数,我们可编写对应的解密算法解出url的值。
接下来我们打开浏览器访问这个url
 
Android端恶意锁屏勒索应用分析

文章图片

 
我们发现返回了一大段的字符串,
 
Android端恶意锁屏勒索应用分析

文章图片

 
最终,程序会调用正则表达式函数,并进行解密,我们调用对应的解密算法,可计算出pin值为7531
 
Android端恶意锁屏勒索应用分析

文章图片

 
4. 激活设备管理员并且设置PIN码
com.bugzapk.c界面只有一个激活按钮
 
Android端恶意锁屏勒索应用分析

文章图片

 
点击后会调用系统的api申请设备管理员权限,并且调用resetPassword函数将PIN码修改为上一步获取的值7531
 
Android端恶意锁屏勒索应用分析

文章图片

 
Android中的设备管理员权限可以对手机进行锁屏,防止应用被卸载等
获取权限后,会调用锁屏函数,将屏幕锁定
 
Android端恶意锁屏勒索应用分析

文章图片

 
并且跳转到com.bugzapk.g页面
 
Android端恶意锁屏勒索应用分析

文章图片

 
5. 上传手机型号/钓鱼页面
com.bugzapk.g界面启动后会自动上传手机型号
 
Android端恶意锁屏勒索应用分析

文章图片

 
并且弹出钓鱼页面诱导你输入QQ账号密码
 
Android端恶意锁屏勒索应用分析

文章图片

 
当你输入完点击登陆后,跳转到com.bugzapk.h页面
 
Android端恶意锁屏勒索应用分析

文章图片

 
6. 锁屏主页面
终于进入我们最重要的密码输入界面com.bugzapk.h了,首先分析密钥获取逻辑
 
Android端恶意锁屏勒索应用分析

文章图片

 
 
其中c为要访问的域名,get函数访问域名。通过解密算法可得到url为
 
Android端恶意锁屏勒索应用分析

文章图片

 
打开浏览器,访问页面返回如下字符串
 
Android端恶意锁屏勒索应用分析

文章图片

 
获得数值后,使用正则表达式提取出37598这个密码
 
Android端恶意锁屏勒索应用分析

文章图片

 
并且赋给pass这个成员变量,如果网络无法访问的情况下,将会使用本地的密钥
 
Android端恶意锁屏勒索应用分析

文章图片

 
通过执行对应的解密算法,可解得本地密码值为8810
 
Android端恶意锁屏勒索应用分析

文章图片

 
接下来我们来分析解锁函数js的逻辑
 
Android端恶意锁屏勒索应用分析

文章图片

 
如果输入的密码值为654321,则将PIN码更改为654312
 
Android端恶意锁屏勒索应用分析

文章图片

 
如果输入的密码值为4321,则将PIN码修改为4312
 
Android端恶意锁屏勒索应用分析

文章图片

 
如果输入的密码值为上面分析出来的密码值,将会跳转到com.bugzapk.i界面
 
7. 锁屏主页面2
锁屏主页面1的密码正确后,将会进入第二个页面com.bugzapk.i
 
Android端恶意锁屏勒索应用分析

文章图片

 
我们直接查看点击确定按钮后的解锁逻辑
 
Android端恶意锁屏勒索应用分析

文章图片

 
输入4951密码后,页面会跳转会上一个界面
 
Android端恶意锁屏勒索应用分析

文章图片

 
输入997998后,界面的文字会做一些改变
 
Android端恶意锁屏勒索应用分析

文章图片

 
正确的密码值为l.x(v17,v9)这个解密函数,我们执行对应的解密函数得到正确的密码为2415
 
Android端恶意锁屏勒索应用分析

文章图片

 
密码输入正确后,跳转到最后的PIN码界面
 
8. PIN码界面
Android端恶意锁屏勒索应用分析

文章图片

 
com.bugzapk.d界面直接显示系统的PIN码输入页面,输入之前计算得到的PIN码即可解锁成功,进入手机,至此整体流程结束
 
五、修复方法参考
如果你的手机也被这种勒索病毒锁屏了该怎么办呢,你可以尝试以下几种方法:
1. 如果你有基本的android开发经验和逆向知识,你可以尝试直接分析勒索软件的解密算法得到正确的密码,一般这种软件的逻辑和算法都不会太复杂
2. 如果你的手机开启了USB调试模式,可以进入adb shell环境,并且拥有root权限,你可以尝试使用命令直接删除密码文件,删除后重启即可直接进入手机界面
 
1 adb shell rm /data/system/access_control.key
2 adb shell rm /data/system/password.key
3 adb shell rm /data/system/gesture.key
3. 如果手机有刷过第三方的recovery,你可以重启进入recovery模式,直接将该软件删除,或者执行第2步的命令删除密码。如果手机上的数据不重要的话,可以直接执行双wipe清除手机上的所有数据(勒索软件在固件将无效)。
4. 刷机,刷入新的系统。
5. 联系勒索者得到密码
注意:以上方法仅供参考,其中2/3/4方法有可能造成手机重要数据丢失、系统无法正常使用,请慎重操作。
tips 现在市面上流传的移动设备勒索病毒种类繁多,其中许多病毒制作较为简单,解锁密码都是直接明文写在字符串中。
 
  六、建议
最后,在给大家以下几点建议:
1.  不要从非官方的渠道下载应用,防止应用被人为修改,加入了恶意代码
2.  对于别人发过来的apk下载链接,要慎重点击下载
3.  不要贪小便宜,去安装那些抢红包/游戏辅助之类的插件,大部分都是木马病毒
4.  对于新安装的应用,如果有弹出申请设备管理员权限或者root权限的对话框,请一律点击拒绝,除非你确定这个应用没有问题
5.  没有必要的情况下,请不要root你的手机
 
文章转载自安全客   原文地址:http://bobao.360.cn/learning/detail/4053.html
【Android端恶意锁屏勒索应用分析】更多安全类热点资讯及知识分享,请持续关注阿里聚安全博客

    推荐阅读