IoT機器の脆弱性診断の実例

598 Views

December 23, 22

スライド概要

次のイベントの講演資料です。
https://sciencepark.connpass.com/event/268942/

profile-image

サイエンスパークの勉強会の資料を公開します。勉強会は2022/3現在、connpassで公開しています。 https://sciencepark.connpass.com

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

ミニWDDDS IoT機器のセキュリティ診断の現状 SP2212-E56 2022/12/23 バグダス検証課 三浦秀朗

2.

ミニWDDDS 目次. 1.はじめに 2.IoT機器のセキュリティ 3.ソフトウェアのセキュリティ検証実例 4.インタフェースのセキュリティ検証実例 5.最後に © SCIENCEPARK CORPORATION. 2

3.

ミニWDDDS 1.はじめに - 自己紹介 サイエンスパーク株式会社 プラットフォーム開発部 バグダス検証課 兼 社長室 みうら ひであき 三浦 秀朗 ・各種OSでの様々なデバイスドライバの開発 ・Windows向けセキュリティ製品の立上げ・開発 ・Windows向けセキュリティSDKの立上げ・開発 ・デバイスドライバ向け開発ツールの翻訳・国内サポート ・ソフトウェアで実現するStackOverflow対策の研究開発 (米空軍 Award) ・WDMドライバの各種セミナー ・デバイスドライバ関連書籍の翻訳・監修 ・某ゲーム機のスタートアップ・Windowsクロス開発(約5年) ・電力・自動車向けIoT機器のペネトレーションテスト © SCIENCEPARK CORPORATION. 3

4.

ミニWDDDS 1.はじめに 組み込み機器の開発者にとって、書いたコードや利用するライブラリは機能 優先なことが多く、「まさかうちのプログラムが攻撃されるようなことは無 いだろう」という考えのもと、セキュリティ対策はおざなりにされがちです。 しかし開発したプログラムが動く機器がインターネットに繋がり、IoT機器 と呼ばれるようになってきた昨今、そのプログラム自体が踏み台とされ、シ ステム全体に対する攻撃の起点になる事例は後を絶ちません。 そこでこのセミナーでは、そういった開発者の方でも実施できるセキュリ ティ対策の実例をお見せし、無駄なIoT機器開発における手戻りなどを少な くするための情報を、開発者目線でお伝えしていきたいと思います。 © SCIENCEPARK CORPORATION. 4

5.

ミニWDDDS 2.IoT機器セキュリティの現状 「IoT機器のセキュリティはどうされてますか?」 と開発者に聞いた結果・・・ ・セキュリティに費やす予算が無い ・どこまで対策すればいいかわからない 「気にしてない」という方は ほとんどおられませんでした。 © SCIENCEPARK CORPORATION. 5

6.

ミニWDDDS 2.IoT機器セキュリティの現状 開発者ができるセキュリティ対策は? 具体的な攻撃方法を知って防ぐ © SCIENCEPARK CORPORATION. 6

7.

ミニWDDDS 2.IoT機器セキュリティの現状 少しの知識とOSSを使うことで 開発者も実施できる方法をいくつか紹介していきます。 © SCIENCEPARK CORPORATION. 7

8.

ミニWDDDS 3.セキュリティ検証の実例 3.1 binwalk 3.2 文字列検索 3.3 CVE検索 3.4 暗号情報の検出 3.5 その他 © SCIENCEPARK CORPORATION. 8

9.

ミニWDDDS 3.1 binwalk free版 Linuxのほとんどのディストリビューションにて、標準で搭載されています。 対象となるモジュール内に、どのような情報が含まれているかを大まかに見たり、 抽出することができます。 元のファームウェアイメージ ブートローダ ブートローダ モジュール1 モジュール2 ファイルシステム ファイルシステム モジュール3 鍵や証明書 チェックサム © SCIENCEPARK CORPORATION. 9

10.

ミニWDDDS 3.1 binwalk free版 Linuxのツールですが、Windowsのモジュールも解析できます。 下記はEXEからCRC32テーブルを見つけた例です。 EXEファイルを解析 CRC32計算用のテーブルが、リトルとビッグ両方のエンディアンで存在するのがわかります。 攻撃側の立場からすれば、このようなテーブルはデータの暗号やベリファイに用いられることが 多く、その処理を特定する起点になります。 © SCIENCEPARK CORPORATION. 10

11.

