hyperchem bad barcode final_ja
TRANSCRIPT
バーコード: 一片の紙片で宇宙船をハックする方法
Hyperchem Ma
Tencent’s Xuanwu Lab
http://xlab.tencent.com @XuanwuLab
2015/11/11
Who am I ?
セキュリティ研究者@
– 組み込みデバイスセキュリティ
– ファームウェアのリバースエンジニアリング
– IoTの大ファン
えっ、宇宙船をハックするって?
4
バーコードについて
よく忘れられているが、バーコードは最も古くからのIoTの技術である
バーコードとは?
• バーコードは、その対象へ関連する光学的に機械読み取り可能なデータ表現;
• オリジナルのバーコード(1D)は平行線の幅と間隔を規則的に変化させることでデータを表現する
2015/11/11
バーコードのシンボル体系
• 全てのバーコードに含まれるもの:
– クワイエットゾーン: 空白のマージン。情報なし。バーコードがの開始位置と終了位置を伝える;
– 開始文字: バーコード開始のための特定のパターン;
– データ: バーコードの規格に依存した、数字、英数字、全ASCII文字などが含まれる;
– 終了文字: バーコード終了のための特定のパターン.
• いくつかのバーコードはチェックサムビットや文字を含む
2015/11/11
バーコードスキャナ
スキャナの内部
バーコードスキャナはどのように動作するか
キャプチャ デコード 転送
RS232PS/2USB HID
Code 39Code 128QR Code
LEDLaserCCDCMOS
規格
Code 128
• 全ASCII文字をエンコード可能、効率的で高密度
• 製造者向けに4種のファンクションコードが利用可
• 3種の文字セット: CodeA、CodeB、CodeC
– 表示できないASCII文字はCodeAでエンコードされる
– CodeCは2桁だけの数値をエンコードする
– 文字セットは自動的に選択される
– エンコーダは3種の文字セットを混在させられる
2015/11/11
多くの製造業者は、標準的なプロトコルのサポートに加えてスキャナに業者独自の機能を実装している
スキャナ製造業者
• Symbol (Zebra)
• HoneyWell
• TaoTronics
• ESky
• ACCESS IS
• UNITECH
• AIBO
• Newland
• 模倣製品
バーコードスキャナはどこにでもある
バーコードセキュリティのこれまでの調査
“Toying with Barcodes”, Phenoelit, 24C3
• バーコードによるバッファオーバーフロー
• バーコードによるフォーマット文字列バグ
• バーコードによるSQL Injection
• バーコードによるXSS
それ以外のシナリオ• バーコードの予測と再生成
• バーコードの重複
• QRコードによるフィッシング
しかし、これまでの研究では適切にバーコードのデータを処理しないアプリケーションに焦点が当てられてきた
我々の調査:BadBarcode
BadBarcodeとは?
• 多くのバーコードスキャナはキーボードエミュレーションするデバイスである
• Code 128のようないくつかのバーコード規格では、ASCII制御コードをサポートしている
• ほぼ全てのバーコードスキャナがCode 128をサポート
• ほぼ全てのバーコードスキャナがそれぞれの追加のキーボードエミュレーション機能を持っている
つまり、バーコードによってシェルを開いたりコマンドを「タイプ」可能?
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 *
ASCII制御文字
• "Ctrol+"のようなキーの組み合わせは単一のASCIIコードにマップされている
• Code 128でエンコードされたこれらの文字はスキャナで読み取られ、最終的にキーの組み合わせがコンピュータに送られる
• Windowsキー、Altキー、その他のファンクションキーは未サポート
• 送信できるのは"Ctrol+*"キーのみにも関わらず、キオスク端末には脅威になる。なぜか?
2015/11/11
ダイアログ攻撃
• 多くのプログラムで共通のホットキーが登録されている。例えば CTRL+O、CTRL+Pなど
• ホットキーはファイルを開く、名前を付けて保存、印刷などのコモンダイアログを開くことができる
• これらのダイアログはファイルのブラウズ、ブラウザの起動、プログラムの実行などの方法を持っている
• そしてもっとも重要なことは「多くのキオスク端末では、バーコードスキャナだけでなくタッチスクリーンも入力デバイスとして利用可能」
デモ 1: ダイアログ攻撃
2015/11/11
タッチスクリーンがない場合にも、ブラインド攻撃は可能か?
Win+R はどうする?
ADF(Advanced Data Formatting)
• Symbol Technologiesによって導入
• ホストデバイスに送信される前に、スキャンデータを特定の条件に合うように編集することができる
• 指定されたキーをコンピュータへ送信できる
• バーコードのスキャンのみで設定可能!
2015/11/11
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のキーストロークを送信
デモ2: ADF攻撃
残念ながら全てのスキャナがLCD/LED画面からのバーコード読み取りに対応していない。
この攻撃はよりかっこいい?
この攻撃は自動化可能?
Androidアプリの作成は?
LCD/LEDスクリーンからバーコードを読み取れるスキャナは存在するが、それらの多くは特定の波長の光を吸収・反射する材料からバーコードを読み取る
しかし、LCD/LEDスクリーンは光の吸収と反射ではなくバックライトの変調によって画像を表示する。これは、バーコードスキャナには真っ黒になることを意味する。
ディスプレイの技術
• CRT
• LCD
• OLED
• 電子ペーパー
Kindleがその答え
• KindleはE-ink技術を使っている
• Kindleは紙と同様に文字と画像を光の吸収と反射によって表示している
• 300PPI以上の高解像度
• プログラマブル。もちろんJailbreak後も。
Kindleは完璧なBadBarcodeツール!
デモ3: 完全自動化されたADF攻撃
単一のバーコードからコマンドの実行が可能か?
はい、いくつかの製品では可能である。
しかし、次のデモで見せるこの製品は空港のような多くの重要な場所でも広く使われているため、我々は今の時点では詳細は開示しない
Let’s just see the demo
デモ 4: ペーパー攻撃の一部
まとめ
BadBarcodeは特定の製品の脆弱性ではない。BadBarcodeがスキャナやホストシステムの問題であると言うことさえ難しい
そのため、我々がBadBarcode問題を発見した場合でも、報告すべきメーカーがわからない。
我々のデモはWindows上で行っているが、実際には該当するホットキー機能が存在する限り任意のシステムが攻撃可能である。
まとめ• BadBarcodeは本当に重大な問題である
• キーボードエミュレーションのバーコードスキャナを使っているホストシステムは潜在的に脆弱である
• タッチスクリーンとバーコードスキャナを備えたキオスク端末は容易に攻略できる
• ADFや特定のキーボードエミュレーション機能を持つバーコードスキャナは高度かつ自動化された攻撃の成功に利用され得る
• キーボードエミュレーション接続を持つ他のデバイスでも同種の問題を持つ可能性がある
• キーボード接続型のRFID/NFCリーダーなど?
セキュリティ上の提案
• スキャナ製造業者向け– ADFや他の追加機能をデフォルトで有効にしない
– ASCII制御文字をデフォルトではホストデバイスに送信しない
• ホストシステム製造業者向け– キーボードエミュレーションのバーコードスキャナをでき
る限り使用しない
– アプリケーションにてホットキーを実装せず、システムのホットキーも無効にする
謝辞
• 我々のリーダー : tombkeeper• Xuanwu Labの全チームメンバー
Q&A