ラック・セキュリティごった煮ブログ

セキュリティエンジニアがエンジニアの方に向けて、 セキュリティやIT技術に関する情報を発信していくアカウントです。

【お知らせ】2021年5月10日~リニューアルオープン!今後はこちらで新しい記事を公開します。

株式会社ラックのセキュリティエンジニアが、 エンジニアの方向けにセキュリティやIT技術に関する情報を発信するブログです。(編集:株式会社ラック・デジタルペンテスト部)
当ウェブサイトをご利用の際には、こちらの「サイトのご利用条件」をご確認ください。

デジタルペンテスト部提供サービス:ペネトレーションテスト

簡単なwifiハッキング あなたの家は大丈夫?

はじめまして、デジタルペンテスト部2年目のれーじです。

1年目はIoTペネトレ、2年目の現在はスマホアプリ診断を担当しています。先輩も後輩も化物みたいな人しかいないため、足を引っ張らないように必死です。

先日友人から「フリーwifiとかって危ないって聞くけど実際どうなの?」と聞かれました。「危ないよ!」と即答したのはいいものの具体的にどう危ないかの説明に困ったため、それを機にwifiハッキングについて少し勉強し、実験した内容をブログにしました。 はじめてのブログですので色々ご容赦ください。

これからの内容は絶対に自身の環境以外で試さないでください。「不正アクセス禁止法」に引っかかる可能性があります。

wifiハッキングって何するの?

wifiハッキングと言われて何を思い浮かべるでしょうか?私がパッと思いついたのは以下の2つでした。

  • wifiの通信の中身から個人情報等の重要情報を盗む

  • wifiの不正利用

前者は、主にフリーwifi等にアクセスしているクライアントの通信を覗き見て個人情報等を盗むというものです。前者の実験は次回やろうかと考えています。 今回は後者を扱います。wifiの不正利用と言っても色々あると思いますが、現実でありそうな「隣の家のwifiを不正利用」というシナリオで実験を行いました。

隣の家のwifiを不正利用

↑のイメージ図のようにwifiの不正利用の中でも「隣の家のwifiを不正利用」というシナリオで実験を行いました。 実際に隣の家のwifiを不正利用すると問題になるので、今回は私が用意した環境で試しました。 何度も言いますが、「絶対に自身の環境以外で試さないでください」

実験環境

無線LANアダプターはmonitor modeが使用できるものを使う必要があります。ネットで「Monitor mode wireless lanadapter」と調べると沢山出てきます。

私はrtl8812auを内蔵している無線LANアダプターを使用しました。rlt8812auのドライバーはkaliに標準でインストールされてないのでrtl8812auを使いたい場合はgithubからダウンロードしてください。

github.com

事前準備

kaliにwifiインタフェースを認識させる。

ここについては、沢山の記事があるので簡潔な手順のみ説明します。

  • kaliに無線LANアダプターのUSB接続を認識させる。
  • rtl8812auのドライバーをインストール
  • kali再起動

iwconfigコマンドを実行した際に、wifiインタフェースが表示されていれば事前準備完了です。

実験内容(手順)

wifiインタフェースをMonitor modeに変更

wifiのパケットをキャプチャするには、wifiインタフェースをMonitor modeに変更する必要があります。 ここではMACアドレスも変更しておきます。MACアドレスとは機器固有の番号で、PCやスマホについている名前のようなものです。このMACアドレスを変更することで誰が犯人(攻撃者)なのかをわかりにくくすることができます。今回は自身の環境でやるので特に変更の必要はないですが様式美のためやりました。

#wifiインタフェースをdown
#down状態じゃないとmodeやMACアドレス変更できない
#ifconfig wlan0 down

#MACアドレスを変更
#ifconfig wlan0 hw ether new_mac_address(00:11:22:33:44:55)

#ネットワーク管理プロセスをkill 
#airmon-ng check kill

#monitor modeに変更
#iwconfig wlan0 mode monitor

#wifiインタフェースを再起動
#ifconfig wlan0 up

iwconfigでmode:Monitorになっていることが確認できます。

周辺Wifi情報取得

どのwifi-AP(ルータ)を攻撃対象にするか決めるための作業です。無線LANアダプターによっては5GHzの電波を傍受できないので気をつけてください。

#2.4GHzのwifi情報を取得
#airodump-ng wlan0

#5GHzのwifi情報を取得
#airodump-ng --band a wlan0

上記のコマンドの実行結果からどのwifi-AP(ルータ)を攻撃対象にするかを決めます。 今回の実験のためにwifi-AP(ルータ)のSSIDwifi-crackという名前に変更してあります。 自身の家にあるwifi-AP(ルータ)の電波をとらえることができました。 BSSID(クライアントのMACアドレス)が00:31:92:X:X:X、CHが36だとわかります。

攻撃対象のwifi-AP(ルータ)に接続しているClient(端末)を探す

#airodump-ng --bssid 00:31:92:X:X:X --channel 36 --write test100 wlan0

