
oxo v2.9.1
モジュール式のセキュリティスキャンオーケストレーターで、ネットワーク、Webアプリ、モバイルアプリ、API全体で脆弱性検出、偵察、フィンガープリンティングを行う専門エージェントを組み合わせます。
OXO スキャンオーケストレーションエンジン
OXO は、モジュール性、スケーラビリティ、シンプルさを重視して構築されたセキュリティスキャンフレームワークです。
OXO エンジンは、専門的なツールを組み合わせて連携させ、偵察、列挙、フィンガープリンティングなどの脆弱性の発見やアクションを実行します。

主な機能
- モジュール式 & スケーラブル: 複数の専門エージェントを簡単に組み合わせて、包括的なスキャンを実行できます。
- 幅広いアセットサポート: IP アドレスやドメインからモバイルアプリケーション (Android、iOS、HarmonyOS) や API スキーマまで、あらゆるものをスキャンできます。
- エージェントストア: コミュニティおよび公式エージェントのライブラリが増え続けており、人気のセキュリティツールにアクセスできます。
- 拡張可能: シンプルな Python ベースのフレームワークを使用して、独自のエージェントを作成および公開するための組み込みサポートを備えています。
- API ファースト: CI/CD パイプラインやその他の自動ワークフローに簡単に統合できる GraphQL API を備えています。
要件
ローカルでスキャンを実行するには Docker が必要です。Docker をインストールするには、次の 手順 に従ってください。
インストール
OXO は PyPI 上の Python パッケージとして提供されています。pip がすでにインストールされている場合は、次のコマンドを実行するだけでインストールできます。
pip install -U ostorlab
はじめに
OXO には多数のエージェントを備えたストアが付属しています。Nmap、Nuclei、Tsunami などのネットワークスキャンエージェント、ZAP などの Web スキャナー、WhatWeb や Wappalyzer などの Web フィンガープリンティングツール、Subfinder や Dnsx などの DNS ブルートフォースツール、VirusTotal などのマルウェアファイルスキャンなどがあります。
これらのツールを組み合わせて実行するには、次のコマンドを実行するだけです。
OXO CLI は
oxoまたはostorlabコマンドを使用してアクセスできます。
oxo scan run --install --agent agent/ostorlab/nmap --agent agent/ostorlab/tsunami --agent agent/ostorlab/nuclei ip 8.8.8.8
このコマンドは、次のスキャンエージェントをダウンロードしてインストールします。
ターゲット IP アドレス 8.8.8.8 をスキャンします。
エージェントは標準の Docker イメージとして提供されます。
スキャン管理
スキャンのステータスを確認するには、次を実行します。
oxo scan list
スキャンが完了したら、スキャン結果にアクセスするには、次を実行します。
oxo vulnz list --scan-id <scan-id>
oxo vulnz describe --vuln-id <vuln-id>
実行中のスキャンを停止するには、次を実行します。
oxo scan stop --scan-id <scan-id>
Docker イメージ
oxo をコンテナ内で実行するには、公開されているイメージを使用して次のコマンドを実行します。
docker run -v /var/run/docker.sock:/var/run/docker.sock ostorlab/oxo:latest scan run --install --agent agent/ostorlab/nmap ip 8.8.8.8
注:
- コマンドは
scan runで直接始まります。これはostorlab/oxoイメージがoxoをentrypointとして持っているためです。 - ホストマシン上で OXO がエージェントを作成できるように、Docker ソケットをマウントすることが重要です。
オンプレミススキャナーログ
OXO をオンプレミススキャナーとして実行する場合、--persist-logs を使用してスキャナーログをディスクに書き込みます。
oxo scanner --scanner-id <scanner-uuid> --persist-logs
デフォルトでは、ログは ~/.ostorlab/scanner.log に書き込まれます。別のファイルを選択するには:
oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-file /var/log/ostorlab/scanner.log
永続化されたログの詳細度を変更するには:
oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-level DEBUG
アセット
OXO は複数のアセットタイプのスキャンをサポートしており、さまざまなプラットフォームやプロトコルにわたる包括的なセキュリティカバレッジを実現します。
| カテゴリ | アセット | 説明 |
|---|---|---|
| ネットワーク | ip | IP アドレスまたは IP 範囲(v4 および v6)。 |
domain-name | ドメイン名。 | |
| Web | link | Web リンク。URL、メソッド、ヘッダー、リクエストボディを受け入れます。 |
api-schema | API スキーマ(OpenAPI、GraphQL など)。 | |
| モバイル | android-apk / android-aab | Android パッケージファイル(.APK、.AAB)。 |
android-store | Google Play ストアの Android アプリ。 | |
ios-ipa | iOS パッケージファイル(.IPA)。 | |
ios-store | Apple App Store の iOS アプリ。 | |
ios-testflight | TestFlight の iOS アプリ。 | |
harmonyos-apk / harmonyos-hap | HarmonyOS パッケージファイル。 | |
| その他 | file | 汎用ファイル。 |
phone-number | 電話番号。 | |
agent | エージェントのメタスキャン。 |
ストア
OXO はすべてのエージェントを公開ストアにリストし、検索や独自のエージェントの公開が可能です。

最初のエージェントを公開する
最初のエージェントを作成するには、完全なチュートリアルをこちらで確認できます。
手順は基本的に次のとおりです。
- すべてのファイルがすでにセットアップされているテンプレートエージェントをクローンします。
template_agent.pyファイルを変更してロジックを追加します。Dockerfileを変更して追加のビルド手順を追加します。ostorlab.yamlを変更してセレクター、ドキュメント、イメージ、ライセンスを追加します。- ストアに公開します。
エージェントを作成したら、ストアに公開して他のユーザーが使用および発見できるようにします。ストアはエージェントのビルドを処理し、Git リポジトリからの新しいリリースを自動的に取得します。

構築するエージェントのアイデア
人気ツールの実装など:
semgrep:ソースコードスキャン用。- nbtscan:ターゲットのネットワーク上で開いている NetBIOS ネームサーバーをスキャンします。
- onesixtyone:公開されている SNMP サービスを迅速に発見するスキャナー。
- Retire.js:既知の脆弱性がある JavaScript ライブラリの使用を検出するスキャナー。
snallygaster:HTTP サーバー上のファイルリークやその他のセキュリティ問題を発見します。- testssl.sh:Heartbleed、CRIME、ROBOT など、さまざまな TLS/SSL の脆弱性を特定します。
TruffleHog:Git リポジトリを検索して高エントロピー文字列や機密情報を探し、コミット履歴を深く掘り下げます。- cve-bin-tool:バイナリ内の脆弱なコンポーネントをスキャンします。
- XSStrike:生成ペイロードを使用した XSS Web 脆弱性スキャナー。
Subjack:サブドメインテイクオーバースキャンニングツール。- DnsReaper:サブドメインテイクオーバースキャンニングツール。
- Gitleaks:ハードコードされた秘密情報を検出および防止するための SAST ツール。
- ffuf:Go で書かれた高速な Web ファザー。
- Gobuster:URI、DNS サブドメインなどをブルートフォースするためのツール。
クレジット
急速に発展している分野のオープンソースプロジェクトとして、新機能、インフラストラクチャの改善、ドキュメントの改善など、常に貢献を歓迎しています。
OXO をより良いツールにするためにご協力いただいた以下の貢献者に感謝いたします。