XorDDoS僵尸网络家族从
2014
年一直存活至今,因其解密方法大量使用
Xor
而被命名为
XorDDoS
,该
僵尸网络
家族目前活跃程度仍旧较高,主要是攻击者对其
C2一直
持续
进行
更新,下图是深信服云脑中对
XorDDoS
网络请求趋势分析,从访问情况来看较为稳定。
下图为该僵尸网络家族在国内的感染分布图,可以看到主要存在广东以及江浙一带。
深信服安全团队对XorDDos家族的防护原理进行详细分析,并对其做清除处理。主要进程的执行流程如下:
cron.hourly下的bash文件,其中包含了其比较明显的特征名称,曾经出现过以下几种(可能还有更多)
-
/etc/cron.hourly/udev.sh => cp /lib/libgcc4.so /lib/libgcc4.4.so
-
/etc/cron.hourly/gcc.sh => cp /lib/libudev.so /lib/libudev.so.6
-
/etc/cron.hourly/gcc4.sh => cp /lib/libudev4.so /lib/libudev4.so.6
-
/etc/cron.hourly/cron.sh => cp /lib/udev/dev /lib/udev/debug (rootkit 版本, /proc/rs_dev)
解密daemonname子串,解密部分其他文章已经做了很详细的分析,解密字符串如下:
然后会执行daemon(1,0)创建守护进程,守护进程的描述如下:
接下来它会对进程的参数数量做检查,主要包括对2个和
3
个参数的处理。
如果只有一个参数,会对当前运行文件的路径与/usr/bin/、
/bin
、
/tmp
目录做对比,如果不在上述任意一个目录,会进行创建
/usr/bin
、
/bin
、
/tmp
、
/lib
、
/var/run
目录,拷贝文件到
/lib/libudev4.so(
这只是其中一个变种
)
,然后拷贝自身到
/usr/bin
、
/bin
、
/tmp
下面任意一个目录
(
名称为
10
个小写字母随机名,一个成功就不会拷贝到其他目录
)
,并且变换
md5,
执行该文件。
这里的LinuxExec实际是
dobulefork
来创建子进程,然后再次调用
execvp来
创建一个新进程
(2
个参数)。
接下来就会删除当前运行的进程的自身文件。
当进程是运行在/usr/bin、
/bin
、
/tmp
任意一个目录下的,则会先获取共享内存,获取共享内存成功当前的进程
pid
写入共享内存。
然后转到添加服务,这里就是各种启动项以及定时任务。
生成一个随机ID,从之前的
daemonname
中随机挑选一个,然后将这个
daemonname
放到进程环境变量
argv
中,就会在系统中将本进程的名称改变,达到迷惑的作用。
接下来创建一个daemon_process线程,该线程会检测
/var/run/xxx.pid
文件;
/lib
目录下的母体文件,没有检测到母体文件就重新拷贝一份;检测当前进程的文件是否还存在,不存在则将当前进程杀死
(
这里是一个
bug
点,后续对清除有很大作用
)
。
daemon_process进程详细如下:
继续删除自身文件,重新创建文件和进程,这就是XorDDos进程终止后会被重新拉起的原因。
XorDDoS的rootkit模块来源于https://github.com/mncoppola/suterusu项目,但在实际环境中,该模块的安装函数并没有执行,因此未能成功安装。
|
从分析中知道,会有一个daemon_process线程对文件状态进行检测,文件不存在就将进程杀死,所以在将恶意启动项、定时任务等清除以后,使用
chattr
对
xorddos
涉及到的几个目录加锁,然后病毒进程就会自动终止,之后再将被加锁的文件夹恢复。
深信服为广大用户免费提供查杀脚本:
https://edr.sangfor.com.cn/api/download/chk_cln_xorddos.zip