下の段のSTATION列がwifi-crackに接続しているClient(端末)のMACアドレスです。 家にあるiPhone2台、android1台をwifi-crackに接続していたので合計3つ表示されています。 今回の実験ではiPhone(0E:AC:D9:C4:8E:FB)とwifi-AP(ルータ)の通信をキャプチャします。

4way-handshakeの通信をキャプチャする

4way-handshakeとはclientとwifi-APが最初に行う通信です。この後行うwifiパスワードをクラックするためには、4way-handshakeの通信が必要です。 iPhone(0E:AC:D9:C4:8E:FB)とwifi-APのwifi接続を無理矢理切断し、再接続させることで4way-handshakeの通信をキャプチャします。 wifi接続を切断するこの作業は認証解除攻撃と呼ばれるものです。自身の環境以外では絶対に試さないでください。

#事前準備として別タブで先程実行したコマンドを実行
#airodump-ng --bssid 00:31:92:X:X:X --channel 36 --write test100 wlan0

#端末とAPのwifi接続を切断
#aireplay-ng --deauth 1000 -a 00:31:92:X:X:X -c 0E:AC:D9:C4:8E:FB wlan0

4way-handshakeが取れた場合↑のようににWPA handshakeと表示されるのでCtrl+cでパケットキャプチャを終了します。 ここまでくれば「隣の家のwifiを不正利用」という攻撃シナリオは達成したようなものです。あとは時間が解決してくれます。

wifiパスワードをクラック

桁数を絞らない総当たり攻撃やrockyou、seclistを使った辞書攻撃は面倒くさいので今回は楽をしました。 このwifi-AP(ルータ)のメーカーはデフォルトのパスワードが数字8桁です。なので今回は数字8桁のパスワードリストを作り、総当り攻撃を実行しました。

#数字8桁のパスワードリストを作成
#crunch 8 8 0123456789 passlist.txt

#シャッフル(気分でしてるだけ)
#shuf -o passlist.txt passlist.txt

#辞書攻撃
#aircrack-ng test100-01.cap -w passlist.txt

パスワードクラックにかかるおおよその時間をみると、17時間21分と表示されています。待つのが面倒くさかったので、別の方法を探しました。 結果、capファイルをhccapxファイルに変換後にhashcatを使う方法であれば短く済むと言う情報があったので試しました。

https://hashcat.net/wiki/doku.php?id=hashcat_utils

#.capファイルを.hccapxファイルに変換
#./hashcat-utils/src/cap2hccapx.bin test100-01.cap test100-01.hccapx

#hashcatで辞書攻撃
#hashcat -m 2500 -d 1 test100-01.hccapx passlist.txt

hashcatで実行した結果、約3時間でwifiパスワードが「93563949」だとわかりました。 この「93563949」とはルータに記載されているwifi接続初期パスワードです。 もし隣の家の人が弱いwifiパスワードを使用している場合、このように「隣の家のwifiを不正利用」は簡単に出来てしまうことがわかりました。

皆さん、自分が使用しているルータのパスワードは大丈夫でしょうか????

対策

wifiに限らず安全なパスワードを使うようにしましょう。 比較的安全なパスワードの条件は以下のとおりです。

  1. 名前などの個人情報からは推測できないこと
  2. 英単語などをそのまま使用していないこと
  3. アルファベットと数字が混在していること
  4. 適切な長さの文字列であること
  5. 類推しやすい並び方やその安易な組合せにしないこと

www.soumu.go.jp

補足

最初はwsl上でhashcatを行い実験してパスワードクラック成功を確認したのですが、ブログの見栄え的にも全部kaliでやろうとしたところ、hashcatを実行した結果、こんなエラーが出ました。

The plugin 2500 is deprecated and was replaced with plugin 22000. For more details, please read: https://hashcat.net/forum/thread-10253.html 

言われた通りhashcatのforumhttps://hashcat.net/forum/thread-10253.htmlを読むとこんなことが書いてありました。

一般的にWPAクラッキングに関しては、多くの人が時代遅れのテクニックに言及しており、そのほとんどがハッシュモード2500、16800、あるいは古いツールに関わるものです。 私たちは、古いツールのフォーマットやテクニックをまだ使っている人たちにリンクできるリファレンスを設定したいと考えています。多くの(今では時代遅れの)ビデオ、ドキュメント、チュートリアル、トレーニングコースが出回っているので、これはおそらく終わることはないでしょう。しかし、私たちはどこかで始めなければなりません。

時代遅れの攻撃手法でも成功するからいいじゃんと思いながら、新しい手法とその優位性についても少しだけ調べました。 結果、新しい手法ではローミング機能かつ802.11i/r/pが有効なルータに対して、Clientの4way-handshakeを盗聴せずとも攻撃者とAPだけの攻撃が成功する(クライアントレス攻撃)ということがわかりました。

今回の目的である「隣の家のWifiを不正利用」では、家庭用ルータでローミング機能を考える必要もないのでブログに記載した手法で目的を達成できたといっていいかと思っています。。。

次はフリーwifiでevil twin攻撃かbluetoothの盗聴を実験してブログにしたいなぁ