文章目录
先进的传播方式
1、历史样本
2、本次样本
下载者技术分析
下载者是一个比较小的ELF可执行文件,当在受害者设备上运行后,会向C&C服务器发送如下指令(主要是CPU架构):
- mips
- mipsel
- armeabi
- armebeabi
C&C服务器会根据客户端的请求返回指定CPU架构的BOT文件(ELF格式)。如下图:
这里分析的环境是mips架构的,下载者会下载mips架构的BOT,并在控制台输出相关的信息。
BOT行为分析
BOT在默认情况下会以后台服务的形式启动,一旦启动,程序会将自己的名字更改为看起来比较合法的名字(在2.0和2.1版本中使用“-bash”,2.2版本中使用“-sh”)。
接下来运行的create_daemon函数将会在预定义的目录(在预定义目录列表中第一个拥有写入权限的目录)中创建一个名为“.kpid”的文件,将其PID写入到该文件中:
如果名为“.kpid”的文件存在,则会结束“.kpid”文件中指定PID的进程实例,然后创建一个新的进程实例继续运行,并将其PID写入到“.kpid”文件中。
连接到C&C服务器
服务器的地址列表和端口是被硬编码在二进制文件中,BOT会随机选取一个服务器地址,连接指定的端口。
当成功连接到C&C服务器后,BOT则会监测IRC(Internet Relay Chat:互联网中继通讯)通道的存在,C&C服务器会返回欢迎信息以及相关的指令码,由受影响设备上的BOT解析与处理。
IRC命令处理
BOT可以响应多种IRC命令,这些命令的处理被保存在一个数组中。
这里需要关注的是“PRIVMSG”命令,因为它被用于执行具有威胁的动作,例如洪水攻击、下载文件、远程登录扫描等,这些命令被保存在静态数组中。
在样本文件中静态存储着对威胁命令的解释字符串,可以帮助理解。
嵌入的下载者
样本中包含多个CPU架构的轻量级下载者,可以向受害设备上传与其CPU架构相符的下载者,并运行,由下载者从C&C服务器下载BOT的二进制样本。
Telnet扫描
C&C发送“QTELNET”命令后,BOT便开始进行Telnet扫描,可归结为如下阶段进行:
- 随机选取一个公网的IP地址,并连接到端口23。
- 尝试使用用户名和密码组合进行账户猜解。
- 获取受害设备的CPU架构。
- 发送并执行正确的下载者。
目标CPU架构是通过在命令行执行“cat $SHELL”($SHEL指向为目标系统的执行文件),获取文件内容,然后根据ELF文件结构解析得出。
之后,BOT根据设备的CPU架构选择有效载荷。
样本会在“/dev/netslink/”、“/var/tmp/”、“/tmp/”、“/”、“/home/”中选择一个可写入的目录中创建几个空的可执行文件,文件名分别为“.t”、 “retrieve”和 “binary”。“retrieve”文件中将会被写入下载者,“binary”文件中将会被写入从C&C下载的BOT二进制文件,目前版本“.t”文件没有使用。
样本创建空的可执行文件的方式如下:
1) 复制busybox文件到指定文件。
2) 通过>file命令清空文件。
样本通过在Telnet上回显十六进制编码字符串序列的方式将下载者写入到嵌入式设备制定的文件中(retrieve)。
传输完下载者后,样本运行下载者,并通过下载者回显方式将BOT文件的内容写入到“binary”文件,最后执行BOT实例。
向C&C发送当前状态
在进行Telnet扫描过程中,BOT会向C&C服务器发送当前的扫描进度,以及新发现的设备IP,用户名和口令,以及是否已经被感染,方便管理员对设备进行管理。
杀死其他BOT
还有一个命令很重要,为“KILLBOTS”,BOT会枚举正在运行的实例,并根据相关条件决定是否应该结束,主要和进程名称有关(不同的版本,名称可能有所不同)。
样本仅会杀死通过僵死的shell创建的进程,并会将进程名发送给服务器,以便服务器可以通过黑白名单进行管理。
总结
通过分析发现此样本的适应范围非常广,涉及到所有的平台,有可能也会波及到IOT设备,其使用了独特的方式进行传播与扩散,同时具备了比较先进的可管理功能。针对此种恶意软件,安全的监测与部署方式进行相应的改进。
附件
BOT样本
Version 2.0
Version 2.1
Version 2.2
下载者样本
Version 2.0
Version 2.1
Version 2.2
C&C通讯
参考来源:
Meet Remaiten – a Linux bot on steroids targeting routers and potentially other IoT devices
转自绿盟科技博客: 原文链接.