文档章节

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

阿里聚安全
 阿里聚安全
发布于 2017/07/05 17:18
字数 2234
阅读 21
收藏 0
点赞 0
评论 0

一、前言

5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失。到2017年为止,全球手机用户总量已经突破50亿,而作为占比超过50%的android系统中,同样有许许多多类似WannaCRY的勒索软件正在危害我们的财产安全。

接下来,以一款主流的Android端恶意锁屏勒索应用为例,结合人工分析的方式,深入剖析勒索应用的恶意行为。知己知彼,才能更好的防患于未来。

 

二、运行特征

这是一款伪装成”秒赞大师”的锁屏勒索恶意应用

 

http://p0.qhimg.com/t01c1711d3385b62fd2.png

 

第一次点击启动之后,主界面会弹出诱骗激活设备管理员权限的对话框

 

http://p8.qhimg.com/t01f27cd73b22118e81.png

http://p3.qhimg.com/t014b0c6532623cbb33.png

 

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

 

http://p0.qhimg.com/t01f1f449ce103b4c8d.png

 

那么,接下来我们一起来分析下这款勒索软件的实现原理,并且破解出它的解锁密码

 

三、准备工作

1. 分析工具:JEB/Android killer

JEB是一款收费的Android应用程序反编译工具,解析能力强,兼容性高。

Android Killer是一款免费的android应用程序反编译工具,集Apk反编译、Apk打包、Apk签名,编码互转,ADB通信等特色功能于一身。

可根据个人的习惯选择工具,这里将使用jeb进行分析

 

2. 分析环境:android模拟器

主要用于恶意应用的运行时分析,可使用android原生的模拟器,也可使用第三方如genymotion、天天模拟器等

 

四、流程分析

应用整体运行流程图如下

 

http://p7.qhimg.com/t0197e45876cdf71d44.png

 

接下来,我们对整个流程进行详细的分析

 

1. 入口点

首先,我们使用jeb打开要分析的apk

 

http://p9.qhimg.com/t015471ce3d3a8cdbd4.png

 

其中左边为该应用反编译出来的类列表,右边为AndroidManifest.xml清单文件的内容

 

http://p2.qhimg.com/t01436f59d506d47f73.png

 

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

 

http://p2.qhimg.com/t01ed037f6f2ce84f6c.png

 

我们找到这个按钮的点击事件

 

http://p1.qhimg.com/t0189b2d233687d4abb.png

发现点击之后跳转到com.bugzapk.z类中

 

2. root权限

我们继续分析com.bugzapk.z类,首先分析入口函数onCreate

 

http://p0.qhimg.com/t016db5c1501c3bbdde.png

 

在入口处做了一些界面相关的初始化工作,重点在于这个100000000线程

 

http://p0.qhimg.com/t01f2a64d775a981c8d.png

 

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

 

http://p6.qhimg.com/t0136f31c518231be63.png

 

当获取root权限失败后,将会诱导你激活设备管理员权限。

 

http://p9.qhimg.com/t018c43fdabbb76ce38.png

 

当你点击确定后,会跳转到com.bugzapk.c界面

 

3. 访问网络获取PIN码

分析com.bugzapk.c类的入口函数oncreate

 

http://p1.qhimg.com/t01a0994ac22131ae62.png

 

启动后,首先会运行100000000这个线程

 

http://p3.qhimg.com/t01c97f99358c22643b.png

http://p8.qhimg.com/t0188c49fed0b9dfb6e.png

 

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

 

http://p1.qhimg.com/t01b0ba65fecbd9adf7.png

 

这个decrypt函数首先将16进制字符串转换成字节,再将字节进行AES解密

 

http://p0.qhimg.com/t01457bd265ed3bb1d0.png

 

解密函数中有一个简单的字典,进行字符串替换。

 

http://p0.qhimg.com/t018a9729f4b07c4dd9.png

 

decoder函数会对字节进行异或,得到最终的url。

 

http://p8.qhimg.com/t01187c99726fd9b77b.png

 

根据这三个函数,我们可编写对应的解密算法解出url的值。

接下来我们打开浏览器访问这个url

 

http://p9.qhimg.com/t0150970b9034fd6bfe.png

 

我们发现返回了一大段的字符串,

 

http://p7.qhimg.com/t01b8ebe74c97f567bb.png

 

最终,程序会调用正则表达式函数,并进行解密,我们调用对应的解密算法,可计算出pin值为7531

 

http://p4.qhimg.com/t010d2a3624c04a4888.png

 

4. 激活设备管理员并且设置PIN码

com.bugzapk.c界面只有一个激活按钮

 

http://p9.qhimg.com/t010344e154e434699f.png

 

点击后会调用系统的api申请设备管理员权限,并且调用resetPassword函数将PIN码修改为上一步获取的值7531

 

http://p3.qhimg.com/t016b440aae4b5324d9.png

 

Android中的设备管理员权限可以对手机进行锁屏,防止应用被卸载等

