22

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

 4 years ago
source link: https://www.tuicool.com/articles/Qjyquqb
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

一、背景

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

zEvM3qi.jpg!web

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

eimA3yI.jpg!web

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

ZZ36naN.jpg!web

查看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来获取当前样本的运行路径:

QvaYBzN.jpg!web

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

yIZfQ3m.jpg!web XOR解密密钥为“B2FA36AAA9541F0”:

3EBZnyR.jpg!web

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

JnMRvma.jpg!web

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

Bzay2e7.jpg!web

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

Aze2Mvq.jpg!web

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

Vbq6jyJ.jpg!web

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

fYRjEbQ.jpg!web

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

6RvIz23.jpg!web

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

VVBBFbZ.jpg!web

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

aQBvIju.jpg!web

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

UBjUbqv.jpg!web

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

3q6JV3B.jpg!web

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

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

q6RFRb7.jpg!web

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

beeaumM.jpg!web

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

AZb2AzR.jpg!web

样本更新:

vuU36bE.jpg!web

四、处理以及加固措施

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

nmqQBrv.jpg!web

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK