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进程终止后会被重新拉起的原因。
rootkit版本
从分析中知道,会有一个daemon_process线程对文件状态进行检测,文件不存在就将进程杀死,所以在将恶意启动项、定时任务等清除以后,使用chattr对xorddos涉及到的几个目录加锁,然后病毒进程就会自动终止,之后再将被加锁的文件夹恢复。