web-dev-qa-db-ja.com

truecryptボリューム-hashcharで18文字の既知のパスワードを復元(文字のバリエーション)

解読したい古いtruecryptファイルがあります。当時使用していた18文字のパスワードはわかっています。しかし、私はそれを "変化"させました:いくつかの文字をl33tの同等のものにマッピングしました(わかっています。

ハッシュキャットを使ってそれを解読したかったのですが、パスワードから始めてバリエーションを生成する方法に戸惑っています。

特に、パスワードの単一の文字に対してl33tのバリエーションをどのようにして試行しますか?たとえば、Uは| _ |です。したがって、1文字は3文字にマッピングされます。

私はマスクなどについて読んでいますが、それは私にとって少し混乱します。どこから始めればいいですか?

ありがとうございました !

2
Pak

現在、効率的な速度でTrueCryptを攻撃するために、1対1および1対複数の文字置換の両方を実行するルールのリストを処理するハッシュキャットネイティブの方法はありません。 TrueCryptはかなり遅いハッシュであるため、外部プログラムを使用して置換を実行し、結果をhashcatにパイプする方がよい場合があります。 (言い換えれば、候補のパスワードを自分で生成するオーバーヘッドがクラッキングプロセスのボトルネックになることはありません。)

Hashcatを直接使用する他のオプションは次のとおりです。それらにはすべてトレードオフがあります。

単一の文字を他の単一の文字で置き換えるには、hashcatの組み込みルールシステムを使用できます。 -独自のルールを作成するか、hashcatで配布される「rules /」ディレクトリ内の「leetspeak」ルールセットの1つを使用する。いくつかのカスタムルールを作成するために、 ルールシステム とそれらのルールセットを研究してアイデアを得ることができます。

攻撃は次のようになります。

hashcat -a 0 -m [62xx] -r rules/leetspeak.rule target.hashfile

単一の文字を複数の文字で置き換える-'U'-> '| _ | 'ケース-少しトリッキーです。

一般的な目的のために、オプションがあります:

  1. 単一の文字から複数の文字へのマッピングは、現在 hashcat-legacy (CPUのみ)と呼ばれるものでサポートされており、テーブル攻撃と呼ばれるものを使用しています。ただし、hashcat-legacyはTruecryptハッシュをサポートしていないため、これは機能しません。

  2. 同様の攻撃は、最新のhashcatで-jおよび-kパラメーターと、ルールシステムでpositional parametersと呼ばれるものを使用して可能です。基本的に、hashcatに、文字が見つかった位置を「記憶」し、その位置にある文字を削除してから、必要な文字を挿入するように指示しています。

2番目のアプローチは、選択的な文字置換の特殊なケースです。 hashcat wikiに文書化されています 。これがそのドキュメントの関連部分であり、最後に述べた複数文字のアプローチを使用します。

キャラクターの最初のインスタンスのみを操作する場合は、%1sを使用するか、単に '/'を使用できます:

$ echo -n 'Odessa77' | hashcat --stdout -j '%1s Dp ip$'
Ode$sa77
$ echo -n 'Odessa77' | hashcat --stdout -j '/s Dp ip$'
Ode$sa77

2番目のインスタンスのみを操作する場合:

$ echo -n 'Odessa77' | hashcat --stdout -j '%2s Dp ip$'
Odes$a77

…など。文字のすべてのインスタンスを置き換える「s」ルールとは異なり、これにより、置き換える文字のインスタンスを選択できます。

この機能を使用して、1つの文字を複数の文字に置き換えることもできます:

$ echo -n 'p@ssW0rd' | hashcat --stdout -j '%1W DpM ip/ ip\ ip/ ip\'
p@ss\/\/0rd

挿入は記憶された位置に対して一度に1文字なので、挿入される文字はコマンドに逆の順序でリストされていることに注意してください

ユースケースに近い例を次に示します。

$ echo TrueCrypt | hashcat --stdout -j '%1u ip| ip_ ip|'
Tr|_|ueCrypt

このアプローチの主な欠点は、位置パラメータが-jおよび-kでのみ機能するため、一度に1つしか使用できないことです(単一の置換の場合、置換の大きなリストの一部ではありません)。あなたが望む可能性が高いです)。

つまり、Python、Perl、またはsedを使用して独自の文字置換メソッドをローリングすることが最も柔軟なソリューションとなる理由の長い話です(TrueCryptは非常に「遅い」ハッシュであるため、超高速は必要ありません)。

2
Royce Williams