*本文原创作者: ArthurKiller
注:本文主张交流与科研学习,请勿对该技术进行恶意使用!本平台及作者对读者的之后的行为不承担任何法律责任。
前言
在上集我们已经知道了DDOS流量的获取方式,并且总结出每种流量的获取方式。原理说的差不多了,所以这篇文章将围绕技术角度攥写。在最后部分我将会发放辛辛苦苦收集的各种DDOS攻击脚本和各类在线DDOS平台的源代码。
如果没看过上集的请参考该链接:走近科学:揭秘在线DDoS攻击平台(上)。
流量控制
当我们获取到足够流量的时候就需要对流量进行管理和分配。DDOS流量的管理可以分为以下三大类,分别是单一DDOS脚本控制,单个API接口控制多个DDOS脚本和单个CMS或者API控制多个API接口。
单一DDOS脚本控制
这类流量控制是最简单的,属于一个拒绝服务攻击(DOS),还不能称之为分布式拒绝服务攻击(DDOS)。黑客通过源代码编译好一个脚本后直接对目标站点进行攻击。这种控制方式主要运营在压力测试模拟阶段上,并不会用作真正的DDOS攻击。因为流量过小,攻击方式过于单一。
单个API接口控制多个DDOS脚本
这时安全研究人员为了使攻击复杂化,也为了方便流量的管理。这个时候会编译一个API接口来统一管理全部的DDOS流量。
单个CMS或者API控制多个API接口
在DDOS攻击里面,我们需要用到众多的服务器,那么单个API已经不能满足我们的需求了。这时每个服务器都会有一个自己的API接口,于是我们又会再去重新编写一个API接口来管理全部服务器的API接口。在攻击目标站点的时候,只需要一个命令,全部的服务器都会对目标站点展开各种各样的DDOS攻击。
流量控制流程图
DDOS脚本介绍
在上一篇我已经说过DDOS攻击分为Layer4和Layer7两个大类,并且每个Layer都有很多种攻击方式,今天我们就来说一下怎么使用这些DDOS攻击脚本。
编译脚本文件
我所提供和收集的DDOS脚本文件全部都是由C++所编写,所以在Linux上用gcc来对脚本进行编译。
使用以下命令对源代码进行编译
gcc 脚本名称.c -o 脚本名称 -lpthread
或者
gcc 脚本名称.c -lpthread -lpcap -o 脚本名称
编译完成后需要对该脚本赋予足够的权限
chmod 755 脚本名称
对脚本编译及赋予权限
使用DDOS脚本
我先拿一个ACK DDOS脚本举个例子。我们可以看到这个攻击脚本需要的主要是以下几个命令参数。
,/脚本名称 <攻击线程> <是否限制流量(如果不限输入-1)> <攻击时间>
ACK DDOS命令
那么我们来尝试一下对局域网内IP进行DDOS攻击。可以看到目标IP已经无法ping通了。
使用ACK DDOS攻击某主机
AMP列表扫描
但是有时候我们会看到AMP DDOS攻击需要添加一个AMP列表,如下图红色方框所示。这个AMP列表到底是什么?又是怎么得到到?
DNS反射攻击(需要AMP文件)
这里我需要详细解释一下。AMP的全称是Amplification,中文意思就是放大。比如大家熟悉的DNS反射型攻击就是一个标准的AMP DDOS攻击。其原理是A服务器发送大量的数据包给大量的DNS服务器,但是数据包是篡改过的。黑客会把发送过去的数据包里A服务器的IP地址更改成B服务器的IP地址。DNS服务器会以为是B服务器发送的数据包,于是就会把返回的数据包发送给B服务器。DNS放大攻击的好处是可以用一台主机达到N台主机的攻击效果。
大家可以参考以下图片来理解。
DNS AMP DDOS攻击
而我们所需要的AMP列表就是全球所有的DNS服务器IP地址或者是可以做数据包跳转的IP地址。在我提供的源代码里面也有AMP资源扫描脚本文件的源代码,编译方式同上。
资源扫描器代码
我们先看看扫描一个DNS资源需要什么命令参数。
./AMP扫描脚本名称 <开始IP> <结束IP> <输出文件位置> <线程> <多少毫秒开始延时一次>
DNS扫描器指令
一般情况下,我们会把1.1.1.1作为开头IP地址,然后把255.255.255.255作为末端IP地址,这样就可以扫描到全球的DNS服务器的IP地址了。DNS反射攻击只是AMP DDOS攻击的其中一种,还有很多AMP DDOS攻击方式,比如MySQL AMP DDOS攻击,NTP AMP DDOS攻击等。以1GB的上行宽带速度来看,一般需要3-5个小时才能扫描完成。
AMP列表自动化更新理念
一个AMP列表的制作就需要数个小时,那么多AMP列表的制作需要的时间就更久了。这里想了一个方式能够让大家快速的得到这些AMP列表。这里大家先别激动,这个只是一个想法,还并没有人去执行。
首先是是一个人或者团队专门来负责对AMP 列表的更新和维护,扫描到的列表生成txt文本文件后存放在WEB服务器上。随后这个人或者团队可以免费或者付费对大家开放列表的下载地址。如果有人的AMP列表需要更新,在服务上写一个sh可执行文件,内容为
#!/bin/bash
rm -I 老的AMP列表1.txt
rm -I 老的AMP列表2.txt
…………省略…………
wget http://AMP列表存放的域名/新的AMP列表1.txt
wget http://AMP列表存放的域名/新的AMP列表2.txt
…………省略…………
然后直接运行这个可执行程序,那么整个AMP列表的内容就会随之更新了。目前全球没一个人在做这件事,有兴趣(金钱和技术)的人可以考虑做做看。
常用DDOS攻击方式
因为DDOS攻击的方式太多了,我无法把每个攻击的方式和原理都详细的讲解一遍。如果每种攻击方式都详细讲一遍,差不多可以出一本书了。但是大家可以参考下面这个表格去网上搜索相关的资料和脚本代码。
攻击名称 | 攻击层数 | 目标种类 | 命令填写格式 |
---|---|---|---|
GET | Layer 7 | 网站,服务器IP等 | 填写网站链接: http://xxxx.com |
HEAD | Layer 7 | 网站,服务器IP等 | 填写网站链接: http://xxxx.com |
POST | Layer 7 | 网站,服务器IP等 | 填写网站链接: http://xxxx.com |
JSBYPASS | Layer 7 | 网站,服务器IP等 | 填写网站链接: http://xxxx.com |
JOOMLA | Layer 7 | 网站,服务器IP等 | 填写网站链接: http://xxxx.com |
XMLRPC | Layer 7 | 网站,服务器IP等 | 填写网站链接: http://xxxx.com |
SNMP | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
SSDP | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
DNS | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
CHARGEN | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
NTP | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
TS3 | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
SSYN | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
DOMINATE | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
ACK | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
NGSSYN | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
OVX | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
TCPACK | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
TCPSYN | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
TCPRST | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
TCPURG | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
TCPPUSH | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
TCPECE | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
TCPCWR | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
ICMP | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
MUDP | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
VSE | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
ATCP | Layer 4 | 个人主机,服务器IP等 | 填写IP地址: 192.168.0.1 |
DDOS API搭建
API搭建准备
你使用一两个DDOS脚本还好,但是如果你要使用几十个DDOS脚本呢?一个一个的执行吗?所以我们还需要搭建一个API来对这些脚本文件进行调用。API编写最简便的还是PHP,所以我们还需要在服务器上搭建相关的环境。这些命令只适用于Cent OS,其它版本的Linux系统请自行Google。
输入以下命令进行安装
1.yum -y update
2.yum install gcc libcap libpcap libpcap-devel screen php dstat cmake gmp gmp-devel gengetopt byacc flex git json-c zmap iptraf nano(或者直接输入yum groupinstall "Development Tools")
3.yum groupinstall "Development Tools"
4.yum install gcc php-devel php-pear libssh2 libssh2-devel
5.pecl install -f ssh2
6.touch /etc/php.d/ssh2.ini
7.echo extension=ssh2.so > /etc/php.d/ssh2.ini
8.Service httpd restart
就这么简单,环境已经搭建完成。然后你需要把API文件,DDOS脚本和AMP列表文件文件放入到你的WEB目录内。环境创建完毕后默认的WEB目录在
/var/www/html
API文件编辑
这时你需要对你的API文件进行编辑。我们先来看看这个API文件哪里需要改的。
如下图所示,在代码第六行那里有个红方框,在红方框内设置一个你自己的Key Code。
Key Code设置
在11行那里我们需要输入服务器的IP地址,SSH的账号和密码。
服务器SSH IP地址,账号和密码
从43行到63行是调用脚本文件的。在==后面填写的是DDOS攻击名称,./后面跟着的是脚本的路径和文件名称,然后每个$后面的变量值都是要填写的指令,如果没有动态变量那么直接填写相关命令,比如AMP列表文件名称。如果你的DDOS脚本文件或者AMP列表文件在其它文件夹,那么请确保对API内的DDOS脚本文件路径进行更改,并且确定这个API文件有权限访问你的脚本文件所在目录。
调用DDOS攻击脚本文件
然后就是使用这个API文件了,根据源代码的里面的各种变量和常量值,我们可以这么构建。
http://服务IP地址/api.php?key=自己设置的Key Code&host=目标地址&time=攻击时间&port=端口&method=攻击方式
举例:
http://192.168.1.2/api.php?key=keycode&host=192.168.1.3&time=50&port=80&method=DNS
API调用文件核查
搭建完API后我们需要核实一下是否成功的对脚本进行调用。这里很简单,直接用HTOP查看整个服务器的进程就行。输入以下命令开启htop服务。
htop
下面这张图是未执行API前的运行程序
未执行API前
下面这张图是执行API后的运行程序,可以发现多了几个DDOS攻击脚本运行在后台。
执行API后
在线DDOS演练系统搭建
在线DDOS平台的搭建也没多复杂,我已经提供给大家足够的在线DDOS CMS源码,并且都附上了数据库结构。这些在线DDOS平台都是采用PHP编写,数据库都是MySQL。每个CMS都有特定的文件来填写DDOS API,在填写API的文件里面可以填写多个API,之后要发送攻击命令的时候只需要调用一个API接口,这个API接口又会调用你输入的API接口,然后你输入的API接口又会调用全部的DDOS攻击脚本文件,非常的方便。这个地方需要普及的知识太多了,但是凡是搭建过WEB服务器的人都很清楚这些流程,我就不专门去讲了,大家自己研究一下。
某在线DDOS平台API插入界面
尾声与感想
我通过各种PY交易获得了大量的在线DDOS平台的源码和DDOS脚本的源代码,为了这个专题也花了不少的精力和少许的金钱,但是能够免费的为国内的安全研究人员提供一个在线DDOS平台的研究我是非常高兴的。
但是我为什么不提供像低轨道粒子炮,HUC DDOS这种工具?得了吧,那种东西不配叫做DDOS(分布式拒绝服务)攻击,称其量只能算作DOS(拒绝服务)攻击,拿来打苍蝇都打不死。与其提供给你们一把AK47,不如直接给你们制造核弹头的原材料。
传送门开启!在线DDOS平台源码,在线DDOS攻击脚本和在线DDOS API文件下载(密码freebuf)
笔者曾在美国生活,美国在线DDOS平台处于一个法律的灰色地带,你既不能说它非法,也不能完全说它合法,因为DDOS和大流量的攻击演练并没有太清晰的界限。我在美国那段时期有幸和一个在线DDOS平台的站长聊过几次,他说他们的主要收入都是来自中国,他甚至想专门弄一个中文版本的在线DDOS平台,只可惜他不会中文,而且又担心被GFW拦截。在中国开DDOS在线平台只有授权检测证明我才能购买这个服务,而客户群体普遍都是厂商,针对个人用户的反而很少。于此同时就造成DDOS演练在国内变成了供不应求的局面,要做压力测试厂商有时只能被迫去购买国外的流量。在这种情况下,压力测试服务只能成为安全厂商的一个附加服务。
据笔者了解,国内诸如阿里巴巴、腾讯、淘宝都有专门的DDOS演练平台,可以自动化的演练此类攻击,因而这些企业对于DDOS的防御能力是相对较强的。
可是其他国内的互联网厂商做过正规压力测试服务的非常少,基本上只要三个G的上行流量可以打死国内一大堆网站,并且不管这些厂商用什么服务器。DDOS攻击是最难防御的,也是威胁程度很高的。但是值得庆幸的是国内还有个GFW对这些DDOS流量进行拦截。
在2016年二月,爱尔兰就遭受到大规模的DDOS攻击,整个国家的网络差点瘫痪。那么中国企业能够应对这种压力吗?国内厂商和政府的服务器是否做好了抗DDOS的准备?
发表评论