ソルトMD5ハッシュを持っていますが、パスワードも知っています。 John The Ripper(JTRジャンボがインストールされている)などのツールを使用してソルトを回復するにはどうすればよいですか?
既知の平文で、単純な文字列連結を使用するソルティングを想定すると、hashcatやMDXfindなどの一部のパスワードクラッキングスイートを使用して、ソルトをブルートフォースすることができます。これは、単純なソルト(ブルートフォースに十分短いか、またはソルトの文字セットがキースペースを小さく保つのに十分既知である場合)でのみ実用的です。
Hashcatの(おそらく直感的でない)トリックは、saltがパスワードであり、パスワードがsaltであるふりをすることです。これは、ソルティングが単純な連結として実行されるときに機能します。
この例では、既知の平文パスワードは「password」であり、不明なソルトは「GR7」です。ハッシュキャットのアルゴリズムモード20(md5($ salt。$ pass))を使用します。
これがソルトハッシュです:
$ echo -n 'passwordGR7' | md5sum
a598e9df477f07dadee6b6bee9ac1daa -
...そして、これがターゲットハッシュと「ソルト」です(期待されるハッシュ:ソルト形式)。しかし、「ソルト」は実際には既知のプレーンテキストパスワードです。
$ cat hash.list
a598e9df477f07dadee6b6bee9ac1daa:password
次に、「?a?a?a」マスク(すべて3文字の印刷可能な文字列)を潜在的な「パスワード」(実際にはソルト)として使用します。
$ hashcat --quiet -m 20 -a 3 hash.list ?a?a?a
a598e9df477f07dadee6b6bee9ac1daa:password:GR7
さまざまな長さまたは形式のソルトを処理するには、単にマスクまたは攻撃タイプを調整します。ソルトの長さがわからない場合は、--increment
提供されたマスクの長さまでのすべての長さを試す。
付加される代わりにソルトが付加される場合は、代わりにハッシュキャットモード10(md5($ pass.salt))を使用できます(この場合も、このコンテキストの「パス」は実際にはソルトであり、上記と同じ方法を使用することに注意してください)。
John the Ripperでは明示的にこれを行っていませんが、Johnは動的形式を使用してmd5($ p。$ s)とmd5($ s。$ p)をサポートしているため、Johnでも同じ手法を使用できると思います。ただし、これらの動的フォーマットは、この記事の執筆時点ではCPUのみに対応しているため、GPUを利用できる場合は、代わりにhashcatを検討することをお勧めします。