Shikata Ga Nai

Private? There is no such things.

Predictable TokensのHACK STEPSについてまとめてみた

Hello there, ('ω')ノ

 

予測可能なトークンの手順を。

 

1.最初のアプリケーションページからログイン機能を介して

  アプリケーションをウォークスルーすることにより、

  セッショントークンがいつどのように発行されるかを決定します。

  2つの動作が一般的です。

 

  ■アプリケーションは、トークンを送信しない要求を受信するたびに

   新しいセッションを作成します。

 

  ■ログインに成功すると、アプリケーションは

   新しいセッションを作成します。

 

  自動化された方法で多数のトークンを収集するには、

  理想的には、新しいトークンが発行される原因となる単一のリクエスト

  (通常は、"GET /"またはログイン送信)を特定します。

 

2.Burp Suiteで、新しいセッションを作成するリクエストを

  Burp Sequencerに送信し、トークンの場所を構成します。

  次に、ライブキャプチャを開始して、可能な限り多くのトークンを収集します。

  カスタムセッション管理メカニズムが使用されていて、

  アプリケーションへのリモートアクセスしかできない場合は、

  トークンをできるだけ早く収集して、

  他のユーザに発行されたトークンの損失を最小限に抑え、

  時間依存の影響を減らします。

 

3.商用セッション管理メカニズムが使用されている場合で、

  ”/”またはアプリケーションへのローカルアクセス権がある場合は、

  制御された条件でセッショントークンの無期限に大きなシーケンスを

  取得できます。

 

4.Burp Sequencerがトークンをキャプチャしている間に、

  「auto analyse」設定を有効にして、

  Burpが定期的に統計分析を自動的に実行するようにします。

  結果を詳細に確認する前に、少なくとも500個のトークンを収集してください。

  トークン内の十分な数のビットがテストに合格した場合は、

  可能な限りトークンの収集を続け、

  さらにトークンがキャプチャされるたびに分析結果を確認します。

 

5.トークンがランダム性テストに失敗し、将来のトークンを予測するために

  悪用される可能性のあるパターンが含まれていると思われる場合は、

  別のIPアドレスと(該当する場合は)別のユーザ名から演習を再実行します。

  これは、同じパターンが検出されたかどうか、

  および最初の演習で受信したトークンを外挿して、

  受信したトークンを識別することができるかどうかを識別するのに役立ちます。

  1人のユーザーがキャプチャしたトークンのシーケンスがパターンを

  示す場合があります。

  ただし、ソースIPなどの情報がエントロピーのソース

  (乱数ジェネレーターへのシードなど)として使用されるため、

  これでは他のユーザに発行されたトークンへの直接的な外挿はできません。

 

6.他のユーザのセッションに対して自動攻撃を仕掛けるのに十分な

  トークン生成アルゴリズムについての洞察があると思われる場合、

  これを達成するための最良の手段は、

  カスタマイズされたスクリプトを使用することである可能性があります。

  これにより、観察した特定のパターンを使用してトークンを生成し、

  必要なエンコーディングを適用できます。

 

7.ソースコードが利用可能な場合は、

  セッショントークンの生成を担当するコードを注意深く確認して、

  使用されているメカニズムを理解し、予測に対して脆弱かどうかを判断します。

  エントロピーがブルートフォース範囲内のアプリケーション内で

  決定できるデータから引き出される場合は、

  アプリケーショントークンをブルートフォースするために必要となる

  実際のリクエスト数を考慮してください。

 

Best regards, (^^ゞ