zoukankan      html  css  js  c++  java
  • “黑暗潜伏者” -- 手机病毒新型攻击方式

    最近百度安全实验室发现一款“黑暗潜伏者”新型手机病毒。该病毒附着在众多壁纸和游戏类应用中。截至眼下。已经发现感染该病毒的应用超过1万多款,感染用户超过3000万。


     
    该病毒恶意行为例如以下:
    1、 后台利用系统漏洞获取暂时Root权限。
    2、 获取暂时Root权限后,安装SysPhones.apk恶意程序为系统软件,安装Root后门程序zy到/system/bin文件夹。
    3、 SysPhones.apk依据server端指令静默下载、安装推广应用,并可以依据指令安装推广应用为系统软件,从而使其无法卸载。


    4、 其他未知的潜在恶意行为。
     
     
    一、利用系统漏洞获取暂时Root的方式
     
    该手机病毒利用知名的Root工具FramaRoot的漏洞能力获取暂时Root权限。
    (http://forum.xda-developers.com/apps/framaroot/root-framaroot-one-click-apk-to-root-t2130276)
    FramaRoot集成了众多Android系统漏洞Root利用代码。眼下可以提供对近400款Android设备的Root能力,支持设备列表例如以下:
    (http://forum.xda-developers.com/apps/framaroot/framaroot-supported-devices-t2722980)
    FramaRoot关键功能都集成在libframalib.so库中。该so库提供了两个接口供JAVA层调用:
    Check接口: 检測设备漏洞,返回漏洞列表。
    Launch接口:依据传入的漏洞名称,运行对应漏洞利用代码获取Root。
    Root成功后安装so库中附带的Superuser.apk和su文件到系统文件夹。
    该手里病毒巧妙利用了FramaRoot的工作机制,通过重要数据替换的方式,构建了恶意的FakeFramaRoot。

    例如以下图所看到的:
     

     

    通过重要数据替换方式巧妙的利用了FramaRoot的Root能力,在获取暂时Root权限后。安装替换后的恶意SysPhones.apk为系统应用。安装zy到/system/bin文件夹,zy作为后门程序。提供SysPhones.apk以Root用户运行命令的能力。
     
     
    二、躲避安全检測和逆向分析的方式
     
    依据检測到的数据显示,附带该木马的应用2014年2月份首次出现,到被检測发现已默默潜伏9个月。该病毒採用了例如以下方式达到恶意行为隐蔽性:
    1、 通过反调试技术、关键恶意代码native化、关键代码数据加密、网络通讯数据加密等方式阻碍逆向分析。
    2、 关键恶意行为代码云端下载、动态载入。
    3、 恶意行为云端动态触发,行为可控。
     
     
    三、黑暗潜伏者工作原理
     
    经过对代码的完整逆向分析。整个手机木马的工作原理例如以下图所看到的:
     

     
     
    四、恶意代码分析
     
    内嵌在应用中的恶意代码有两部分组成:
    1、 com.android.luahc[Java]
    主要上传设备信息到指令server,并依据指令server的返回的指令下载恶意代码FakeFramaRoot.so库。


    2、 libluahc.so[Native]
    调用FakeFramaRoot.so库。触发获取暂时Root权限,安装SysPhones.apk 和zy的恶意行为。


     
    该手机木马安装后并不会马上触发。仅仅有在设备下次又一次启动后。才会触发恶意行为。

    全部keyword符串如网址、路径等信息经过加密处理并以byte数组形式存放。这样可以躲避眼下杀毒软件的查杀。
     

     
    全部的网络通讯数据都进行了加密处理,下面是com.android.luahc[Java]请求指令server获取FakeFramaRoot.so库下载地址的网络交互数据:
    请求server获取FakeFramaRoot下载地址指令:
     

     
    server返回数据例如以下:
     

     
    解密后server返回数据内容例如以下:

    http://106.187.44.144/qwe

     
    com.android.luahc[Java]获取到下载地址后,下载文件并保存为libframalib.so1。libframalib.so1为压缩文件,解压后获取libframalib.so文件:
     

     
    com.android.luahc[Java]通过调用libluahc.so间接载入FakeFramaroot.so库函数。


     
    libluahc.so 以assets/tenatt文件附带在应用安装包中,运行时释放到文件文件夹并被com.android.luahc[Java]层载入。

    功能例如以下:
    1、在JNI_OnLoad中通过调用ptrace达到反调试目的:
     

     
    2、载入fakeframaroot.so库并调用check接口获取漏洞列表
     

     
    3、载入fakeframaroot.so库并调用launch接口进行Root
     

     
    FakeFramaroot.so在获取暂时Root权限后。安装恶意SysPhones.apk为系统应用。安装zy到/system/bin文件夹。zy作为后门程序。提供SysPhones.apk以Root用户运行命令的能力。


     
    SysPhones.apk恶意程序代码结构例如以下:
     

     
    SysPhones.apk开机后自己主动启动,后台请求server获取指令,并依据server指令静默下载、安装推广应用。
    请求数据例如以下:
     

     
    解密server返回结果例如以下:
    org.zxl.appstats 4.0 http://dl.appfreestore.com/1104/AppStats.apk 1 0
     
    返回指令格式为:
    [包名] [版本号] [下载地址] [是否安装为系统应用(1:系统应用)] [保留]
     
    解密并解析返回结果代码例如以下:
     

     
    依据指令构建命令脚本:
     

     
    通过SysPhones.apk的libSysPhones.so获取调用zy可运行文件所需的password參数:
     

     
    调用zy程序运行构建的命令脚本:
     

     
    zy做为Root后门在系统文件夹,它接收外部转过来的指令,并以Root身份运行传入的shell命令。
    调用格式为:
    zy password command
    password:通过SysPhones.apk中的libSysPhones.so获取,这样可以保证该后门仅供恶意开发人员使用。
     

  • 相关阅读:
    大数据技术(1-5题)
    如何使用不同的编程语言来造一匹马
    Redis 数据类型及应用场景
    Swoole中内置Http服务器
    redis 数据库主从不一致问题解决方案
    easyswoole对接支付宝,微信支付
    PHP+Swoole 作为网络通信框架
    基于swoole实现多人聊天室
    swoole与php协程实现异步非阻塞IO开发
    swoole中使用task进程异步的处理耗时任务
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6944177.html
Copyright © 2011-2022 走看看