a3VtYQ2e9uA1のブログ

特記事項はありません

Wi-Fiパスワードの解析を行った(パート3)

認証切断攻撃と辞書攻撃

この前よりアグレッシブな実験をしたので書きます.

これはサイバーセキュリティの知識を深めるための実験であり,犯罪行為を唆すものではありません.実験する際は必ず自分が管理する機器を用いてください.自分のものではないネットワークに対しこのようなことを行うのは犯罪です.

前回前々回はWEPがいかに脆弱であるかを学びました.

前回 a3vtyq2e9ua1.hatenablog.com

前々回 a3vtyq2e9ua1.hatenablog.com

となれば,改良版のWPAやWPA2を使うことになります.現在一般的に普及している無線LANルータはおそらくデフォルトでこれに設定されていると思います.WPA/WPA2はWEPと異なり,パケットを集めてもパスワードのヒントを漏らしません.

4-Way Handshake

WPA/WPA2では大量のパケットを集めてもパスワードに近づくことはありませんが,実は特定の4つのパケットを傍受できればパスワードを特定できるようになります.WEPでは4万パケットあれば50%の確率で解析に成功するといわれていますが,WPA/WPA2ではたったの4です.

その4つというのが4-Way Handshakeのパケットです.クライアント-アクセスポイント間で4つのパケットをやり取りすることで認証を行います.TCPの3-Way Handshakeみたいなもんです.

--(2020/08/10追記)--
4-Way Handshakeについてもう少し詳しく書きました.

a3vtyq2e9ua1.hatenablog.com

--(追記ここまで)--

認証切断攻撃

たった4つのパケットがあればいいとはいっても,ちょうど無線を傍受しているときに運良く新しい正規クライアントが接続してくるとは考えにくいです.勿論実験なので自分で好きに接続してやれば済む話ですが,実際の攻撃者はそんなことできません.

ところで,ノートパソコンやスマートフォンWi-Fiの自動再接続を有効にしている人は多いと思います.一度接続したアクセスポイントについて記憶しておいて,切断されても有効範囲内なら再び自動的に接続するやつです.外出時に一旦Wi-Fiが切れても,帰宅すればパスワードを入力せずともまた接続できるあれです.

攻撃者は接続済み正規クライアントの認証を切断することで,再接続時の4-Way Handshakeパケットを拾えそうです.

辞書攻撃

4パケットで解析を行うことができると書きましたが,パケット自体にパスワードの手掛かりがあるわけではありません.単に答え合わせができるようになるだけです.

ブルートフォースアタック(総当たり攻撃)を行ってもいいですが,いかんせん効率が悪すぎます.
そこで実験では辞書攻撃を用いることにします.考えられるパスワードを列挙したリストを用意しておき,上から順番に試していく方法です.

f:id:a3VtYQ2e9uA1:20200306204252p:plain
メモ帳で開いた辞書ファイルの一部

実験環境

  • 無線LANルータ(アクセスポイント)
    • SSIDWLAN_TARGET_2.4G
    • 暗号化はWPA2-PSK
    • パスワードは簡単に予測可能なものに再設定済み
  • 正規クライアント(Windowsパソコン)
    • WLAN_TARGET_2.4Gに接続している
    • 自動再接続が有効になっている
  • 攻撃用パソコン
    • OSはArch Linux
    • Aircrack-ngがインストールされている
    • 辞書ファイルがある
    • このパソコンを用いてパスワードの解析を行う

この実験ではWPA2を用いますが,WPAでも基本は変わらないため手順は同じです.
またPSKはPre-Shared Key,つまり事前共有鍵のことです.一般のご家庭に普及しているものはこの方式が多いと思います.PSKとは別にEAPというものがありますが,これは比較的大規模な企業等で使われるものです.  

手順

4-Way Handshakeを傍受する

まず,パート1の[パケットをキャプチャする]までを実行しておきます.今回はWPA2-PSKのため,airodump-ng wlp4s0mon実行時のENCがWPA2でAUTHがPSKなのが確認できると思います.

f:id:a3VtYQ2e9uA1:20200306204355p:plain
アクセスポイントの一覧.一番上にWLAN_TARGET_2.4Gが確認できる

パケットキャプチャを開始したら別の端末を開き,aireplay-ng -0 1 -a [アクセスポイントのMACアドレス] -c [正規クライアントのMACアドレス] [アダプタ名]を実行し,認証切断攻撃を行います.
正規クライアントのMACアドレスはパケットキャプチャを行っている端末で確認できます.実験ではA4:4E:31:??:??:??です.

# aireplay-ng -0 1 -a 00:E0:4C:??:??:?? -c A4:4E:31:??:??:?? wlp4s0mon

f:id:a3VtYQ2e9uA1:20200306204538p:plain
認証切断攻撃を行う

一度正規クライアントの認証が切断され,再認証が行われます.
再接続時の4-Way Handshakeのキャプチャに成功した場合,パケットキャプチャを行っている端末にWPA handshake: 00:E0:4C:??:??:??と表示されます.

f:id:a3VtYQ2e9uA1:20200306204624p:plain
4-Way Handshakeパケットのキャプチャに成功

この状態になれば必要なパケットは入手済みのため,パケットキャプチャを終了して構いません.

パスワードを解析する

パスワードの解析に移ります.

今回は有名なOpenWallの辞書を用いることにします.

https://download.openwall.net/pub/wordlists/passwords/

からpassword.gzをダウンロードし中身を解凍しておきます.実験では/password下に置きました.
辞書を用意するのが面倒な場合はパスワードを書いたテキストファイルでも問題ありません.

端末でaircrack-ng [キャプチャファイル名] -w [辞書ファイル名]を実行します.

# aircrack-ng test-01.cap -w /password/password

キャプチャファイル名がtest-02.capや別の名前になっていたときは適宜読み替えてください.

f:id:a3VtYQ2e9uA1:20200306204728p:plain
辞書攻撃を行った結果

辞書内にパスワードと一致するものがあれば解析は成功します.今回のパスワードはPasswordでした.

まとめ

今回設定したパスワードは数十キロバイトの辞書ファイル内にあるような単純なものだったため,一瞬で解析に成功しました.WPA2がWEPより安全であったとしても単純なフレーズでは簡単に破られてしまうことがおわかりいただけたと思います.
Aircrack-ngでは辞書にないパスワードを破ることができないため,英数字と記号を組み合わせた十分に長いランダムな文字列をパスワードとすれば,極めて精度の高い辞書と速いCPUが無い場合,現実的に考えてクラックは不可能になります.

とはいうものの,人のネットワークでこれを行うことは犯罪です.やってはいけません.
今回の実験では一度正規クライアントの接続を切ってしまうため,この方法で実際に攻撃を行う場合,正規利用者が異常に気付く可能性は十分高いと考えられます.