ホームページ >システムチュートリアル >Linux >SYN はどのように TCP プロトコルを使用して攻撃を開始しますか?

SYN はどのように TCP プロトコルを使用して攻撃を開始しますか?

PHPz
PHPzオリジナル
2024-07-27 08:24:02839ブラウズ

SYN 攻撃はハッカーによってよく使用される手法であり、DDoS 手法の 1 つです。 SYN 攻撃は、大量の半接続リクエストを送信し、CPU とメモリのリソースを消費することで TCP プロトコルの欠陥を悪用します。 SYN 攻撃は、ホストに影響を与えるだけでなく、ルーターやファイアウォールなどのネットワーク システムにも損害を与える可能性があります。実際、SYN 攻撃は、これらのシステムが TCP サービスをオープンしている限り、ターゲットがどのようなシステムであっても実行可能です。

この攻撃の基本原理を理解するには、TCP 接続を確立するプロセスから始める必要があります。

TCP が接続に基づいていることは誰もが知っています。つまり、サーバーとクライアントの間で TCP データを送信するには、最初に仮想リンク、つまり TCP 接続を確立する必要があります。 TCP接続は次のとおりです:

SYN はどのように TCP プロトコルを使用して攻撃を開始しますか?

最初のステップでは、要求側 (クライアント) は SYN フラグを含む TCP メッセージを送信します。同期メッセージは、クライアントが使用するポートと TCP 接続の最初のシーケンス番号を示します。

2 番目のステップでは、クライアントから SYN メッセージを受信した後、サーバーはクライアントの要求が受け入れられたことを示す SYN+ACK メッセージを返します。同時に、TCP シーケンス番号が 1 つ増加し、ACK が返されます。確認済み。

3 番目のステップでは、クライアントもサーバーに確認メッセージ ACK を返し、TCP シーケンス番号も 1 つ増加し、TCP 接続が完了します。

上記の接続プロセスは、TCPプロトコルではスリーウェイハンドシェイクと呼ばれます。

問題は、TCP 接続の 3 ウェイ ハンドシェイクにあります。ユーザーが SYN メッセージをサーバーに送信した後に突然クラッシュするか切断されたとします。その後、サーバーは SYN+ACK 応答メッセージを送信した後にクライアントの ACK メッセージを受信できません。 3 回目のハンドシェイクは完了できません)。この場合、サーバーは通常、再試行し (SYN+ACK をクライアントに再度送信し)、一定期間待機してから、未完了の接続を破棄します。この期間の長さは SYN タイムアウトと呼ばれます。一般に、この時間は数分程度です (約 30 秒から 2 分)。

サーバーのスレッドを 1 分間待機させる例外が発生することはユーザーにとって大きな問題ではありませんが、悪意のある攻撃者がこの状況を大量にシミュレートすると、サーバーはシステムを維持するために多額のコストを消費することになります。非常に大規模な半接続リスト - 数万の半接続を単純に保存したり走査したりするだけでも、大量の CPU 時間とメモリを消費します。言うまでもなく、このリスト内の IP に対して SYN+ACK を再試行する必要があります。 。

実際、サーバーの TCP/IP スタックが十分に強力でない場合、最終的な結果はスタック オーバーフロー クラッシュになることがよくあります。サーバー側のシステムが十分に強力であっても、サーバー側は攻撃者の偽造コードの処理で忙しいことになります。 TCP 接続要求は、クライアントの通常の要求に注意を払う時間がありません。

以上がSYN はどのように TCP プロトコルを使用して攻撃を開始しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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