android木马Phone_spy分析报告
一、样本特征
1.基本信息
病毒类型:木马
样本长度:328,138 字节
2.特征描述
该样本启动后无界面,后台服务运行,监听短信和电话。被控端接收控制端发来的短信指令后,会静音并删除该指令短信,其它短信正常接收,读取其中的配制信息(邮箱地址),根据控制端所发出的指令可发送短信内容和将通话录音通过邮箱发送到该邮箱。危害隐私较大。
二、样本分析
静态分析
1. AndroidManifest.xml分析
接收短信权限
图1:

注册广播接收器:自启动和短信、电话
注意看类名是混淆过了,不过内容还好,不太影响阅读
图2:

相关服务:猜想可能是电话、短信和录音的
图3:

2. 我们先从分析自启动部分吧
第一个包是广播处理相关的类都放在这
点开看看
图4:

图5:

从上往下,依次是
第1个:空的,可先跳过
第2个:重点,核心之核心,一会会重点分析
第3个:电话相关
第4个:短信相关,可以看到里面有:SMS_RECEIVED
第5个:自启动相关,这个很重要,点开看看
图6:

它启动一个服务,我们看看是什么,它类名虽然混淆过了,没关系,点连接来到这里。
图7:

这是树型图,看内容
图8:

可以看出这个服务是用来处理电话相关的,先看看onCreate里面有什么东东
图9:

这个new是个什么玩意?它也是广播里面的,就是上面所说的第2个:重点,核心之核心这个,不信点开看下
图10:

好,自启动部份先分析到这,接下来看下它的邮件发送部分,我比较关心这个,就是doSend()这个方法,我们重点看下
3. 邮箱
可能有人会问,为什么是doSend?你怎么知道是doSend?好,我们仍然按照顺序分析
我先说下流程:onChange?II11II1II1I?doSend
onChange
图11:

II11II1II1I
图12:

doSend
这里面就是发邮件的代码,但还不是关键代码,兴奋吧,G点吧
接下来我们实质性的接触到邮件发送的相关类,主要有两个,不多
图13:

就从“短信记录”这个地方开始分析吧
图14:

不知道怎么回事,我这出了点小问题,不过不影响,我用其它方法
我依次点开了看下,邮件的处理在第二个包里,就两个类,先看第一个,挨个看
图15:

第1个:可暂时先跳过
第2个:录音文件
第3个:呵呵,这个可有意思,“试用结束 请注册本软件,详情联系”居然要注册,一会我会教大家怎么处理下这个,呵呵,应该是有使用限制吧
第4个:短信记录
第5个:通话记录
第6个:可暂时先跳过
这里我们重点分析第3个和第4个吧,其实道理是一样的
第3个:这有个if语句,就改这,呵呵,感兴趣的可以自己下去试试,嘻嘻
图16:

第4个:
图17:

注意我打箭头的一定要进去看,这才是发邮件的核心部分,我们进去看下
有人说点了没反应,点不进去,是的,往上翻,顶部
图18

现在可以了,来到这
图19:

点进去看看
图20:

它这个是先从控制端发来的指令取得邮箱地址,用户名,密码,然后自写的一个发送邮件类
好了,邮件发送的分析就先到这,可能有人会问,控制端发送指令的处理在哪了?不急,在这,眼熟吧,就是上面说的核心之核心那个类,广播里面,doSend(),记起来了吧。
图21:

4. 短信
本来还想分析短信、电话和录音部份的,标题都写好了,算了,我贴出所在的包和类,及相关方法的代码,大家自行研究吧,我说一下找的思路:先在邮件发送的类里找到短信发送
图22:

点击进去就是
图23:

不知道大家注意没,它有4个类,我看了下,分别是配制,短信,电话,录音,但不一定是我说的这个顺序,算了,我还是说清楚吧
第1个:短信
this.db.execSQL("insert into sms(sms_type,sms_phone_number,sms_phone_name,sms_context,sms_date) values(?,?,?,?,?)
第2个:电话
insert into phone(phone_type,phone_number,phone_name,phone_time,phone_amr_file_path,phone_date) values(?,?,?,?,?,?)
第3个:录音
insert into phone_amr(amr_file_path,amr_date) values(?,?)
第4个:配制
this.O0O0OOO0.rawQuery("select * from config", null)
5.
6. 录音:同上
小总结下:比较重要的几个包,一个广播处理,一个邮件,一个服务
分析过程中,可能有些专业术语表达不太准确,请各位见谅..如有分析不到位或错误的地方,欢迎指正。
样本: Phone_spy.apk
