“蜥蜴之尾”——长老木马四代分析报告

华盟原创文章投稿奖励计划

  长老四之前世今生

  去年11月份,360安全团队截获了恶意手机木马“长老三代”,详细剖析挖掘了长老木马的整个有机生态链。并从传播源头开始进行强力打击,致使猖狂一时的长老木马迅速地消声灭迹。近期360安全团队发现改头换面的新版长老木马又“重出江湖”。

  分析后发现,木马与“长老三代”有紧密的关系,在长老木马三代“疯狂崛起”时,以其子模块的形式存在,功能有限,而且也不具备对抗安全软件的能力,因此,我们将其命名为“长老四代”。

  长老木马三代核心主体模块debuggerd与此子模块耦合度非常高。比如子模块由虚假debuggerd来启动,而且子模块运行时需要访问由假冒debuggerd下载生成的文件读取远程服务器地址,下载地址等。经过木马作者的“精心改进”后,子模块从“私生子”华丽“蜕变”为长老木马核心模块。

  进化篇

  与之前老版本相比,虽然在恶意行为特征上仍然以隐私劫取、恶意扣费为主,但是自我保护与对抗安全软件方面有较大技术突破。例如,在移动安全领域首次采用了静态感染技术,感染系统运行依赖的lib文件,加大了查杀难度。此外,还采用相似文件路径欺骗法、 样本MD5自变化等传统PC端的病毒技术。下图的文件MD5分别为778ff1b54aaf88075523f1a8b7c233f9、3a93af95ec45aabb44018fdc4dd34243。

       “蜥蜴之尾”——长老木马四代分析报告

                                      图1 两个长老4代 ELF可执行文件的对比

  对比可以看出,是文件末尾嵌入32位长度的字符串,导致同一版本长老四,出现几十万个变种。进一步分析发现,长老四会读取这段字符,解密后当作KEY,用于私有数据库等配置文件的AES/DES加密与解密。代码如下:

        “蜥蜴之尾”——长老木马四代分析报告

                        图2 获取AES密钥的部分代码

  长老木马的进化如下:

          “蜥蜴之尾”——长老木马四代分析报告

  经过一段时间的观察与分析,我们梳理了“长四”的发现过程及关键的时间节点,如图所示:

        “蜥蜴之尾”——长老木马四代分析报告

  行为分析

  长老木马四代主要分为launcher和核心作恶的ELF可执行模块。ELF可执行模块又包括distillery、plugins及redbean三个主要部分。 redbean模块会注入系统Phone进程,具有Phone进程权限,可以在未经用户允许下,后台私自订购SP业务,屏蔽订购确认和成功短信,给用户造成经济上的损失。

  长老木马四代作恶流程如下:

          “蜥蜴之尾”——长老木马四代分析报告

                                                             图5 长老四代流程图

  从启动方式来看,长老三代主要以替换系统原生文件为自身镜像,随系统启动时执行,由于安全软件对于这种类型的查杀方法已比较成熟,长老木马四代采用更加隐蔽的“静态感染”启动方式,将恶意代码插入到被感染的系统文件,在被感染系统文件中完成长老木马四代的启动工作。长老四代是在Android系统中首次采用感染技术的木马。

  “长老四代”静态感染启动原理如下:

  1、感染守护进程启动时依赖的正常库文件。在库文件的导入表里添加launcher的路径,使守护进程随操作系统启动时,加载并执行launcher的恶意代码。如下图所示,被感染的系统库文件的导入表中包含恶意库文件libs6x.so的路径。

        “蜥蜴之尾”——长老木马四代分析报告

                                       图6 被感染的系统库文件/system/bin/libglog.so

  2、Linux的动态链接器在加载ELF可执行文件或动态链接库时完成装载、映射、重定向后,首先依次执行pre_init、init、init_array节中描述地址指向的函数。这些函数都是早于入口点执行的。

       “蜥蜴之尾”——长老木马四代分析报告

                                                          图7 Launcher的init_array节

  Linux的动态连接器执行这些函数的初衷原来是为了程序执行前初始化C++静态构造函数,C库的IO等等。木马作者巧妙利用Linux动态链接器对ELF文件的装载原理,在init_array段里写入了启动病毒长老四代的代码。

         “蜥蜴之尾”——长老木马四代分析报告

                                            图8 启动长老木马可执行文件的代码片段

  这种“静态感染”方式加大了我们的查杀难度。首先,增强了长老四代的隐蔽性,被感染的系统文件装载时加载恶意launcher,接着launcher启动ELF可执行文件。由于被感染的系统库文件除了导入表多了一行字符串(launcher的路径)之外,与其他正常系统库文件完全相同,容易躲过安全软件的“火眼金睛”。其次,增加杀毒软件的修复难度,由于被感染的库文件随系统进程启动时尝试加载导入表中的所有so文件,可能会因为安全软件的暴力删除导致手机系统挂机。

  长老四代被launcher调度启动后,会生成隐藏的空文件“/data/local/tmp/.l1”和“/data/local/tmp/.l6”。根据长老木马版本,这些隐藏的空文件名有所不同。随后,生成加密的主体模块“distillery-1.0.7.drk”,解密后生成“distillery.dex.jar”,并加载执行其中的函数“com.alkohol.Main.main”。

  主要模块说明如下:

  distillery

  distillery.dex.jar为长老木马四代病毒的核心主体框架,实现长老四代的核心功能。distillery模块的“com.alkohol.Main.main”函数,运行时接受4个参数:

  arg0=长老木马路径、arg1=null、arg2=长老木马版本、arg3=null。

       “蜥蜴之尾”——长老木马四代分析报告

  distillery框架运行后生成的主要文件及文件夹:

       “蜥蜴之尾”——长老木马四代分析报告

                                 图10 长老四代生成的主要文件及文件夹

         “蜥蜴之尾”——长老木马四代分析报告

  核心插件

  distillery主体框架启动后会解密plugins下的所有加密drk文件,并加载到内存中。

  这些插件实现了接受远程服务端指令、恶意扣费、短信拦截监控、心跳、日志提交、下载和更新插件等长老木马四代的所有核心功能。

         “蜥蜴之尾”——长老木马四代分析报告

  其中,具备核心功能的插件有mojito、margarita和gin。

  mojito插件:完成手机短信监控的功能,过滤关键词由远程服务器下发,主要屏蔽SP扣费业务订购成功或确认短信,使用户无法察觉到自己订购了SP业务,短信监控相关部分代码如下:

          “蜥蜴之尾”——长老木马四代分析报告

  Margarita插件:完成手机扣费功能,实现扣费功能的代码片段如下:

          “蜥蜴之尾”——长老木马四代分析报告

  Gin插件:注入相关核心模块,解密后是redbean.dex.jar。redbean.dex.jar打包了whitebean和libblackbean模块。whitebean和libblackbean的最终目的是把readbean.dex.jar注入到Phone进程中。注入成功后readbean.dex.jar可以实现读取拦截短信内容,后台拨号等敏感恶意行为。

  长老四代的注入流程是,whitebean在远程进程中加载libblackbean.so,libblackbean.so调用JNI_CreateJavaVM实现加载核心模块readbean.dex.jar。

  whitebean启动时接受6个参数:

  arg0=待注入的目标进程、arg1=负责加载jar的so模块、arg2=核心模块、arg3=保存临时dex文件(jar运行时生成的临时dex存放路径)、arg4=运行模式(Debug模式和Release模式)、arg5=服务端日志存放路径。

  运行时实际传递的参数值:

./whitebean            

原文地址:https://hack.77169.com/201511/217553.shtm

本文原创,作者:华盟君,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/19859.html

发表评论