Remaiten-一个以路由器和IoT设备为目标的Linux bot
Remaiten-一个以路由器和IoT设备为目标的Linux bot
ESET的研究人员正在积极地检测以嵌入式系统为攻击目标的木马,受影响的有路由器,网关和无线访问点。近期,我们已经发现了一个相关的bot,这个bot整合了Tsunami(也叫作Kaiten)和Gafgyt的功能,并相较于前者做出了一些改进,提供了新的功能。这个新威胁就是Linux/Remaiten。截至目前,我们已经发现了三个版本的Linux/Remaiten,版本号分别是2.0,2.1和2.2。根据其代码来看,木马作者称之为“KTN-Remastered”或“KTN-RM”。
在本文中,我们会说明Linux/Remaiten的特殊传播机制,新增功能,以及不同版本之间的差别。
0x01 改进后的传播机制
Linux/Gafgyt最突出的功能就是Telnet扫描。在执行Telnet扫描时,木马会尝试通过互联网端口23连接到随机的IP地址。如果连接成功,木马会根据内置的一份用户名/密码列表,尝试猜测登录凭证。登录成功后,木马会发出一个shell命令,下载多个不同架构的bot可执行文件,并尝试运行这些bot。这种感染方式虽然简单,但是会产生很多干扰,因为只有一个二进制能够运行在当前架构下。
Linux/Remaiten通过携带downloader,改进了上述的传播机制。木马的downloader是专门针对嵌入式Linux设备的CPU架构,比如ARM和MIPS。在通过telnet登录了受害设备后,木马会尝试判断设备平台,并传输适用于该平台的downloader。这个downloader的任务是联系CC服务器,请求适用于设备平台的Linux/Remaiten bot二进制。然后,在新的受害设备上运行bot二进制,创建一个新的bot供攻击者使用。
0x02 技术分析downloader
Linux/Remaiten downloader是一个小型的ELF可执行文件,内嵌在bot二进制中。当执行时,downloader会连接到bot的CC服务器,并发送下面的某个请求,然后另起一行:
mips
mipsel
armeabi
armebeabi
CC服务器会根据请求的架构,响应一个ELF bot二进制。注意,这里用于连接CC服务器的TCP端口并不是bot的IRC服务器。
图1-downloader向CC请求一个bot二进制
图2-downloader正在连接CC
downloader的唯一任务就是向CC服务器发送前面提到的某条命令并将响应写入到stdout。在这个例子中,发送的命令是mips。
图3-downloader向CC请求一个mips架构的bot
0x03 bot分析
在执行时,bot默认在后台运行。使用“-d”命令运行bot时,bot会保持在前台。一旦启动,进程会伪装成合法的名称,比如“-bash” 或“-sh”。我们观察发现,2.0和2.1版本使用的是“-bash” ,2.2版本使用的是“-sh”。
图4-bot启动
接下来,函数create_daemon 会创建一个名称是“.kpid”的文件,创建位置是下面的某个预设守护进程目录(第一个具有写入权限),函数还会讲其PID写入到这个文件。
图5-守护进程文件目录
如果已经存在“.kpid”文件,根据文件中的PID,运行中的木马进程就会被杀掉。然后,这个文件会被移除,接着,创建新的“.kpid”,并继续执行。
图6-跟踪pid文件的创建
0x04 连接到CC服务器
在bot二进制中,硬编码了一个CC服务器IP地址表。bot会随机选择一个地址,并通过一个硬编码端口连接到选中的CC。不同的变种会使用不同的端口。
图7-bot连接一个CC服务器
如果连接成功,bot随后会进入IRC通道。CC则会响应一条welcome信息和后续指令。bot会在受感染设备上解析并执行这些指令。
图8-CC响应给bot的欢迎信息
0x05 处理IRC命令
bot可以处理多种通用的IRC命令。这些命令和函数处理程序都会以阵列的形式列出。
图9-IRC命令
其中最有意思的是“PRIVMSG”命令。这个命令会要求bot执行一些恶意操作,比如,flooding,下载文件,telnet扫描等。通过“PRIVMSG”发送的命令也是以静态阵列的形式呈现。
图10-可用的bot命令
大部分的功能都是来自Linux/Tsunami和Linux/Gafgyt。二进制中的下列字符串与恶意行为有关。这些详细的介绍,能让我们知道这些字符串的作用。
图11-flooding功能
图12-Telnet扫描,下载文件,杀掉其他bots
0x06 内置downloader
我们前面提到过,Linux/Remaiten 的特别之处在于携带了多个小型的downloader,如果有符合受害设备架构的版本,木马就会把相应的downloader传输到设备上。在执行时,downloader会联系CC,请求一个bot二进制。
图13-内置的有效载荷
图14-有效载荷结构
0x07 Telnet scanner
图15-猜测telnet登录凭证
当CC发出“QTELNET” 命令时,Remaiten的telnet scanner就会启动。分析发现,木马作者提供的命令描述是正确的:这个telnet的确是一个增强版的Gafgyt telnet scanner。
Telnet扫描是分阶段完成的,可以归结为:
选择一个随机的公共IP地址,并将其连接到端口23
尝试用户名/密码组着
确定受害设备的架构
发送并执行相应的downloader
木马会通过执行“cat $SHELL”命令来判断设备的架构,并解析其结果。SHELL环境变量中包含有可执行文件的路径,这个可执行文件目前还是作为一个命令行翻译器。如果这个文件是一个ELF可执行文件,则解析文件标头来判断其架构。
图16-判断受害平台&检查是否有适合该平台的downloader
图17-负责解析ELF标头的部分函数
然后,bot会选择合适的有效载荷并发送到新的受害设备上。
图18-负责根据设备架构选择有效载荷的函数
第一步是找到一个可写入的目录。Linux/Remaiten中有一个常用的可写入路径表。
图19-downloader的保存目录
创建了几个空的可执行程序:“.t”,“retrieve”和“binary”。“retrieve”文件中会包含有downloader,“binary”是从CC服务器上请求到的bot。似乎2.2版本之前都没有使用“.t”文件。
图20-准备传输和执行有效载荷
Linux/Remaiten 采用了一种很奇怪的方式来创建空的可执行文件:木马会复制busybox二进制(出现在大多数嵌入式设备上),然后使用>file命令做空这个二进制。
downloader是通过telnet传输的,通过发出echo命令,每个字节都编码了16进制“\x” 转序字节。我们此前就见过有木马利用这种技术在嵌入式Linux设备中进行传播,比如Linux/Moose。
图21-传输带有echo的有效载荷hexstring
传输完成后,downloader就会启动并获取完整的Linux/Remaiten有效载荷。downloader会从CC请求一个bot二进制,并将其写入到标准输出,而部署命令会把这个输出重定向到“binary” 文件。最后,启动“binary”文件,激活新的IRC bot。
图22-执行downloader和bot
0x08 向CC发送状态
在恢复telnet扫描之前,bot会向CC服务器报告其进度。bot会发送新的设备IP,正确的用户名/密码,以及是否感染了其他设备。如果自动感染方式失败,僵尸网络管理员可能会手动感染其他的设备或从不受支持的架构上收集数据?
图23-通知CC服务器bot部署状态
0x09 杀掉其他bot
还有一个很有趣的命令是“KILLBOTS”。发出这个命令后,bot会枚举正在运行的进程,然后会根据一定的标准,主要是进程名称,来决定是忽略还是杀掉这个进程。不同版本的bot可能会选择不同的进程名称。
图25-需要忽略的进程名称
Linux/Remaiten会根据进程的tty设备号,只杀掉由一个交互shell启动的进程。另外,木马还会向CC服务器报告都杀掉了哪些进程,这样所或许是为了修改其进程白名单或黑名单。
图26-bot正在杀进程
0x0A Linux/Remaiten变更日志
不同的bot客户端版本之间只是稍有不同,比如,修改进程白名单和黑名单,downloader目录有变化等等。我们有理由怀疑,各个编译版本之间可能会有区别,即使版本号没有变化。在我们分析过的bot中,其downloader二进制都是一样的,但是IP地址和端口有差别。
和Gafgyt一样,v2.2版本仍然会通过执行wget/tftp命令来下载shell脚本,然后,由这个shell脚本下载bot二进制。在传输downloader之前,传播代码首先会尝试这种方法。
图27-通知CC通过wget/tftp部署bot
shell脚本是由另一个服务器发布的,这个服务器还会负责发送Gafgyt bot。
图28-由另一个服务器发布shell脚本
从al.sh文件来看,这是我们首次发现针对PowerPC和SuperH等平台的bot。虽然,有跨平台编译工具,但是,我们还是很惊讶攻击者会在编译自己的木马时遇到问题。我们不清楚是哪台设备运行在PowerPC或SuperH。
图29-shell脚本下载的bot
图30-shell脚本的开头
2.0版本使用的CC服务器给出了一条出乎我们预料的welcome信息:其中引用了一篇MalwareMustDie博客。
图31-2.0版本的CC引用了MalwareMustDie博客
或许这是为了报复MalwareMustDie 曝光Gafgyt等木马。
Remaiten-一个以路由器和IoT设备为目标的Linux bot的更多相关文章
- IoT 设备通信安全讨论
IoT 设备通信安全讨论 作者:360CERT 0x00 序言 IoT 设备日益增多的今天,以及智能家居这一话题愈发火热,智能家居市场正在飞速的壮大和发展,无数 IoT 设备正在从影片中不断的走向用户 ...
- 安天透过北美DDoS事件解读IoT设备安全——Mirai的主要感染对象是linux物联网设备,包括:路由器、网络摄像头、DVR设备,入侵主要通过telnet端口进行流行密码档暴力破解,或默认密码登陆,下载DDoS功能的bot,运行控制物联网设备
安天透过北美DDoS事件解读IoT设备安全 安天安全研究与应急处理中心(安天CERT)在北京时间10月22日下午启动高等级分析流程,针对美国东海岸DNS服务商Dyn遭遇DDoS攻击事件进行了跟进分析. ...
- 省钱版----查找 IoT 设备TTL线序__未完待续
作者:仙果 原文来自:省钱版—-查找 IoT 设备TTL线序 省钱版----查找 IoT 设备TTL线序__未完待续 缘由 在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能 ...
- IoT设备程序开发及编译环境搭建初体验
引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...
- IoT设备上的恶意软件——通过漏洞、弱密码渗透
2018年,是 IoT 高速发展的一年,从空调到电灯,从打印机到智能电视,从路由器到监控摄像头统统都开始上网.随着5G网络的发展,我们身边的 IoT 设备会越来越多.与此同时,IoT 的安全问题也慢慢 ...
- IOT设备SmartConfig实现
一般情况下,IOT设备(针对wifi设备)在智能化过程中需要连接到家庭路由.但在此之前,需要将wifi信息(通常是ssid和password,即名字和密码)发给设备,这一步骤被称为配网.移动设备如An ...
- Win10 IoT C#开发 5 - 操作 IoT 设备内嵌 SQLite 数据库 CURD
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 前几章我 ...
- [置顶] 如何把你的笔记本电脑变成一个Wi-Fi路由器在Windows 7 & 8?
翻译自:http://www.hakanakdag.net/windows/how-to-create-wireless-ad-hoc-internet-connection-in-windows-8 ...
- 操作 IoT 设备内嵌 SQLite
Win10 IoT C#开发 5 - 操作 IoT 设备内嵌 SQLite 数据库 CURD Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本 ...
随机推荐
- BZOJ1251序列终结者——非旋转treap
题目描述 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技 ...
- Ubuntu 安装 hadoop
安装完Linux后,我们继续(VMWare 安装 Linux http://blog.csdn.net/hanjun0612/article/details/55095955) 这里我们开始学习安装 ...
- 7种JVM垃圾收集器特点,优劣势、及使用场景
今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 一.常见的垃圾收集器有3类 1.新生代的收集器包括 Serial PraNew Pa ...
- Python爬虫:HTTP协议、Requests库
HTTP协议: HTTP(Hypertext Transfer Protocol):即超文本传输协议.URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源. HTTP协议 ...
- 【bzoj3876】 Ahoi2014—支线剧情
http://www.lydsy.com/JudgeOnline/problem.php?id=3876 (题目链接) 题意 给出一张拓扑图,每条边有一个权值,问每次从1号点出发,走遍所有的边所需要的 ...
- 牛客练习赛40 C 小A与欧拉路(树的直径)
链接:https://ac.nowcoder.com/acm/contest/369/C 题目描述 小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边连接的两个点 ...
- Android log 方法
package test; public abstract class Logger { private static Class<? extends Logger> mLoggerCla ...
- A1092. To Buy or Not to Buy
Eva would like to make a string of beads with her favorite colors so she went to a small shop to buy ...
- 在Windows上部署dubbo-admin(监控中心)
在Windows上部署dubbo-admin(监控中心) 2018年11月12日 22:45:13 zzz_er 阅读数:1004 标签: dubbo 更多 个人分类: dubbo 版权声明:本文 ...
- tomcat在Debug模式下无法启动解决办法
环境:eclipse,JDK1.6,tomcat6.0 问题:在server中正常启动tomcat是没问题的,javaweb项目也可正常访问,使用debug模式启动的话速度特别慢(好像一直处于那种启动 ...