複数の暗号化エンティティをLUKS + Ext4 USBスティックで自動復号化します。

複数の暗号化エンティティをLUKS + Ext4 USBスティックで自動復号化します。

LUKS + Ext4を使用して暗号化されたUSBスティックがあります。パスワードを忘れました...

しかし、私はパスワードにどの単語が含まれるのかを知っており、その単語のすべての置換リストを持っています。約10,000の順列があります。

すべての順列を1つずつ手動で試すのではなく(長くて遅くて痛いほど退屈なプロセスです)、このプロセスを自動化できますか?一種の悪意のある暴力的な攻撃のように聞こえますが、そうではありません。これが必要な場合は、インターネットから奇妙なソフトウェアを簡単にダウンロードできます。

代わりに、私のコンピュータのセキュリティ機能、つまり私にぴったりのスクリプト(またはセキュリティソリューション)を使用したいと思います。

可能ですか?

答え1

この攻撃を実行する最も効果的な方法はJohn the Ripperルカによる福音書ヨハネ2ハッシュ値を抽出し、John(「LUKS」ハッシュ形式)またはhashcat(ハッシュモード14600)を使用して攻撃します。

これの利点は、保有しているコア数(John CPUサポートまたはhashcat OpenCL CPUサポート)またはGPU数(hashcat OpenCL GPUサポート)によって拡張されることです。

また、基本インターフェイスを使用するよりも、すべての攻撃者にとってより速い暗号化効率を利用します。これらの効率は、単に、通常はロック解除を繰り返し試みるよりもはるかに速い場合があります。

また、これらのツールがサポートする完全な攻撃モードのセット(単語リスト、ルール、マスク、混合など)も提供します。

答え2

まあ、最も素朴な場合は、おおよそ次のようなことができます。

for a in 'fo' 'foo' 'fooo'
do
    for b in 'ba' 'bar' 'baar'
    do
        for c in 'bz' 'baz' 'bazz'
        do
            echo -n "$a$b$c" | cryptsetup open /dev/luks luks \
            && echo "'$a$b$c' is the winner!" \
            && break 3
        done
    done
done

すべてのパズルを順番に進みます... foobarbz foobarbaz foobarbazz ...など。 (オプションのフラグメントがある場合は、空の文字列を追加してください。フラグメントがランダムな順序である場合は、自分で考えてみてください。)

パフォーマンスを最適化するには、次のようにします。

  • cryptsetupstdinでパスワードを読み続けるパッチ(githubのlukscrackplusはそのような例の1つですが、古い)
  • 完全な単語リストを作成し、splitそれらを別々のファイルに入れてから、これらのループを複数実行します(コアごとに1つ、複数のシステムで実行することもできます)。
  • 別の/より速い暗号化バックエンド(gcryptではなくイラクサなど)を使用してcryptsetupをコンパイルすると、最後のベンチマークで差が大きかった。
  • 無差別代入LUKSの別の実装を探す

ただし、可能性が低すぎる(最適化なしで1日で行うことができます)、可能性が多すぎる場合(最適化がどれほど成功しても成功しない場合)、最適化は意味をなさない可能性があります。

また確認して下さい:

  • 間違ったキーボードレイアウトを使用していますか?
  • LUKSヘッダーが破損していませんか?

(LUKS1では確かにわかる方法はありませんが、知っていてhexdump -Cランダムなデータがなければ時間を無駄にする必要はありません)

ここにも同様の質問があります。https://security.stackexchange.com/q/128539

しかし、範囲を大幅に狭めることができれば、この素朴なアプローチも効果があるかもしれません。

答え3

はい。私はほとんどこの問題に直面しました。私はそのうちの1つが動作するまですべての可能性を繰り返すスクリプトを書いています。しかし、私はtruecrypt1つのロールです。唯一のことは速度制限がある場合ですが、これは小切手をウェブサイトなどに転送する場合にのみ当てはまります。持っているボリュームを使用すると、これを比較的簡単に実行できます。

しかし、それも非常に暴力的です。選択肢を少数に絞っただけなので、それほど難しくありません。

答え4

はい、前の回答で述べたように、これがhashcat最良の選択肢の1つです。 LUKSはハッシュを保存しないため、USBドライブから暗号化されたデータサンプル(ヘッダー)をインポートする必要があります。このサンプルのみを処理します。

sudo dd if=/dev/{USB_LUKS_partition} of=/tmp/data_sample.luks bs=512 count=4079

Hashcat直接的な無差別代入攻撃から事前攻撃、ルールベース攻撃、マスク攻撃まで、パスワードを復号する方法は様々です。この場合、Password_candidates.txtがあります。

hashcat -m 14600 -a 0 -w 3 /tmp/data_sample.luks password_candidates.txt

これにより、数秒以内にパスワードが提供されます。総勘定元帳

関連情報