Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

自動販売機ハッキングLt

1,503 views

Published on

Published in: Devices & Hardware
  • Be the first to comment

自動販売機ハッキングLt

  1. 1. 自動販売機ハッキング について -OWASP Kansai- 黒林檎(@r00tapple)
  2. 2. プロフィール • Twitter:r00tapple • Facebook:村島 正浩 • 最近の趣味:たこわさを作る • 最近好きなカテゴリ:IoTのハッキング • [来年から新入社員!]
  3. 3. 今来産業のノリでいうと.. 任意の番号を表示
  4. 4. ターゲット 学校に導入された Bluetooth内蔵 自動販売機
  5. 5. 通信はこんな感じ? Bluetooth 4G・WiFi 5桁の数値を受信し表示 ポイント番号を受信 決済後なんか返す ワンタイムパスを作る 決済後の値を読み取り 会員にポイントを加算
  6. 6. 暗号化された通信見れてないので予 想に過ぎませんけど、図解すると..?
  7. 7. 2.pairing Bluetooth 1.Generate authKey device key(何かしらの固有値) ↓ subkey(salt) ↓ device key + salt device key + salt
  8. 8. 1.Buy 缶ジュース authkey + salt + x(ポイント) ↓ x(ポイント) authkey + salt ↓ authkey + salt + x(ポイント) 2.購入完了レスポンス 3.『ポイント付加したで』
  9. 9. 今回の狙う箇所 話戻って
  10. 10. 通信はこんな感じ? Bluetooth 4G・WiFi 解析開始
  11. 11. AndroidにはBluetooth のパケットをキャプチャ する機能がある。 保存したのはWireShark で読める
  12. 12. アプリで2回ほど認証する 認証 同一動作を数回した方がHCIスヌープログで 生成されるパケットを読みやすい。
  13. 13. 認証時の多分重要なデータ ..明らかに自動販売機に表示される5桁数字では無い
  14. 14. 2つの値を比較しよう 多分、 ポイントの識別番号 ワンタイムパス サーバーから来てる(?)
  15. 15. アプリ内でも同様の値を発見 127|root@hwG620S-L02:/data/data/com.coke.cokeon/files # cat gaClientId 0aa891b9-e351-43d0-92ce-86a69e990c88 root@hwG620S-L02:/data/data/com.coke.cokeon/files # root@hwG620S-L02:/data/data/com.coke.cokeon/files # cat gaClientIdData 6CB141624D09D0429AA9D4F9FD73D2A7 root@hwG620S-L02:/data/data/com.coke.cokeon/files # これを書き換えてもオンライン時に改ざん検知して 新しいgaClientIdDataを発行される。 (仮にここを書き換えるだけで他人のIDを使えた場合、 Bluetoothスニッファで無双出来る可能性が高い)
  16. 16. gatttoolで送ってみる primaryの表示 に成功した。 ID認証などは失敗
  17. 17. https://www.bluetooth.com/ja-jp/specifications/assigned-numbers/generic-attribute-profile
  18. 18. primary使えばバッテリー残量とか簡単に調べれるらしい 要するにBluetooth機器の情報を調べれるらしい gatttoolで接続して以下のコマンドでおそらく情報出る >char-desc 0x0001 0x0009
  19. 19. Bluetooth機器名:4b 4f 48 41 38 32 36 43 (変換:KH86) 00:AE:FA:BA:82:6C][LE]> char-desc 0x0001 0x0009 handle: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb handle: 0x0002, uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb handle: 0x0004, uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb handle: 0x0006, uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x0007, uuid: 00002a02-0000-1000-8000-00805f9b34fb handle: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x0009, uuid: 00002a04-0000-1000-8000-00805f9b34fb [00:AE:FA:BA:82:6C][LE]> char-read-hnd 0x0003 Characteristic value/descriptor: 4b 4f 48 41 38 32 36 43
  20. 20. 0x0001-0x0009
  21. 21. 面白いPrimary情報引き出せ たら教えてください^^
  22. 22. パケットを完璧に再現するのが大変でしていないので パソコンからの番号表示とかの認証は、失敗して当然 char-write(書き込み)色々してるし再現手間かかる
  23. 23. 楽して結果出してくぞ👊
  24. 24. 正直、ポイント不正利用とか興味が無い。 任意の番号を表示したい。 違法な事はダメ❌
  25. 25. したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいし たいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいした いしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいし たいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいした いしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいし たいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいした いしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいし たいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいした いしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいししたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいし たいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいした いしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいた いしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいし たいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいした いしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいし たいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいした いしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたい したいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいし たいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいしたいした
  26. 26. アプリを解析してプログラムを理解して… ハッキングツール書くのは面倒 多分、アプリ書き換える方が早い teslaの自動運転者をandroidジャック してアプリに不正命令送ってみたいな 記事出てたし、多分アプリクラック して不正な命令するIoT攻撃が増える 知らない人は、 Tesla Android Malware とかで[検索]
  27. 27. Android Malware Used to Hack and Steal a Tesla Car • [1]被害者は最初に正規のteslaのAndroidアプリ インスト、ID/PASS入力。平文でアプリ内に OAuthトークンを保存される。 • [2]攻撃者は、ログインデータを盗むためにテス ラアプリのソースコードを変更し被害者のID/ PASS/OAuthを盗み出す事で車を動かす事が出 来る様になる
  28. 28. ソース上にあるsqlite
  29. 29. 結論:これは違った(アクセス 数とかそこらへんの情報)
  30. 30. private_config.xml
  31. 31. root@hwG620S-L02:/data/data/com.coke.cokeon/shared_prefs # ls -l -rw------- root root 1665 2016-11-28 01:27 66.xml -rw------- root root 1669 2016-11-28 01:28 77777.xml -rw-rw---- u0_a151 u0_a151 138 2016-11-17 12:02 MapviewInitializerPreferences.xml -rw-rw---- u0_a151 u0_a151 181 2016-11-24 18:32 com.google.android.gms.analytics.prefs.xml -rw-rw---- u0_a151 u0_a151 2498 2016-11-17 12:00 com.google.android.gms.appid.xml -rw-rw---- u0_a151 u0_a151 500 2016-11-28 01:12 com.google.android.gms.measurement.prefs.xml -rw-rw---- u0_a151 u0_a151 153 2016-11-17 12:02 com.google.maps.api.android.lib6.drd.PREFERENCES_FILE.xml -rw-rw---- u0_a151 u0_a151 139 2016-11-17 12:00 crypto.xml -rw-rw---- u0_a151 u0_a151 1669 2016-11-17 12:04 private_config.xml -rw-rw---- u0_a151 u0_a151 370 2016-11-24 18:32 sdkble.xml -rw-rw---- u0_a151 u0_a151 1669 2016-11-17 12:01 xxx.xml 書き換えたXMLをアップロード adb push 77777.xml /data/local/tmp .. chown u0_a151:u0_a151 private_config.xml chmod 0660 private_config.xml rootでは無く同じパーミッションで 同じ所有者グループにしてやる……!(́-`).。oO
  32. 32. private_config.xml ユーザーが識別するだけの会員番号 ユーザーのポイント数(サーバーチェックで有効化)
  33. 33. その他XML(※書き換え不要) crypt.xml <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="cipher_key">gsOiSTg2vZLY5GcOFwFPmw==</string> </map> sdkble.xml <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <boolean name="notifyOnExit" value="true" /> <boolean name="notifyOnEntry" value="true" /> <string name="proximityUUID">f1fb2a7c-c58a-4f7c-a24e-88607b447ad9</string> <string name="identifier">f1fb2a7c-c58a-4f7c-a24e-88607b447ad9</string> <boolean name="autostart" value="true" /> </map>
  34. 34. もう書き換えたxmlだけど、66666って所にも ともと自動販売機で表示されてた数値が書き込 んであった
  35. 35. 66666 表示された!!
  36. 36. 77777 表示された!!
  37. 37. 結論:作りがセキュアだったので頑張って動作理解 してパケット再現するより操作元をハッキングして 書き換えて任意の操作させる方がてっとり早かった。
  38. 38. IoTの開発でも、改ざんされる事を前提に作らな ければならない。 (この自動販売機はそういう作りだった。) IoTは単純な動作しかしない、サーバー側でチェック を厳しくしなければならない
  39. 39. 正直、気になるところ (..リクエスト見た事無いので何とも言えないですが) 15回で1回無料 チケットで購入 自動販売機に通信機能は無い様に見えます。 IoT単体はたいした動作をしませんので、ポイント コピーはダメでも、15回に1回無料のBluetoothの valueがgatttoolでコピー出来ない理由を知りたい。
  40. 40. サーバーへの通信パケット
  41. 41. binwalk -eM
  42. 42. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz &'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz GET /spn/app/images/news/img_news_main_5.jpg HTTP/1.1 User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.4; G620S-L02 Build/HuaweiG620S-L02) Host: c.cocacola.co.jp Connection: Keep-Alive Accept-Encoding: gzip HTTP/1.1 200 OK Server: Akamai Image Server Last-Modified: Wed, 06 Apr 2016 10:03:24 GMT X-Image-Server-Response: request-553170-25383300 X-Image-Server-Product: AIC ETag: "22111-52fce12856a1c" X-Image-Server-Original-Size: 139537 Content-Type: image/jpeg;charset=UTF-8 Content-Length: 26594 Cache-Control: max-age=2576 Expires: Wed, 16 Nov 2016 16:29:22 GMT Date: Wed, 16 Nov 2016 15:46:26 GMT Connection: keep-alive =,.$2I@LKG@FEPZsbPUmVEFd
  43. 43. IoTの診断ってどこからどこまで? 多分、診断業者の方々は……… [+]サーバー診断 [+]Androidアプリ診断 [+]ウェブサイト診断 で案件取ることが多いと思いますが..? (apk解析中に見積もってない現状動いてる開発のテストサーバーが!みたいな)
  44. 44. 感想 • 個人的には満足しました。 • 自動販売機の前でパソコンを叩くのは大変目立 つのである程度の書き換え作業を他の部屋でし てテストを数秒で終わらす流れでしていたので大 変でした。 • 自分の部屋に自動販売機欲しいです。
  45. 45. ココ..は、OWAS..P..!
  46. 46. IoT系はユーザーから視認出来ないのでWebViewの手抜きが ある印象。(ログイン箇所でhttps使わないとか) IPA#410428XXで取り扱い開始されたので治ります様に!! WebView is vulnerable!
  47. 47. GoodBye ! ご清聴有難うございました! ワンタイムパスワードのハッ キングについて今日はお話を したい気分です!!!
  48. 48. 00月00日(要は不明)、大和セキュリティでIoT系 の勉強会やるらしいのでさくっと書きました!!
  49. 49. \New/ 興味あるけどIoTのハッキングとかした事無いし.. という方事前学習にどうぞ!! ダウンロード : https://goo.gl/flEqrf
  50. 50. ps:ruffnexで小言いっすか! https://enquiry.io/domain/oc.to 元レン のdomain

×