0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#1 初心者でも簡単に使えるhashcatの使い方

Last updated at Posted at 2024-10-07

hashcatについての紹介

あいさつ

初めまして。この環境では「あまねみさ」という名前を借りて、情報を発信していこうと思っています。現在、ペンテスターとして働いていますが、技術系の記事は初心者にとって難解で、実際の使い方がよくわからないものも多いと感じています。(自分も最初は調べることから躓きましたw)

そこで、これから自分の知識整理も兼ねて、初心者でもわかりやすい形でツールや技術の使い方をシンプルにまとめていきます。よろしくお願いします。

hashcatとは

hashcatは、hash値を使ってパスワードを解析するためのツールです。要するに、特定のhash値から対応するパスワードを見つけることができます。

下準備

hashcatを使用するために必要なもの

1.hash値
2.PC(GPUを使ったほうが解析速度が速い)
3.忍耐力=かなり時間かかることもあるため、特に複雑なパスワードでは推測をしていくことで解析時間を短くする方法が必要です。

Installの手順

1.インストールコマンドの実行

$ sudo apt update && sudo apt install hashcat

hashcatの基本の使い方

$ hashcat -m 0 -a 0 hash.txt word.txt'

基本的な使い方は上のような使い方です。
上のコマンドの詳細を説明していきます。

hash.txtの中にviコマンドなどを使って自分が解析をしたいhash値を入れてください。
word.txtは解析に使う辞書ファイルです。詳細は後程説明します。

オプション

hashcatの-mとは

-mとはhash typeを指定するオプションです。

*hash typeとはhashcatでhash値を解析するときにhash値のタイプを自分で指定しないといけません。

ではどのようにしてhash値のタイプを知ることができるのでしょうか??

A. hashid hash.txt

これを実行すればhash typeを知ることができます。
hashcatはJohn the Ripperのように自動でハッシュタイプを判定する機能がないため実行時にhash typeを自分で指定する必要があります。
よく使うものを下に載せときます。

ハッシュタイプ 特徴 -mで指定する値
MD5 32文字の16進数 -m 0
SHA-1 40文字の16進数 -m 100
SHA-256 64文字の16進数 -m 1400
bcrypt Blowfish-based -m 3200
NTLM Windows パスワード -m 1000
MySQL 5.x SHA-1 -m 300
WPA/WPA2 Wi-Fi -m 22000
SHA-512 -m 1800
Kerberos 5 TGS-REP チケット -m 13100
LM Hash Windows古い形式 -m 3000

詳細はこちらをご覧ください。
https://hashcat.net/wiki/doku.php?id=example_hashes

hashcatの-aとは

-aとは攻撃モードを指定するオプションです。
でも、攻撃モードと言ってもわからない方も多いかと思われます。
hashcatには5つのアタックモードがあります。

攻撃手法 -aで指定する値
辞書攻撃 -a 0
辞書の組み合わせ攻撃 -a 1
ブルートフォース攻撃 -a 3
辞書とマスクの組み合わせ攻撃 -a 5
マスクと辞書の組み合わせ攻撃 -a 7

これらを完璧に説明することは難しいですができるだけわかりやすく説明してみます。

1.辞書攻撃

辞書攻撃とは辞書ファイル内の単語をハッシュ値と照合します。

$ hashcat -m 1500 -a 0 hash.txt rockyou.txt

裏を返せば辞書内にあるワードしかhashcatを使い解析をすることができません。
有名なところでいうとrockyou.txtです。
CTFではよく使われたりしています。
https://github.com/praetorian-inc/Hob0Rules/blob/master/wordlists/rockyou.txt.gz

2.辞書の組み合わせ攻撃

辞書の組み合わせ攻撃とは二つの辞書の単語を組み合わせて攻撃します。

$ hashcat -m 0 -a 1 hash.txt wordilst-1.txt wordlist-2.txt

例えば以下のような辞書1,辞書2があったとします。

辞書1
hellow
see
辞書2
good
other 

このような場合は

hellowgood
hellowother
seegood
seeother

このような感じで辞書の組み合わせ攻撃が行われます。

3.ブルートフォース攻撃

