专栏首页FreeBuf走进科学:对七夕“超级病毒”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邮箱和密码全部暴露在了代码里(;¬_¬),拿到密码后,兴冲冲地去登陆这个邮箱,却发现密码已经被改了,估计是被前辈们抢先了吧。

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

[原文地址]

http://www.cnblogs.com/bRAyKpoyNt/p/3891265.html

本文分享自微信公众号 - FreeBuf(freebuf),作者:墨阳

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2014-08-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 木马的前世今生:上线方式的发展及新型上线方式的实现

    0x00 前言 在讲文章主题之前,我们还是习惯性地聊(che)一(che)聊(dan)。 远程控制木马大家都不陌生,尤其是早期接触黑客技术的人,应该可以发现早在...

    FB客服
  • 利用第三方软件0day漏洞加载和执行的木马分析

    近期腾讯反病毒实验室捕获了一批针对性攻击的高级木马,该木马使用近期热门的时事话题做诱饵,对特殊人群做持续针对性攻击,目前腾讯电脑管家已经能够准确拦截和查杀该木马...

    FB客服
  • “强奸”全球43款杀软的木马是怎样的存在?(附网友神评论)

    1 背景 只要插上网线或连上WIFI,无需任何操作,不一会儿电脑就被木马感染了,这可能吗?近期,腾讯反病毒实验室拦截到一个“黑暗幽灵”木马的新变种,该木马功能强...

    FB客服
  • 木马的前世今生:上线方式的发展及新型上线方式的实现

    0x00 前言 在讲文章主题之前,我们还是习惯性地聊(che)一(che)聊(dan)。 远程控制木马大家都不陌生,尤其是早期接触黑客技术的人,应该可以发现早在...

    FB客服
  • Unity手游崩溃异常如何捕获--C#及JVM捕获

    C#脚本未捕获的异常,与Android和Native未捕获异常很大的区别是,未捕获异常不会照成引用的闪退。所以,C#脚本的异常危害相对较小,但是同样更加容易存在...

    WeTest质量开放平台团队
  • 【Jetson开发项目展示】利用开放显微镜和深度学习进行疟疾检测

    【项目团队】Team MakerGram: Salman Faris, Muhammad Swalah A A, suhail jr

    GPUS Lady
  • 【入门篇】一个小白在Jetson TX2上安装caffe的踩坑之旅

    作为一个在深度学习上的小白,买Jetson TX2一个很大的原因就是想学习深度学习。那么当用Jetpack刷好板子后,第一个任务肯定是要学着安装caffe!...

    GPUS Lady
  • Ubuntu常用软件安装(附带地址和卸载自带软件)

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 上次说了安装VSCode(http:/...

    逸鹏
  • Android Service 服务(三)—— bindService与remoteService

    bindService是绑定Service服务,执行service服务中的逻辑流程。

    阳光岛主
  • [视频教程] 包管理器方式安装使用openresty新手上路

    OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。 用于方便地搭建能够处理超...

    陶士涵

扫码关注云+社区

领取腾讯云代金券