获取权限后,会调用锁屏函数,将屏幕锁定

 

http://p3.qhimg.com/t01b16b437636e2db5f.png

 

并且跳转到com.bugzapk.g页面

 

http://p2.qhimg.com/t018686d428469f6fc5.png

 

5. 上传手机型号/钓鱼页面

com.bugzapk.g界面启动后会自动上传手机型号

 

http://p2.qhimg.com/t01ba33526c68b29688.png

 

并且弹出钓鱼页面诱导你输入QQ账号密码

 

http://p7.qhimg.com/t016be45c6425f271de.png

 

当你输入完点击登陆后,跳转到com.bugzapk.h页面

 

http://p2.qhimg.com/t0106a88da48633216e.png

 

6. 锁屏主页面

终于进入我们最重要的密码输入界面com.bugzapk.h了,首先分析密钥获取逻辑

 

http://p4.qhimg.com/t013e7c8c0ccd067509.png

 

 

其中c为要访问的域名,get函数访问域名。通过解密算法可得到url为

 

http://p7.qhimg.com/t01042a813f95fc21ad.png

 

打开浏览器,访问页面返回如下字符串

 

http://p0.qhimg.com/t01411676eb76b55eef.png

 

获得数值后,使用正则表达式提取出37598这个密码

 

http://p1.qhimg.com/t01781acf4a4654e299.png

 

并且赋给pass这个成员变量,如果网络无法访问的情况下,将会使用本地的密钥

 

http://p1.qhimg.com/t01e3221941ed0decfc.png

 

通过执行对应的解密算法,可解得本地密码值为8810

 

http://p4.qhimg.com/t01de4b66f17304fefb.png

 

接下来我们来分析解锁函数js的逻辑

 

http://p3.qhimg.com/t012ecd87219fe88caa.png

 

如果输入的密码值为654321,则将PIN码更改为654312

 

http://p7.qhimg.com/t01d867c142a2d84bc6.png

 

如果输入的密码值为4321,则将PIN码修改为4312

 

http://p1.qhimg.com/t01a6255eda2654805d.png

 

如果输入的密码值为上面分析出来的密码值,将会跳转到com.bugzapk.i界面

 

7. 锁屏主页面2

锁屏主页面1的密码正确后,将会进入第二个页面com.bugzapk.i

 

http://p1.qhimg.com/t01e8f310c1b16c6918.png

 

我们直接查看点击确定按钮后的解锁逻辑

 

http://p8.qhimg.com/t017be3b725a6f7bb21.png

 

输入4951密码后,页面会跳转会上一个界面

 

http://p5.qhimg.com/t01f139ada172ea9e75.png

 

输入997998后,界面的文字会做一些改变

 

http://p7.qhimg.com/t01068cf60011859642.png

 

正确的密码值为l.x(v17,v9)这个解密函数,我们执行对应的解密函数得到正确的密码为2415

 

http://p6.qhimg.com/t016f907c56882e6b71.png

 

密码输入正确后,跳转到最后的PIN码界面

 

8. PIN码界面

http://p7.qhimg.com/t01be5df7353a6764ee.png

 

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

更多安全类热点资讯及知识分享,请持续关注阿里聚安全博客

© 著作权归作者所有

共有 人打赏支持
阿里聚安全
粉丝 26
博文 89
码字总数 191047
作品 0
杭州
新型银行木马病毒MysteryBot Android深度分析

  近日,国外某安全公司发现一种新型银行木马病毒MySteryBot Android,该病毒为银行木马LokiBot Android的变种,其恶意行为除了利用银行木马窃取金融信息外,还包括恶意监视键盘、植入勒索...

FreeBuf
07/16
0
0
不交赎金就把你上黄网的事儿公之于众:安卓手机上的勒索软件Koler

        这是加拿大新出现的一款手机勒索软件,当手机用户访问成人网站时就会感染该恶意软件并遭到勒索。把握住受害者的羞耻心理,黑客会以此威胁你支付赎金,否则会将其手机锁屏,并将...

FreeBuf
01/30
0
0
Android设备新型恶意软件,融合银行木马、键盘记录器和移动勒索软件等功能

网络犯罪分子目前正在开发一种针对Android设备的新型恶意软件,它融合了银行木马、键盘记录器和移动勒索软件的功能。 根据来自ThreatFabric的安全研究人员称,这个恶意软件名为MysteryBot,是...

工作的事
06/25
0
0
最新发现的安卓恶意软件-MysteryBot

        网络犯罪分子目前正在开发一种针对Android设备的新型恶意软件,它融合了银行木马、键盘记录器和移动勒索软件的功能。   根据来自ThreatFabric的安全研究人员称,这个恶意软件...

嘶吼RoarTalk
06/20
0
0
Android辅助类病毒研究报告

  前言   近期,腾讯反诈骗实验通过AI引擎聚类关联发现,恶意利用Android辅助功能,究其原因是,从市场反馈来看,由于没有足够的安全意识,导致辅助功能被恶意使用,及诱导用户开启辅助功...

