
C言語によるMarkovモデルベースのパスワード推測ツール。確率順に候補を列挙し、HashcatやJohnによるハッシュクラッキング向けに最も可能性の高いパスワードから生成します。
OMENはC言語で書かれたマルコフモデルベースのパスワード推測ツールです。パスワード候補をその出現確率に従って生成します。つまり、最も可能性の高いパスワードから順に出力します。OMENは既存の提案手法と比較して推測速度を大幅に改善します。 OMENが既存のマルコフモデルベースのパスワード推測手法をどのように改善しているかの詳細に興味がある場合は、OMEN: Faster Password Guessing Using an Ordered Markov Enumeratorを参照してください。
OMENは2つの独立したプログラムモジュールで構成されています: createNG と enumNG です。createNG
は与えられたパスワードリストに基づいてn-gram確率を計算し、ハードディスクに保存します。これらの確率に基づいて enumNG は新しい
パスワードを正しい順序(降順)で列挙します。
最近のLinuxバージョンを使用し、git(Gitバージョン管理システム)、gcc(GNU Compiler Collection)、および make(GNU Make)がインストールされていることを確認してください。Ubuntu Linuxでは以下のようにインストールできます:
$ sudo apt-get install build-essential git
ソースコードをチェックアウトします:
$ git clone https://github.com/RUB-SysSec/OMEN.git OMEN
新しく作成されたディレクトリ OMEN に移動して実行します:
$ make
コンパイルが成功した場合、カレントディレクトリに createNG と enumNG があります。
.
├── alphabetCreator
├── createNG
├── docs
│ ├── CHANGELOG.md
│ ├── LICENSE
│ └── screenshots
├── enumNG
├── evalPW
├── makefile
├── README.md
└── src
├── alphabetCreator.c
...
必要であれば、src フォルダと makefile ファイルを削除できます。これらはもう使用されません。
Windows 10でCygwinを使用した簡単なインストールガイドはこちらにあります。
パスワードを生成する前に、createNG を使用してn-gram確率を推定する必要があります。デフォルト設定で確率を計算するには、createNG を
トレーニングするパスワードリストへのパスを指定して呼び出します:
$ ./createNG --iPwdList password-training-list.txt
与えられたリストの各パスワードは新しい行に記述する必要があります。モジュールは
リストを読み込んで評価し、いくつかのファイルを生成します。使用された設定(この場合はデフォルト設定)を保存する設定ファイル(createConfig)の他に、グラムとパスワード長に関する情報を含むいくつかのファイルが作成されます。これらのファイルは拡張子 '.level' を持ちます:
各n-gramと長さの確率は0(最も可能性が高い)から10(最も可能性が低い)の間のレベルにマッピングされます。これらのファイルが作成されると、enumNG を使用して確率順にソートされたパスワードのリストを生成できます。現在、enumNG は3つの動作モードをサポートしています: file、stdout、simulated plaintext attack です。enumNG のデフォルトモードでは、これらのレベルに基づくパスワード推測のリストが作成されます。コマンド
$ ./enumNG
を使用すると10億個のパスワードを生成し、それらをテキストファイルに保存します。このファイルは 'results' フォルダにあります。このファイル内のパスワードはレベル(つまり確率)順に並んでいます。一般的なテキストエディタはこのような巨大なファイルを扱えないため、テスト時には生成されるパスワード数を減らすことを推奨します。これは引数 -m を使用して行えます。
$ ./enumNG -m 10000
これにより10,000個のパスワードのみを含む順序付きリストが作成されます。パスワードを標準出力(stdout)ストリームに出力したい場合は、引数 -p を使用します。
$ ./enumNG -p -m 10000
plaintext パスワードテストセットに対して推測性能を評価したい場合は、引数 -s を使用します。注意: このモードではOMENはライブフィードバックを組み込んだ適応的長さスケジューリングアルゴリズムの恩恵を受けますが、これは file および stdout モードでは(フィードバックチャネルがないため)利用できません。
$ ./enumNG -s=password-testing-list.txt -m 10000
この評価の結果は 'results' フォルダにあります。
両方のモジュールは -h または --help 引数を使用して表示できるヘルプダイアログを提供しています。
$2a$10$HNYF4KajSTqxIP/KoiB5tOCVeKUgvscTh32hhAmppFk4T/USmI2B. から "GoodOMEN!123" を得るには?
OMENは学術的なユースケースのために開発されました。例えば確率的パスワードモデリングの改善、推測数の推定、またはパスワード強度など、一般的にパスワードセキュリティを改善するためです。他者のプライバシーを侵害したり法律を破ったりするためにこのソフトウェアを悪用しないでください。
HashcatやJohn the Ripperのような一般的なハッシュ評価ツールは数百の ハッシュおよび暗号形式をサポートしており、標準入力(stdin)ストリームを介してパスワード候補を読み取ることをサポートしているため、簡単に統合できます。
$ ./enumNG -p -m 10000 | ./hashcat64.bin ...
または
$ ./enumNG -p -m 10000 | ./john --stdin ...
最適な推測性能を得るには、クラックしたいパスワード分布に類似したパスワード分布で createNG をトレーニングすることを検討してください。
注意: 確率的パスワードモデリングを使用してパスワードをクラックすることは、一般的に、実行可能な推測数が限られている遅いハッシュ(例: bcrypt、PBKDF2、scrypt、またはArgon2)に対して、または非常に的を絞った攻撃でのみ検討すべきです。対照的に、非常に高速なハッシュ(MD5、SHA-1、またはNTLM)には、優れた辞書とマングリングルール(例: best64.rule)を使用するのが適切です。
このトピックに興味がある場合は、以下の論文とその関連研究を読むことを検討してください(このリストは不完全です。拡張することで貢献できます):
確率的文脈自由文法
マルコフモデル
ニューラルネットワーク
ハイブリッド
アプローチの比較
両方のモジュールは、利用可能なさまざまなモードを選択し、デフォルト設定を変更するためのいくつかのコマンドライン引数を提供しています。例えば、createNG プロセス中に作成される確率分布は、サポートされているスムージング関数の1つ、n-gramサイズ、または使用するアルファベットを選択することで操作できます。createNG の利用可能なすべてのパラメータ、簡単な説明、およびデフォルト値は、プログラムを -h または --help で呼び出すことで確認できます。同様に enumNG でも、例えば列挙モード、使用する長さスケジューリングアルゴリズム(-s モードでのみ使用、'基本的な使い方' セクションを参照)、および最大試行回数を選択できます。列挙モードが指定されていない場合、
デフォルトモードが実行され、作成されたすべてのパスワードが 'results' フォルダ内のテキストファイルに保存されます。
OMEN+はWhen Privacy Meets Security: Leveraging Personal Information for Password Crackingに基づいており、OMENの追加機能です(同じバイナリに実装されています)。ユーザーに関する追加の個人情報(例: パスワードヒントやソーシャルネットワークから収集した個人的な背景情報)を使用することで、パスワード推測プロセスを高速化できる場合があります(John the Ripperの 'Single crack' モードに相当)。
したがって、関連するヒントまたは複数のヒント(タブ区切り)を別のファイルに提供する必要があります。さらに、それぞれの アルファ値を含むアルファファイルが必要です(1行にタブ区切り)。アルファ値は提供されたヒントの影響を重み付けするために使用されます。重要なのは、 行内の各ヒントに対してアルファファイルでアルファを指定する必要があることです。これらのアルファは、行ごとのヒントと同じ順序でなければなりません。
例として、パスワード "Mary'sPW2305" を推測したいとします。名、ユーザー名、生年月日、およびメールアドレスを含むヒントファイルの対応する行は次のようになります:
mary mary1 19880523 [email protected]
アルファファイルは、名、ユーザー名、生年月日、およびメールアドレスに関連するアルファ値を、ヒントファイルと同じ順序で並べる必要があります。例:
1 2 1 2
OMEN+を使用するには、enumNG をヒントファイルとアルファファイルへのパスを指定して呼び出す必要があります:
$ ./enumNG -H hint-file.txt -a alpha-file.txt

スムージング関数は設定ファイル(createConfig)を使用して選択および設定されます。
ファイルにはスムージング関数の名前を含める必要があり、任意の変数パラメータの値を含めることができます。ファイルは次のようにフォーマットする必要があります: