热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【技术分享】IoTroop:一个正快速扩张的新IoT僵尸网络分析

译者:blueSky预估稿费:200RMB投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿前言上周,我们的安全研究人员发现了IoT_reaper这个庞大的僵尸网络。一经发现,我们就

https://img8.php1.cn/3cdc5/1e70e/9f3/5706f56208978f0c.jpeg

译者:blueSky

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

前言

上周,我们的安全研究人员发现了IoT_reaper这个庞大的僵尸网络。一经发现,我们就很快发布了关于该僵尸网络的初步分析,用以提醒网络安全社区。在本文我们将对IoT_reaper僵尸网络进行详细的研究和分析,现阶段我们的主要研究结果包括以下几个方面:

整个僵尸网络军团已被揭开。 

我们观察到两组不同的僵尸网络军团: 

其中一组是C2服务器和样本,主要用于感染和传播。 

另一组用于第二阶段payload。 

攻击者能够通过Lua脚本快速灵活地控制被感染的设备。 


僵尸网络军团

该僵尸网络军团中的服务器在恶意软件传播和漏洞利用过程中扮演着重要的角色,我们已经发现了整个僵尸网络传播基础设施,具体如下图所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/b126223aa3af04dd.png

恶意软件传播基础设施图 


IoTroop恶意软件概述

IoTroop是IoT_reaper Botnet在网络攻击活动中第一阶段使用的主要payloads,该恶意软件借用了mirai的源代码,但是在几个关键行为上显著区别于mirai,包括:

1.    C&C服务器已经完全被重新设计,并使用了新的后台。 另外,IoTroop的C&C服务器是用PHP编写的,而原来的Mirai C&C服务器是用GO编写的。

2.    随着C&C后台的变化,C&C通信协议也发生了变化,IoTroop恶意软件使用了全新的C&C通信方式。

3.    IoTroop恶意软件不再使用弱口令猜测、而是使用IoT设备漏洞,扫描效率大大提高。

4.    IoTroop恶意软件不包含任何DDoS功能,实际上我们也没有观察到与该恶意软件有关的任何DDoS攻击,但所有与DDoS相关的功能都由C&C后台进行协调和管理,并作为单独的模块下载。


恶意软件操作细节

我们检测到IoTroop恶意软件使用的几个变种,虽然这几个变种之间的差异很小,但其却包含完全相同的功能。通常,根据被攻击设备的架构不同,所有变种可以被分为MIPS变种和ARM变种这两类。

初始化

一旦IoTroop将其payload在被感染设备上执行,初始化操作步骤与Mirai所采用的步骤相同,主要有:

混淆初始化字符串

阻止系统服务重启(通过发送特定的IOCTL)

确保只有一个IoTroops的实例正在运行

隐藏argv[0]

隐藏进程名称

然而,IoTroop恶意软件从控制流开始会执行其自己独特的功能,那就是:

通过向eth0,br0,eth1和eth2设备发送IOCTL 0x8927来查询和存储设备的MAC地址。如果恶意软件当前运行的设备运行GoAhead嵌入式Web服务器,则执行以下shell命令:

·rm -f /tmp/ftpupload.sh n
·ln -s /dev/null /tmp/ftpupload.sh n
·rm -r /var /log n

这些操作用于删除与WIFICAM漏洞利用相关的shell脚本,并创建一个到/dev/null的符号链接,以及从设备中清除所有日志文件。 

禁用其他恶意软件

IoTroop占用TCP 23端口并禁用任何打开telnet的进程。然后,它扫描设备内存以查找其他IoT恶意软件是否使用以下字符串,如果找到相同的字符串,那么IoTroop将会停止该进程的运行。

·   .anime
·   REPORT %s:%s
·   HTTPFLOOD
·   LOLNOGTFO
·   zollard
·   x58x4Dx4Ex4Ex43x50x46x22 (The word ‘zollard’ Xored with 0x22)

漏洞扫描

为了进行漏洞扫描,IoTroop恶意软件会生成一批随机IP,负责生成IP地址的代码与Mirai的代码相同,示例代码如下图所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/b81f5ec84479eab1.png

恶意软件会对每个生成的IP地址进行一组漏洞测试,测试以下任何设备或基础设施中是否存在漏洞:

https://img8.php1.cn/3cdc5/1e70e/9f3/fe51cb1e4785a4cc.png

具体的漏洞扫描流量如下所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/72d389ea5924f6e3.png

https://img8.php1.cn/3cdc5/1e70e/9f3/6311b7778f6eed98.png

https://img8.php1.cn/3cdc5/1e70e/9f3/f545c7539ae5208a.png

https://img8.php1.cn/3cdc5/1e70e/9f3/f858f1cc5ea22668.png

下图是从其中一个漏洞扫描获取的PCAP的示例:

https://img8.php1.cn/3cdc5/1e70e/9f3/0fc96b2d2317245e.png

C&C通信

IoTroop的C&C后台服务器由几个组件组成,每个组件负责一个独特的目的。

reporter 服务器

reporter 服务器用于接收Bot扫描到的易感染设备信息,该服务器使用字母“f”作为子域名的前缀,通过我们的研究,我们能够识别出两个存活的reporter 服务器,域名如下:

l  hl852.com(222.112.82.231)
l  ha859.com(222.112.82.231)

一旦Bot扫描到易感染设备,IoTroop将以下列方式将其数据发送到reporter 服务器:

https://img8.php1.cn/3cdc5/1e70e/9f3/4fbf77f7d46bfacf.png

以下参数被用作上述HTTP GET请求的一部分:

https://img8.php1.cn/3cdc5/1e70e/9f3/1400704aa880fb74.png

Controller 服务器用于控制所有受感染的设备,并负责执行第二阶段恶意payload以及更新当前的恶意软件。

Controller 服务器

每个受感染的设备不断地从控制C&C服务器获取命令,通过我们的研究,我们能够识别出两个存活的Controller 服务器,如下所示:

·ha859.com(27.102.101.121)
·hl852.com(27.102.101.121)

Controller 服务器以JSON格式向IoTroop客户端发送命令和参数,具体参数如下表所示: 

https://img8.php1.cn/3cdc5/1e70e/9f3/ce5ccb1de986edcd.png

一旦收到命令,IoTroop Bot首先解析该命令然后执行并将执行结果返回给C2服务器。

downloader

如果端口存在且为80,则构造格式为“http:// ”的字符串,否则将其设置为”http://:”,并将ip,port和path的值填入字符串中。如果C2服务器发来的JSON值为完整路径,那么恶意文件将被保存到命令参数的目录中,否则它将放在/ tmp目录下。在处理构造的URL之前,bot将尝试通过“killall ”命令来停止所有与其名称类似的进程,其中参数取自上述“name”键值。 最后,该URL将被传递给一个download函数,该函数会首先使用lstat检查文件的状态,以验证其是否存在,然后计算该文件内容的哈希值。在打开文件并读取文件后,根据每个操作的状态,构建一个格式为“open:errorsuccess”或“read:errorsuccess”的报告或日志记录字符串,我们观察到该字符串从未被使用过,因此我们猜测该恶意软件仍在进行调整,并处于开发阶段。 

在获取到散列值之后,该散列值将与controller 提供的散列值进行比较,以验证磁盘上文件的版本(如果存在)与服务器提供的版本是否不同。如果文件版本不同,Bot将以”r-xrwxrwx”权限生成一个新文件,并与C2服务器建立socket连接。IoTroop将构造一个HTTP GET请求并将其写入socket,之后它尝试以128个字节的大小块(在请求成功的情况下)从socket中读取其内容,读取到的内容将被写入新创建的文件,并再次检查MD5,以验证是否获取到正确的内容。完成通信后,bot会向controller 发出“FINn”字符串。

https://img8.php1.cn/3cdc5/1e70e/9f3/b1e63a0b8f307d02.png

Execute

文件的具体执行具体取决于“runtype”和“runport”键的值,这两个键值位于“mysel”字符串中。其中,第二个参数表示设备类型,第三个表示TCP端口。在任何情况下,下载的文件都将以给定的“runtype”和“runport”参数执行。

一般地,执行操作可能对应两种情况:一是对应于bot的软件更新事件,用以提示其在未来的进一步变化;另一种情况将对应于任意模块或插件的执行,这可能是Slowloris DDoS实用程序(在C2服务器上发现)或其他任何应用程序,而且Bot使用“/bin/sh sh -c ”命令产生新的进程,具体如下图所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/dc62e44cc0705a4a.png

在我们的研究中,我们发现IoTroop恶意软件在其控制流程的不同阶段使用了以下示例。