ブルートフォース攻撃とは総当たりで全組み合わせを試す攻撃です。そのため別名総当たり攻撃です。

$ hashcat -a 3 -m 0 hash.txt ?a?a?a?a?a?a?a?a

現実的ではないため最終手段になります。そのため相当の時間がかかるので高性能なGPUを積んだPCを使い攻撃をするまたは、下で説明する辞書とマスクの組み合わせ攻撃、マスクと辞書の組み合わせ攻撃で選択肢を狭めることをお勧めします。
*?a?a?a?a?a?a?a?a
 これはフォーマットを自分で指定しています。

番外編

マスク攻撃とは?

マスク攻撃とは特定のパターンに基づいてパスワードの候補を生成する攻撃方法です。

?l: 小文字(a-z)
?u: 大文字(A-Z)
?d: 数字(0-9)
?s: 特殊文字(!@#$%^&*, etc.)
?a: 任意の文字(小文字、大文字、数字、特殊文字のすべて)
?b: 8ビットASCII文字
?1, ?2: カスタム文字

マスク自体は文字がどの形なのかを指定しているのでもしどれかわからないときは?aまたはカスタム文字を指定して使うようにしましょう。

カスタム文字の使い方

$ hashcat -a 3 -m 0 hash.txt -1 '?l?d' '?1?1?1?1?1?1'

このように定義をすると小文字または数字で6文字の文字列に対してブルートフォースします。

やり方は実にシンプルで-1を箱として考えてください。(カスタムマスクは最大4つまで定義でき、-2 xxx -3 xxx -4 xxxのように定義できます。)
そして箱の中には何が入るかを定義します。今回は小文字と数字として定義しました。

そして最後にそのカスタム文字が何文字か(?1で一塊なので文字数分書く)を定義します。
今回は6文字ですので'?1?1?1?1?1?1'``になりましたが5文字なら'?1?1?1?1?1'としても可能です。 そして5文字のカスタム文字と6文字目は特殊文字のみ!という定義も可能です。 やり方としては'?1?1?1?1?1?s'`
これにより5文字の数字または小文字と6文字目の特殊文字という形式でパスワードの解析がされます。

マスクを使うために覚えといてほしいことはカスタム以外は文字数がわかっているのならそのままフォーマットを指定する。もしカスタム文字を使うのなら先に箱を作り定義をする。

以上を覚えておけば簡単に使えると思います。

ちなみに、パスワードが8文字以上で何文字かは予想できる文字列があるという推測できていると想定して考えてみようと思います。

文字数の制限

単刀直入に言うと

$ hashcat -m 0 -a 3 hash.txt --increment --increment-min 8 --increment-max 15 '?d?d?d?d'

これで最低8文字目から15文字目まで解析をすることができます。(00000000~999999999999999)
上で説明したように?d?aに変えることですべての文字、数字に対応することができます。

4.辞書とマスクの組み合わせ攻撃

辞書とマスクの組み合わせ攻撃とは辞書ファイルの単語に対してマスクを適用します。

$ hashcat -m 0 -a 6 -o cracked.txt hash.txt wordlist.txt '?l?u?d?l?l'

wordlist.txtの中身がhellowだった場合
このようなコマンドを実行するとhellowaA1aaのようなものが生成されます。
要するにwordlist.txtの中身とマスクで定義したものの組み合わせが辞書の単語の後に生成されます。

5.マスクと辞書の組み合わせ攻撃

マスクと辞書の組み合わせ攻撃とは辞書ファイルの単語に対してマスクを適応します。

$ hashcat -m 0 -a 7 -o cracked.txt hash.txt wordlist.txt '?l?u?d?l?l'

wordlist.txtの中身がhellowだった場合
このようなコマンドを実行するとaA1aahellowのようなものが生成されます。
要するにwordlist.txtの中身とマスクで定義したものの組み合わせが辞書の単語の前にマスクが適用されます。逆になっているだけですね。

最後に

今回初めてQiitaに投稿してみました。
仕事をするにあたり頻繁に使用するツールの使い方を自分なりに初心者でもわかりやすく理解しやすいをモットーに投稿していこうと思うのでよろしくお願いします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?