由于智能手机的普及,手机病毒逐渐走上前台,病毒的地下产业链也逐渐注意到这一块。总体来说,目前的手机病毒不像PC病毒那样(初期的pc病毒主要是为了显示黑客的个人能力)。手机病毒的初衷很简单,主要是为了窃取隐私和获取经济利益。 下面就简单的介绍一个android平台上手机病毒分析的大体流程,首先我们经常用到的两款工具是apktool和jd-gui,这两款工具是分析的利器。 当我们拿到一个安卓平台样本的时候,最先需要考虑的是获取他的文件的结构,apk包我们可以利用解压工具解压出来。不少的样本在加压之后我们可以在其中的解压文件中找到elf,so,apk等格式的文件,其中elf,so是linux平台上的文件,主要的作用有以下一些:网络通信,提权,修改文件系统,封装一些加密什么的功能函数。对于这些文件,我们可以利用IDA对其进行反汇编,如果没有加密的话我们可以查看器字串表,在其中我们可以比较容易的看到以下诸如卸载,获取超级用户等的指令。如果发现了apk格式的,那就得注意了,很有可能真正的恶意行为就是利用这个apk来实现的。 通常的状态下,我们时间比较充足的话,可以把样本放到android开发的虚拟手机中动态的跑一下,这个可以帮助我们建立一个比较直观的印象。比如不少的病毒就是安装之后无图标,伪装为系统服务等等,拦截短信(通常是特定的短信),开机或接收短信等自启动等等。这些我们都可以通过动态的方式观测到。 动态之后,对于比较简单的手机病毒,我们已经有了一个比较清醒的认识。接下来要做的就是静态分析了。静态分析的主要的作用为了弄清病毒的原理。将apk转化为dex格式,用JD-GUI进行反编译,我们可以得到近乎源码的样本代码。下面就是我分析的样本的主要功能部分。 1,获取手机信息,写入xml文件。 2,下载apk 3.获取imei ,imsi号码 4,上传IMEI,IMSI等信息 5卸载软件 6,发送短信并不是说具有这些行为的就是恶意软件,判断他的标准主要是依据用户是否知情的情况,是否为用户带来损失。 分析完这些就结束了么,这显然是不对的。这只是对样本的一个大致的分析过程,最终的目的不是这些,而是为了检测和判断未知的样本,这就需要一个提取规则的过程,由于目前的手机病毒编写的语言是java这种高级语言,稍加修改就能使文件的二进制代码发生巨大的改边,采用PC上的特征码方法显然是不能有限的检测手机病毒的,这里我们可以用样本中的url,sp号码,包结构和函数等等来对未知病毒进行检测,个人觉得PC上的未知病毒检测对于手机病毒的检测还是有很大的借鉴作用的,由于他是使用高级语言来编写的,导致他的很多的恶意功能都是通过API来完成的,这样我们是不是可以借鉴PC上的API组合,API顺序流的办法来检测呢。这些值得我们来关注。 目前手机病毒病毒才刚刚起步,考虑到未来移动终端的普及和目前各大厂商纷纷抢占智能手机市场,手机病毒必定会像PC病毒一样泛滥起来,而且由于手机的私密性和具有支付功能等等,一旦发生安全事件,必定会造成巨大的损失,由于骇客的趋利性,他们的病毒制作技术必定会越发高明,安全之路任重而道远。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课