Hashcatを使ってパスワード付きzipファイルを解析

セキュリティ
スポンサーリンク

1.目的

今回はHashcatというツールを使って、
パスワード付きzipファイルを解析します。

※注意事項※
このブログの記事はセキュリティ向上を目的として、自分の所有する機器に実験を行います。
他者の機器やネットワークで試すことは絶対にしないでください。
詳しくはこちら

2.Hashcatとは

Hashcatはハッシュ値からパスワードを解析するのツールです。
様々なハッシュの規格に対応しており、ブルートフォース攻撃や辞書攻撃などの手法が可能です。

2-1.ハッシュ値

ハッシュ値とは、元のデータから特定の計算方法によって求められた値です。
ハッシュ値を求めるための計算手順のことをハッシュ関数と呼ばれます。

3.実験

ハッシュ化に用いられるハッシュ関数はいくつか規格(パターン)が決まっており
hashcatを使うことで、その規格に当てはまるパスワードを解析します。

3-1.zipファイルの用意

本記事ではKali linux環境でzipファイルを用意します。
以下のコマンドでパスワードが「pass」と設定したzipファイルを作成します。

─$ echo "labo" > labo.txt
─$ zip -e --password=pass labo.zip labo.txt

3-2.「zip2john」のインストール

「zip2john」とはzipファイルからハッシュ値を抜き出すためのツールです。
John The Ripperからモジュールをダウンロードし、インストールします。
※Kali Linuxを使えば初めからインストールされています。

3-3.「Hashcat」のインストール

「Hashcat」をWindowsにインストールします。
Hashcatは公式サイトからダウンロードし、適当なフォルダに展開します。
※Kali Linuxを使えば初めからインストールされています。

3-4.ハッシュ値取得

以下コマンドでzipファイルからハッシュ値を取得します。

─$ zip2john labo.zip | cut -d ":" -f 2 > labo.zip.hash
ver 1.0 efh 5455 efh 7875 labo.zip/labo.txt PKZIP Encr: 2b chk, TS_chk, cmplen=17, decmplen=5, crc=50997C0F ts=5929 cs=5929 type=0

─$ cat labo.zip.hash
$pkzip$1*2*2*0*11*5*50997c0f*0*42*0*11*5929*d5803b0e15bdbb752253549abda1607fb5*$/pkzip$

以下hashcatのページでハッシュ形式を確認します。

3-5.パスワード解析

Hashcatを使って、パスワードを解析します。
以下コマンドを実行します。

-$ hashcat -m 17210 -a 3 labo.zip.hash --increment '?a?a?a?a'

-m:ハッシュ形式指定(17210)
-a:アタックモード指定 “3” (ブルートフォース攻撃)
–increment:マスクの長さを指定(指定文字数まで1桁ずつ増やす)
‘?a?a?a?a’:マスク文字指定

Hashcatのwikiからオプションについて詳しく確認できます。


解析の結果、ハッシュ値の後に解析結果「pass」が表示されました。

─$ hashcat -m 17210 -a 3 labo.zip.hash --increment '?a?a?a?a'
hashcat (v6.1.1) starting...

OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project
............................................
......................................
...........................
................
$pkzip$1*2*2*0*11*5*50997c0f*...52253549abda1607fb5*$/pkzip$:pass

実験は以上です。

4.まとめ

今回はHashcatを使い、zipファイルのパスワードを解析することができました。
記事のような簡単なパスワードだとすぐに解析が終わってしまうため、アルファベットや記号を混ぜた8桁以上の複雑なパスワードを設定しましょう。