hyperchem bad barcode final_ja

49
バーコード: 一片の紙片で 宇宙船をハックする方法 Hyperchem Ma Tencent’s Xuanwu Lab http://xlab.tencent.com @XuanwuLab

Upload: pacsecjp

Post on 22-Jan-2018

480 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Hyperchem  bad barcode final_ja

バーコード: 一片の紙片で宇宙船をハックする方法

Hyperchem Ma

Tencent’s Xuanwu Lab

http://xlab.tencent.com @XuanwuLab

Page 2: Hyperchem  bad barcode final_ja

2015/11/11

Who am I ?

セキュリティ研究者@

– 組み込みデバイスセキュリティ

– ファームウェアのリバースエンジニアリング

– IoTの大ファン

Page 3: Hyperchem  bad barcode final_ja

えっ、宇宙船をハックするって?

Page 4: Hyperchem  bad barcode final_ja

4

Page 5: Hyperchem  bad barcode final_ja
Page 6: Hyperchem  bad barcode final_ja
Page 7: Hyperchem  bad barcode final_ja

バーコードについて

Page 8: Hyperchem  bad barcode final_ja

よく忘れられているが、バーコードは最も古くからのIoTの技術である

Page 9: Hyperchem  bad barcode final_ja

バーコードとは?

• バーコードは、その対象へ関連する光学的に機械読み取り可能なデータ表現;

• オリジナルのバーコード(1D)は平行線の幅と間隔を規則的に変化させることでデータを表現する

2015/11/11

Page 10: Hyperchem  bad barcode final_ja
Page 11: Hyperchem  bad barcode final_ja
Page 12: Hyperchem  bad barcode final_ja
Page 13: Hyperchem  bad barcode final_ja
Page 14: Hyperchem  bad barcode final_ja

バーコードのシンボル体系

• 全てのバーコードに含まれるもの:

– クワイエットゾーン: 空白のマージン。情報なし。バーコードがの開始位置と終了位置を伝える;

– 開始文字: バーコード開始のための特定のパターン;

– データ: バーコードの規格に依存した、数字、英数字、全ASCII文字などが含まれる;

– 終了文字: バーコード終了のための特定のパターン.

• いくつかのバーコードはチェックサムビットや文字を含む

2015/11/11

Page 15: Hyperchem  bad barcode final_ja

バーコードスキャナ

Page 16: Hyperchem  bad barcode final_ja

スキャナの内部

Page 17: Hyperchem  bad barcode final_ja

バーコードスキャナはどのように動作するか

キャプチャ デコード 転送

RS232PS/2USB HID

Code 39Code 128QR Code

LEDLaserCCDCMOS

Page 18: Hyperchem  bad barcode final_ja

規格

Page 19: Hyperchem  bad barcode final_ja

Code 128

• 全ASCII文字をエンコード可能、効率的で高密度

• 製造者向けに4種のファンクションコードが利用可

• 3種の文字セット: CodeA、CodeB、CodeC

– 表示できないASCII文字はCodeAでエンコードされる

– CodeCは2桁だけの数値をエンコードする

– 文字セットは自動的に選択される

– エンコーダは3種の文字セットを混在させられる

2015/11/11

Page 20: Hyperchem  bad barcode final_ja

多くの製造業者は、標準的なプロトコルのサポートに加えてスキャナに業者独自の機能を実装している

Page 21: Hyperchem  bad barcode final_ja

スキャナ製造業者

• Symbol (Zebra)

• HoneyWell

• TaoTronics

• ESky

• ACCESS IS

• UNITECH

• AIBO

• Newland

• 模倣製品

Page 22: Hyperchem  bad barcode final_ja

バーコードスキャナはどこにでもある

Page 23: Hyperchem  bad barcode final_ja
Page 24: Hyperchem  bad barcode final_ja

バーコードセキュリティのこれまでの調査

Page 25: Hyperchem  bad barcode final_ja

“Toying with Barcodes”, Phenoelit, 24C3

