分享
 
 
 

DDoS攻击工具――TribeFloodNetwork分析(1)

王朝other·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

简 介

--------

本文是对德国著名黑客Mixter编写的分布式拒绝服务攻击工具——"Tribe Flood Network(TFN)"的技术性分析。TFN与另一个分布式拒绝服务攻击工具"Trinoo"相似,都在互联网的大量Unix系统中开发和测试。

TFN由客户端程序和守护程序组成。通过提供绑定到TCP端口的root shell控制,实施ICMP flood、SYN flood、UDP flood和Smurf等多种拒绝服务的分布式网络攻击。

TFN守护程序的二进制代码包最初是在一些Solaris 2.x主机中发现的,这些主机是被攻击者利用RPC服务安全漏洞"statd"、"cmsd"和"ttdbserverd"入侵的。关于这些漏洞的详细资料请参阅CERT事件记录99-04:

http://www.cert.org/incident_notes/IN-99-04.html

最初的TFN守护程序来源于一些远程嗅探器(sniffer)和有访问控制的远程命令shell,并可能结合了能自动记录的嗅探器(sniffer)。

在研究这个工具包的过程中,捕获到了TFN攻击网络的安装过程及一些源代码。我们就是利用这些捕获到的源代码(根据Makefile,版本为"version 1.3 build 0053")和已编译的TFN守护程序二进制代码进入了深入的分析。

对这些源代码的任何修改,如提示、口令、命令、TCP/UDP端口号或所支持的攻击方法、签名和具体功能,都可能使分析的结果与本文不同。

该守护程序是在Solaris 2.x和Red Hat Linux 6.0上编译并运行。主服务器 (master) 在Red Hat Linux 6.0上编译和运行。但也许守护程序和主服务器都可在其它同类平台中使用。

关于这种分布式拒绝服务攻击网络的初始入侵和安装配置过程的分析,请参阅对Trinoo工具的分析。

攻击目标

------------------------------------------------------------

TFN网络由TFN客户端程序("tribe.c")和TFN守护程序("td.c")组成。一个典型的TFN网络结构如下:

+----------+ +----------+

| 攻击者 | | 攻击者 |

+----------+ +----------+

| |

. . . --+------+---------------+------+----------------+-- . . .

| | |

| | |

+----------+ +----------+ +----------+

| 客户端 | | 客户端 | | 客户端 |

+----------+ +----------+ +----------+

| | |

| | |

. . . ---+------+-----+------------+---+--------+------------+-+-- . . .

| | | | |

| | | | |

+--------+ +--------+ +--------+ +--------+ +--------+

|守护程序| |守护程序| |守护程序| |守护程序| |守护程序|

+--------+ +--------+ +--------+ +--------+ +--------+

攻击者常常控制一个或多个TFN客户端,而每一个TFN客户端能控制多个TFN"守护程序"。所有接收到来自TFN客户端攻击指令的TFN守护程序都使用攻击数据包同时攻击一个或多个目标主机系统。

通 讯

--------

TFN网络的远程控制通过TFN客户端程序命令行的执行来实现。命令的执行可通过多种连接方法完成(如:绑定到TCP端口的远程shell,基于UDP的客户/服务器远程shell,基于ICMP的客户/服务器远程shell,SSH终端会话,或普通的"telnet"TCP终端会话等)。

TFN客户端程序的运行无需口令,但需要有TFN守护程序端的IP列表文件"iplist"。

从TFN客户端到TFN守护程序端的通讯通过ICMP_ECHOREPLY数据包完成,这样在TFN客户端和TFN守护程序端就根本不会有任何基于TCP或UDP的通讯。(许多网络监视工具不能显示ICMP包的数据部份,或不解析ICMP类型字段,因此很难准确监视到TFN客户端与守护程序端的通讯。请参阅附录A提供的能显示ICMP数据段内容的Sniffit version 0.3.7.beta补丁程序,和附录B提供的能显示ICMP_ECHO和ICMP_ECHOREPLY id和序列号的tcpshow.c 1.0补丁程序。)

不指定任何参数或选项运行该程序,会显示该TFN程序相关命令的帮助信息:

---------------------------------------------------------------------------

[tribe flood network] (c) 1999 by Mixter

usage: ./tfn [ip] [port]

contains a list of numerical hosts that are ready to flood

-1 for spoofmask type (specify 0-3), -2 for packet size,

is 0 for stop/status, 1 for udp, 2 for syn, 3 for icmp,

4 to bind a rootshell (specify port)

5 to smurf, first ip is target, further ips are broadcasts

[ip] target ip[s], separated by @ if more than one

[port] must be given for a syn flood, 0 = RANDOM

---------------------------------------------------------------------------

口 令 保 护

-----------

虽然TFN客户端无需任何口令保护,但每一个发送到TFN守护程序端的命令都是一个含有16位二进制id值的ICMP_ECHOREPLY包。(序列号总是为0x0000,这样能使其看上去象对"ping"命令发送的初始包的回应包。)

这个id的所有取值在"config.h"文件中定义:

---------------------------------------------------------------------------

