23
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

パスワード保護されたPDF文書を総当たり攻撃で復号する

Last updated at Posted at 2019-12-09

本稿では、パスワード保護された**PDF(Portable Document Format)**文書を総当たり攻撃で復号する方法を確認します。

パスワード保護されたPDF文書中に復号パスワードは保存せれていません。パスワードに関連付けられたハッシュが保存されています。そこで、PDF文書からハッシュを抽出し、そのハッシュに対して**総当たり攻撃(ブルートフォース攻撃)**を仕掛け、解読します。

John the Ripper ジャンボバージョンの入手

まず、John the Ripperのジャンボバージョンを入手します。John The Ripperとは、OpenWallが管理しているオフラインパスワードクラッカーツールです。
ジャンボバージョンとは、コミュニティにより強化が図られたバージョンです。公式バージョンには含まれていない多くのコードやドキュメント、データを含んでいます。

ジャンボバージョンの品質要件は低いです。未成熟なコードのためバグが内在しており、予期せぬ不具合が発生することもあります。

root@kali:~# wget https://github.com/magnumripper/JohnTheRipper/archive/bleeding-jumbo.zip
root@kali:~# unzip JohnTheRipper-bleeding-jumbo.zip

PDF文書からハッシュを抽出する

JohnTheRipper-bleeding-jumbo.zipを展開し、パスワード保護されたPDFファイル(pdf_protected.pdf)からハッシュを抽出するためにpdf2john.plを実行します。

root@kali:~# perl JohnTheRipper-bleeding-jumbo/run/pdf2john.pl pdf_protected.pdf > pdf.hash

出力されたpdf.hashは次のような記述です(出力結果の一部は{BLOCKED}文字列でマスク加工してあります)。

root@kali:~# cat pdf.hash
pdf_protected.pdf:$pdf$4*4*128*-1060*1*16*5c8f37d2a4{BLOCKED}32ba4dac0c

ハッシュの先頭にはファイルの絶対パスとセミコロンが付いています。これらは総当たり攻撃する際には不要です。削除しておきます。

root@kali:~# cat pdf.hash
$pdf$4*4*128*-1060*1*16*5c8f37d2a4{BLOCKED}32ba4dac0c

John the Ripper によるハッシュの総当たり攻撃

Kali Linuxには、予めJohn the Ripperがインストールされています。これを使います。先ほどパスワード保護されたPDF文書から抽出し不要な情報を取り除いたハッシュ情報を含むファイル(pdf.hash)を引数として渡します。

ここでは、--wordlist引数にて、ハッシュ解析時に使用する辞書ファイルとしてrockyou.txtを指定しています。

2009年にソーシャルネットワークアプリを提供するRockYou のデータベースが侵害されました。この事件をベースに作られたrockyou.txtには、32,603,388アカウントで使用される14,341,564個の一意のパスワードが含まれています。Kali Linuxには、この辞書ファイル(/usr/share/wordlists/rockyou.txt.gz)が収録されています。

# john --wordlist=rockyou.txt pdf.hash 
Using default input encoding: UTF-8
Loaded 1 password hash (PDF [MD5 SHA2 RC4/AES 32/32])
Press 'q' or Ctrl-C to abort, almost any other key for status
ju{BLOCKED}69        (?)
1g 0:00:02:06 DONE (2019-12-05 00:43) 0.007935g/s 54129p/s 54129c/s 54129C/s ju{BLOCKED}69
Use the "--show" option to display all of the cracked passwords reliably
Session completed

結果、パスワードは「ju{BLOCKED}69」であることが特定できました(出力結果の一部は{BLOCKED}文字列でマスク加工してあります)。

参考情報

23
20
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
23
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?