QualNet移植Exata的DOS攻击代码

拒绝服务(DOS)攻击是一种压倒受攻击计算机或网络资源的行为,使受害者无法服务于其他客户的请求。 因此,客户无法从受攻击计算机或网络获得服务。 DOS攻击通常通过发送大量的流量来针对受攻击计算机的内存和/或计算资源。

一、攻击类型

Exata中的DOS攻击模型支持三种攻击:

1.基本攻击:攻击者向受害者主机或网络发送大量UDP流量。此流量会消耗网络缓冲区内存和CPU资源。

2.TCPSYN:攻击者向受害者计算机发送TCPSYN数据包。每个TCPSYN数据包都会在受害者计算机上打开一个新的TCP连接,从而消耗了传输层缓冲区存储器。

3.IP碎片:攻击者将部分碎片化的IP数据包发送到受害者计算机。受害者计算机缓冲这些碎片化的数据包,并等待剩余的数据段,从而消耗网络层缓冲区内存。

二、参数配置

可以通过指定分组间隔(连续攻击分组之间的时间)或分组速率来配置DOS攻击。 如果指定了分组速率,那么,还可以选择指定一个上升时间。 如果指定了上升时间,则攻击以0分组/秒的速率开始,并在指定的上升时间内达到配置的速率。

使用分组间隔配置DOS攻击,在.app文件中设置以下语句:

DOS <victim> <num-of-attacker> <attacker-1> .... <attacker-N> <attack-type> <victim port> <item-count> <item-size> <packet-interval> <start-time> <end-time> [RAMP-UP-TIME <ramp-up-time>]

使用分组速率配置DOS攻击,在.app文件中设置以下语句:

DOS <victim> <num-of-attacker> <attacker-1> .... <attacker-N> <attack-type> <victim port> <item-count> <item-size> RATE <packet-rate> <start-time> <end-time> [RAMP-UP-TIME <ramp-up-time>]

字段含义:

<victim>:受攻击节点ID号;

<num-of-attacker>:攻击节点数量;

<attacker-1> .... <attacker-N>:一个或多个攻击节点ID号;

<attack-type>:攻击类型;

<victim port>:攻击端口;

 <item-count>:要发送的分组数。 如果设置为0,则分组连续发送直到<end-time>或仿真结束时间,以先到者为准。 注意:如果<item-count>和<end-time>都大于0,则发送分组直到所要发送的分组数完成,或到达<end-time>和仿真结束时间,以先到者为准。

<item-size>:每个分组的大小。注意:如果将<attack-type>设置为SYN,则将忽略此参数。

<packet-interval>:连续发送攻击分组之间的分组时间间隔。注意:必须指定分组间隔或分组速率。

RATE <packet-rate>:发送攻击分组的最大速率。 注意:必须指定分组间隔或分组速率。

<start-time>:攻击发起时间;

<end-time>:攻击结束时间;如果此值设置为0,则在发送<item-count>个分组后结束,或仿真结束时间结束,以先到者为准。注意:<end-time>要么等于0,要么必须大于<start-time>。

[RAMP-UP-TIME <ramp-up-time>]:攻击速率升到最高所需要的时间(秒数),最高攻击速率为设置的分组间隔的倒数1/<packet-interval>或者设置的分组速率<packet-rate>。攻击速率从0开始,逐秒均匀升高,直到最高速率。如果参数设置为0或者不设置,则以最高速度发起攻击。

差别在于<packet-interval>和RATE <packet-rate>。

三、攻击示例

1.一个攻击者(节点15)使用SYN DOS攻击模式来攻击受害者节点(节点10)。攻击分组每10毫秒发送一次。

DOS 10 1 15 SYN 80 10000 512 10MS 10S 20S

2.五个攻击者(节点11到15)使用BASIC DOS攻击模式攻击受害者节点(节点10)。 攻击分组每10毫秒传送一次。

DOS 10 5 11 12 13 14 15 BASIC 1234 0 512 10MS 10S 20S

3.两个攻击者(节点11和12)使用BASIC DOS攻击模式攻击受害者节点(节点10)。 一旦攻击开始,攻击包将以100分组/秒的速率传输 

DOS 10 2 11 12 BASIC 1234 0 512 RATE 100 10S 200S

4.两个攻击者(节点11和12)使用BASIC DOS攻击模式攻击受害者节点(节点10)。攻击以0包/秒的速率开始,并在攻击开始后5秒达到最大速率100包/秒。

DOS 10 2 11 12 BASIC 1234 0 512 RATE 100 10S 200S RAMP-UP-TIME 5

 四、代码移植

QualNet中没有配置DOS攻击,可以从Exata中移植。...\exata-x.x-source\libraries\cyber\advanced\src\app_dos.cpp、app_dos.h。移植过程中,注意两个软件的函数定义、结构体定义的微小变化。贴出两个关键的函数,其他过程略。

1.初始化

void
APP_InitializeDosApplication(
        Node* firstNode,
        const char* cyberInput)
{
    char appStr[MAX_STRING_LENGTH];
    Node* node;
    IdToNodePtrMap* nodeHash;
    int numValues;
    
    nodeHash = firstNode->partitionData->nodeIdHash;

    /*DOS <victim> <num-of-attackers> <attacker1> <attacker2>...<attackerN> <attack-type> <port>
        <num-of-items> <item-size> <interval> <start-time> <end-time>*/
    char victimNodeStr[MAX_STRING_LENGTH];
    NodeAddress victimNodeId;
    Address victimAddr;
    Node *victimNode;
    sscanf(cyberInput, "%*s %s", victimNodeStr);
    IO_AppParseSourceString(
        firstNode,
        cyberInput,
        victimNodeStr,
        &victimNodeId,
        &victimAddr);

    PARTITION_ReturnNodePointer(
        firstNode->partitionData,
        &victimNode,
        victimNodeId,
        TRUE);
	
	Message *victimMsg;
	char *victimInfo;
	victimMsg = MESSAGE_Alloc(victimNode,
		APP_LAYER,
		APP_DOS_VICTIM,
		MSG_DOS_VictimInit);

	MESSAGE_SetInstanceId(victimMsg, 0);

	victimInfo = MESSAGE_InfoAlloc(victimNode, victimMsg, strlen(cyberInput) + 1);
	memcpy (victimInfo, cyberInput, strlen(cyberInput) + 1);
	MESSAGE_Send(victimNode, victimMsg, 0);
}

2.事件处理

void AppDosVictimProcessEvent(Node* node, Message* msg)
{
    switch (msg->eventType)
    {
        case MSG_DOS_VictimInit:
        {
            BOOL fromGUI = MESSAGE_GetInstanceId(msg);
            char *inputString;
            inputString = (char *)MESSAGE_ReturnInfo(msg);
            std::string cyberInput = inputString;

            App_InitializeDOSVictim(node, cyberInput, fromGUI);
            MESSAGE_Free(node, msg);
            break;
        }
        ...
    }
    ...
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值