DDoS木马 - Tsunami家族样本分析
2022-11-6 14:49:3 Author: 安全狗的自我修养(查看原文) 阅读量:12 收藏

样本运行平台为linux系统,作为僵尸网络节点进行DDoS攻击。
连接IRC服务器,通过互联网中继聊天接收指令,能够完成聊天服务器相关的聊天室配置、身份配置、状态反馈等聊天功能,通过解析消息获取攻击类型与攻击目标,完成DDoS攻击。

样本属于Tsunami家族,DDoS攻击程序,活跃时间为2013年至今。该家族使用的攻击手段包括TCP、UDP、DNS泛洪攻击。
目前发现样本相关的源码已经公开在网络,适合分析者研究学习https://github.com/Soldie/COLE-O-botnets/blob/aec534acbf9789451f009129efaa1ec760973e2e/VirusPack/f34c5c27b.c

3.1 ELF文件头


文件头信息

3.2     僵尸网络

样本作为“僵尸网络”中的“肉鸡”,执行逻辑如下。
A、根据Time、PPID生成客户端标识ID。
B、连接IRC服务器加入聊天频道
C、接收聊天消息,检查消息,执行指令。

服务器地址、端口
     通过解析通讯流量,其通讯数据各字段含义见下图:


通讯流量
     聊天协议包含的指令,以及对应的聊天室功能见下表:

指令

功能

352

设置一个假ip

376

加入特定频道,查找匹配的mac地址

433

用“/usr/dict/words”目录下的文件内容做别名

422

同367,加入特定频道

PRIVMSG

接收irc命令,访问/usr/bin/xxh的目录下有没有SSH相关进程,如果有的话就关掉;从这里面进入ddos僵尸网络攻击

PING

发送PONG指令,用户的登陆与结束

JOIN

加入频道

KICK

加入服务器对应的频道

NICK

取别名

聊天协议

3.3     DDoS攻击

样本提供了四种攻击方式,攻击对应与指令见下表。

指令

功能

Tsunami

ACK FLOOD攻击

Pan

SYN FLOOD攻击

Dos

UDP FLOOD攻击

Unknown

垃圾数据包

除发送垃圾数据包外,其余攻击方式均伪造假的数据封包,欺骗目标系统调用资源处理数据包。详细分析见下文逆向细节。

指令

描述

SPOOFS

设定IP范围

DISABLE

判断密码是否输入正确

ENABLE

恢复客户端的能力

GET

url拼接,获取cpu架构,该程序只在i686和x86系统上运行,设置可接收的文件格式,接收上线地址发来的数据,从80端口联网接受浏览器的请求下载指定木马文件

VERSION

返回后门版本

BYEBYEALL

关闭对客户端的ddos攻击

IRC

将指定的irc指令发送到服务器

CHGSERV

更改服务器

Help

显示可用指令列表

NICK

取别名

GETSPOOFS

获取欺骗参数

ENABLE

判断密码是否输入正确

DDoS攻击的相关设定指令

3.4.    溯源分析

3.4.1  CC检索

公开情报显示:该样本连接的IRC服务器地址关联到恶意软件、远控、挖矿木马、Tsunami泛洪等标签。

CC情报

3.4.2  哈希检索

在线恶意软件扫描网站VirusTotal提供的各大杀毒引擎扫描结果显示:有15家杀软引擎反馈为恶意程序。

hash扫描结果s3.5 逆向细节3.5.1  muma基本信息

ELF文件基本信息

脱壳后ELF文件信息
3.5.2 连接前的准备工作打开并锁定文件/temp/.ssh,该文件样本未提供。锁定使子进程可以访问该文件资源。当前进程为子进程,则创建复制一个自身的子进程。

创建子进程
将时间与进程id组合,创建随机字符串,赋值生成随机的用户信息。

生成随机用户信息
3.5.3 服务端通讯建立循环:连接聊天服务器,发送上线消息。

样本预设了2个服务端地址和7个端口号,每次连接随机选取地址和端口,见下图。

子循环:检查每次连接的时间间隔,设置随机端口,连接服务端。

监听socket:

监听到socket返回数据,接收buffer,逐行读取指令,指令比对函数名称,调用对应函数:

3.5.4 聊天协议函数

函数引用位置
函数名称与地址数组见下图:

指令与对应函数地址
3.5.4.1 函数352实现操作:生成一个被打乱ip地址

校验nick

获取ip地址

IP地址转换失败,解析主机失败,返回

ip转换整型成功或者解析成功,则打乱ip并保存
3.5.4.1 函数376、422实现操作:发送上线消息。

发送消息
3.5.4.3 函数433实现操作:生成昵称

重新生成nick
3.5.4.4 函数PRIVMSG解析传入的服务端回复数据reponse,得到需要执行指令名称,去比对功能函数表并执行。

指令与功能函数上图中,包含有四个DDOS攻击指令:Tsunami,Pan,Dos,UnKnown。以及远控相关指令。下面主要分析DDOS攻击功能。
3.5.5 DDOS攻击功能3.5.5.1 ACK-PUSH泛洪攻击攻击流程:以非常高的速率发送假的的ACK-PUSH数据包,该包不属于被攻击目标防火墙上的现有会话或者路径上的设备,在状态表中生成不必要的查找,消耗额外的系统资源。

 设置攻击目标与时长

