【逆向实战】恶意勒索软件分析_披着羊皮的狼_被注入恶意代码的apk
/文章作者:Kali_MG1937
QQ:3496925334
CNBLOG博客号:ALDYS4/
今天逛某论坛的时候发现了一篇求助贴
有意思,好久没分析过恶意软件了
今天就拿它来练练手
反编译工具
apktool
jd-gui
eclipse(CFR,JD-CORE等反编译引擎)
JADX
DEX2JAR
0x01>分析AndroidManifest.xml
先看看恶意软件的基本信息
先百度一下恶意软件的包名
搜索结果显示这是一个被各大应用市场收录的软件
那么我分析我手上的这个恶意软件应该是被注入了恶意代码
如果我是恶意软件的开发者,一定会在第一时间让受害者触发恶意代码
那么先查看软件的主入口
com.superthomaslab.rootessentials.main_screen.MainActivity
看来这就是软件主入口了
0x02>分析代码
跟进主入口
可以看到截屏中的第6行
程序引入了一个包(Unlock.Unlock),而且我与未被注入代码的软件对照
原软件并没有引入此包
果断搜索Unlock
程序在重写onCreateOptionsMenu方法时调用了Unlock中的方法
并向方法内传入了一个Context
跟进Unlock
查看Unlock方法
在第一句就申请了root权限,emm
不管,先看下去
第12行,变量名为file2的File获取了软件本身的资源
并将参数传递给zipFile2,调用getEntry方法获取了软件内的/lib/armeabi/libbaidu.so
接着程序又new了一个FileOutputStream对象并赋予了一个参数作为文件输出口
输出的文件名为Unlock
再看看19行
程序利用Runtime实例执行了一系列命令:
挂载/system
复制Unlock文件到/system/app/内,并命名为Unlock.apk
给Unlock.apk以644权限(写入系统)
接下来软件调用了isAZ方法,并传入了一个参数com.antilock.antilock
isAZ方法是判断软件是否存在的
如果手机安装了包名为com.antilock.antilock的软件,就调用runtime卸载掉它
根据包名来判断,这个软件大概是某个木马查杀软件
全部的代码执行完毕后调用reboot重启手机
(之前恶意代码向system分区写入了一个apk,重启才能让apk安装在手机上)
0x03>解密libbaidu.so文件
通过上一步的代码分析可知
libbaidu.so是一个被加密过的apk安装包,需要调用程序内的算法来进行解密
图中就是解密算法了
程序调用了一个while死循环
循环中的变量名为i的int被赋予了inputStream调用read方法后的值
而inputStream方法正是读取libbaidu.so的,
若i的值为-1(文件不存在)则跳出循环
否则就对变量名为bArr的byte进行一系列异或算法
最后输出文件
按照这个逻辑,我果断打开eclipse进行代码编写
最后输出一个可以正常打开的zip,将其后缀改为apk
是个伪装成正常应用的apk,看来之前分析的是个壳子,这就是真正的锁机文件了
不过这包名....
0x04>分析锁机文件代码
老样子,先看AndroidManifest.xml
软件入口:com.fuck.lock.MainActivity
从第20行看出,软件的log日志被传入com.aide.ui这个软件
看来作者是用aide开发的这个软件
A I D E 风 评 被 害(暴论)
可以看到onCreate方法内软件发送了一个意图
启动了com.fuck.lock.mc这个服务
跟进
mc这个类内的一个值引起我的注意
eq参数貌似是一个被加密的值
先不管,看看onCreate方法
其中调用了a方法和c类
值得一提的是a方法
程序在手机上创建了一个覆盖整个屏幕的悬浮窗
并且进一步分析发现,这个程序禁止了用户在悬浮窗以外的地方进行手势接触
很可疑
其中0x7f700...等等16进制,通过与软件自带的R文件对照
发现这几个16进制分别代表了几个布局文件
从病毒作者绘制的layout文件内容来看,软件在创建悬浮窗时其真正的意图就已经暴露了
勒索受害者,若不给钱,就恶意锁定受害者手机
而c类就是一些密码的加密解密之类的
不过我在浏览mc类的时候发现了一个有意思的方法:init
可以看到init方法内的代码:如果有人打来的电话,就记录下号码
这就有意思了,为什么病毒要记录号码?信息收集?这些信息这对作者有用吗?
并且受害者已经被锁定,也没法接电话,那么收集号码也没什么用啊
但是,柳暗花明又一村
我发现了一个广播类:IncomingReceiver
这个广播内调用了mc类的init方法
很有意思的类名,对吧
onRecevie方法内
程序正不断监听广播
如果广播内容是android.intent.action.PHONE_STATE
则程序就会截取extra为incoming_number的值
并且利用md5加密算法加密这个值
程序正在不断监听来电!
调用mc类的access$L100025方法
这个方法返回了eq这个值
你还记得吗!mc类最开始时的那个eq参数,是一串加密的密文
这让我的大脑兴奋了起来!
继续查看广播内的代码
程序校验了eq这个值是否与加密过的来电号码一样
如果一样,调用endCall方法挂断来电电话
并且将锁机悬浮窗移除!
整理一下逻辑,程序的大致意思是:
如果有电话打来,并且加密过的电话号码和eq密文一样
则停止锁机
这是作者留的后门吗?
ん?流 向 改 变 了
不管了,将密文复制
926e459bfecfc239953d3ff5aec1446a
解密
解密后:15527952330
一 转 攻 势
病毒作者的手机号码已经拿到了
已经提交给警方备案
迫害,请
【逆向实战】恶意勒索软件分析_披着羊皮的狼_被注入恶意代码的apk的更多相关文章
- 一个简单的windows勒索软件分析
根据分析,此病毒是一个勒索软件,通过修改登录用户密码,留下勒索QQ号码向用户索要金钱. 它调用了Kernel32.dll里的WinExec来执行更改用户密码的cmd命令,密码为107289,更改完密码 ...
- python装饰器(披着羊皮的狼)
python装饰器的作用是在不改变原有函数的基础上,对函数的功能进行增加或者修改. 装饰器语法是python语言更加优美且避免很多繁琐的事情,flask中配置路由的方式便是装饰器. 首先python中 ...
- ocky勒索软件恶意样本分析1
locky勒索软件恶意样本分析1 1 locky勒索软件构成概述 前些时期爆发的Locky勒索软件病毒这边也拿到了一个样本,简要做如下分析.样本主要包含三个程序: A xx.js文件:Jscript脚 ...
- Android端恶意锁屏勒索应用分析
一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...
- 针对Jigsaw勒索软件的解锁工具
针对Jigsaw勒索软件的解锁工具 据了解, 用户的计算机系统一旦感染了勒索软件Jigsaw,如果用户没有在一个小时之内支付赎金(0.4个比特币,价值约为150美金),那么恶意软件将会把系统中的上千份 ...
- android86 监听SD卡状态,勒索软件,监听应用的安装、卸载、更新,无序广播有序广播
* 添加权限 <uses-permission android:name="android.permission.RECEIVE_SMS"/> * 4.0以后广播接收者 ...
- ocky勒索软件恶意样本分析2
locky勒索软件恶意样本分析2 阿尔法实验室陈峰峰.胡进 前言 随着安全知识的普及,公民安全意识普遍提高了,恶意代码传播已经不局限于exe程序了,Locky敲诈者病毒就是其中之一,Locky敲诈者使 ...
- [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
0x00 一点废话 最近因为Mac软件收费的比较多,所以买了几款正版软件,但是有的软件卖的有点贵,买了感觉不值,不买吧,又觉得不方便,用别人的吧,又怕不安全.于是我就买了正版的Hopper Di ...
- 使用AES加密的勒索类软件分析报告
报告名称: 某勒索类软件分析报告 作者: 李东 报告更新日期: 样本发现日期: 样本类型: 样本文件大小/被感染文件变化长度: 样本文件MD5 校验值: da4ab5e31793 ...
随机推荐
- Windows核心编程 第七章 线程的调度、优先级和亲缘性(上)
第7章 线程的调度.优先级和亲缘性 抢占式操作系统必须使用某种算法来确定哪些线程应该在何时调度和运行多长时间.本章将要介绍Microsoft Windows 98和Windows 2000使用的一些算 ...
- SQL必知必会 —— 性能优化篇
数据库调优概述 数据库中的存储结构是怎样的 在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载.也就是说,数据库管理存储空间的基本单位是页(Page). 一个页中可以存储多个行记录(Ro ...
- BugkuCTF——wp(旧版)
title: BugkuCTF--wp(旧版) date: 2020-4-25 tags: CTF,比赛 categories: CTF 比赛 Web篇 0x001-web2 解题思路: 1.直接按F ...
- MyBatis进阶--接口代理方式实现Dao 和动态SQL
MyBatis接口代理方式实现Dao层 接口代理方式-实现规则 传统方式实现Dao层,我们既要写接口.还要写实现类.而MyBatis框架可以帮助我们省略写Dao层接口实现类的步骤.程序员只需要编写接口 ...
- 【Linux】Linux中在mate桌面和gnome桌面root自动登录设置
[Linux]Linux中在mate桌面和gnome桌面root自动登录设置 GLL_ 2020-03-05 11:41:40 762 收藏 1 分类专栏: Linux 文章标签: linux 版 ...
- iozone测试方法-20191008
iozone 一.简介 磁盘设备之上是文件系统,测试磁盘的工具往往就是调用驱动块设备驱动的接口进行读写测试.而文件系统的测试软件就是,针对文件系统层提供的功能进行测试,包括文件的打开关闭速度以及顺 ...
- dpkg 比rpm好用 常用没命令 UbuntuVS RHEL
yum install (必须先执行apt update)apt install yum remove(危险禁止使用) apt remove(危险禁止使用) rpm -Uvh ...
- PHP使用mail函数发送邮件
yum install sendmail #需要使用到sendmail hostname jb51.net #建议修改主机名为域名格式,否则启动sendmail会很慢 systemctl start ...
- Docker-Compose入门-(转载)
Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 Compose 中你可以使用 YAML 文件来配置你的应用服务.然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务 ...
- keil使用VScode外部编辑器
1.首先我们双击桌面的keil图标,打开keil主界面: 2.点击上方菜单栏的Tools菜单,选择如下图所示的选项: 3.点击如下图所示的菜单上红笔标注的地方,给这个工具命名为vscode: 4.然后 ...