本文是绿盟科技安全+技术刊物中的文章,文章对拒绝服务***工具—"High Orbit Ion Cannon" 的技术性分析。HOIC 是一款用RealBasic 开发可移植的多平台拒绝服务***工具,该工具虽然对使用者的水平有较高要求,需要了解HTTP 协议本身,但由于在DDoS ***来源中具有一定代表性,有必要对其分析并加以防范。本文尝试通过技术性分析,探讨相应的防范措施。
目前针对企业的互联网***日趋频繁,且***形式不断更新,但最常见的形式还是DDoS。绿盟科技威胁响应中心,通过对安全事件的分析了解到,很多***者都采用了一种称为“High Orbit Ion Cannon”的工具,这种工具可以引发拒绝服务***。
作为应对措施之一,行业中常见的形式是建立威胁响应机制,以提供及时且行之有效的***防护分析及建议。本文着重分析了这个工具,并探讨了防范措施,从而避免或降低危害及损失。
概述
HOIC(The high orbit ion cannon)是一款基于HTTP 协议开源的DDOS ***工具,可用于内部网络或者外部服务器的安全性和稳定性的测试等等。HOIC 具有以下特点:
高速多线程的HTTP 洪水***。
一次可同时洪水***高达256 个网站。
内置脚本系统,允许自行修改设置脚本,用来阻挠DDoS 攻
击的防御措施,并增加DOS 输出。
简单且易于使用的界面。
可移植到Linux/ Mac。
能够选择***的线程数。
可设置三种***强度:低,中,高。
用REALbasic 这种极其书面的语言写成,简单易修改。
关键功能界面
TARGETS 这里是参数的设定,包括强度和脚本的选择。实际上URL 这里可以不输入任何东西,直接在扩展名为.hoic 的***脚本中指定多个目标URL,这样更灵活。如果URL 处保持为空,在后续操作中会有一个警示信息出现,直接确定,不必理会它。
列表为已经添加的***目标URL 信息、强度等级、脚本信息和状态。“THREADS”为线程数量,“可以在THREADS”处点击左右键头调整并发线程数,建议有几个CPU 或有几个核,就设几个并发线程数,多了没有意义。此处程序实现上有BUG,没有检查线程数的下限,比如可以下调至-1,此时没有任何***报文发送出去,因为流程根本不会到达下面那个for 循环内部:
表1
Dim i as integer
for i = 0 to Val( edtThreads.Text )-1
threads.Append( New attackThread )
threads( threads.Ubound ).Run
Next
目标列表显示***目标信息,“OUTPUT”显示***流量数据,OUTPUT 处的字节数对应全局变量TotalBytesSent,是动态递增的。
关键功能对应源码
点击”FIRE THE LAZER”之后,程序会启动线程框指定个数的线程用来***服务器,并且启动tmTurbo 控制器,用来不断通过脚本来更新Headers。
表2 代码段省略
attackThread // 循环遍历列表中的所有目标主机,然后根据全局变量powerFactor( 对应LOW、MEDIUM 和HIGH) 的不同以不同的两次***报文之间的休眠时间发送***数据包,并且不断在主界面同步显示发送的流量。
表3 代码段省略
HOIC 本身只是一个DoS 框架程序,真正的DoS ***行为通过扩展名为.hoic 的***脚本指定,离开这些.hoic 文件,HOIC本身什么也干不了。.hoic 脚本文件必须与
HOIC 主程序位于同一目录,否则会找不到。脚本也是用RealBasic 写成,通过Generic函数可以看到程序会以RbScript 类来执行脚本文件,脚本文件可以影响到程序内的变
量值。例如程序调用下面脚本后,所发送的***数据包就会根据我们自定义的脚本中需要构建的HTTP 请求数据块配置上附带的信息,进行***。服务器会根据自定义的数
据块信息把程序发送的数据包识别为正常的数据包。
下面这些都是HOIC 主程序预定义并使用的全局变量,可以在.hoic 脚本中直接使用: Headers 、PostBuffer、powerFactor、URL、UsePost
表4 代码段省略
Hoic2.1(dev) 作者由于呼吁大家***一个司法网站,发布此版本时提供了新脚本。
此脚本在多个数据块中随机调用Array 中的信息,可以用来降低***被检测的可能性,提高***效果。
表5 代码段省略
HOIC 2.1(dev) 版随包自带了四个.hoic文件:
DutchFreedom.hoic
GenericBoost.hoic
user-agent-test.hoic
visa_stress.hoic
DutchFreedom.hoic 是用来***http://www.om.nl/ 司法网站的,为LOIC 出气。GenericBoost.hoic 相当于一个.hoic模板, ***们可以在此基础上编写自己的.hoic 文件。
user-agent-test.hoic 用来演示通过.hoic 指定"User-Agent"。
visa_stress.hoic,顾名思义,在***http://visa.via.infonow.net/。
***可以建立一个网站向外发布各种.hoic文件,别人只要下载***编写的.hoic文件并加载到HOIC 中,就可以进行相应的DoS ***,甚至不用输入目标URL。如果用户设置添加的***URL 与脚本中指定的目标URL 不一样,此时发起***后,会先去访问用户设置添加的***URL,提交6 次同样的HTTP 请求,然后再去DoS 脚本中设定的地址,会抑制前述对话框中用户输入的URL 从此不再***用户自己设置的URL。这个设计不知是HOIC 作者有意为之还是无心插柳,总之结果很险恶,因为DutchFreedom.hoic 正是自己指定了目标URL,并且还是随hoic.zip 自带的。很多小白们使用HOIC 进行DoS ***,指定DutchFreedom.hoic,他们最终都参与***http://www.om.nl/,而不是***他们自己输入的目标URL。
HOIC 的作者水平比LOIC 的作者水平高,至少是个比较熟练的RealBasic 程序员,程序BUG 较少。HOIC 对使用者的水平有较高要求,需要了解HTTP 协议本身,如果不提供现成的.hoic 文件,很多使用者可能完全无法有效使用HOIC 进行DoS ***。而高水平的***们可以通过提供现成的.hoic 文件利用各种小白们一起DoS 指定目标。
与同类流行工具的对比及特点
本工具与同类拒绝服务***工具的区别和特点在于可允许用户定义目标主机的URL、***强度和自定义***脚本。当用户点击TURBO 按钮后, 程序会间隔时间不断地调用用户自定义脚本来生成自定义Headers。当用户点击FIRE THELAZERS 之后,程序会启动N 个线程用来***目标主机,在***过程中会根据用户选择的***强度的不同,以不同的时间间隔发送数据报,并且在界面上同步发送的数据包的流量。
可使用用户自定义Headers 来产生伪造的Header,比如自行添加修改sessionID 或cookie 信息可以对某些设置过滤或阻隔的站点同样进行有效***。优点是灵活多变,***的数据包都是正常的数据包,***请求都是有效的、无法拒绝的请求。缺点是不能***其他服务端口,此软件不支持代理,无法改变***来源使用真实IP 进行***,但可通过第三方软件实现代理伪造***来源。仍然需要大量、分散的主机在同一时间集中进行***效果才更显著。
软件在网络上流量特征
***来源只有一台主机,此主机发出大量的数据包,占用了大量流量,非常异常。
这台主机发包的目标主机只有一个,同时其发包的时间间隔极短,是典型的网络***行为。
***采用的是合法协议,均是通过HTTP 协议***目标主机固定端口,80 端口。
此种***和正常访问网站是一样的,只是瞬间访问量增加几十倍甚至上百倍。
软件历史沿革
The high orbit ion cannon Current Release: 2.1(dev)—2010/12/10
The high orbit ion cannon Current Release: 1.0—2010/12/09
附录
《DDoS***工具HOIC》文中一些代码段不便复制,如果您需要查看完整内容,请点击下载绿盟科技安全+技术刊物16期,
《DDoS***工具HOIC》的相关文章请参看 2014年DDoS***事件分析