#ifndef _CONFIG_H

/* user defined values for the teletubby flood network */

#define HIDEME "tfn-daemon"

#define HIDEKIDS "tfn-child"

#define CHLD_MAX 50

/* #define ATTACKLOG "attack.log" keep a log of attacks/victims on all

hosts running td for debugging etc. (hint: bad idea) */

/* These are like passwords, you might want to change them */

#define ID_ACK 123 /* for replies to the client */

#define ID_SHELL 456 /* to bind a rootshell, optional */

#define ID_PSIZE 789 /* to change size of udp/icmp packets */

#define ID_SWITCH 234 /* to switch spoofing mode */

#define ID_STOPIT 567 /* to stop flooding */

#define ID_SENDUDP 890 /* to udp flood */

#define ID_SENDSYN 345 /* to syn flood */

#define ID_SYNPORT 678 /* to set port */

#define ID_ICMP 901 /* to icmp flood */

#define ID_SMURF 666 /* haps! haps! */

#define _CONFIG_H

#endif

---------------------------------------------------------------------------

正如我们看到的,这些值都能够被改变,以避免TFN守护程序被其他攻击者利用。

工 具 特 征

-----------

和Trinoo类似,安装TFN客户端程序/守护程序与在Unix系统中安装其它程序一样,同时还具备所有能隐藏程序和文件的标准安装选项。

TFN的客户端程序和守护程序都必须以root权限运行,因为它们都需要以SOCK_RAW方式打开AF_INET套接字(socket)。

由于TFN客户端程序需要可用的iplist文件,因此只要找到TFN客户端就能得到其TFN守护程序端的机器清单。目前的TFN守护程序安装时都包含了对iplist文件进行Blowfish加密,这样使得确定TFN守护程序端机器更加困难了。

在最近发现的TFN守护程序二进制代码中找到的字符串有(已经过整理):

字符串

--------------------------------

blowfish_init

blowfish_encipher

blowfish_decipher

encrypt_string

decrypt_string

serverworks

readmservers

addnewmserver

delmserver

servcounti

icmp2

udppsize

icmpsize

spoofing

spooftest

commence_icmp

commence_udp

commence_syn

floodtime

floodruns

bind

setsockopt

listensocket

k00lip

fw00ding

k00lntoa

tc: unknown host

rm -rf %s

ttymon

rcp %s@%s:sol.bin %s

nohup ./%s

130.243.70.20

127.0.0.1

lpsched

sicken

in.telne

--------------------------------

如果使用"lsof"命令检查运行的守护程序进程,会显示可疑的socket:

------------------------------------------------------------------------------

td 5931 root cwd DIR 3,5 1024 240721 /usr/lib/libx/...

td 5931 root rtd DIR 3,1 1024 2 /

td 5931 root txt REG 3,5 297508 240734 /usr/lib/libx/.../td

td 5931 root 3u sock 0,0 92814

------------------------------------------------------------------------------

如果启动了远程shell,TFN守护程序会产生监听某个TCP端口的子进程:

------------------------------------------------------------------------------

td 5970 root cwd DIR 3,5 1024 240721 /usr/lib/libx/...

td 5970 root rtd DIR 3,1 1024 2 /

td 5970 root txt REG 3,5 297508 240734 /usr/lib/libx/.../td

……

td 5970 root 0u inet 92909 TCP

*:12345 (LISTEN)

td 5970 root 3u sock 0,0 92814

------------------------------------------------------------------------------

使用经过(附录A)修改"sniffit"监听网络通讯,并运行"ping -c 3 10.0.0.1":

---------------------------------------------------------------------------

# sniffit -d -a -x -b -s @ -Picmp

Supported Network device found. (eth0)

Sniffit.0.3.7 Beta is up and running.... (192.168.0.1)

10.0.0.1

ICMP type: Echo request

.. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .

.. . .. . .. . .. . 08 . 00 . 2B + 51 Q 98 . 04 . 00 . 00 . 37 7 FC . 0D . 38 8

02 . 73 s 02 . 00 . 08 . 09 . 0A . 0B . 0C . 0D . 0E . 0F . 10 . 11 . 12 . 13 .

14 . 15 . 16 . 17 . 18 . 19 . 1A . 1B . 1C . 1D . 1E . 1F . 20 21 ! 22 " 23 #

24 $ 25 % 26 & 27 ' 28 ( 29 ) 2A * 2B + 2C , 2D - 2E . 2F / 30 0 31 1 32 2 33 3

34 4 35 5 36 6 37 7

192.168.0.1

ICMP type: Echo reply

.. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .

.. . .. . .. . .. . 00 . 00 . 33 3 51 Q 98 . 04 . 00 . 00 . 37 7 FC . 0D . 38 8

02 . 73 s 02 . 00 . 08 . 09 . 0A . 0B . 0C . 0D . 0E . 0F . 10 . 11 . 12 . 13 .

14 . 15 . 16 . 17 . 18 . 19 . 1A . 1B . 1C . 1D . 1E . 1F . 20 21 ! 22 " 23 #