• バーコードによるバッファオーバーフロー

• バーコードによるフォーマット文字列バグ

• バーコードによるSQL Injection

• バーコードによるXSS

Page 26: Hyperchem  bad barcode final_ja

それ以外のシナリオ• バーコードの予測と再生成

• バーコードの重複

• QRコードによるフィッシング

しかし、これまでの研究では適切にバーコードのデータを処理しないアプリケーションに焦点が当てられてきた

Page 27: Hyperchem  bad barcode final_ja

我々の調査:BadBarcode

Page 28: Hyperchem  bad barcode final_ja

BadBarcodeとは?

• 多くのバーコードスキャナはキーボードエミュレーションするデバイスである

• Code 128のようないくつかのバーコード規格では、ASCII制御コードをサポートしている

• ほぼ全てのバーコードスキャナがCode 128をサポート

• ほぼ全てのバーコードスキャナがそれぞれの追加のキーボードエミュレーション機能を持っている

つまり、バーコードによってシェルを開いたりコマンドを「タイプ」可能?

Page 29: Hyperchem  bad barcode final_ja

ASCII コード表

2015/11/11

Hex ASCII スキャンコード Hex ASCII スキャンコード Hex ASCII スキャンコード

00 NUL CTRL+2 0B VT CTRL+K 16 SYN CTRL+V

01 SOH CTRL+A 0C FF CTRL+L 17 TB CTRL+W

02 STX CTRL+B 0D CR CTRL+M 18 CAN CTRL+X

03 ETX CTRL+C 0E SO CTRL+N 19 EM CTRL+Y

04 EOT CTRL+D 0F SI CTRL+O 1A SUB CTRL+Z

05 ENQ CTRL+E 10 DLE CTRL+P 1B ESC CTRL+[

06 ACK CTRL+F 11 DC1 CTRL+Q 1C FS CTRL+¥

07 BEL CTRL+G 12 DC2 CTRL+R 1D GS CTRL+]

08 BS CTRL+H 13 DC3 CTRL+S 1E RS CTRL+6

09 HT CTRL+I 14 DC4 CTRL+T 1F US CTRL+-

0A LF CTRL+J 15 NAK CTRL+U 7F DEL *

Page 30: Hyperchem  bad barcode final_ja

ASCII制御文字

• "Ctrol+"のようなキーの組み合わせは単一のASCIIコードにマップされている

• Code 128でエンコードされたこれらの文字はスキャナで読み取られ、最終的にキーの組み合わせがコンピュータに送られる

• Windowsキー、Altキー、その他のファンクションキーは未サポート

• 送信できるのは"Ctrol+*"キーのみにも関わらず、キオスク端末には脅威になる。なぜか?

2015/11/11

Page 31: Hyperchem  bad barcode final_ja

ダイアログ攻撃

• 多くのプログラムで共通のホットキーが登録されている。例えば CTRL+O、CTRL+Pなど

• ホットキーはファイルを開く、名前を付けて保存、印刷などのコモンダイアログを開くことができる

• これらのダイアログはファイルのブラウズ、ブラウザの起動、プログラムの実行などの方法を持っている

• そしてもっとも重要なことは「多くのキオスク端末では、バーコードスキャナだけでなくタッチスクリーンも入力デバイスとして利用可能」

Page 32: Hyperchem  bad barcode final_ja

デモ 1: ダイアログ攻撃

Page 33: Hyperchem  bad barcode final_ja

2015/11/11

タッチスクリーンがない場合にも、ブラインド攻撃は可能か?

Win+R はどうする?

Page 34: Hyperchem  bad barcode final_ja

ADF(Advanced Data Formatting)

• Symbol Technologiesによって導入

• ホストデバイスに送信される前に、スキャンデータを特定の条件に合うように編集することができる

• 指定されたキーをコンピュータへ送信できる

• バーコードのスキャンのみで設定可能!

2015/11/11

Page 35: Hyperchem  bad barcode final_ja

