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


随着移动端安全软件对APK的查杀能力趋于成熟以及Google对Android安全性重视的提高,病毒与反病毒的主战场已逐渐从APP层扩展到Linux底层。而且病毒作者也开始把PC端的病毒自我保护手段运用到移动端上,在移动端大量使用了免杀、加密、隐藏、反虚拟机等传统PC端病毒自我保护技术。但是之前一直还未出现过通过感染技术实现自我保护的病毒,此次,360安全团队首次发现了在Android系统中通过感染方式隐藏自身恶意代码的木马病毒——长老木马之四。

0x00 长老四之前世今生


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

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

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

0x01 进化篇


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

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

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

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

长老木马的进化如下:

图3 长老四代进化图

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

图4 长老四代发现过程及响应

0x02 行为分析


长老木马四代主要分为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。

    ```

    图9 长老木马运行时实际传递的参数值

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

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

    图11 实际运行时留下的的文件及文件夹

  • 核心插件

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

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

    图12 插件列表

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

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

      图13 短信监控插件部分代码

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

      图14 付费插件部分关键代码

    3. Gin插件:注入相关核心模块,解密后是redbean.dex.jarredbean.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

      com.android.phone

      libblackbean.so

      /data/usr/readbean.dex.jar

      /data/usr/cache Release

      /data/usr/server.log

      ```

      whitebean运行后在远程进程com.android.phone的导入表中搜索获取dlopen、 dlsym、dlclose、dlerror等函数的调用地址,通过这些函数实现远程加载libblackbean.so,并调用libblackbean.so的inject_entry函数,把其余的参数(redbean.dex.jar/data/usr/cache Release/data/usr/server.log)全部传递给它。

      libblackbean.so的inect_entry导出函数被执行后,调用JNI_CreateJavaVM加载redbean.dex.jar,并且调用redbean.dex.jarcom.android.phone.os.Program的Main函数。以此整个注入过程结束,下图为注入过程相关运行日志。

      图15 注入过程相关运行日志

  • Redbean

    Redbean模块注入到Phone进程后具备了与Phone进程相同权限,可以获取敏感短信内容(比如手机验证支付密码)、私自订购SP业务、拦截短信(拦截删除SP订购成功短信)、后台拨号、关闭WIFI、打开G网等。

    其函数com.android.phone.os.Programs.main被调用时接受2个参数:

    ```
    arg0=运行日志保存路径、arg1=日志输出级别。

    ```

    main函数首先会初始化16个Command类。这些类会根据远程服务端下发的指令实现IMSI获取、短信发送与拦截、短信读取、切换APN、获取用户地里位置等指令。

    图16 初始化16个Command类

    注入后,发送用户手机信息(包括病毒版本、IMEI、IMSI、MAC地址等)到远程服务器(v9bt.heycould.org/crutch):

    图17 发送的用户信息

    接着监听本地3549端口,等待远程服务端下发指令:

    图18 握手连接过程

0x03 长老四背后的阴谋


我们在跟进长老木马四代时,发现了疑似作者开发的木马测试程序。主要有注入测试程序和SP业务订购测试程序。

1、注入测试程序

通过该测试程序我们能更加清晰的了解木马作者的意图。木马作者编写调试工具对自己编写的所有模块的功能进行了全面测试,如获取手机信息、注入行为成功与否、短信屏蔽与拦截、短信发送、APN切换等多种功能。

下图中可以看到几个非常敏感的功能,比如“后台通话”、“编辑屏蔽内容”、“注入”等:

图19 redbean注入测试程序

后台通话功能可以在后台给某特定电话号码拨号。在测试程序中发现了木马作者用作测试用的手机号,该手机号是否为木马作者本人还无法确定。

图20 后台通话测试相关代码

2、SP业务订购测试程序

木马作者为了方便测试SP业务订购模块,还做了SP业务订购测试工具。从该测试工具中可以看到木马作者事先已开通了SP业务通道,通过发送短信验证订购SP业务,并屏蔽掉SP提供商发送的确认短信和定制成功短信等。

图21 SP业务订购测试程序

测试程序的开发期时间线:

图22 木马测试工具开发时间线

