ハッシュクラッキングツールのレビュー:John the RipperパスワードクラッカーとMDCrack

現時点では、ブルートフォース(ブルートフォース)、辞書選択、ルール付きディクショナリ(ハイブリッド攻撃)、レインボーテーブル(レインボーテーブル)、暗号攻撃の5つの方法でハッシュを開くことができます。 ハッシュ自体は、通常のハッシュと、塩を含むハッシュ(塩、「シード」)に分けることができます。 この記事はjohnおよびmdcrackプログラムについてです。 それらの例を使用して、ブルートフォースを実装するための基本的な方法も検討します。



ジョン



John the Ripperパスワードクラッカーは、MySQLからOpenBSDまで、さまざまなソフトウェアやOSで使用されるさまざまなタイプのハッシュを開くように設計されています。 プログラムの特徴:ブルートフォースパスワード、辞書でのパスワード選択、ハイブリッド攻撃。 このプログラムに固有の署名および外部パスワード推測方法と同様に。 すべての方法を以下に説明します。



プログラムには、中断後に選択プロセスを復元する機能があります。


プログラムの機能の1つは、「一度に」多数のパスワードを開くと、個別に開くよりも速く開く可能性が高いという事実です。 以下で説明するように、パスワードの増分は「知的」です。



プログラムには2つの制限があります。johnは、ソルトでのみハッシュを開くことができます-通常のハッシュを開くには、適切なパッチまたは既製のスペシャルが必要です。 プログラムアセンブリ; 8文字以下の長さのパスワードをブルートフォースできます(ただし、辞書攻撃にはそのような制限はありません)。



ソルト(塩、「シード」)は、ハッシュの計算を複雑にする方法です。 たとえば、FreeBSDでは、パスワードハッシュを計算するときに、2つのランダムな文字が最初に生成され、パスワードに連結され、受信した文字列からハッシュが計算され、これらの2つの文字が受信したハッシュに追加され、結果のハッシュが得られます。



コンピューター上のプログラムの速度をテストするには、「-test」フラグを付けて実行します。 結果はc / sで発行されます。 このタイプの他のプログラムで慣習であるh / s(1秒あたりのハッシュ)ではなく、1秒あたりの文字数で。 ただし、後続の各文字は新しいパスワードを形成します。 したがって、たとえば、毎秒3500文字でソートすると、毎秒3500個の新しいパスワードが生成されます。 したがって、 john --testが与える数値は1秒あたりのハッシュです。



プログラムを開始するには、開いたハッシュをファイルに書き込みます: user:hash 、userは任意の行、hashは開いたハッシュです。 一度に複数のハッシュを開く必要がある場合は、それらをすべて1つのファイルに書き込む必要があります。 前述のように、すべてのハッシュは、別々のファイルに別々に書き込まれた場合よりも速く開く可能性があります。 たとえば、次の内容のbla.passファイルを作成します。



user1:$1$yHJlM1Y9$lzO5yVj6Drepbz6xje0wq0

user2:$1$RDBUtZMr$z8acZKa5XzY0vQuUwG6Un1

user3:$1$EP5lm7ex$poOrQvYoH78Bc63nhXx1p1

user4:$1$ths1/RY5$CUR32fPoOr/UcjeBpD4fx0






検索を開始するには、 john bla.passコマンドを指定します。 プログラムは、ロードされたハッシュの数、異なるソルトの数(古いUNIXシステムではソルトが修正された、つまり、すべてのパスワードで同じ)とハッシュのタイプについて通知します。 ハッシュのタイプが正しく判断されない場合があります。 したがって、通常のmd5_128bit(ソルトなし)を開こうとすると、この記事で検討したjohnのバージョンは、このハッシュをNT LM DESとして決定し、明らかに無効なパスワード選択を開始します。



検索を開始した後、パスワードが開かれるまでに時間がかかる場合があります。 妥当な時間内にパスワードを開こうとするために、johnにはさまざまな種類の選択(操作モード)、ルール、フィルター、および柔軟な構成ファイルがあります。 次に、johnの動作モードについて簡単に説明します。 詳細については、プログラムのドキュメントを参照してください。



合計、ジョンには4つの操作モードがあります。 パスワードをクラックする4つの方法:シングルクラック、ワードリスト、増分および外部。


シングルクラックモード -間接的な証拠によるパスワード検索。 パスワードの最初の候補は、ユーザー名、「GECOS」、「フルネーム」-彼のアカウントのフィールドとユーザーのホームディレクトリの名前です。 また、受信したデータにはルール(ハイブリッド攻撃)が使用され、さらに多くのパスワードが考えられます。 しかし、プログラムに添付されている辞書ほどではありません。 したがって、これが最速の方法です。 数秒で作業を完了します(可能なすべてのパスワードオプションを繰り返します)。



GECOSフィールドには、ユーザーは電話番号、生年月日など、自分に関する追加データを書き込むことができます。


