一起僵尸网络进行大规模DDoS攻击的样本分析

一、背景

最近突然发现服务器出现流量异常,十分卡顿,通过top命令查看内存使用情况,发现可疑的进程:

通过kill -9 pid(116218)命令杀掉后又启动新的进程,名字更换了:

查看etc/crontab定时任务发现定时任务/3 * root etc/cron.hourly/gcc.sh,每3分钟执行一次以下脚本:

查看gcc.sh脚本,可以看到脚本内容,该脚本的功能是打开网卡,然后启动libudev.so,并启动多个进程来监控libudev.so进程是否被查杀,如果被杀掉了,会再次拷贝libudev.so执行,而且每次启动都会更换进程名,给查杀带来了难度。

二、样本介绍

样本基本信息:

样本名称

libudev.so

样本类型

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped

样本大小

662840

MD5

7d44757d809641646e02ab76ed93ede8

SHA256

0972688711161e347d08ce1c931eb41904fc6f4e4764548e1f14da132a0d1b5d

传播方式

SSH爆破,远程下载执行

所属家族

XorDDoS

三、详细分析

i3306m样本运行后,首先通过get_self调用readlink来获取当前样本的运行路径:

该样本内置了一个XOR加解密算法,对字符串进行解密:

XOR解密密钥为“B2FA36AAA9541F0”:

通过IDA动态调试监听参数a1,获取解密字符串:

解密的字符串如下,http://www.s9xk32c.com/config.rar为配置文件:

解密出来的linux系统命令如下,这些字符串会在后面用于创建文件、拷贝文件盒系统命令等:

DelService()函数的功能是删除病毒自启动服务,并且删除/etc/rc.d/ 的S90文件都是指向/etc/init.d/里的启动脚本的软链接,从rc1.d一直到rc5.d。

创建/usr/bin/,/bin/,/tmp/三个目录。

在之前解密出的系统路径/usr/bin/,/bin/,/tmp/下复制自身并执行,并通过在尾部添加10个随机字符的方式,使得自身的hash值每次都不同,用于对抗检查hash值这一类的扫描。

AddService()函数代码尝试将自身作为服务写入到系统启动目录下,使每次样本都能随着系统自启动。

远程服务器上下载的gcc.sh脚本,写入本地crontab,作为定时任务执行,每3分钟检测程序是否运行,如果不存在就继续执行拷贝并运行。

样本自身还携带了一个rootkit模块,通过HidePidPort、HideFile对端口、文件进行隐藏。

然后创建3个线程,分别执行不同的任务:

kill_process线程的功能是监听配置文件config.rar是否下载成功,如果下载完成,读取每行的内容,根据判断条件对相应进程进行查杀。

tcp_thread线程的功能是获取受控主机的信息,然后发送回来:

daemon_get_kill_process线程的功能是通过http_download_mem()函数下载配置文件kill_cfg,然后解密配置文件,休眠1800s,继续执行该操作:

在tcp_thread线程中,有一个exec_packet函数,控制肉鸡向目标主机发起DDoS攻击,更具不同的参数设置,可以控制肉鸡进行各种威胁操作,包括创建多个线程发起DDoS攻击,下载恶意脚本并执行,发送恶意信息到指定服务器等操作。

样本更新:

四、处理以及加固措施

病毒查杀脚本和加固方法如下:

*本文原创作者:Sampson,本文属于FreeBuf原创奖励计划,未经许可禁止转载

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2019-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券