天气

七夕蠕虫“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 邮箱和密码全部暴露在了代码里(;¬_¬) ,拿到密码后,兴冲冲地去登陆这个邮箱,却发现密码已经被改了,估计是被前辈们抢先了吧。

标签:
分类:网络资源| 发布:admin| 查看: | 发表时间:2014/8/6
原创文章如转载,请注明:转载自个人资讯网 http://www.zhangxinran.com/
本文链接:http://www.zhangxinran.com/post/1001.html

相关文章

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Design By zhangxinran.com | Login | Power By zhangxinran.com | 皖公网安备:34010402701072号