ワードリスト -辞書によるパスワード選択。 メイン辞書の重量は600 Mb以上で、2つのディスクに分散されています。 20以上の言語で最も使用されているパスワードが含まれています。 このパスワードコレクションは28.25ドルの価値があります。 11 Mbの小さなパスワードコレクションも利用できます。 このコレクションには20を超える言語のパスワードも含まれているため、このコレクションの有効性には疑問があります。 ワードリストモードには「サブモード」があります:ルール(ルール)を含むワードリスト。 これは、パスワード推測のハイブリッド形式です。 適用可能なルールのセットは、独自のもので変更および補足できます。 ルールは、ジョンルールプリプロセッサによって読み取られて処理される特殊文字と特殊フラグを使用して、構成ファイルに記述されています。



passwords.ruからいくつかの非常に便利な辞書をダウンロードできます。


インクリメンタル -ブルートフォース、すなわち 総当たり。 列挙設定は構成ファイルに保存されます。 繰り返し処理を行う場合、プログラムはパスワードの長さと文字セットに沿って増分頻度を均等に配分します(このモードは、限られた時間内にできるだけ多くのパスワードをクラックするために、このモードが文字位置ごとおよびパスワード長ごとに3文字の頻度を処理する理由の1つです)。 5つの増分モードがあります:「すべて」、「Alnum」、「Alpha」、「Digits」、および「LanMan」。 たとえば、「Digits」は数字のみを反復し、「Alpha」は小文字のラテン文字のみを反復します。 独自のインクリメンタルモードサブモードを作成することもできます。 詳細はドキュメントをご覧ください。



外部 -このモードでは、4つのコールバック関数を使用して、Cの構成ファイルに記述されている「フィルター」を適用できます。 これを使用して、独自の検索アルゴリズムを作成できます。 ただし、いくつかの基本的なものはすでに構成ファイルに書き込まれているので、それらを使用できます。



すべてのモードを組み合わせることができます。 デフォルトでは(モードを指定せず、設定で何も変更しない場合)、プログラムは最初にシングルモードを実行し、プログラムに接続されている辞書(3108個のパスワードのみ)に従ってパスワードを見つけようとし、次にパスワードの列挙を開始します(増分モードに切り替わります) 96文字のアルファベット(ラテン小文字、ラテン大文字、数字、および文字)を含む0から8。



実践的なアドバイス:最初に、(失敗した場合に)誰よりも速く作業を終了するモードとサブモードを試してください。 シングル、ワードリスト、およびルール付きのワードリストモードでの作業を終えたら、おそらく「すべて」サブモードでパスワードのブルートを開始します。 これは最大の間違いかもしれませんが、時間がかかりすぎます。 代わりに、最初に文字の昇順でより高速なサブモードを試してください:「数字」(10桁)、「アルファ」(26ラテン小文字)、「Alnum」(36文字-文字+数字)など。 ユーザーはしばしば単純なパスワードを使用するため、最初に高速のインクリメンタル検索サブモードを試す必要があります。 これにより、時間を大幅に節約できます。



mdcrack



このプログラムは、パスワード推測の最大速度を達成することを目指しています。 プログラムバージョン1.2はオープンソースですが、MD4、MD5、NTLM1の3種類のハッシュのみをサポートしています。 プログラムバージョン1.5および1.7は、md5_freebsdを含む多数のハッシュをサポートしていますが、ソースコードはオープン形式では提供されていません。 mdcrackプログラムは、johnプログラムの標準アセンブリがあなたに合わなかったとき、つまり総当たり攻撃に便利です。 ソルトなしで(ソルトなしで)ハッシュを開く必要がある場合。



mdcrackプログラムを呼び出す例:

 mdcrack -s qwertyuiopasdfghjklzxcvbnm -S 7 c8e5b031cee3fe69955e63f8c5e11509.
      
      





このコマンドの後、「セッション」が作成されます。検索を中止した場合は、 mdcrackコマンド(パラメーターなし)を実行して、中断されたセッションに戻ります。 セッションを削除するには、mdcrack -dコマンドを発行します。



プログラムの完了時または中断後に、コンピューターのパフォーマンスに関する情報(1秒あたりの平均ハッシュ数)が提供されます。



-Wフラグは、事前に計算されたパスのファイルを作成するために使用されます:ハッシュペア。 そのようなファイルを読み取るには、-Rフラグを使用します。 読み取り/書き込み操作を高速化するために、-Fフラグが使用されます。



-bおよび-eフラグは、commgneの値を示すために使用されます。 一部のデータ転送プロトコルでは、送信されたパスワードハッシュが暗号化されます(送信されたハッシュからのハッシュが計算されます)。 このコンテキストで暗号化されるパスワードは、fluctgneと呼ばれます。



mdcrackプログラムが衝突ハッシュを探していることは注目に値します。 実際には、複数のパスワードが1つのハッシュに対応できる(ただし、この可能性は非常に小さい)、さらに異なる長さです。 ユーザーが9文字のパスワードを設定した場合、そのようなパスワードを選択すると、たとえば2文字の別の短いパスワードがまったく同じハッシュを持つことが判明する場合があります。 そして、攻撃されたシステムに入力すると、それは正しいと認識されます。



テーマ別リンク






All Articles