
IoTGoatは、OpenWrtをベースにした意図的に脆弱性を持たせたファームウェアです。

IoTGoatプロジェクトは、OpenWrt をベースにした意図的に脆弱性のあるファームウェアであり、OWASP が維持管理しています。IoTデバイスでよく見られる脆弱性のテスト方法をユーザーに教育することを目的としています。脆弱性チャレンジは、以下のOWASP IoTトップ10と、プロジェクトコントリビューターによる「イースターエッグ」に基づいています。脆弱性チャレンジの一覧は、IoTGoat challenges wiki ページを参照してください。
| OWASP IoT Top 10 2018 | 説明 |
|---|---|
| I1 脆弱、推測可能、またはハードコードされたパスワード | ブルートフォースが容易、公開されている、または変更不可能な認証情報の使用。ファームウェアやクライアントソフトウェアのバックドアを含み、デプロイされたシステムへの不正アクセスを許す。 |
| I2 安全でないネットワークサービス | デバイス自体で動作する不要または安全でないネットワークサービス。特にインターネットに露出しているもの。情報の機密性、完全性/真正性、可用性を危険にさらすか、不正な遠隔操作を許す。 |
| I3 安全でないエコシステムインターフェース | デバイス外部のエコシステムにおける安全でないWeb、バックエンドAPI、クラウド、モバイルインターフェース。デバイスや関連コンポーネントの侵害を許す。一般的な問題として、認証/認可の欠如、暗号化の欠如または弱さ、入力・出力フィルタリングの欠如などがある。 |
| I4 安全な更新メカニズムの欠如 | デバイスを安全に更新する機能の欠如。これには、デバイス上でのファームウェア検証の欠如、安全な配送の欠如(転送中の暗号化なし)、アンチロールバックメカニズムの欠如、更新によるセキュリティ変更の通知の欠如が含まれる。 |
| I5 安全でないまたは古いコンポーネントの使用 | 非推奨または安全でないソフトウェアコンポーネント/ライブラリの使用。デバイスの侵害を許す可能性がある。これには、オペレーティングシステムプラットフォームの安全でないカスタマイズ、サプライチェーンから侵害されたサードパーティソフトウェアやハードウェアコンポーネントの使用が含まれる。 |
| I6 不十分なプライバシー保護 | デバイスまたはエコシステムに保存されたユーザーの個人情報が、安全でない方法、不適切な方法、または許可なく使用される。 |
| I7 安全でないデータ転送と保存 | エコシステム内の機密データに対する暗号化またはアクセス制御の欠如。保存中、転送中、処理中のいずれも含む。 |
| I8 デバイス管理の欠如 | 本番環境にデプロイされたデバイスに対するセキュリティサポートの欠如。資産管理、更新管理、安全な廃棄、システム監視、対応能力を含む。 |
| I9 安全でないデフォルト設定 | 安全でないデフォルト設定で出荷されるデバイスまたはシステム。あるいは、オペレーターが設定を変更することを制限してシステムをより安全にする機能の欠如。 |
| I10 物理的強化の欠如 | 物理的強化措置の欠如。攻撃者が将来の遠隔攻撃に役立つ機密情報を取得したり、デバイスをローカルで制御したりすることを許す。 |
IoTGoatのハッキングを始めるには、いくつかの方法があります。
ファイルシステムの抽出、設定やバイナリの静的解析を行う場合は、https://github.com/scriptingxss/IoTGoat/releases から最新のプリコンパイル済みファームウェアリリースをダウンロードしてください。脆弱性の特定には、OWASPの Firmware Security Testing Methodology を参照してください。
動的なWebテストやバイナリのランタイム解析には、最新の"IoTGoat-x86.vmdk" (VMware) をダウンロードし、IoTGoatディスクイメージを使用してカスタム仮想マシンを作成するのが最も早い方法です。Webアプリケーションの脆弱性を特定するための追加のガイダンスとして、OWASPの Web Security Testing Guide および ASVS プロジェクトを参照してください。
QEMUを活用してIoTGoatをローカルで仮想化するオープンソースツール(例:Firmadyne や FAT)を使用してファームウェアをエミュレートする。
IoTGoat-raspberry-pi2-sysupgrade.img ファームウェアを使用して、Raspberry Pi 2(BRCM2708 & BRCM2709)にフラッシュする。
OpenWrtは多くの異なるCPUプラットフォームやボードをビルドできます。ソースからビルドすることで、対応するOpenWrtハードウェアにIoTGoatをフラッシュする柔軟性が得られます。10~15GBのディスク容量と最低4GBのRAM、Ubuntu 18.04などのサポートされているLinuxディストリビューション が必要です。カスタムファームウェアのビルドを始めるには、以下の手順に従ってください。
$ git clone https://github.com/scriptingxss/IoTGoat.git
$ cd IoTGoat/OpenWrt/openwrt-18.06.2/
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig # ツールチェーン、ターゲットシステム、ファームウェアパッケージに好みの設定を選択します。
$ make # makeでファームウェアをビルドします。これにより、すべてのソースがダウンロードされ、クロスコンパイルツールチェーンがビルドされ、その後、Linuxカーネルと選択したすべてのアプリケーションがターゲットシステム用にクロスコンパイルされます。
最初のビルドは完了までに時間がかかり、ツールチェーンのダウンロードに使用するインターネット接続によって異なります。ビルドが正常に完了すると、コンパイルされたファームウェアは、menuconfig で選択したターゲットに応じて、IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ ディレクトリに配置されます。たとえば、IoTGoat Raspberry Pi 2 ファームウェアは、IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709 ディレクトリにあります。IoTGoatのビルド設定ファイルは、x86(.config-x86)およびRaspberry Pi 2(.config-rpi)プラットフォーム用に提供されています。