個人的な興味から、GPUを利用したハッシュ解析ツール『hashcat』をインストールしてみたので、その備忘。 Ubuntu Desktopの場合だとaptからインストールが可能(ドライバ等に関してはまた別途インストールが必要)だが、Ubuntu Serverの場合はコンパイルをする必要がある。 まず、以下のコマンドでコンパイル用のパッケージを導入する。

sudo apt update
sudo apt install cmake build-essential checkinstall git

パッケージの導入後、以下のコマンドでソースからコンパイルを行う。

git clone https://github.com/hashcat/hashcat
cd hashcat
git submodule update --init
sudo make && sudo checkinstall

これでインストールができた。 ただ、この時点ではまだGPUを使うためのパッケージ(OpenCLやらCUDAのツールやらGPUのドライバなど)が入っていないため、hashcatは利用できない。 Nvidiaのボードを使用しているのであれば、以下のコマンドを実行してインストールをする。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-367

あとは、sudoからhashcatを実行すればいい。 以下例のようにコマンドを実行することで、hashのみが記述されたファイル(test.hash)を読み込んで解析を行ってくれる。 解析したハッシュと解析結果は、-oで指定したファイルに「$hash:$anser」の形式で出力される。

sudo hashcat -m 100 -a 3 ./test.hash ?a?a?a?a? -o ./test.hash.out

以下、主要なオプションについて記述。 詳細なオプションについてはこちらを参照。

  • -m … 解析対象ハッシュの種別指定。md5が0、sha1が100など。詳細についてはmanを参照。
  • -a … アタックモード。3はブルートフォース(mask)でのモード。その他については以下。
    • 1 … コンビ(組合せ)での解析モード
    • 3 … ブルートフォース(mask)での解析モード
    • 6 … ワードリスト+ブルートフォースでの解析モード
    • 7 … ブルートフォース+ワードリストでの解析モード
  • -w … GPUへの処理負荷を指定。最大で4。デフォルトは2。
  • mask … ↑の例だと「?a?a?a?a?a」になってるとこ。以下の種類があり、「-1 ?l?d」のようにカスタムマスクも設定可能(マスクファイルではカスタムマスクは使用不可)。
    • ?a … 全ての文字種別
    • ?l … アルファベット小文字
    • ?u … アルファベット大文字
    • ?d … 数字
    • ?s … 記号
  • -o … 解析結果の出力先ファイル

なお、salt付きのhashを解析する場合、以下のような形式でhashファイルを作成する。

$hash:$salt