FreeBuf
05/29
0
0
黑产盯上“吃鸡”游戏,木马盛行勒索扣费

“大吉大利 今晚吃鸡”,一款大逃杀类的 FPS/TPS 游戏《绝地求生:大逃杀》在 2017 年下半年成为游戏领域的绝对热门。玩家之众,从明星到普通用户,直接导致 Steam 中国区用户的比例跃升到了...

又田
2017/12/25
0
0
Fortinet: 全球2016年第四季度全球医疗行业威胁分析与报告

该“全球医疗行业威胁分析与报告”探讨了2016年第四季度全球医疗保健行业的威胁趋势。所采用的威胁数据是 FortiGuardLabs威胁研究与响应团队基于全球50个国家的454家医疗保健公司的传感器所获...

玄学酱
04/16
0
0
设备管理器权限遭恶意利用,衍生多种病毒攻击用户手机

  概述   Google在Android2.2 (API level 8)新增了名为DevicePolicyManager的接口,可以帮助用户实现对手机安全管理和远程操作,如锁定屏幕、恢复出厂设置、清空手机上所有数据、远程修改...

FreeBuf
05/10
0
0
程序设置横屏后,锁屏时会被销毁一遍,解锁时又重新加载onCreat的问题解决

今天在写一个应用的时候,因为需要设置成横屏模式,所以在Manifest里面的Activity里面加了两个参数设置: android:screenOrientation="landscape" android:configChanges="keyboardHidden|or...

守夜之星
2013/09/30
0
0
程序设置横屏后,锁屏时会被销毁一遍,解锁时又重新加载onCreate的问题解决

今天在写一个应用的时候,因为需要设置成横屏模式,所以在Manifest里面的Activity里面加了两个参数设置: android:screenOrientation="landscape" android:configChanges="keyboardHidden|or...

悠悠我馨
2013/09/09
0
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

TensorFlow 拟合异或 one-hot方式

增加隐含层数目 之前是按照计算出的数值按照0.5分为0和1,现在是算出向量,用维度较大的作为结果 import tensorflow as tfimport numpy as np# 网络结构:2维输入 --> 2维隐藏层 --> ...

阿豪boy
6分钟前
0
0
Aidl进程间通信详细介绍

目录介绍 1.问题答疑 2.Aidl相关属性介绍 2.1 AIDL所支持的数据类型 2.2 服务端和客户端 2.3 AIDL的基本概念 3.实际开发中案例操作 3.1 aidl通信业务需求 3.2 操作步骤伪代码 3.3 服务端操作...

潇湘剑雨
21分钟前
0
0
python爬虫日志(3)下载图片

import urlliburl='https://xxx.jpg'#图片地址res=urllib.request.urlopen(url)#此函数用于对url的访问data=res.read() #字节流with open(r'D:\1.jpg',"wb") as code: c...

茫羽行
39分钟前
0
0
vue中$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运...

JamesView
47分钟前
0
0
bash审计系统搭建

step1:使用saltstack工具bash部署>>>>>> # salt -N clienta state.sls audit step2:安装elasticsearch>>>>>> 注意: 1.不能以root用户进行启动,需要创建用户,并对解压的elasticsearch目录赋......

硅谷课堂
48分钟前
0
0
Linux sar性能分析

Linux使用sar进行性能分析 sar简介 sar命令常用格式 sar常用性能数据分析 整体CPU使用统计-u 各个CPU使用统计-P 内存使用情况统计-r 整体IO情况-b 各个IO设备情况-d 网络统计-n sar日志保存-...

易野
49分钟前
0
0
用 Python 实现打飞机,让子弹飞吧!

所用技术和软件 python 2.7 pygame 1.9.3 pyCharm 准备工作 安装好 pygame 在第一次使用 pygame 的时候,pyCharm 会自动 install pygame。 下载好使用的素材。 技术实现 初始化 pygame 首先要...

猫咪编程
今天
0
0
MySQL的行锁和表锁

简单总结一下行锁和表锁。 行锁 每次操作锁住一行数据。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 表锁 每次操作锁住整张表。开销小,加锁快;不会出...

to_ln
今天
0
0
Java IO类库之字节数组输入流ByteArrayInputStream

一、ByteArrayInputStream字节数组输入流介绍 ByteArrayInputStream是字节数组输入流,继承自InputStream。它的内部包含一个缓冲区,是一个字节数组,缓冲数组用于保存从流中读取的字节数据,...

老韭菜
今天
0
0
iOS安全应该做哪些事情

1. 尽量使用HTTPS协议。 2. 密码提交的时候,密码使用SHA256加密后传输,MD5等经过哈希碰撞已经可以推算出原文。 3. 密码提交的时候,可以加盐。 4. 密码保存在本地的时候,尽量使用钥匙串保...

HOrange
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部