1.前言:
DOS攻击原理:发送大量的数据包消耗目标主机资源,使其无法正常工作。
DNS放大攻击的原理:伪造DNS数据包,向DNS服务器发送域名查询报文了,而DNS服务器返回的应答报文则会发送给被攻击主机。放大体现在请求DNS回复的类型为ANY,攻击者向服务器请求的包长度为69个字节,而服务器向被攻击主机回复的ANY类型DNS包长度为535字节,大约放大了7倍。
本次实验实现的是DOS+DNS放大攻击,在传输层使用UDP协议,应用层使用DNS协议,程序有界面,接受用户输入,用户还能调节发包的速度改变攻击强度。
2.程序框图:
3.DOS+DNS简易界面的设计
添加5个文本框,用来接受用户输入的被攻击的ip,发送的端口,服务器ip,发送接口名称,查询的域名。
添加一个滑块用来控制攻击的强度。
添加两个按钮控制攻击的开始和停止。
核心代码是attack按钮槽函数的实现,接受输入,并调用攻击函数。
void Widget::on_attack_pushButton_clicked()
{
QByteArray dstipstr = ui->dst_ip_Edit->text().toLatin1();
QByteArray ifnamestr = ui->ifname_Edit->text().toLatin1();
QByteArray dnsipstr = ui->dns_Edit->text().toLatin1();
QByteArray domainstr = ui->Domain_Edit->text().toLatin1();
dosattack=
new DosAttack(dstipstr,ifnamestr,ui->port_spinBox->value(),dnsipstr,ui->AttackLEVEL_Slider->value(),domainstr);
dosattack->start();
}
4.构造发送DNS报文
因为我们要伪造源IP,发送DNS请求,所以我们的报文应该从IP头部开始构造,一直到UDP报文的数据部分。这里分为两个部分,IP头部和UDP头部作为一个部分,UDP的数据即DNS报文作为一个部分。
(1)IP伪首部+IP头部+UDP