测试程序的IP地址主要集中在北京与天津,美国也曾出现过,从开发的频率中可以看出,在2015年春节的时候,是开发版本最少的,5月和8月的高峰期,是主要功能的开发,作者对10多个手机品牌进行了病毒兼容性测试,在测试程序开发初期的2014年6月到2015年初进行了大量的兼容性测试,开发者主要使用的手机有ZTE_P6、 TCL_S960、 VOTO_V6、Sony_S39h。从这些数据推测病毒开发者应该是团队合作,具有测试流程的专业团队。

0x04 感染数据统计


我们从360安全中心后台统计该木马总感染量已经超过80万,近半年感染趋势如下图所示:

图23 长老四代感染数量

受长老四代影响的手机用户机型和系统也是非常的广泛,感染该木马的机型和系统分布如下图所示:

图24 木马感染机型分布

图25 木马感染系统分布

从地域分布来看,广东省是受到该木马影响最大,分布图如下图所示:

图26 木马感染地域分布

0x05 解决方案


随着360手机急救箱用户数的增长,被查杀到的木马越来越多,360手机急救箱独有的深度完整扫描,可以深度扫描和完美清除底层ELF病毒和APK病毒,目前市场上的主流手机安全产品几乎没有支持ELF完整深度扫描的功能,如果您的手机刷过第三方ROM或者手机已经Root,建议您采用360手机急救箱进行一次完整的深度扫描,帮助您安全用机。

附录一:长老木马四伪装的系统文件

/system/bin/playlpn/system/bin/tinycapr
/system/bin/sdiokit/system/bin/racdvd
/system/bin/kyexe/system/bin/mkaswap
/system/bin/setfatr/system/bin/tunefs
/system/bin/chcomn/system/bin/s6xd
/system/bin/getnforce/system/bin/swaproff
/system/bin/bcdcmd/system/bin/md2pd
/system/bin/rstrcon/system/bin/dtfexe
/system/bin/lpnkey/system/bin/ftmdmn
/system/bin/thrmal/system/bin/tinyplayr
/system/bin/hvdcpy/system/bin/setnforce
/system/bin/lowcat/system/bin/ipoctl
/system/bin/setsebl/system/bin/dhdp6s
/system/bin/rildm2/system/bin/npsobex
/system/bin/confwexe/system/bin/ccaptst
/system/bin/hciattch/system/bin/ntfsfixr
/system/bin/mc640d/system/bin/srvcext
/system/bin/getsebl/system/bin/clatdc
/system/bin/smdiexe/system/bin/ddcexe

附录二:长老木马四代launcher的文件名

/system/lib/libbcd.so/system/lib/libkye.so/system/lib/libs6xd.so
/system/lib/libbcdcmd.so/system/lib/libkyexe.so/system/lib/libsdi.so
/system/lib/libcca.so/system/lib/liblan.so/system/lib/libsdioki.so
/system/lib/libccapts.so/system/lib/liblow.so/system/lib/libsetfat.so
/system/lib/libchc.so/system/lib/liblowcat.so/system/lib/libsetnfo.so
/system/lib/libcon.so/system/lib/liblpn.so/system/lib/libsetseb.so
/system/lib/libchcomn.so/system/lib/liblpnkey.so/system/lib/libsim.so
/system/lib/libcla.so/system/lib/liblsm.so/system/lib/libsimg2l.so
/system/lib/libclatdc.so/system/lib/liblsm3cm.so/system/lib/libsmd.so
/system/lib/libcon.so/system/lib/libmc6.so/system/lib/libsmdiex.so
/system/lib/libconfwe.so/system/lib/libmc640d.so/system/lib/libsrv.so
/system/lib/libddc.so/system/lib/libmd2.so/system/lib/libsrvcex.so
/system/lib/libddcexe.so/system/lib/libmd2pd.so/system/lib/libthr.so
/system/lib/libddd.so/system/lib/libmka.so/system/lib/libthrmal.so
/system/lib/libdhd.so/system/lib/libmkaswa.so/system/lib/libtin.so
/system/lib/libdhdp6s.so/system/lib/libnps.so/system/lib/libtinyca.so
/system/lib/libdtf.so/system/lib/libnpsobe.so/system/lib/libtinypl.so
/system/lib/libdtfexe.so/system/lib/libntf.so/system/lib/libtun.so
/system/lib/libftm.so/system/lib/libntfsfi.so/system/lib/libtunefs.so
/system/lib/libftmdmn.so/system/lib/libpla.so/system/lib/libswa.so
/system/lib/libgetnfo.so/system/lib/libplaylp.so/system/lib/libswapro.so
/system/lib/libgetseb.so/system/lib/libracdvd.so/system/lib/libget.so
/system/lib/libgeu.so/system/lib/librac.so/system/lib/libset.so
/system/lib/libhci.so/system/lib/libril.so/system/lib/libs6x.so
/system/lib/libhciatt.so/system/lib/librildm2.so/system/lib/librim.so
/system/lib/libhvd.so/system/lib/librstrco.so/system/lib/libipoctl.so
/system/lib/libhvdcpy.so/system/lib/librst.so/system/lib/libipo.so

