
意図的に脆弱性を含むOpenWrtベースのファームウェアで、実践的なIoTセキュリティトレーニング向けです。静的解析および動的解析用に、OWASP IoT Top 10に対応した脆弱性チャレンジを備えています。

IoTGoat プロジェクトは、OpenWrt をベースにした意図的に脆弱性を含むファームウェアで、OWASP によって維持されており、ソフトウェア開発者やセキュリティ専門家が IoT デバイスでよく見られる脆弱性をテストするための教育プラットフォームとして提供されています。脆弱性チャレンジは、以下の OWASP IoT Top 10 と、プロジェクト貢献者による「イースターエッグ」に基づいています。脆弱性チャレンジの一覧については、IoTGoat チャレンジ Wiki ページを参照してください。
| OWASP IoT Top 10 2018 | 説明 |
|---|---|
| I1 脆弱、推測可能、またはハードコードされたパスワード | ブルートフォースされやすい、公開されている、または変更できない認証情報の使用。これには、導入済みシステムへの不正アクセスを許可する、ファームウェアやクライアントソフトウェアのバックドアが含まれます。 |
| I2 安全でないネットワークサービス | デバイス自体で実行されている不要または安全でないネットワークサービス。特にインターネットに公開されているサービスは、情報の機密性、完全性/真正性、可用性を損なうか、不正なリモートコントロールを可能にします。 |
| I3 安全でないエコシステムインターフェース | デバイスの外部にあるエコシステム内の安全でない Web、バックエンド API、クラウド、またはモバイルインターフェース。これらはデバイスや関連コンポーネントの侵害を可能にします。一般的な問題には、認証/認可の欠如、暗号化の欠如または脆弱な暗号化、入力および出力フィルタリングの欠如が含まれます。 |
| I4 安全な更新メカニズムの欠如 | デバイスを安全に更新する機能の欠如。これには、デバイス上のファームウェア検証の欠如、安全な配信の欠如 (転送中は暗号化されない)、アンチロールバックメカニズムの欠如、更新によるセキュリティ変更の通知の欠如が含まれます。 |
| I5 安全でない、または古いコンポーネントの使用 | デバイスが侵害される可能性のある、非推奨または安全でないソフトウェアコンポーネント/ライブラリの使用。これには、オペレーティングシステムプラットフォームの安全でないカスタマイズや、侵害されたサプライチェーンからのサードパーティ製ソフトウェアまたはハードウェアコンポーネントの使用が含まれます。 |
| I6 不十分なプライバシー保護 | デバイスまたはエコシステムに保存されているユーザーの個人情報が、安全でない方法、不適切な方法、または許可なく使用されること。 |
| I7 安全でないデータ転送と保存 | エコシステム内のどこかにおける機密データの暗号化またはアクセス制御の欠如。これには、保存中、転送中、処理中のデータが含まれます。 |
| I8 デバイス管理の欠如 | 本番環境に展開されたデバイスにおけるセキュリティサポートの欠如。これには、資産管理、更新管理、安全な廃止、システム監視、および対応機能が含まれます。 |
| I9 安全でないデフォルト設定 | 安全でないデフォルト設定で出荷されたデバイスまたはシステム、あるいはオペレーターによる設定変更を制限してシステムをより安全にする機能の欠如。 |
| I10 物理的堅牢化の欠如 | 物理的堅牢化対策の欠如。これにより、潜在的な攻撃者が将来のリモート攻撃に役立つ機密情報を入手したり、デバイスのローカル制御を取得したりできるようになります。 |
IoTGoat のハッキングを始めるには、いくつかの方法があります。
ファイルシステムの抽出、設定やバイナリの静的解析を検討している方は、https://github.com/OWASP/IoTGoat/releases から最新のプリコンパイル済みファームウェアリリースをダウンロードしてください。脆弱性の特定に役立つ OWASP の ファームウェアセキュリティテスト手法 を参照してください。
動的な Web テストとバイナリのランタイム解析を行う場合、最も簡単な方法は、最新の "IoTGoat-x86.vmdk" (VMware) をダウンロードし、IoTGoat ディスクイメージを使用してカスタム仮想マシンを作成することです。仮想マシン設定で、次のオペレーティングシステムの詳細 Type: Linux、Version: Linux 2.6 / 3.x / 4.x (32-bit) を選択し、Enable PAE/NX を有効にします。.vmdk と .vdi の両方は、最新の VirtualBox リリース(2020年4月)で Windows 10、Ubuntu 18.04 LTS、MacOS Mojave でテスト済みです。Web アプリケーションの脆弱性の特定に関する追加のガイダンスについては、OWASP の Web セキュリティテストガイド および ASVS プロジェクトを参照してください
QEMU を利用して IoTGoat をローカルで仮想化するオープンソースツール(例:Firmadyne、ARM-X Framework、FAT)を使用してファームウェアをエミュレートします。
Raspberry Pi 2(BRCM2708 & BRCM2709)に書き込むには、IoTGoat-raspberry-pi2-sysupgrade.img ファームウェアを使用します。
Docker セットアップを使用して、コンテナ化された環境で IoTGoat を実行します。詳細については、Docker セットアップガイドを参照してください。
追加の詳細とスクリーンキャプチャについては、はじめに ページを参照してください。
OpenWrt は、さまざまな CPU プラットフォームとボードをビルドできます。ソースからビルドすることで、ユーザーはサポートされている OpenWrt ハードウェアに IoTGoat を書き込む柔軟性を得られます。少なくとも 4GB の RAM と 10〜15GB のディスク空き容量、および Ubuntu 18.04 などのサポートされている Linux ディストリビューション があることを確認してください。カスタムファームウェアのビルドを始めるには、次の手順を使用します。
$ git clone https://github.com/OWASP/IoTGoat.git
$ cd IoTGoat/OpenWrt/openwrt-18.06.2/
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig # select your preferred configuration for the toolchain, target system & firmware packages.
$ make # Build your firmware with make. This will download all sources, build the cross-compile toolchain and then cross-compile the Linux kernel & all chosen applications for your target system.
最初のビルドの完了には時間がかかり、ツールチェーンのダウンロードに使用するインターネット接続によって異なります。ビルドが正常に完了すると、コンパイルされたファームウェアは、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)プラットフォーム用に提供されています。



