本文是绿盟科技安全+技术刊物中的文章,文章对拒绝服务攻击工具―"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攻击事件分析