1、样本功能
“XOR.DDoS”木马一款经典的linux dos木马,该木马能够感染32位和64位的Linux系统,通过安装rootkit来隐藏自身,并可通过DDoS攻击形成僵尸网络,该木马首次曝光是在2014年,时隔这么多年该木马依然盛行。
2、样本信息
样本名称
0972688711161e347d08ce1c931eb41904fc6f4e4764548e1f14da132a0d1b5d
样本类型
ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
样本大小
662840
MD5
7d44757d809641646e02ab76ed93ede8
SHA1
332f38022f433a472dc5aa6683c9b9ccccf46e0d
SHA256
0972688711161e347d08ce1c931eb41904fc6f4e4764548e1f14da132a0d1b5d
SSDeep
12288:RBRO1UmJJ0nHgBL9YfJip2qm+x4h1TonHp6y07l7mtBDvnD/u9hMHDB:RBRpmJ+HyL9AiAqm+x4h1mH6wvnDWXMN
3、动态分析
1、查看该病毒类型
2、网络连接行为
运行后,通过netstat执行发现,存在一条 103.115.42.70的请求记录,该ip地址归属地为香港
3、top查看系统进程,发现该异常异常,但是该名称会随机发生变化,每当执行kill会,会有进程名称启动
3.1样本静态分析
1、通过readlink读取程序的当前路径
调用readlink函数,在函数中调用传入的filename参数,即/proc/self/exe
备注:readlink定义函数:ssize_t readlink(const char path, char buf, size_t bufsiz);readlink()会将参数path的 符号链接内容存储到参数buf所指的内存空间,linux系统中有个符号链接:/proc/self/exe 它代表当前程序,所以可以用readlink读取它的源路径就可以获取当前程序的绝对路径。具体用法如下
#include <unistd.h>
#include <stdio.h>
int main(int argc , char* argv[])
{
char buf[1024] = { 0 };
int n;
n = readlink("/proc/self/exe" , buf , sizeof(buf));
if( n > 0 && n < sizeof(buf))
{
printf("%s\n" , buf);
}
}
2、调用dec_conf函数解密字符串<br />对main函数进行进一步分析发现,会调用大量dec_conf函数对字符串进行解密
跟进dec_conf函数发现,系统主要是利用encrypt_code函数进行解密
获取xorkeys为BB2FA36AAA9541F0
可利用脚本对加密后的参数进行解密
key="BB2FA36AAA9541F0"
pwd=["m4S4nAC/nA","m4S4nAC/n2_AD","m.[$nFR$7nLQQGF",">#S' RW X\x1BFTp\a&#Ah\"\\[{ty","*6F6{"]
result=list()
#pwd为密文
def canshu(aa):
result = list()
for i in range(len(aa)):
result.append(chr(ord(aa[i])^ord(key[i % len(key)])))
result=''.join(result)
print(result)
for i in range(len(pwd)):
canshu(aa=pwd[i])
3、样本自我复制与删除
通过分析main函数发现,当传入参数argc为2时,样本会自动进行删除
样本进行自我复制,复制到lib/udev/udev目录下
4、设置自启动以及定时任务
AddService函数设置病毒为系统服务并随系统启动而启动
写入本地crontab,作为定时任务执行,每3分钟执行一次cron.sh
cron.sh具体内容如下
5、样本通信
样本a在ddservice函数实现自启动,在函数decrypt_remotestr解密服务器的ip地址,最后开启两个线程调用tcp_thread实现和服务器的通信,并且自身含有rootkit模块,通过HidePidPort、HideFile对端口、文件进行隐藏
tcp_thread线程会依次获取计算机的内核版本,处理器,cpu核数,时钟频率,key,static
daemondown函数,设置dns通信地址103.25.9.229,并访问url下载数据包,该数据包中包含的用于控制肉鸡进行ddos指令的命令等,再次调用pthread_create,向目标主机发起dos攻击
4、加固措施
1、首先利用kill -stop pid 挂起父进程;
2、删除/lib/udev/ 下的udev 和/lib/libedev.so;
3、删除/etc/cron.hourly下的cron.sh,删除crontab定时任务
4、删除etc/init.d下的系统启动项;
5、杀掉挂起的父进程。
参考链接: