七夕蠕虫“XX神器”逆向分析

七夕蠕虫“XX神器”逆向分析

首先给各位无良媒体记者跪了,七夕那天刚从公司拿到样本的时候还以为是主管随便到网上扒了个木马demo给我练手,第二天看新闻才知道这小玩具已经搞得满城风雨,媒体竟然称它为“超级手机病毒”(-_-#)不得不感叹混安全圈想装逼简直太容易了。在此强烈谴责这种夸张报道,不仅向公众传递错误信息,也会影响孩子的价值观。短短今天说这个apk没有任何研究价值,虽然技术是非常拙劣,但是其利用短信不会审核恶意链接的性质传播的方式倒是令人眼前一亮。下面就来瞧瞧这个“XX神器”的真面目。

从恶意链接上下载到“XXshenqi.apk”,考虑到是恶意应用,先不急着安装,反编译一下看看这到底是个什么玩意。

直接拖进APKIDE,查看AndroidManifest.xml:

乍一看,似乎除了声明了发送短信和读取联系人的权限比较可疑,没其他什么特点。组件部分也只有Activity,没有Service,没有BroadcastReceiver,并不具备木马特征。观察到主Activity是WelcomeActivity,那就先进这个Activity看看在搞什么名堂。

这个木马并没有做代码混淆,直接反编译WelcomeActivity就能看到Java源代码,首先看到的东西很令人惊讶:

不需要仔细看就知道是在群发短信,但是真正让人惊讶的是这段代码里居然藏了一个手机号(っ °Д °;)っ把自己的ID藏在病毒里的事情中已经见怪不怪了,这种赤裸裸暴露自己手机号的还是第一次见(;¬_¬)别急,下面还有更卧槽的。

这一句话就是木马传播的核心,获取通讯录并向联系人发送包含该木马下载链接的短信。通常在QQ或者邮件里发送恶意链接的话都会被检查,而现在的短信却不具备检查内容的安全机制,这是该木马最大的亮点。

WelcomeActivity开启群发短信的进程后,继续启动MainActivity,在MainActivity里找到三个if语句:

不难看出,这就是登陆按钮的事件处理,三个if语句以各种理由拒绝用户登陆,这样做的原因就只有一个,这个所谓的登录窗口是假的,这个“XX神器”根本没有任何功能,当然没办法让人登陆了。

那MainActivty的主要目的是干什么呢?找到retrieveApkFromAssets方法:

可以看到,该方法从assets文件夹里释放了一个文件。那就赶紧到assets文件夹下找到这个文件吧ヽ(`Д´)?

居然声称自己的包名前缀是com.android (;¬_¬)

反编译这个apk,打开AndroidManifest.xml,看看到底在搞什么名堂:

看到这些基本上什么都懂了,“XXshenqi.apk”其实是个外壳,其真正目的是释放隐藏在assets文件夹下的com.android.Trogoogle.apk,这才是木马本体。

查看smali目录,发现有如下几个包:

简略看了看源码,其他几个包跟com包杂乱无章的代码风格不一样,应该是作者找的开源包,只有com包才是木马功能真正的实现部分,所以只需要把精力放在这个包上就可以了。

查看com包的源码,首先注意到的是BroadcastAutoBoot,这是个接收开机事件的BroadcastReceiver:

可以看到收到开机事件后,启动了ListenMessageService,这是木马常用的开机自启方式。

跟进ListenMessageService看看,注意到以下两个方法:

private String ReadAllMessage(Context paramContext):

private void ReadCONTACTS(Context paramContext, String paramString)

在ReadAllMessage中找到下面这一行:

在ReadCONTACTS中找到下面一行:

不难判断出ReadAllMessage的目的是读取所有短信,ReadCONTACTS则是读取通话记录。

继续往下看,跟踪onStart(),看看服务启动后做了哪些事情,注意下面这一行是关键:

ListenMessageService.this.getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, new ListenMessageService.SmsObserver(ListenMessageService.this, new ListenMessageService.SmsHandler(ListenMessageService.this, ListenMessageService.this)));

ListenMessageService启动后注册了一个ContentObserver监视短信数据库,处理Handler为ListenMessageService.SmsHandler,继续跟进实现处理Uri改变的onChange()方法,发现下面关键行:

木马通过监视短信收件箱,当手机收到短信时将其截获,并且发送到181****7397这个号码。

继续看:

木马特别留意了186****9904这个号码的短信,将其视为命令消息,继续往下找到处理逻辑:

该短信共有5个操作命令:

readmessage:发送邮件命令,启动MySendEmailService,将收件箱和发件箱的短信以邮件形式发送

sendmessage:发送短信命令,能控制该手机发送任意短信到任意号码

test:测试命令,将“【数据库截获】TEST数据截获(广播失效)”以短信发送至186****9904

makemessage:伪造任意地址、任意内容的短信

sendlink:读取联系人信息,以邮件方式发送

在此明晰了该木马的大体架构,该木马利用指定号码发送短信,控制肉鸡将隐私信息以邮件形式发送到自己的邮箱。

一个有趣的细节是,木马作者将自己的QQ邮箱和密码全部暴露在了代码里(;¬_¬),拿到密码后,兴冲冲地去登陆这个邮箱,却发现密码已经被改了,估计是被前辈们抢先了吧。

有关这个木马的关键点就讲到这儿,有兴趣的朋友可以自己找样本分析,代码没做混淆,肉眼就能看懂。虽然木马使用的技术很小儿科,但是能其利用短信广泛传播的特点令人深思,余弦前辈说:很多时候,工程化能力远比单点技术研究重要多了。

———————————————————————————————————————————————————————————————————————————————

这个七夕过得实在是很悲剧,不仅找不到妹子过,还被叫去给人家中招的情侣分析木马,到底要不要人活了(/TДT)/

七夕蠕虫“XX神器”逆向分析,布布扣,bubuko.com

时间: 2024-08-04 18:13:43

七夕蠕虫“XX神器”逆向分析的相关文章

Android动态逆向分析工具ZjDroid--脱壳神器

项目地址:https://github.com/BaiduSecurityLabs/ZjDroid 前提条件: 1.Root手机一部 2.须要通过Xposed installer( http://dl.xposed.info/latest.apk)安装Xposed Framework; 一.ZjDroid工具介绍 ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者能够通过ZjDroid完毕下面工作:1.DEX文件的内存dump2.基于Dalvik关键指针的内存Ba

“金山杯2007逆向分析挑战赛”第一阶段第二题

注:题目来自于以下链接地址: http://www.pediy.com/kssd/ 目录:第13篇 论坛活动 \ 金山杯2007逆向分析挑战赛 \ 第一阶段 \ 第二题 \ 题目 \ [第一阶段 第二题] 题目描述: 己知是一个 PE 格式 EXE 文件,其三个(section)区块的数据文件依次如下:(详见附件)  _text,_rdata,_data 1. 将 _text, _rdata, _data合并成一个 EXE 文件,重建一个 PE 头,一些关键参数,如 EntryPoint,Imp

c++反汇编与逆向分析 小结

第一章  熟悉工作环境和相关工具1.1 熟悉OllyDBG  操作技巧1.2 反汇编静态分析工具 IDA(最专业的逆向工具)    快捷键    功能     Enter     跟进函数实现     Esc       返回跟进处    A         解释光标处的地址为一个字符串的首地址     B         十六进制数与二进制数转换    C         解释光标处的地址为一条指令     D         解释光标处的地址为数据,没按一次将会转换这个地址的数据长度   

IOS逆向分析——GL脚本的提取

总结:要逆一个程序必须清楚地知道程序的结构和常用的API函数,不清楚一个程序而去逆出结果是不可能滴 首先是glsl脚本运行的全过程,第一步是为shader的运行创建一个容器GLuint glCreateProgram(void),第二步是把编译好的shader附加到程序void glAttachShader(GLuint program, GLuint shader),编译好的shader可以是多个所以第二步可以重复多步把每一个编译好的一一附加到程序,顶点shader和像素shader一一成对,

Android逆向分析(2) APK的打包与安装

http://blog.zhaiyifan.cn/2016/02/13/android-reverse-2/ 2/18日增加对aidl和java编译的描述. 前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之鱼不如授之以渔,只有知道一些基本原理,才能让我们以后能自行解决更多问题. 那么,你知道么?从我们在Android Studio中,点击run,

逆向分析智能窗帘频射协议

近来我热衷于对家庭自动化设备的破解,然后将它们添加到我的Homekit集成包之中.这事情要从几个月前说起,当时我爸订购了大批量的RAEX 433MHz射频电动窗帘,以替代老式的手动式窗帘. 注意:你可以在Spotlight网店搜索Motion Motorised Roller Blind找到该窗帘. 我对这个电动窗帘非常满意,有了它我就不用跑上跑下的去打开/关闭窗户,可是为了控制它们,你需要购买RAEX的遥控器.RAEX有许多不同类型的遥控器产品,其中我选择购买了以下两种遥控器: R 型遥控器

逆向分析底纹

工作需要会被要求还原某个证书底纹,一般解决的思路是到网上找,如果找到了就直接用,如果找不到了相同的就找近似的凑合用,如果连近似的底纹都没有那我们是不是就没有办法了呢?有的,我们可以直接逆向分析出它最基本的单元,然后用photshop的填充功能生成即可. 既然用的是逆向分析,那么我们应该知道正向是怎么回事! 一般证书底纹是由一张二方连续贴图或者四方连续贴图拼接而成的,我这里称这张贴图为原子贴图,原子贴图的特征为"它是底纹里面最基本的那个单位,不能被拆分了",只要制作好了这个原子贴图,那么

TI(德州仪器) TMS320C674x逆向分析之一

一.声明 作者并不懂嵌入式开发,整个逆向流程都是根据自身逆向经验,一步一步摸索出来,有什么错误请批评指正,或者有更好的方法请不吝赐教.个人写作水平有限,文中会尽量把过程写清楚,有问题或是写的不清楚的地方,后面再慢慢修改. 二.正向开发流程 C语言开发,开发工具使用CCS(Code Composer Studio,基于eclipse开发的),有过开发经验的都会很容易上手,新建test工程,选择C674x,输出文件为ELF格式,如图所示: 编译成功后,会生成test.out文件(ELF格式). 使用

对Xposed的全面分析(一)--- xposedInstall apk文件,逆向分析

本次分析主要是 对源代码的分析, 分成两块1. xposedInstall 逆向分析java代码, 2. 分析框架 替换的app_process和框架hook的原理. 第一部分: 主要是希望分析的尽量透彻,这是第二次分析AnDa,之前对第二部分分析完(源码看过,文献多次阅读)之后理解不深刻,而且当时第一部分根本就没当回事,因为做项目比较赶.所以现在为了将漏网之鱼一网打尽,决定"内外"兼修,java和C++带上系统一起学习总结一下,达到融汇贯通就可以了. 之所以再次分析xposed是觉得