EncFSフォルダーのパスワードを忘れた(作成、休暇に行った、忘れた)。しかし、パスワードが作成された方法を覚えています(たとえば、4つの辞書の単語のシーケンスでした)。だから私はパスワードを見つけることを試みることにしました-私がシステムセキュリティの専門家でなくても。
パスワードを解読する唯一の方法は、ブルートフォース攻撃です。
.encfs6.xml
ファイルを含むEncFSフォルダーがある場合、フォルダーをマウントしてパスワードを指定するだけで、パスワードが正しいかどうかをテストできます こちら 。
しかし、この種の攻撃は非常に遅いことに気づきました。並列攻撃を試し、GPUを使用してパスワードをテストしたいと思います。
パスワードに対して「迅速に」攻撃を実行するには、たとえばパスワードのハッシュなどの「何か」を取得し、一致するものが見つかるまで推定パスワードのハッシュを計算する方がよいことを知っています。
ただし、EncFSのしくみはわかりません。.encfs6.xml
がデータを復号化するための基本であることは知っていますが、データに含まれるデータと、それを使用して攻撃を並列化する方法はわかりません。
EncFSはどのようにデータを暗号化し、.encfs6.xml
のコンテンツを使用して、encfsユーティリティを実行せずにパスワードが有効かどうかをテストすることができますか? (または、EncFSコードのどこでこの質問に回答するための関連情報を見つけることができますか?)
また、攻撃にopenssl
を使用することを検討していますが、コマンドラインのopensslツールで.encf6.xml
情報を使用する方法を理解する必要があります。使用するアルゴリズムについてもわかりません:aes-256-what??
TMPDIR=$(mktemp -d)
cd ${TMPDIR}
mkdir ${TMPDIR}/encrypted
mkdir ${TMPDIR}/mount_point
encfs ${TMPDIR}/encrypted ${TMPDIR}/mount_point
例として、パスワードを「正しいホースバッテリー」.
これで、次のファイルができました。
$ find
.
./encrypted
./encrypted/.encfs6.xml
./mount_point
また、次のようにディレクトリをマウントできるはずです。
encfs ${TMPDIR}/encrypted ${TMPDIR}/mount_point
(中にあるので許可エラーがあるかもしれません / tmp。クラッキング自体には必要ないため、無視してください。)
最新のJohn the ripperを入手してください。
$ {JOHN}によって参照されるディレクトリにインストールしたと仮定しましょう。
インストール "噛み砕く" 単語リストを生成するには:
Sudo apt install crunch
John the ripperのハッシュファイルを作成します。
${JOHN}/encfs2john.py ${TMPDIR}/encrypted/ > ${TMPDIR}/encfs6.xml.john
クラッキングを開始します。
生成された単語リストを使用する:
crunchを使用して単語リストを作成します。
crunch 2 4 -o wordlist.txt -p staple battery horse correct
これはファイルを生成します wordlist.txt 渡された単語の可能なすべての順序を含む:
batterycorrecthorsestaple batterycorrectstaplehorse batteryhorsecorrectstaple ... staplecorrecthorsebattery staplehorsebatterycorrect staplehorsecorrectbattery
それを行うより広範な方法については、ここを参照してください: パスワードリストの生成、順列と長いパスワード
ワードリストを使用してJohn the ripperを実行します。
コマンド:
${JOHN}/john --wordlist=wordlist.txt --progress-every=3 --pot=cracked_passwords.pot ${TMPDIR}/encfs6.xml.john
出力:
デフォルトの入力エンコーディングを使用:UTF-8 ロードされた1つのパスワードハッシュ(EncFS [PBKDF2-SHA1 128/128 SSE4.1 4x AES/Blowfish]) 8つのOpenMPスレッドを実行します 「q」またはCtrl-Cを押して中止します。ステータスの他のほとんどすべてのキー 0g 0:00:00:00 DONE(2020-02-13 21:51)0g/s 0p/s 0c/s 0C/s 正しいホースバッテリー (/tmp/tmp.ZGtxLjHUQi/encrypted/) 1g 0:00:00:01完了(2020-02-13 21:51)0.8695g/s 20.86p/s 20.86c/s 20.86C/s batterycorrecthorsestaple..staplehorsecorrectbattery 「-show」オプションを使用して、クラックされたすべてのパスワードを確実に表示します セッションが完了しました
「マスクモード」の使用:
このモードでは、一連の文字、最小長と最大長、および既知のパスワード部分を含むマスクを指定できます。詳細はこちらをご覧ください: https://github.com/magnumripper/JohnTheRipper/blob/bleeding-jumbo/doc/MASK
コマンド:
${JOHN}/john --min-length=25 --max-length=25 -2='eolabpcrsthy' -mask='correct?2?2?2sebatterystaple' --progress-every=3 --pot=cracked_passwords.pot ${TMPDIR}/encfs6.xml.john
出力:
デフォルトの入力エンコーディングを使用:UTF-8 ロードされた1つのパスワードハッシュ(EncFS [PBKDF2-SHA1 128/128 SSE4.1 4x AES/Blowfish]) 8つのOpenMPスレッドを実行します 「q」またはCtrl-Cを押して中止します。ステータスの他のほとんどすべてのキー 0g 0:00:00:00(25)0g/s 0p/s 0c/s 0C/s 0g 0:00:00:02 3.70%(25)(ETA:21:50:48)0g/s 27.46p/s 27.46c/s 27.46C/s correctbpesebatterystaple..correctyresebatterystaple 0g 0:00 :00:05 9.26%(25)(ETA:21:50:48)0g/s 28.57p/s 28.57c/s 28.57C/s correctboosebatterystaple..correctyaosebatterystaple 0g 0:00:00:09 14.81%(25)(ETA:21:50:53)0g/s 28.41p/s 28.41c/s 28.41C/s correctbtosebatterystaple..correctyyosebatterystaple 0g 0:00:00:11 18.52%(25 )(ETA:21:50:52)0g/s 28.59p/s 28.59c/s 28.59C/s correctsllsebatterystaple..correctaplsebatterystaple 0g 0:00:00:14 24.07%(25)(ETA: 21:50:52)0g/s 28.74p/s 28.74c/s 28.74C/s correctshlsebatterystaple..correctaoasebatterystaple 0g 0:00:00:17 29.63%(25)(ETA:21:50: 51)0g/s 28.84p/s 2 8.84c/s 28.84C/s correctscasebatterystaple..correctatasebatterystaple 0g 0:00:00:21 35.19%(25)(ETA:21:50:52)0g/s 28.89p/s 28.89c/s 28.89C/s correctslbsebatterystaple..correctapbsebatterystaple 0g 0:00:00:23 38.89%(25)(ETA:21:50:53)0g/s 28.95p/s 28.95c/s 28.95C/s correctesbsebatterystaple..correctrhbsebatterystaple 0g 0:00:00:26 44.44%(25)(ETA:21:50:52)0g/s 28.97p/s 28.97c/s 28.97C/s correctebpsebatterystaple..correctrcpsebatterystaple 0g 0:00:00:29 50.00%(25)(ETA:21:50:52)0g/s 29.01p/s 29.01c/s 29.01C/s correcteecsebatterystaple..correctrlcsebatterystaple 0g 0:00:00:33 55.56%(25)(ETA:21:50:52)0g/s 29.04p/s 29.04c/s 29.04C/s correctescsebatterystaple..correctrhcsebatterystaple 0g 0: 00:00:35 59.26%(25)(ETA:21:50:53)0g/s 29.06p/s 29.06c/s 29.06C/s correctborsebatterystaple..correctyarsebatterystaple 正しいホースバッテリー (/tmp/tmp.ZGtxLjHUQi/encrypted/) 1g 0:00:00:36 DONE(25)(2020-02-13 21:50)0.02746g/s 29.00p/s 29.00c/s 29.00C/s correctborsebatterystaple..correctyarsebatterystaple 「-show」オプションを使用して、クラックされたすべてのパスワードを確実に表示します セッションが完了しました
ここに -2 文字のセットを指定する一方で、 ?2 マスクのどこで使用するかを指定します。
見つかったパスワードの確認:
コマンド:
${JOHN}/john --pot=cracked_passwords.pot --show ${TMPDIR}/encfs6.xml.john
出力:/tmp/tmp.ZGtxLjHUQi/encrypted/:正しいホースバッテリー クラックされたパスワードハッシュ1個、残り0個
cat cracked_passwords.pot
を使用することもできます。
あなたはキャンセルされたクラッキング実行を続けることができます:
${JOHN}/john --restore
切り裂きジョン オプション:
--pot = NAME :使用するポットのファイル名
デフォルトでは、ジョンは $ {JOHN} /john.pot。このオーバーライドにより、別のjohn.potのようなファイルを使用できるようになります(開始して、見つかったパスワードを格納するため)。
cf: https://github.com/magnumripper/JohnTheRipper/blob/bleeding-jumbo/doc/OPTIONS
ハッシュキャット そのときはもっと速いかもしれない 切り裂きジョン、しかしそれはまだencfsをサポートしていないようです。