ミニWDDDS 3.1 binwalk Enterprise (有償版) 2021/6/2に、Microsoftはbinwalkの開発元であるReFirm Labsを買収しました。 クラウド上で提供されており、WebにファームウェアやプログラムをD/Dすることで、 自動で診断が行われるという、価格も安く使い勝手のよいツールでした。 Microsoft Azure IoTの枠組みの中で提供される予定とのことですが、詳細がわかって いない状態です。 https://www.techrepublic.com/article/microsofts-new-security-tool-will-discover-firmware-vulnerabilities-andmore-in-pcs-and-iot-devices/ © SCIENCEPARK CORPORATION. 11

12.

ミニWDDDS 3.1 binwalk Enterprise (有償版) https://www.techrepublic.com/article/microsofts-new-security-tool-will-discover-firmware-vulnerabilities-andmore-in-pcs-and-iot-devices/ © SCIENCEPARK CORPORATION. 12

13.

ミニWDDDS 3.2 文字列検索 モジュール内に埋め込まれている文字列を抽出することができ ます。 ポイント: ①デバッグ用ログの文字列が、リリース用モジュールに含まれていないか - ファイルのサイズ肥大の要因 - 攻撃拠点として解析された際に、プログラムの動作を特定しやすい ②暗号鍵などの埋込 - "Private”のような文字により、秘密鍵が特定される可能性がある © SCIENCEPARK CORPORATION. 13

14.

ミニWDDDS 3.2 文字列検索 stringsコマンド -nオプション:検索する最小文字数 -wオプション: -eオプション: -e --encoding={s,S,b,l,B,L} Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit 注意点: ・SJISのような、日本固有の文字列は検索できません © SCIENCEPARK CORPORATION. 14

15.

ミニWDDDS 3.2 文字列検索 文字列と思われるものがすべて抽出されるので、予め 「private」「crc」「cert」のような検索文字を決めて、リリー ス前にチェックするパターンが良いと思います。 © SCIENCEPARK CORPORATION. 15

16.

ミニWDDDS 3.3 CVE検索 CVE (Common Vulnerabilities and Exposures)が管理している脆弱性情報デー タベースから、バイナリファイルを診断する手法が最も簡単です。 CVE データベース 診断 アプリ OpenCVEというOSSライブラリを用いることで容易にデータベースのダウン ロードができるため、多くの無料診断アプリで使われています。 © SCIENCEPARK CORPORATION. 16

17.

ミニWDDDS 3.3 CVE検索 CVE (Common Vulnerabilities and Exposures)は、 情報セキュリティにおける 脆弱性やインシデントについて、固有の名前や番号を付与してリスト化した ものです。 ・これまでCVEができる前までは、統一されたリストが存在しませんでした。 ・そのため米国政府の支援を受けた非営利団体のMitre Corporation (マイターコーポ レーション)が、 1999年に脆弱性を一意に特定できるようCVEを提案・実装しました。 ・現在では、主要なベンダーなどから脆弱性情報が公開される際には必ずと言ってい いほど、 CVEとCVE IDが付与された上で公開されています。 © SCIENCEPARK CORPORATION. 17

18.

ミニWDDDS 3.3 CVE検索 CVEは図のようにWebから検索もできます。CVEとNISTがよく 使われます。 ※図は「Windows」で検索した結果の例 https://cve.mitre.org/ © SCIENCEPARK CORPORATION. https://nvd.nist.gov/ 18

19.

ミニWDDDS 3.3 CVE検索 各Windowsの脆弱性に 紐付けられたCVE ID Microsoftでも 脆弱性とCVE番号 を公開しています https://msrc.microsoft.com/update-guide © SCIENCEPARK CORPORATION. 19

20.

ミニWDDDS 3.3 CVE検索 例えば、msvcr100.dllをcve.mitre.orgで検索した例です。 © SCIENCEPARK CORPORATION. 20

21.

ミニWDDDS 3.3 CVE検索 NVDでの情報です。スコアはMITREにはありません。 CVSS (Common Vulnerability Scoring System) © SCIENCEPARK CORPORATION. 21

22.

ミニWDDDS 3.3 CVE検索 cve-bin-toolが機能的に優れています。 https://github.com/intel/cve-bin-tool ・一部のOSS系のライブラリに対して、CVEデータベースに脆弱性が登録されていな いかを検索できます。 ・しかし対象内であれば、スタティックリンクされたライブラリも検索できます。 © SCIENCEPARK CORPORATION. 22