https://img8.php1.cn/3cdc5/1e70e/9f3/8c608f1e89464aec.png

https://img8.php1.cn/3cdc5/1e70e/9f3/4a51a7e3515ff8c1.png


第二阶段payload

概述

我们观察到另外一个与之相关的样本和C&C服务器,该C2也在奇虎360的一篇文章中提到,这些样本似乎用于第二阶段的payload。这些恶意软件可以由downloader服务器的IoTroop恶意软件下载并执行,样本描述如下表所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/51960b9229e32833.png

这些样本与不同的C&C服务器通信以报告感染的设备以及从C2下载命令,这些服务器是以域名或者IP地址的形式在样本中进行硬编码的,有时候会有不同的端口,这取决于具体的样本,具体如下表所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/d3bcf561b317216d.png


Lua综合恶意软件分析

我们从其中一个reporter服务器收集到了大约4700个感染设备的信息,分析过程如下所示。

概述

恶意代码中集成了Lua执行环境,从而支持通过Lua脚本编写复杂的攻击指令。 此外,它还复用了Mirai 的代码,由于代码中存在调试字符串,因此我们猜测它是使用Debug模式编译的。但是,除了代码引用的一个调试字符串之外,我们分析的样本似乎没有使用Mirai 代码,这可能是由于编译器优化的原因。多个调试字符串以及详细的输出信息使我们相信这些样本仍在测试或初始部署阶段。

功能分析

样本的主要功能的核心部分如下所示: 

https://img8.php1.cn/3cdc5/1e70e/9f3/71ccdad78f845737.png

恶意软件使用Lua解释器的内部函数来初始化Lua引擎,加载LuaSocket库并定义一些在稍后代码会使用的Lua全局变量,具体如下图所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/995ec39298d05523.png

之后,将一个功能推送到Lua引擎堆栈,并定义为“attack”,这相当于在Lua脚本中定义一个名为“attack”的函数,“attack”字符串来自Mirai 源代码的调试字符串,具体如下图所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/8f3b2df395e8add4.png

https://img8.php1.cn/3cdc5/1e70e/9f3/ba8786a45fe989f0.png

恶意软件然后利用内部的Lua函数来执行以下Lua脚本,该脚本以字符串形式嵌入在恶意软件中,具体如下图所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/c83394cef3878e9a.png 

该脚本与恶意软件的C&C地址进行通信,首先,它使用以前定义的全局变量将感染细节报告给reporter C&C(bbk80.com)。然后它进入一个无限循环,并从命令C&C服务器(cbk99.com)下载Lua脚本并执行它们,它通过从C&C下载“run.lua”文件并将其作为参数传递给以前在main中定义的“attack”函数,“attack”函数会在子进程中执行脚本,具体如下所示: 

https://img8.php1.cn/3cdc5/1e70e/9f3/c72735117f930f9a.png

如果脚本加载或执行失败,恶意软件将以中文显示错误字符串:

https://img8.php1.cn/3cdc5/1e70e/9f3/e78428211c70d5d8.png

目前C&C服务器上发现的“run.lua”脚本只是打印字符串“Just Test”: 

t0106c4eef13ffb6f33.png

我们可以在名为“run.bak.txt”的Web服务器上看到另一个Lua脚本,它看起来像一个数据收集或者更新脚本,具体如下所示:

https://img8.php1.cn/3cdc5/1e70e/9f3/51158eb9ef72aa32.png

攻击者可以轻松更新脚本,轻松指示僵尸网络执行任务。 这个强大的设置使攻击者能够灵活和动态地控制受感染的设备,使他们能够轻松地定制任何具有自定义,可更新的攻击代码,并更改恶意软件的行为,而无需更新二进制本身。


易受攻击的IoT设备

https://img8.php1.cn/3cdc5/1e70e/9f3/42f7375aa76b668d.png

https://img8.php1.cn/3cdc5/1e70e/9f3/5645e2bcce52db6e.png


IOCs

https://img8.php1.cn/3cdc5/1e70e/9f3/a333a12f83cbf58a.png


推荐阅读
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • vivo Y5s配备了联发科Helio P65八核处理器,这款处理器采用12纳米工艺制造,具备两颗高性能Cortex-A75核心和六颗高效能Cortex-A55核心。此外,它还集成了先进的图像处理单元和语音唤醒功能,为用户提供卓越的性能体验。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
author-avatar
mjh3804260
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有