ADFアクション 例

Send data 全てまたは一部のデータを送信

Setup fields カーソルの移動

Modify data スペース他の削除

Data padding スペースまたはゼロでのパディング

Beep ベルを1,2,3回鳴らす

Send Keystrokes ctrl+,alt+,shift+などのキーストロークを送信

Send GUI Keys GUI+キーを送信

Send Right Control 右Ctrlのキーストロークを送信

Page 36: Hyperchem  bad barcode final_ja

デモ2: ADF攻撃

Page 37: Hyperchem  bad barcode final_ja

残念ながら全てのスキャナがLCD/LED画面からのバーコード読み取りに対応していない。

この攻撃はよりかっこいい?

この攻撃は自動化可能?

Androidアプリの作成は?

Page 38: Hyperchem  bad barcode final_ja

LCD/LEDスクリーンからバーコードを読み取れるスキャナは存在するが、それらの多くは特定の波長の光を吸収・反射する材料からバーコードを読み取る

しかし、LCD/LEDスクリーンは光の吸収と反射ではなくバックライトの変調によって画像を表示する。これは、バーコードスキャナには真っ黒になることを意味する。

Page 39: Hyperchem  bad barcode final_ja

ディスプレイの技術

• CRT

• LCD

• OLED

• 電子ペーパー

Page 40: Hyperchem  bad barcode final_ja

Kindleがその答え

• KindleはE-ink技術を使っている

• Kindleは紙と同様に文字と画像を光の吸収と反射によって表示している

• 300PPI以上の高解像度

• プログラマブル。もちろんJailbreak後も。

Kindleは完璧なBadBarcodeツール!

Page 41: Hyperchem  bad barcode final_ja

デモ3: 完全自動化されたADF攻撃

Page 42: Hyperchem  bad barcode final_ja

単一のバーコードからコマンドの実行が可能か?

はい、いくつかの製品では可能である。

Page 43: Hyperchem  bad barcode final_ja

しかし、次のデモで見せるこの製品は空港のような多くの重要な場所でも広く使われているため、我々は今の時点では詳細は開示しない

Let’s just see the demo

Page 44: Hyperchem  bad barcode final_ja

デモ 4: ペーパー攻撃の一部

Page 45: Hyperchem  bad barcode final_ja

まとめ

BadBarcodeは特定の製品の脆弱性ではない。BadBarcodeがスキャナやホストシステムの問題であると言うことさえ難しい

そのため、我々がBadBarcode問題を発見した場合でも、報告すべきメーカーがわからない。

我々のデモはWindows上で行っているが、実際には該当するホットキー機能が存在する限り任意のシステムが攻撃可能である。

Page 46: Hyperchem  bad barcode final_ja

まとめ• BadBarcodeは本当に重大な問題である

• キーボードエミュレーションのバーコードスキャナを使っているホストシステムは潜在的に脆弱である

• タッチスクリーンとバーコードスキャナを備えたキオスク端末は容易に攻略できる

• ADFや特定のキーボードエミュレーション機能を持つバーコードスキャナは高度かつ自動化された攻撃の成功に利用され得る

• キーボードエミュレーション接続を持つ他のデバイスでも同種の問題を持つ可能性がある

• キーボード接続型のRFID/NFCリーダーなど?

Page 47: Hyperchem  bad barcode final_ja

セキュリティ上の提案

• スキャナ製造業者向け– ADFや他の追加機能をデフォルトで有効にしない

– ASCII制御文字をデフォルトではホストデバイスに送信しない

• ホストシステム製造業者向け– キーボードエミュレーションのバーコードスキャナをでき

る限り使用しない

– アプリケーションにてホットキーを実装せず、システムのホットキーも無効にする

Page 48: Hyperchem  bad barcode final_ja

謝辞

• 我々のリーダー : tombkeeper• Xuanwu Labの全チームメンバー

Page 49: Hyperchem  bad barcode final_ja

Q&A