23.

ミニWDDDS 3.3 CVE検索 cve-bin-toolで診断できるモジュールの一覧 busybox dbus freeradius gnutls hunspell kexectools libjpeg_turbo libsoup lighttpd mysql ntp openswan poppler rust syslogng wpa_supplicant bzip2 dnsmasq ftp gpgme icecast libarchive liblas libsrtp logrotate nano open_vm_tools openvpn postgresql samba systemd xerces © SCIENCEPARK CORPORATION. commons_compress dovecot gcc gstreamer icu libbpg libnss libssh2 lua ncurses openafs p7zip pspp sane_backends tcpdump xml2 cronie dpkg gimp gupnp irssi libdb librsvg libtiff mariadb nessus openjpeg pcsc_lite python sqlite trousers zlib cryptsetup enscript glibc haproxy jacksondatabind libebml libseccomp libvirt mdadm netpbm openldap pigz qt strongswan varnish zsh cups expat gnomeshell hdf5 kbd libgcrypt libsndfile libvncserver memcached nginx openssh png radare2 subversion webkitgtk curl ffmpeg gnupg hostapd kerberos libical libsolv libxslt mtr node openssl polarssl_fedora rsyslog sudo wireshark 23

24.

ミニWDDDS 3.4 デコンパイラによる診断 + ・GhidraはOSSのデコンパイラですが、デコンパイルをしなく ても調査ツールとしてだけでも非常に有用です。 ・FindCryptプラグインは、有償のIDA Proというデコンパイラ用 のものを、Ghidraに移植したものです。 https://hex-rays.com/blog/findcrypt2/ ・AES/RSA/CRC32など、暗号やCRCチェックに用いられるテー ブル値を抽出できます。 © SCIENCEPARK CORPORATION. 24

25.

ミニWDDDS 3.4 暗号情報の検出(Ghidra+FindCrypt) FindCryptの実行結果 圧縮・解凍に係わるOSSのテーブルが 一致度1.000で存在しているのがわかります © SCIENCEPARK CORPORATION. 25

26.

ミニWDDDS 3.5 その他 ・TrustZone 最近はArm Cortex-Mのように、安価でTrustZoneを使うことができるプロ セッサが多数出ています。 しかしSecure側の作りや改ざん検知方法がおろそかになっていると、ほとん ど意味を成さないと言えます。メーカーのセミナーなどに参加し、正しい使 い方を学んでおくことをお勧めします。 Non-Secure側 ①16バイトのデータを用意し Secure側の関数を呼び出す ③受け取った値を用いて 暗号化などの処理を行う © SCIENCEPARK CORPORATION. Secure ②NonSecure側から受け取った 16バイトのデータのXXX値を 計算して返す 26

27.

ミニWDDDS 3.5 その他 ・JTAGなどのデバッグポート メンテナンスを容易に行うため、デバッグポートにパスワードなどをかけな いまま世に出ている製品が意外と多いです。簡単な対策なのでぜひ実施して ください。 Arduino+JtagEnumを用いた、 JTAGピン探索とRead/Writeを行うシ ステム 引用元:https://book.hacktricks.xyz/todo/hardware-hacking/jtag © SCIENCEPARK CORPORATION. 27

28.

ミニWDDDS 4.インタフェースのセキュリティ検証 代表的なIoTデバイスのインタフェースと、その特徴と注意点に ついて説明します。 4.1 Ethernet 4.2 Wi-Fi 4.3 シリアル通信 4.4 USB 4.5 Bluetooth © SCIENCEPARK CORPORATION. 28

29.

ミニWDDDS 4.1 インタフェースのセキュリティ検証 - Ethernet LinuxのNMAPというツールがよく使われます。 TCP/UDPポートを見つけるという単純な診断です。 インターネットに繋がることが前提の場合、外部からの攻撃にさらされますので、 機器の外部に公開していないはずのポートがあるかを確認してください。 Linux版NMAP Windows版NMAP(Zenmap) ※Windows WSLでも使用可 © SCIENCEPARK CORPORATION. 29

30.