构造并循环发送TCP-ack包
3.5.5.2 SYN泛洪攻击SYN 泛洪攻击利用TCP的三次握手过程,用SYN淹没目标系统上的多个TCP端口,请求在源系统和目标系统之间启动连接的消息。被攻击目标系统对接收到的每个SYN消息用SYN-ACK消息进行响应,并临时打开一个端等待来自源的最终ACK消息以响应每个SYN-ACK消息。 攻击者从未发送最终的ACK,因此连接无法完成。临时连接最终将超时并被关闭,但在此之前,目标系统将会被其状态表中积累的大量不完整连接淹没。

构建syn包

构建syn包,循环发送
3.5.5.3 UDP碎片攻击UDP碎片攻击,发送较大的UDP数据包(1500字节),消耗更多的网络带宽。由于碎片包通常无法重新组装,因此它们消耗了设备上的大量资源。

构造udp包发送
3.5.5.3 碎片数据攻击攻击流程:高频率发送较大的碎片数据(0x2400)至目标服务器的随机端口,该攻击方式效率比较低。

发送碎片数据
四、样本特征4.1 IOC

File MD5

cf6cb25624874424af47011a7dd131b4

File SHA1

1d0d2de612c473fc4c75ed5d61952f8e4ad7384c

File SHA256

6f14afb14e198fc36ff839b09077edb2fb5a55dc9c29c9edcd59075d48255332

Host

pwn.pwndns.pw

ip

168.235.95.104

4.2  Yara
rule muma_unpack {   meta:      description = "Tsunami:RAT&DDOS_BOT"      muma_unpack_hash1 = "4410b1cd507926071378c0c470fa98aff12ed4b59ec00766fef8847c72397c26"      muma_hash1 = "6f14afb14e198fc36ff839b09077edb2fb5a55dc9c29c9edcd59075d48255332"   strings:      $x1 = "NOTICE %s :PAN  = An advanced syn flooder that will kill most network drivers" fullword ascii      $x2 = "NOTICE %s :SH = Executes a command" fullword ascii      $x3 = "NOTICE %s :GET = Downloads a file off the web and saves it onto the hd" fullword ascii      $x4 = "NOTICE %s :UDP = A udp flooder" fullword ascii      $x5 = "NOTICE %s :UNKNOWN = Another non-spoof udp flooder" fullword ascii      $s6 = "NOTICE %s :TSUNAMI  = Special packeter that wont be blocked by most firewalls" fullword ascii      $s7 = "NOTICE %s :PAN   " fullword ascii      $s8 = "NOTICE %s :UDP   " fullword ascii      $s9 = "User-Agent: Mozilla/4.75 [en] (X11; U; Linux 2.2.16-3 i686)" fullword ascii      $s10 = "src/process/execve.c" fullword ascii      $s11 = "NOTICE %s :UNKNOWN" fullword ascii      $s12 = "NOTICE %s :TSUNAMI" fullword ascii      $s13 = "NOTICE %s :IRC  = Sends this command to the server" fullword ascii      $s14 = "src/process/posix_spawn_file_actions_adddup2.c" fullword ascii      $s15 = "src/process/posix_spawn_file_actions_destroy.c" fullword ascii      $s16 = "src/process/posix_spawn_file_actions_init.c" fullword ascii      $s17 = "NOTICE %s :Spoofs: %d.%d.%d.%d - %d.%d.%d.%d" fullword ascii      $s18 = "NOTICE %s :Password too long! > 254" fullword ascii      $s19 = "NOTICE %s :Password correct." fullword ascii      $s20 = "src/process/posix_spawn.c" fullword ascii      $y1 = "gent.Mozilla/4.75" fullword ascii      $y2 = "PROT_EXEC|PROT_WRITE failed." fullword ascii      $y3 = "Id: UPX 3.95 Copyright (C) 1996-2018 the UPX Team. All Rights Reserved. $" fullword ascii      $y4 = "NOTICE %s :Unable to comply." fullword ascii      $y5 = "Q USERID" fullword ascii      $y6 = "ooo.User" fullword ascii      $y7 = "KILL  " fullword ascii      $y8 = "no- wi&-FbZ" fullword ascii      $y9 = "" fullword ascii      $y10 = ",7V{ -" fullword ascii      $y11 = "? -[Bo&" fullword ascii      $y12 = "O9/JHTTP/1.0" fullword ascii      $y13 = "liheek" fullword ascii      $y14 = "assifyl" fullword ascii      $y15 = "DEH_FRAME_" fullword ascii      $y16 = "%HTF%3" fullword ascii      $y17 = "toupbr" fullword ascii      $y18 = "%DKz%H" fullword ascii      $y19 = "uvbful" fullword ascii      $y20 = "1-2%S " fullword ascii
condition:( uint16(0) == 0x457f and filesize < 2000KB and ( 1 of (x*) and 4 of (s*) ) ) or( uint16(0) == 0x457f and filesize < 600KB and ( 8 of (y*) ) ) or ( all of them )}

文章来源: http://mp.weixin.qq.com/s?__biz=MzkwOTE5MDY5NA==&mid=2247486198&idx=1&sn=a5d01105188fcc8d1bf010ad95637578&chksm=c13f39bff648b0a987dd0afb48a056d62bc4483787b2a226fa02d71fead9d5fd34a63b9e064e#rd
如有侵权请联系:admin#unsafe.sh