なにこれ
家の無線APのパスフレーズ(WPA2)の強度を測りたかったので,Pyrit入れようとしたらmakeが上手く出来なくて,「う〜〜ん?」ってしたりしなかったりな話.
こういうのやる時の決まり文句だけど,自分のお家のネットワーク機器に対して行っています.
書くこと
書かないこと
環境
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTImON="Ubuntu 16.04.3 LTS"
$ uname -mr 4.10.0-42-generic x86_64
構築
pyritではパケットの収集が出来ないので別途用意する.
makeが上手く通らなかった.
apt
で全部出来そうだったのでそっちでやることにした.
$ sudo apt search pyrit pyrit/xenial,now 0.4.0-5 amd64 GPGPU-driven WPA/WPA2-PSK key cracker pyrit-opencl/xenial 0.4.0-1 amd64 OpenCL extension module for Pyrit
pyrit-opencl
なるパッケージがあった.
最初は気にしていなかったけど,後で調べた所,Nvidia,AMD Radeonのコアを使って計算速度を向上させるらしい.これも使ってみる.
というかこれを使わないとCPU onlyで計算する羽目になるので,必須.
$ apt install pyrit pyrit-opencl
とりあえず突っ込んだPyritは動作した.CPUでは計算が出来たが,GTX760の認識をしない.
なんでかなぁと弄っていたらcudaのインストールをしていなかった.そりゃ動かないな.
wgetで引っ張ってきた.
$ sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
これで認識してくれる.
環境変数の設定もした気がするけど,覚えてない.
$ pyrit list_cores Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ The following cores seem available... #1: 'OpenCL-Device 'GeForce GTX 760'' #2: 'CPU-Core (SSE2)'
認識した.
ベンチマークを走らせる.
$ pyrit benchmark Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Running benchmark (38188.5 PMKs/s)... \ Computed 38188.48 PMKs/s total. #1: 'OpenCL-Device 'GeForce GTX 760'': 40630.6 PMKs/s (RTT 2.8) #2: 'CPU-Core (SSE2)': 793.8 PMKs/s (RTT 3.0)
PMKs/s
というのが一秒間に計算されるパスフレーズの数.
RTTってなんだ?
辞書を用意して解析させる.
実行
$ pyrit -r [.cap] -i [.lst] attack_passthrough Parsing file '[.cap]' (1/1)... Parsed 2236 packets (2236 802.11-packets), got 1 AP(s) Picked AccessPoint 00:00:00:00:00:00 ('[ESSID]') automatically. Tried 6523830915392 PMKs so far; 43534 PMKs per second. Password was not found. Retry the attack with '--all-handshakes'.
not foundらしい. ちゃんと動いているのか気になったので,パスフレーズの入ったファイルを読ませてみた所succeededと言われ正しいパスフレーズが出てきた.
まとめとか
Pyritのコマンドで
strip
というのがあって,4-way handshakeが含まれるパケットのみのファイルに再構成してくれた. 不要なパケットを削ぎ落とすのに有効.上には書いてないけどcrunchを使う際は
$ crunch [min] [max] abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()'"=_`:;?~|+-\/[]{}<> | pyrit -r [.cap] -i - attack_passthrough
と書くと,pipeが効くので総当りが可能(やりたくはない)
おわりに
6000~7000円のグラボで毎秒4万近くのパスフレーズを解析出来るのか...といった感じ.
結構長いフレーズなのでまず破られることはない思うけど,今から4年前のミドルレンジモデルのグラボでこれだから,最近のでやったらもっと結果出るだろうし気を付けていこうな.っていう気持ちになった.
定期的な変更は面倒だし,家族用のAPにもEnterprise認証を使おうかなぁ.