バランサーをバイパスするDDoS攻撃:Cookieを保護してください!

ITインフラストラクチャのセキュリティを分析するプロセスでは、さまざまなネットワーク機器を使用する必要があります。 よく知られたデバイスがあり、比較的まれです。 まれに発生するロードバランサーを区別できます。 今日は、F5 BIG-IPバランサーセッションのCookieサポートメカニズムを紹介します。 このメカニズムの特徴は、指定された負荷分散アルゴリズムをバイパスして、攻撃者がシステムを攻撃できることです。



画像



ロードバランサーとは何ですか? これは、サーバー間でアプリケーショントラフィックを分散するネットワークデバイスであり、指定したルールに従ってその特性を制御および変更することもできます。 Webアプリケーションを使用する場合、同じサーバーがクライアントセッションを提供する必要があります。 これを行うために、BIG-IPバランサーは、クライアントにサービスを提供する特定のWebサーバーのアドレスを含むセッション情報を監視および保存します。 この情報は、1つのセッションで同じWebサーバーにクライアント要求を送信するために使用されます。



BIG-IPは、Cookieの永続性、ハッシュの永続性、宛先/ソースアドレスの永続性、SSLの永続性など、セッションをサポートするためのいくつかの方法を提供します。 HTTPトラフィックの場合、ほとんどの場合、Cookieの永続化メソッドが使用されます。 これには、HTTP Cookie挿入、HTTP Cookieリライト、HTTP Cookieパッシブ、およびCookieハッシュの4つのタイプが含まれます。 HTTP Cookie挿入のタイプが最も一般的です。これは、他とは異なり、各Webサーバーが特定のCookieを送信する必要がなく、バランサーで自動的に生成されるためです。



クライアントに送信されたCookieに含まれる情報を見てみましょう。



画像



Cookie名は、BIGipServer <プール名>として形成されます。 クライアントは、BIG-IPバランサーの使用とサーバープールの名前に関する情報をすぐに受信します。



Cookieを見てみましょう。 サーバーのIPアドレス(4225695754)とそのポート(20480)の逆10進表現が含まれています。

IPアドレスとポートを使い慣れた形式に復元するには、2つの方法があります。



1. IPアドレスを処理する10進Cookie値を取得し、16進形式FBDF000Aに変換します。



バイトを分割し、逆の順序で並べます:0A00DFFB。



バイトを10進形式に変換します。各バイトはIPアドレスのオクテット10.0.223.251を開きます。



同じ原理で、ポートをデコードします(2バイト値が含まれています):



20480→5000→0050→80







2.コマンドラインで“ping 4225695754”



入力し“ping 4225695754”



。 出力には、IP:251.223.0.10があります。



最後から最初までオクテットを書くと、10.0.223.251が得られます。



ポート値ping 20480



に対しても同様の操作を実行できます。



値は0.0.80.0になります。



ポートは2バイトで書き込まれるため、最初の2つの値は省略します。 2番目から2番目までの2つの極端なオクテットの値を書き込むと、080が得られます。



したがって、サービスを提供しているサービスのアドレス10.0.223.251:80を受け取りました。



プールメンバーがデフォルトルートドメインの一部ではない場合、異なるエンコードタイプが使用されます。



画像



内容:





セッションを終了し(デフォルトではブラウザが閉じられると期限切れになります)、サイトに再度アクセスすると、プール内のすべてのサーバーに関する情報を取得できます。 これは、データセンターの内部構造に関する情報の完全に不必要な開示です。



前述のように、負荷を正しく分散するためにバランサーがインストールされます。 ただし、Cookie値を操作することで、攻撃者はプールから接続するサーバーを選択し、指定された負荷分散アルゴリズムをバイパスできます。



実際にどのように見えるか見てみましょう:



1. Cookieの値を、必要な対応するサーバーに変更します。



画像



2.サーバーに戻り、バランサーが前の手順でCookieに設定した値に対応するサービスにリダイレクトすることを確認します。



画像



合理的な質問が発生します:自分を守る方法は?



BIG-IPはCookie暗号化をサポートしています。 暗号化は192ビットAES暗号で実行され、その後、CookieはBase64アルゴリズムを使用してエンコードされます。



暗号化されたCookieの例:



画像



Cookie暗号化を使用すると、攻撃者はWebサーバーのIPアドレスに関する情報を取得できなくなります。 ただし、これは特定のサーバーに対するDoS攻撃の可能性から保護するものではありません。 事実、暗号化されたCookieはクライアントに関連付けられていないため、Cookieを使用して、複数のソース(ボットネットなど)からサーバーを攻撃することができます。



この記事の冒頭のチャートは、BIG-IPバランサーとセッションのCookieサポートを使用して、100のランダムなWebサイトから収集された統計を示しています。 これらの統計によると、これらのサイトのほとんどの所有者は、内部インフラストラクチャに関するデータを隠すための追加のセキュリティ設定を気にしません。



投稿:キリルプザンコフ、ポジティブリサーチセンター



All Articles