24 $ 25 % 26 & 27 ' 28 ( 29 ) 2A * 2B + 2C , 2D - 2E . 2F / 30 0 31 1 32 2 33 3

34 4 35 5 36 6 37 7

10.0.0.1

ICMP type: Echo request

.. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .

.. . .. . .. . .. . 08 . 00 . 58 X 61 a 98 . 04 . 01 . 00 . 38 8 FC . 0D . 38 8

D3 . 62 b 02 . 00 . 08 . 09 . 0A . 0B . 0C . 0D . 0E . 0F . 10 . 11 . 12 . 13 .

14 . 15 . 16 . 17 . 18 . 19 . 1A . 1B . 1C . 1D . 1E . 1F . 20 21 ! 22 " 23 #

24 $ 25 % 26 & 27 ' 28 ( 29 ) 2A * 2B + 2C , 2D - 2E . 2F / 30 0 31 1 32 2 33 3

34 4 35 5 36 6 37 7

192.168.0.1

ICMP type: Echo reply

.. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .

.. . .. . .. . .. . 00 . 00 . 60 ` 61 a 98 . 04 . 01 . 00 . 38 8 FC . 0D . 38 8

D3 . 62 b 02 . 00 . 08 . 09 . 0A . 0B . 0C . 0D . 0E . 0F . 10 . 11 . 12 . 13 .

14 . 15 . 16 . 17 . 18 . 19 . 1A . 1B . 1C . 1D . 1E . 1F . 20 21 ! 22 " 23 #

24 $ 25 % 26 & 27 ' 28 ( 29 ) 2A * 2B + 2C , 2D - 2E . 2F / 30 0 31 1 32 2 33 3

34 4 35 5 36 6 37 7

10.0.0.1

ICMP type: Echo request

.. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .

.. . .. . .. . .. . 08 . 00 . 70 p 61 a 98 . 04 . 02 . 00 . 39 9 FC . 0D . 38 8

B9 . 62 b 02 . 00 . 08 . 09 . 0A . 0B . 0C . 0D . 0E . 0F . 10 . 11 . 12 . 13 .

14 . 15 . 16 . 17 . 18 . 19 . 1A . 1B . 1C . 1D . 1E . 1F . 20 21 ! 22 " 23 #

24 $ 25 % 26 & 27 ' 28 ( 29 ) 2A * 2B + 2C , 2D - 2E . 2F / 30 0 31 1 32 2 33 3

34 4 35 5 36 6 37 7

192.168.0.1

ICMP type: Echo reply

.. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. .

.. . .. . .. . .. . 00 . 00 . 78 x 61 a 98 . 04 . 02 . 00 . 39 9 FC . 0D . 38 8

B9 . 62 b 02 . 00 . 08 . 09 . 0A . 0B . 0C . 0D . 0E . 0F . 10 . 11 . 12 . 13 .

14 . 15 . 16 . 17 . 18 . 19 . 1A . 1B . 1C . 1D . 1E . 1F . 20 21 ! 22 " 23 #

24 $ 25 % 26 & 27 ' 28 ( 29 ) 2A * 2B + 2C , 2D - 2E . 2F / 30 0 31 1 32 2 33 3

34 4 35 5 36 6 37 7

----------------------------------------------------------------------------

以上是正常通讯的ICMP包,可以看到第一个包的序列号是0,然后按顺序依次递增。

使用经过(附录B)修改的tcpdump/tcpshow程序监听时,这三对正常的ICMP包为:

----------------------------------------------------------------------------

# tcpdump -lenx -s 1518 icmp | tcpshow -noip -nolink -cooked

tcpdump: listening on eth0

Packet 1

ICMP Header

Type: echo-request

Checksum: 0x9B2A

Id: 0x6E03

Sequence: 0x0000

ICMP Data

q..8x.

..

..................... !"#$%&'()*+,-./01234567

-----------------------------------------------------------------

Packet 2

ICMP Header

Type: echo-reply

Checksum: 0xA32A

Id: 0x6E03

Sequence: 0x0000

ICMP Data

q..8x.

..

..................... !"#$%&'()*+,-./01234567

-----------------------------------------------------------------

Packet 3

ICMP Header

Type: echo-request

Checksum: 0x623A

Id: 0x6E03

Sequence: 0x0001

ICMP Data

r..8..

..

..................... !"#$%&'()*+,-./01234567

-----------------------------------------------------------------

Packet 4

ICMP Header

Type: echo-reply

Checksum: 0x6A3A

Id: 0x6E03

Sequence: 0x0001

ICMP Data

r..8..

..

..................... !"#$%&'()*+,-./01234567

-----------------------------------------------------------------

Packet 5

ICMP Header

Type: echo-request

Checksum: 0x5A3A

Id: 0x6E03

Sequence: 0x0002

ICMP Data

s..8..

..

..................... !"#$%&'()*+,-./01234567

-----------------------------------------------------------------

Packet 6

ICMP Header

Type: echo-reply

Checksum: 0x623A

Id: 0x6E03

Sequence: 0x0002

ICMP Data

s..8..

..

..................... !"#$%&'()*+,-./01234567

-----------------------------------------------------------------

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有