web-dev-qa-db-ja.com

ハッシュ化されたパスワード-レインボーテーブルのバリエーションはいくつありますか?

最初に...私はCISSP試験に合格しました。うわー。私はそれを取り出さなければなりませんでした。 9月11日までにGCIHとCEH

ですから、技術的な側面を勉強していると、レインボーテーブルがあることがわかります。それらは、被害者のハッシュされたパスワード(シャドウまたはSAMから)を比較するために事前にハッシュされていますが、そこには多くの異なるハッシュアルゴリズムがあります。それで、すべてのアルゴリズムにレインボーテーブルが必要であり、すべてのアルゴリズムで比較を実行する必要がありますか?

言い換えると、MD5、SHA-1、NTLM、LANMANのどのアルゴリズムが使用されたかをどのように知ることができますか?

Windows 7のような1つのシステムのパスワードは常にNTLMv2になり、Unixは常にMD5になりますか?それとも、ユーザーはシステムを変更して、SHA-256のようにシステムのパスワードに使用するアルゴリズムを指定できますか?

4
Abdu

たくさんの質問を1つにまとめる

5
M'vy

@ M'vyはあなたの質問に対する具体的な答えを持っています。

それが実際にどのように機能するかについてのより広い答えに関して:

以前は、さまざまなRainbowテーブルを保持していました。アルゴリズムがわからない場合は、特定の環境で最も可能性の高いものから始めて、それらを処理していました。スクリプトを使用すると、非常に簡単になります。それが最後のテーブルにあることになったとしても、それでもほとんど時間がかかりません。

3
Rory Alsop

通常、あなたは文脈からハッシュ関数を知っています。パスワードを解読しようとしている場合、このパスワードは、どこかでデータやサービスへのアクセスを許可するという点で価値があります。具体的には 目標。したがって、システムの種類をすでに知っていると想定する必要があります(特に、データベースからハッシュされたパスワードのリストを取得することに成功した場合は、sawデータベース)、これにはパスワードハッシュ関数の知識が含まれることがよくあります。さらに、いくつかのタイプのハッシュ関数をサポートするシステム(/etc/shadowファイル(Unixシステム上の))、ハッシュの種類はハッシュ値に沿ってエンコードされます。これは、本質的に、システム自体がそれを認識している必要があるためです。

ハッシュ化されたパスワードは、実行可能ファイルおよびソースコードとして存在するソフトウェアによって使用されることを目的としていることに注意してください。一般的に、ソフトウェアは秘密であると見なすことはできません。リバースエンジニアリングは、データに対して実行される処理の種類を明らかにするのに非常に効果的です。

Windowsの場合、パスワードは2つのハッシュ関数、古いLM(LanMan)と新しいNTハッシュ( MD4 )で処理される傾向があります。一部で使用される「パスワードベリファイア」もあります。これは、ユーザー名で「ソルト」されます(実際には、適切なソルトではありません。すべての「管理者」は「管理者」と呼ばれます)。詳細については、 このページ を参照してください。 LMハッシュは 非常に弱い であり、レインボーテーブルの有効性を示すためのデモンストレーションテストベッドとして使用されました。幸い、新しいシステムではデフォルトで無効になっています(Vista以降)。ただし、NTハッシュは非常に高速で(単一のMD4呼び出し...)、無塩であるため(したがって、レインボーテーブルなどの事前計算されたテーブルを作成する価値があります)、依然として非常に弱いです(LMほどひどいわけではありませんが)。 。

1
Thomas Pornin