ミニWDDDS 4.2 インタフェースのセキュリティ検証 - Wi-Fi Aircrack-ngというLinuxのツールがよく使われます。 空中を飛び交うWiFiの電波をモニターしたり、サポートされる認証方式を確認したり、 ステルスAPを見つけたりすることができます。 市販のUSB-WiFiドングルのうち、特定のチップを載せているもので使用できます。 AtherosやRalinkのチップですと、動く確率が高いです。 事前に、脆弱性のあるWEPなどの認証方式などを確認しておくことをお勧めします。 脆弱な認証方式の 鍵を見つけたところ 引用元:https://www.computerweekly.com/tip/Step-by-step-aircrack-tutorial-for-Wi-Fi-penetration-testing © SCIENCEPARK CORPORATION. 30

31.

ミニWDDDS 4.3 インタフェースのセキュリティ検証 - シリアル通信 外部に知られたくないようなログが出力されたり、メンテナンス用コンソールに入れ たりする可能性があります。 仮にその機能が製品版でも必要な場合、何らかの認証や難読化の機能を入れておくこ とをお勧めします。 また配線やピンヘッダーのみ撤去して、実際にはその機能が有効になっていると、多 少の手間で上記と同様な問題があります。 Windows用のSerialDebug2 というフリーソフトの例 引用元:https://www.vector.co.jp/soft/winnt/hardware/se449799.html © SCIENCEPARK CORPORATION. 31

32.

ミニWDDDS 4.4 インタフェースのセキュリティ検証 - USB サポートしていない実デバイスを接続し、デバイスが認識されるかを検証します。 特に見ておきたいものは以下です。 ① ネットワーク(RNDISクラス、cdc-acmクラス) スマートフォンのUSBテザリングで使用するクラスです。前述のEthernetと同様な検証が必要 です。不要であれば無効にしてください。 ② シリアル通信(cdc-acmクラス) FTDIチップなどを用いた、デバッグ用インタフェースが生きている可能性があります。前述 のシリアル通信と同様な検証が必要です。 ③ キーボードなど(HIDクラス) キーボードを認識できる可能性があります。 IoT機器の内部で起動しているコンソールに対して、コマンドライン入力ができる可能性があり ます。 ④デバッグ用(ADBなど) Androidベースの機器で有効になっているものがよく見受けられます。パスワードなど認証機構 は必須です。 © SCIENCEPARK CORPORATION. 32

33.

ミニWDDDS 4.5 インタフェースのセキュリティ検証 - Bluetooth Bluetooth Classic 昔から使われている方式です。 今でも比較的大容量の通信に用いられ、若干消費電力が多いです。 セキュリティ機構がハードウェアに組み込まれているため、デバイス同士の接続にセ キュリティを入れ込むことが容易になっています。 しかし安全でないセキュリティが混在できるため、明確にサポートするセキュリティ レベルを定義する必要があります。 80分割された周波数を用い、接続開始の周波数が決まっていないため、盗聴(スニッ フィング)を行う機器が高価です。 © SCIENCEPARK CORPORATION. 33

34.

ミニWDDDS 4.5 インタフェースのセキュリティ検証 - Bluetooth Bluetooth LowEnergy (LE) 省電力が売りです。そのため小容量の通信に向いています。 消費電力を少なくしたい(スペックの低めの)機器で使われることが多いです。 セキュリティ機構はソフトウェア側で実装することになっています。 しかし上記の機器の特徴、及び省電力向けOSの制約のため、セキュリティ機構が実 装されないことが多く、攻撃が容易いデバイスが多いです。 40分割された周波数を用いますが、接続開始の周波数が3つしか無いため、安価な機 器でスニッフィングが可能です。 micro:bitという3,000円程度のデバイスを3つ用意し、BtleJackなどGitHubに公開され ているツールを使うと、簡単にスニッフィングを実施できます。 © SCIENCEPARK CORPORATION. 34

35.

ミニWDDDS 5.最後に セキュリティのレベルは2つに大別されると考えます。 ・「やるだけやって攻撃されたら仕方ないな・・・」というケース →採算を度外視してでも攻撃されることはそうそうない →高度な攻撃になるほど実施できる人間と機材のスペックが高くなる ・「こんな攻撃にやられるなんて・・・」というケース →中学生がGitHubみて真似たような容易な攻撃手法が成功してしまう →会社の評判が落ちる、謝罪、取材への対応 →機材の早急なアップデートまたは交換に多大な労力を強いられる ⇒ある程度までは開発者で守りましょう!! ⇒それでも不安なら弊社にご相談ください © SCIENCEPARK CORPORATION. 35

36.

ミニWDDDS ご清聴ありがとうございました