Android端恶意锁屏勒索应用分析
一、前言
5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失。到2017年为止,全球手机用户总量已经突破50亿,而作为占比超过50%的android系统中,同样有许许多多类似WannaCRY的勒索软件正在危害我们的财产安全。
接下来,以一款主流的Android端恶意锁屏勒索应用为例,结合人工分析的方式,深入剖析勒索应用的恶意行为。知己知彼,才能更好的防患于未来。
二、运行特征
这是一款伪装成”秒赞大师”的锁屏勒索恶意应用
第一次点击启动之后,主界面会弹出诱骗激活设备管理员权限的对话框
当你点击激活后,恭喜你,你的屏幕将被锁定,无法进入手机的主界面,除非联系勒索者获得解密密码
那么,接下来我们一起来分析下这款勒索软件的实现原理,并且破解出它的解锁密码
三、准备工作
1. 分析工具:JEB/Android killer
JEB是一款收费的Android应用程序反编译工具,解析能力强,兼容性高。
Android Killer是一款免费的android应用程序反编译工具,集Apk反编译、Apk打包、Apk签名,编码互转,ADB通信等特色功能于一身。
可根据个人的习惯选择工具,这里将使用jeb进行分析
2. 分析环境:android模拟器
主要用于恶意应用的运行时分析,可使用android原生的模拟器,也可使用第三方如genymotion、天天模拟器等
四、流程分析
应用整体运行流程图如下
接下来,我们对整个流程进行详细的分析
1. 入口点
首先,我们使用jeb打开要分析的apk
其中左边为该应用反编译出来的类列表,右边为AndroidManifest.xml清单文件的内容
我们可以发现,应用的入口类为com.bugzapk.b,接下来我们分析下b类的执行逻辑,b类对应的界面如下,该界面只有一个按钮
我们找到这个按钮的点击事件
发现点击之后跳转到com.bugzapk.z类中
2. root权限
我们继续分析com.bugzapk.z类,首先分析入口函数onCreate
在入口处做了一些界面相关的初始化工作,重点在于这个100000000线程
我们可以看到,该应用首先会尝试将system分区mount为可写状态,再将应用挪入固件中,并且重启手机。如果你的手机有root过,并且给予了root权限,你将无法再通过普通的方式来卸载这个应用,就连刷机都无法清除。
当获取root权限失败后,将会诱导你激活设备管理员权限。
当你点击确定后,会跳转到com.bugzapk.c界面
3. 访问网络获取PIN码
分析com.bugzapk.c类的入口函数oncreate
启动后,首先会运行100000000这个线程
这个线程会先解密字符串得到一个链接,并调用get方法访问网络获得一个字符串,接下来我们分析下加密的算法,这里进行了三层解密:decrypt->解密->decoder
这个decrypt函数首先将16进制字符串转换成字节,再将字节进行AES解密
解密函数中有一个简单的字典,进行字符串替换。
decoder函数会对字节进行异或,得到最终的url。
根据这三个函数,我们可编写对应的解密算法解出url的值。
接下来我们打开浏览器访问这个url
我们发现返回了一大段的字符串,
最终,程序会调用正则表达式函数,并进行解密,我们调用对应的解密算法,可计算出pin值为7531
4. 激活设备管理员并且设置PIN码
com.bugzapk.c界面只有一个激活按钮
点击后会调用系统的api申请设备管理员权限,并且调用resetPassword函数将PIN码修改为上一步获取的值7531
Android中的设备管理员权限可以对手机进行锁屏,防止应用被卸载等
获取权限后,会调用锁屏函数,将屏幕锁定
并且跳转到com.bugzapk.g页面
5. 上传手机型号/钓鱼页面
com.bugzapk.g界面启动后会自动上传手机型号
并且弹出钓鱼页面诱导你输入QQ账号密码
当你输入完点击登陆后,跳转到com.bugzapk.h页面
6. 锁屏主页面
终于进入我们最重要的密码输入界面com.bugzapk.h了,首先分析密钥获取逻辑
其中c为要访问的域名,get函数访问域名。通过解密算法可得到url为
打开浏览器,访问页面返回如下字符串
获得数值后,使用正则表达式提取出37598这个密码
并且赋给pass这个成员变量,如果网络无法访问的情况下,将会使用本地的密钥
通过执行对应的解密算法,可解得本地密码值为8810
接下来我们来分析解锁函数js的逻辑
如果输入的密码值为654321,则将PIN码更改为654312
如果输入的密码值为4321,则将PIN码修改为4312
如果输入的密码值为上面分析出来的密码值,将会跳转到com.bugzapk.i界面
7. 锁屏主页面2
锁屏主页面1的密码正确后,将会进入第二个页面com.bugzapk.i
我们直接查看点击确定按钮后的解锁逻辑
输入4951密码后,页面会跳转会上一个界面
输入997998后,界面的文字会做一些改变
正确的密码值为l.x(v17,v9)这个解密函数,我们执行对应的解密函数得到正确的密码为2415
密码输入正确后,跳转到最后的PIN码界面
8. PIN码界面
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端恶意锁屏勒索应用分析相关推荐
- 关注Android安全 手机锁屏勒索国内首现身
觉得这篇文章不错,咱也能看懂,就转载过来了,要转载别的网站文章,上传图片好蛋疼.O(∩_∩)O哈哈~,希望看完这篇文章能让我们对Android安全有点思考. 原文链接 手机锁屏勒索国内首现身 by 张 ...
- Android锁屏勒索病毒分析(1)BWM在线
1.样本概况 1.1 基本信息 样本名称: 刷赞. 所属家族: 锁屏勒索病毒(a.rogue.SimpleLocker.a) MD5值: 7626090b69cd1e2e5671a022712808e ...
- Android锁屏勒索病毒分析(2)免流服务器
1.样本概况 1.1 基本信息 样本名称: 免流服务器. 所属家族: 锁屏勒索病毒(a.rogue.SimpleLocker.a) MD5值: 2efca46f34a565c2ef4052b89b6b ...
- Android锁屏勒索病毒分析(3)刷赞
1.样本概况 1.1 基本信息 样本名称: 刷赞. 所属家族: 锁屏勒索病毒(a.rogue.SimpleLocker.a) MD5值: 7626090b69cd1e2e5671a022712808e ...
- android 锁屏 勒索代码,“荒野行动盒子”Root锁屏勒索样本分析--一步一步教你逆向分析勒索App...
对了!为什么我用这个解锁码解模拟器,结果得出一大堆Java码?就是类似这样的Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsof ...
- android h5控制锁屏,WebView播放H5课件时,锁屏解锁后,页面重新绘制的问题
难题描述:H5页面播放 ,锁屏,解锁后,重新加载了页面,三星不会出现(onpause onstop ,onresume),但在小米.魅族会调用 onpause onstop ondestroy,onr ...
- android解锁界面分析,Android 7.0 锁屏解锁之向上滑动显示解锁界面分析
Android 7.0 锁屏解锁之向上滑动显示解锁界面分析 by jing.chen 锁屏的解锁操作是在锁屏界面向上滑动实现的,通过向上滑动调出解锁界面(如图案.PIN.密码解锁界面),在解锁界面输入 ...
- Android锁屏机制原理分析
转载自:http://www.2cto.com/kf/201401/273898.html 春节前最后几天了,工作上几乎没有什么要做.大致整理下之前工作中写的文档,PPT,手册. 由于去年一年完全转到 ...
- android锁屏代码分析,Android 监听锁屏、解锁、开屏 功能代码
1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android. ...
最新文章
- CODING 最佳实践:快课网研发效能提升之路
- GPT-4参数将达10兆!此表格预测全新语言模型参数将是GPT-3的57倍
- 一文弄懂各大池化Pooling操作
- 世界上有条件JavaScript是什么?
- ONNX系列二 --- 使用ONNX使Keras模型可移植
- 在windows server 2008 R2上安装Bing Bar
- 什么是9.png,如何制作,如何使用。
- async和await浅析
- mySQL及可视化界面navicat在window的配置
- 模式识别与机器学习的关系
- c语言课程火车售票报告,C语言课程设计报告书火车票务管理系统.doc
- 2021充电必备:推荐一些免费的电子书网站及TXT阅读器
- 分布式ID生成器-订单号的生成(全局唯一id生成策略)
- Linux 学习路线图
- 11.ARM架构的异常与中断
- Premiere 抠像与合成
- android简单星座查询,简单的星座查询
- aop - spring如何选择、创建代理bean
- 杀手级应用与共识机制
- 利用新浪微博第三方认证OAuth登录自己的网站
热门文章
- 菜鸟的草缸 篇四:菜鸟的草缸:二氧化碳CO2
- Bugku CRYPTO No Ciphertext RSA writeup by 树木
- 【饭谈】面试场上的珍珑棋局(PUA之无限打击)
- html中实现鼠标悬停放大,如何实现鼠标悬停图片放大的效果。
- Apache Pulsar:实时数据处理中消息,计算和存储的统一
- 万彩办公大师OfficeBox3.1.0(小小工具箱几乎满足各种办公需求)
- UEBA架构设计之路4:异常、威胁指标和威胁
- 虚拟机共享WiFi网路的NAT连接方法
- 智能窗帘传感器c语言程序,基于单片机的智能窗帘控制系统设计(附程序代码)
- 声明式事务、SpringMVC详解