紧急通告:相册木马跟踪分析
2015-05-08
5月4日晚,海博网论坛科技威胁响应中心监测到在安徽、浙江等区域出现androids聚会相册蠕虫大规模传播的情况,传播速度较快,随即启动应急机制, 应急响应工作随即启动。
1 5日晨,合肥办接客户获取木反馈,将相关信息提报总部,启动木马分析工作。
2 5日,对木马样本深入分析,并给出应对方法。
3 6日,发布紧急通告,并将分析报告发送给客户及合作伙伴。
4 7日,结合深入分析,更新报告到2.0
木马信息
聚会相册早在2014年就曾经出现过,当时大多是病毒的形式,影响范围有限,在扫描结果中通常可以看到androids.Troj.Sms的标识信息。在2015年劳动节后,海博网论坛科技威胁响应中心监测到在在安徽、浙江等局部区域,该病毒有大规模传播的趋势,且已经具备蠕虫的特征。该蠕虫传播方式有如下几种:
• 通过感染手机,搜索联系人,发送短信诱使被害人打开恶意网站或者安装APK程序
• 通过感染QQ,搜索联系人,发送链接诱使被害人安装应用程序
• 通过相册APP,进一步扩大发送范围
该蠕虫在传播过程中,可能会发送如下信息:
• 你在干嘛?新年快乐,这是过年时候大家聚会的照片,好珍贵的留影,你快看看吧,地址:http://…
• 这是我们以前的照片你手机打开看看 http://....
• 新年好!这是过年时候大家聚会的照片,好珍贵的留影,你快看看吧,地址:http://...
• 你竟然做出了这样的事!实在让人不能原谅!..../10086.apk;
• 看你干的好事 ,自己看吧…/SS.APK 打開证据都在里面呢;
• 有人悄悄在生日管家记录了您的生日,点击了解http://...
• xxx这是之前的聚会照弄好了,大家的精彩瞬间。手机直接点击地址X安装激活查看…
危害程度
从技术角度上来说,该木马具备简单的反解密措施,以逃避现有杀毒软件的查杀,从目前公开检测报告来看,现有各软件的检测及查杀效果较差[1],从而对其自我传播形成有利形势。从威胁态势上来看,该木马虽然目前传播后,除消耗话费外并没有做出严重危害动作,但其代码中具备监听手机接收到短信的功能,未来在其大规模感染后,很容利用此功能进行网银、支付宝等金融犯罪动作,其潜在的威胁程度较高。
分析步骤
病毒样本Apk解包
海博网论坛科技安全人员在获取到病毒样本后,第一时间进行了解包分析,通过使用如下命令可完成 apk的解包
1 $ java –jar apktool.jar d
解包结果如下图所示:
解包后关键文件确定
随即对解包后的各个文件进行分析。在androids工程中,排除掉编译时自动生成的文件,以及样本分析关系不大的文件,最终确定以下一些文件为病毒的关键文件:
1 ./res/values/strings.xml
2 ./smali/cn/cnn/mmc/eez/LogcatScannerService.smali
3 ./smali/cn/cnn/mmc/eez/LogcatScannerService$androidsLogcatScannerThread.smali
4 ./smali/cn/cnn/mmc/eez/MainActivity.smali
5 ./smali/cn/cnn/mmc/eez/MainAPP.smali
6 ./smali/cn/cnn/mmc/eez/SmsReceiver.smali
7 ./androidsManifest.xml
8 ./lib/armeabi/libAPKProtect.so
其中,
• smali类型的文件,为apk中经过java代码编写后生成的文件;
• Strings.xml为apk中的一些静态字符串变量;
• androidsManifest.xml为apk开发过程中的配置文件;
• so文件为APP中通过C代码编写的文件。
关键文件逐步分析
对病毒样本的各关键文件的分析如下:
strings.xml
在这个文件中,除了有一个应用名称(聚会相册)外,没有发现有价值的提示信息。
androidsManifest.xml
这个配置文件中,声明了apk需要的权限,以及一个短信接收监听器(SmsReceiver)。
声明的权限有: 短信接收、短信发送、写联系人、读联系人、读手机状态以及网络访问权限。
LogcatScannerService.smali
该文件代表LogcatScannerService类的声明及实现,在这个类中有4个成员方法,分别为:
Constructor
其中Constructor为构造函数,无需分析。
handleLog方法
经分析,这是一个处理自身类中的静态字符串解码的函数,通过该方法可以将该文件中的密文字符串解码,解码对比如下表所示:
文件中原密文 |
解码后 |
s13n8ezq563q7ffm7fet4uD36uztrcfGz8bXxjQ0Ro9DQs4u |
androids.intent.action.DELETE |
Q0P06e779vY1QmGYz8z/ |
Uinstall |
进一步分析代码结构,得知该代码和androids系统的logcat有关,他会监听系统的androids.intent.action.DELETE这个消息,并在日志中打印Uinstall这个结果。
onBind方法
该函数没有什么特殊的操作,只是返回0值作为函数执行结果,如下图所示:
on
该函数会启动一个名为androidsLogcatScannerThread的线程,如下图所示:
具体功能可参照本文以下章节。
androidsLogcatScannerThread.smali
androidsLogcatScannerThread为 LogcatScannerService类声明的一个内部类,有一个主要方法run函数的实现,同时它又有一同名函数 run(String),这个函数同handlerLog函数相似,是一个用于解码本类中静态变量的函数,解码结果如下表所示:
文件中原密文 |
解码后 |
ozwkICI3QkXNIcLy |
logcat |
8zVtaWt+ODVeutZm |
logcat |
Q=UNEDIFCBEBWURG2d9GUjEw |
waitValue = |
在run的函数体内,做了两件事一个是读日志($ logcat),另一个是其清空日志($ logcat -c)
下图为调用Runtime.exec(“logcat”).waitFor() 的代码片段:
经过更细致的分析,发现这个文件的代码和网上流传的代码完全相同(除静态代码做了加密处理)。这是一段监听自身被卸载的代码,但从样本分细结果看,该代码除了往日志里打了一个Uinstall的消息外,无任何后续操作。
MainActivity.smali
这是该样本的核心功能文件,其所对应的MainActivity这个类中有几个重要的方法:: onCreate、isInstallation、readContacts.
如下对各个方法进行详细分析:
onCreate
由于这个类是窗口类,此时onCreate是继承自Activity的重写方法。在该方法中配置了一个WebView控件,应用打开时看到的QQ空间界面就是通过这个WebView展示的,如下图所示:
在该类中还实现了一个on
sInstallation
该函数是一个判断运行环境的函数,和恶意功能关系不大。值得注意的是该类中还存在一个同名函数,如下图所示:
该函数同HandleLog相同,也是硬编码字符串解密的函数,本类中的几个字符串解码结果如下所示:
文件中原密文 |
解码后 |
Mz+ChZCdnZCFmJ6fQ0HXbGuJ |
Installation |
==E8Oy4jIy47JiAhMjiupr00NABi |
Installation |
U=1wd2Jvb2J3amxtREOjXLBO2jSm |
Installation |
Q=6/pbCypY64tfHs8UFBpZfETzsr |
contact_id = |
M0O2o/M5QsBjkVpq |
data1 |
==21ur2q4kIxLqyDMwtq |
number: |
s1bSn8PIn+Lhn+vYlcblnPLrnO/ Oner8nsD8nsL6nsDhnsHfn/P3ne D+nNPbnfP9lcb2nObzndPAktTKn 8Ttnebxnebxn+nclcb2n/n1nfP9 n+bKn+f6Wg5UGRRVKDtLIDgoSTU ziSSEznn+ |
在干嘛呢?我整理了一些以前的橡片,有空记得看看哦,像片地址 t.cn/RA1ZBR3 |
readContacts
这是和本样本传播有关的代码,它的核心功能有两项,遍历本机联系人及发送短信:
• 就是遍历本机联系人(通讯录):
•
• 然后分别给他们发特定内容的短信(比如,在干嘛呢….):
•
MainAPP.smali
这是调用反调试库的类,代码就是加载libAPKProtect.so文件,没有其他功能,如下图所示:
SmsReceiver.smali
该类是一个恶意的收发短信的代码。
在这个类中有一些硬编码的字符串是加密的,解密对照表如下所示:
解密前 |
解密后 |
oziClImPgsiWlImQj4KDlMiyg4qDlo6JiJ/ Itau1ubSjpaOvsKOiNESMZnh4 |
androids.provider.Telephony.SMS_RECEIVED |
AztJAFtFAnlBDGNOC1h+NELe06A3 |
短信来自: |
8zPxuOP9udrZufLls+DGQzN6y6u8 |
短信内容: |
I1OTk8enp8eOjsqiotCHh9CZmTUxqJC6q3k5 |
yyyy-MM-dd HH:mm:ss |
01PFxsTGxsvDwcDLwjVBxLJoQEws |
1065755802381 |
c1heXV9dXVBYWltQWUNGbqNQlHWV |
1065755802381 |
k1BWVVdVVVhQUlNYUUM3syCNlnUV |
1065755802381 |
在该类中实现了一个onReceive函数,这个函数有一个恶意发短信的功能,逻辑如下:
当被感染机器收到新短信时,会按照一个新格式来组织短信内容,并发到1065755802381这个号码。
其中短信的组织格式为”短信来自:xxxxxxxxx 短信内容:xxxxxxxxxxx
libAPKProtect.so
这个库文件是经过C语言编写完成的,JNI_on
分析结果汇总
从如上分析中可以看到,这个蠕虫由于利用了地址进行信息分发,其诱惑性及成功几率极高,而且在传播过程中由于群发短信,将会对受害者产生额外的手机话费消耗,具体结果如下:
病毒工作流程
• 搜索电话号码本的每个号码,并向其发送短信。
• 短信内容为:“在干嘛呢?我整理了一些以前的橡片,有空记得看看哦,像片地址 t.cn/RA1ZBR3”
• 当短信接收者收到这条短信,并打开那个短地址后,会继续下载到新的apk程序,并在被安装机器上继续执行步骤1、2的流程。
• 在被感染机上监听接收短信的状态,当收到新短信时会向1065755802381这个号码转发这条短信内容。从百度搜索结果看,1065xx这个号码可能是一个腾讯废弃的服务号码,这里没有联系腾讯的员工做进一步确认,测试者向其发送短信也很少发送成功。
病毒主要特点
• 通过社交网络(电话本)以及联系人间的信任程度(相信发信人随后打开信息中的链接)进行传播。
• 后台自动发送短信,消耗被安装机器的话费余额。
• 在样本中发现其存在监听手机短信的功能。虽1065755802381这个号码可能已被废弃(测试者向其发送短信无法发送成功),但仍应考虑其存在窃取短信的可能,如发现被该样本感染的机器应当注意短信被窃取的风险。
病毒对抗分析
由于要躲避查杀,该蠕虫在对抗分析上做了很多的工作。
• 程序中的特征字符串均已加密,要经过动态解密才能还原。
• 样本中附带so文件,以ptrace方式还原程序自身的部分程序片段,达到对抗分析和反调试的效果。
• 程序运行中会执行 logcat –c 这个命令,来清除自身运行过程中产生的日志,令自身不容易被察觉。
• 在测试机中,运行一次后程序图标就会自动消失,但程序本身并未消失。需要手动卸载才能清除。
紧急应对方法
终端用户可以在系统设置中卸载它
在androids手机的系统设置中,依次点击:应用程序管理应用程序聚会相册,来选定蠕虫文件,随后在新的窗口中点击卸载按钮,并确认,即可清除。如下图所示:
建议各杀毒软件厂商尽快给出查杀办法
建议各杀毒厂商尽快结合如上分析,更新查杀机制or病毒特征码,以便尽快实现该病毒的查杀,进而争取在其大范围传播之前控制住这个态势。
建议运营商可以通过短信的形式发送告警
在之前类似的案例中,各运营商可以采用短信的形式向用户直接发送告警短信,将病毒出现的特征解释清楚,效果还是不错的。同时,运营商可以采取措施拦截病毒短信,全面封堵下载地址。
威胁情报
从此次相册木马蠕虫的传播情况可以看到,无论其原理怎样,无论防护方案如何实施,关键在于尽可能快的了解到漏洞信息及相关的情报,以便尽可能快的启动应急响应机制。这无论对于解决传统安全或者APT攻击来说都是重要的手段之一,威胁情报的获取及响应都体现了防御能力的建设程度,威胁情报服务体系至少包含了威胁监测及响应、数据分析及整理、业务情报及交付、风险评估及咨询、安全托管及应用等各个方面,涉及研究、产品、服务、运营及营销的各个环节,海博网论坛科技通过研究、云端、产品、服务等立体的应急响应体系,向企业和组织及时提供威胁情报并持续进行后续服务,保障客户业务的顺畅运行。
如果您对我们提供的内容有任何疑问,或者需要了解更多的信息,可以随时通过在微博、微信中搜索海博网论坛科技海博网论坛,欢迎您的垂询!