Shikata Ga Nai

Private? There is no such things.

不十分なエントロピーについての診断方法についてかいてみた

Hello there, ('ω')ノ

 

OWASP TOP10 2021のA2には、暗号化の失敗が挙げられていて。

 https://cwe.mitre.org/data/definitions/1346.html

 

f:id:ThisIsOne:20220110095059p:plain

 

その中には、不十分なエントロピーがあって。

どのようなものかというと。

 

f:id:ThisIsOne:20220110095203p:plain

 

まずは、すべてのハッカーは、労力をかけずに使用できるツールが好きなので。

Burp Sequencerを使うことに。

これは、データ項目のサンプルのランダム性の品質を分析するためのツールで。

データ項目は次のとおりで。

 アプリケーションセッション識別子

 CSRFトークン

 パスワードトークンをリセットまたは忘れた

 アプリケーションによって生成された特定の予測不可能な識別子

 

Burp Sequencerは、セッションIDのランダム性または分散を。

キャプチャするツールで。

文字レベルの分析またはビットレベルの分析など。

いくつかの異なるシナリオでサンプルをテストして。

Burp Sequencerの動作の詳細については下記を。

 https://portswigger.net/burp/documentation/desktop/tools/sequencer/tests

 

f:id:ThisIsOne:20220110101014p:plain

 

まずは、Burp Suiteは、Intercept is onにしておいてからログインして。

 

f:id:ThisIsOne:20220110101955p:plain

 

キャプチャされたリクエストを確認すると。

PHPSESSIDがCookieヘッダにあることがわかるので、Send to Sequencerへ。

 

f:id:ThisIsOne:20220110102829p:plain

 

Sequencerがリクエストを受信するとトークンIDが直接入力されて。

 

f:id:ThisIsOne:20220110103140p:plain

 

また、別の値を解析したい場合は、Custom locationを選択して。

パラメータ値のみをマーキングして保存すると。

 

f:id:ThisIsOne:20220110103615p:plain

 

Custom locationに反映されて。

そして、Start live captureをクリックすると分析が始まるので。

 

f:id:ThisIsOne:20220110103653p:plain

 

今回は、リクエストが10,000を超えたところでResumeして。

Analyze nowをクリックすると。

 

Ovaerall resultには。

選択したパラメータ値のランダム性の全体的な品質が「excellent」と評価されて。

セッションIDが繰り返されると、ランダム性の品質が「悪い」と見なされたりと。

 

今回は有効なエントロピーは110bitで。

下記が適切な値で。

 最小値:64bit

 最適値:128bit

 

f:id:ThisIsOne:20220110103833p:plain

 

Bit-level analysisでの確認もできて。

Save tokensでトークンの保存も。

 

f:id:ThisIsOne:20220110104604p:plain

 

f:id:ThisIsOne:20220110110102p:plain

 

Best regards, (^^ゞ