附录三:长老木马四代MD5

329846b610c76e884095ea9d5f5c8834
082bf566cc352c394577af7f1f797ae5
4659b1400f48318d0f63c47dc2b9b72e
a86827029a76240557e6c30b2792df14
789295e3d7887a4c3c32b3a6e75e554f
cef52d7da4882ab0a0501842d394295a
2dab85922133d23af30daa3d77d09476
f7ba67aa8d5675f18990375e3454235b
eac6a1cbae6f58a44cdbf7238ef91fa2
0dbf5bdfc6dd1bca39cff140e4fc7d59
d4e4e3f6cbef3808f8ad917a540f836d
da7a39444869e39264f8f1ddc9c42a97
e42b6ce6c3931989c975ce59c457d66a
e111dcc031a84ef725bcf3e81ed71f36
8de2c6ae586916cba989e0019105d274
ad18e3a36d3a67e1ecbc2220cae1483f
8e2b79548050e4b9ad60d1d984f12d9d
933a65e0105c4c0f5440aeffb3c1a764
8b2bd87da31254ef4ecb4ffcb8f26aa6
ae4936e5aad44b320f2bf5d698c92db4
706c4b63184a2ab2f809169a2b8fe9eb
803573b88583e4b81dec39643d6f41b7
09ba245c80582cf115a870f43f3bc053
09dbbc772799723e43c34c9fae2f4ad8
0ae3e4a351cfe9d6228296537db418ec
0fd672c1f0333403a59bbdf04c0af05e
148c7874455c10834f0e7937f15dbddf
18d8f5803e1f580c2410bb98b59a127d
22046f82b2a72e5686603ab538b3a08a
24af8fc3faf1a488d444e9a4de066073
25e881576d9c389e445787626f6cf43f
2cce7a5f8d1b64b8f5b2e2760cc85894
33d5e3e723d3873420fc70a767de5e40
37fc9630b0dabe98b6d23bf6e5cc3aa2
3b2d947123032f130938fb361d2bd2cd
3feab5d93fe5ff6a17f43ecfccd52274
45bf3cd32b9926ad516dd114c2f86fd2
5562b855d6355c963e12a66bea648c9e
55eb106019a630b89b506feda186c287
5e9053e17e962cbbd8b36d6b1077684a
5ff96879be23ac965bc2e2b6ded9234e
60bab93a8a7930334283aee53089c746
6289059110505539e2feb61aecfcafee
6405d4d65e2a7e124f6b067a87e2a3c3
691fe3e6f56fc2dcb2acd67c68c95c16
73f98eaa2ce77a5027a5dbff80841b90
79f1d3d921279777a0922e09c579815c
7b8dfae2e5bedec452af3c2187d3dfdf
8bb83547ec903cbb272ec21e6ff8c11e
99b246167b11d9aa912a346a3f976486
9ded2e0b0557a18412ff8d17141594df
9fdc479b76099b099ad85fafb3d80d17
a5dcad67df52793cc72a706697ddfb00
a91fb51b9ecaff59e0aa3f9131ae9f0d
b7a29b102f332dc7ddc94c86d514e9fc
bf12b4062293e553878e5a8ed5e5c8ee
c372ab758d39e6e03ac544c053dba011
c4a942a1b5cffd89f79b9ed9c0dc7fc1

相关阅读链接

评论

3

360 2015-11-28 10:12:32

360本身就是个窃取用户信息的大病毒

3

360安全卫士

360安全卫士官方账号

twitter weibo github wechat

随机分类

Java安全 文章:34 篇
区块链 文章:2 篇
木马与病毒 文章:125 篇
逻辑漏洞 文章:15 篇
神器分享 文章:71 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录