
Ollamaオープンインスタンス向けの大規模偵察、バージョンフィンガープリンティング、CVEテスター、そしてライブ悪用フレームワーク。
公開されたOllamaサーバーを発見し、バージョンを特定し、モデルアクセスを検証するためのモジュラーツールキット。
OllamaHoundは、公開されたOllamaサーバーを発見し、バージョンを特定、CVE露出を分類、テキスト生成が可能かを検証、そして(オプションで)制御されたテスト用の対話型CLIセッションを有効にするための、モジュール式のRedTeam向けツールキットです。
@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@%.-+-:#@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@+--=%@@@@@@@@-.@@@+ #@@@@@@@@@@@@@@@@@ @@@@@@@@@@@= %%+.=@@@%###-.@@@@= %@@@@@@@@@@@@@@@@ @@@@@@@@@@@-.@@@@..--====-.=@@@@.-@@@@@@@@@@@@@@@@ @@@@@@@@@@@# +#+-:*%@@@@@@@@@@@@- +@@@@@@@@@@@@@@@ @@*@@@@@#*+=:::.-*%@@@@@@@@@@@@@@%::%@@@@@@@@@@@@@ @+:-@@*----=***+==-=#@@@@@@@@@@@@@@::@@@@@@@@@@@@@ @*+#@=-==+=%@@@@%#=+:*%%%@@@@#++%@@+ %@@@@@@@@@@@@ +:=@#.+-@#=#@%+++%@:* =++==*@- *@@-.@@@@@@@@@@@@@ %=+@+--*@@*=##+++%#.+::=@#%:+@%@@@@%.=@@@@@@@@@@@@ @@@@#.+-@@%=*@@@@@+.* =-:*@-=@@@@@@@* %@@@@@@@@@@@ @@@@@+:==#*=%@@@@*-=.:--+*-=@@@@@@@@+ %@@@@@@@@@@@ @@@@@@#=----+*++=--=**++*#%@@@@@@@@% =@@@@@@@@@@@@ @@@@@@@@%*-:---.+*%@@@@@@@@@@@@@@@@+-:+@@@@@@@@@@@ @@@@@@@@@@# ==:.%@@@@@@@@@@@@@@@@@@@@%.-@@@@@@@@@@ @@@@@@@@@@#.@@:.#@@@@@@@@@@@@@@#@@@@@@% *@@@@@@@@@ @@@@@@@@@*::--::=%@@@@@@@@@@@@::@@@@@@@ =@@@@@@@@@ @@@@@@@@-.#@@@@@-.@@@@@@@@@@#.-@@@@@@@@*.-@@@@@@@@ @@@@@@@@.-@@@@@%::@@@@@@@@%=.+@@@@@@@@@@%.-@@@@@@@ @@@@@@@@#::++=::+@@@@@@@%=:=%@@@@@%%@@@@@+ @@@@@@@ @@@@@@@@@@=.:: #@@@@@@@=.+@@@@@@%=:*@@@@@= @@@@@@@ @@@@@@@@@@@@%-.%@@@@@@# *@@@@@#-:+@@@@@@% +@@@@@@@ @@@@@@@@@@@@@.=@@@@@@@@=:===---*@@@@@@@@@.=@@@@@@@ @@@@@@@@@@@@@=.%@@@@@@@@#-##%@@@@@@@@@@@@.-@@@@@@@ @@@@@@@@@@@@@@= -%@@@@@@# #@@@@@@@@@@@@@# #@@@@@@@ @@@@@@@@@@@@@@@ .:=*%%@%#..*@@@@@@@@@@@+.+@@@@@@@@ @@@@@@@@@@@@@@@.=@*==- -=*. --==+*#**=:-#@@@@@@@@@ @@@@@@@@@@@@@@@:-@@@@# #@@+ %%##*..++#%@@@@@@@@@@@ @@@@@@@@@@@@@@@::@@@@-.@@@% *@@@@-:@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@*.=++::%@@@@::%@%+ *@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@%***%@@@@@@%=---=%@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@---OllamaHound---@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@---By 7h30th3r0n3---@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!!! 警告 !!!
⚠️ 法的・倫理的通知
このプロジェクトは許可されたセキュリティ評価(内部ネットワーク、スコープ内の契約、ラボ環境)を目的としています。
自分が所有するシステム、または明示的な書面による許可を得たシステムでのみ使用してください。
本ソフトウェアを使用することにより、あなたは自身の行動に対して単独で責任を負うことに同意したものとみなします。
著者および貢献者は、本ソフトウェアを**「現状のまま」提供し、その誤用、損害、または使用から生じる法的影響について一切の責任を負いません**。
/api/tags と /api/generate によるresults/scraper/targets.txtresults/scanner/<prefix>_YYYYMMDD_HHMMSS.csvステップバイステップで実行するか、オーケストレーターを使用して最初の3段階を連鎖させることができます。
asyncio + aiohttp 使用(同時に多数のソケットを処理)rich による(ETA、スループット、完了率)<prefix>_YYYYMMDD_HHMMSS.csvGET /api/version → フォールバック GET /version → フォールバック Server ヘッダー< 0.1.47<= 0.3.14GET /api/tags でモデルを列挙POST /api/generate で生成をテストaiohttprichpackagingrequestsshodan依存関係のインストール:
python3 -m pip install -U aiohttp rich packaging requests shodan
Dockerを使用する場合:
docker build -t ollamahound .
docker run -it --rm ollamahound <ollamahound scripts>
オプションA(最速): スクレイプ → スキャン → 接続
python3 ollamaScraper.py
python3 ollamaScanner.py results/scraper/targets.txt --gen-ok-only
python3 ollamaConnector.py --scan-csv results/scanner/ollama_scan_*.csv
オプションB(一発): オーケストレーターパイプライン
python3 ollamaOrchestrator.py --scan-gen-ok-only
ollamaOrchestrator.py は、スクレイパー、スキャナー、コネクターを順に実行することで、Shodanによる収集から対話型CLIまでを単一コマンドで行えるようにします。スクレイパーとコネクターは対話型のままですが、オーケストレーターがそれらの出力を自動的に連携させます。
python3 ollamaOrchestrator.py --scan-gen-ok-only --scan-vuln-only
results/orchestrator/targets.txt に書き込まれます(--targets で変更可能)。results/scanner/ に保存され、プレフィックスは --scan-output-prefix(デフォルト orchestrator_scan)で指定します。--connector-row を指定すると、コネクター起動時に行を自動選択します。指定しない場合は通常通り対話的に選択します。--skip-scrape、--skip-scan、--skip-connect を使用すると、既存の出力を利用して途中から再開できます(スキャンフェーズをスキップする場合は --scan-csv が必要です)。このセクションの残りの部分は、各モジュールを手動で実行する場合にも適用されます。
スクレイパー:
# 基本的な対話型スクレイピング(Shodan dorkピッカー)
python3 ollamaScraper.py
# カスタム出力フォルダとファイル名
python3 ollamaScraper.py --output-dir results/my-scrape -o targets_acme.txt
スキャナー:
# targets.txtをスキャン(デフォルト11434、同時500、タイムアウト8秒)
python3 ollamaScanner.py results/scraper/targets.txt
# /api/generateが200を返すホストのみ
python3 ollamaScanner.py results/scraper/targets.txt --gen-ok-only
# マルチポートスキャン(スペースとカンマの混合)
python3 ollamaScanner.py results/scraper/targets.txt -p 11434 8080,13871
# 積極的なスイープ(短いタイムアウト+高同時接続)
python3 ollamaScanner.py results/scraper/targets.txt --timeout 3 -c 800
# 脆弱なホスト(RCE/DoS)と不明なバージョンのみ保持
python3 ollamaScanner.py results/scraper/targets.txt --vuln-only --show-unknown
# カスタムCSVプレフィックスと出力ディレクトリ
python3 ollamaScanner.py results/scraper/targets.txt -o scan_acme.csv --output-dir results/scanner_acme
ナビゲーター:
# スキャナーCSVのディレクトリをフィルタリング
python3 ollamaNavigator.py --scan-csv results/scanner --require-gen-ok --vuln rce
# 単一のCSVをフィルタリング、llamaモデルに制限、サイズ7B以上
python3 ollamaNavigator.py --scan-csv results/scanner/scan_20260107_180002.csv \
--model llama --min-params 7
# モデルを除外+キーワード検索
python3 ollamaNavigator.py --scan-csv results/scanner --exclude-model qwen --search france
# フィルタリングされた行をエクスポート
python3 ollamaNavigator.py --scan-csv results/scanner --vuln dos \
--json-output results/navigator/dos.json --csv-output results/navigator/dos.csv
# 対話型フィルターメニュー
python3 ollamaNavigator.py --scan-csv results/scanner --interactive
コネクター:
# 直接接続
python3 ollamaConnector.py --host http://127.0.0.1:11434 --model llama3
# スキャナーCSVの行を指定(1ベース)
python3 ollamaConnector.py --scan-csv results/scanner/scan_20260107_180002.csv --scan-row 3
オーケストレーター:
# フルパイプライン
python3 ollamaOrchestrator.py
# フルパイプライン + gen-okのみ + vuln-only
python3 ollamaOrchestrator.py --scan-gen-ok-only --scan-vuln-only
# 既存のターゲットとCSVを再利用、コネクターのみ実行
python3 ollamaOrchestrator.py --skip-scrape --skip-scan --scan-csv results/scanner/scan_20260107_180002.csv
# コネクターをスキップ(スクレイプ+スキャンのみ)
python3 ollamaOrchestrator.py --skip-connect
targets.txt には1行に1つずつ記述します:
192.0.2.1010.0.0.0/24ollama.example.orgスクレイパーでリストを生成した場合、スキャナーには results/scraper/targets.txt(または --output-dir で指定したパス)を指定します。
ollamaScraper.py は、Shodanに問い合わせることで results/scraper/targets.txt を自動生成できます:
python3 ollamaScraper.py
このスクリプトは APIキーを .shodan_api にキャッシュし、dork(グローバルまたは国指定)を選択させ、基本コンテキストを表示しながらヒットしたIPを results/scraper/targets.txt に追記します。オプションで org:"Company" フィルターを追加して結果を絞り込むことができます。Ctrl+C または最大IP数に達すると停止します。--output-dir / -o でフォルダやファイル名を変更し、そのパスをスキャナーに渡します。
/api/generate が HTTP 200 を返すホストのみ表示:
python3 ollamaScanner.py targets.txt --gen-ok-only
より積極的なスイープ(短いタイムアウト+高同時接続):
python3 ollamaScanner.py targets.txt --gen-ok-only --timeout 3 -c 800
フルスイープの例:
11434 と 8080 をスキャン/api/generate == 200 のみ保持scan.csvpython3 ollamaScanner.py targets.txt -p 11434,8080 --timeout 2 -c 1200 \
--gen-ok-only --vuln-only --show-unknown -o scan.csv
スキャナーCSVは results/scanner/ に保存されます。--output-dir で別の場所を指定できます(フォルダは自動生成されます)。
スキャナーは rich テーブルを出力します。内容:
?)rce、dos、patched、unknown)tags、generate、show)タイムスタンプ付きCSVが自動的に書き込まれます。例:
ollama_scan_20260107_180002.csv
フィールド:
ip、port、version、vuln、tags、generate、show、modelsナビゲーターを使用して、1つのCSVまたはスキャナー出力のディレクトリ全体から結果をフィルタリング、ソート、エクスポートできます(ホスト/ポートで重複排除、モデルはマージされます)。
python3 ollamaNavigator.py --scan-csv results/scanner --require-gen-ok --vuln rce --model llama
--scan-csv は単一のCSVファイルまたはスキャナー出力のディレクトリを受け付けます。params(デフォルト)、ip、version から選択。--interactive を使用すると、メニュー駆動のフィルターエディターとエクスポートが可能です。--json-output または --csv-output でエクスポートします。発見されたインスタンスに接続し、レスポンスをストリーミング:
python3 ollamaConnector.py --host http://127.0.0.1:11434 --model llama3
--model を省略すると、CLIは /api/tags を取得し、サーバーが公開しているすべてのモデルを番号付きで表示し、選択させます。各プロンプトは、サーバーが終了するか Ctrl+C を押すまで、トークンをシアンでストリーミングします。exit / quit で終了します。
また、スキャナーCSVの行を指定して、ホストとモデルを再入力する手間を省くこともできます:
python3 ollamaConnector.py --scan-csv scan_20260107_141056.csv --scan-row 3
--scan-row は 1ベース です(ヘッダー行の次の行が 1)。省略した場合、コネクターはCSVを読み込み、すべてのホスト(IP/ポート、脆弱性状態、最初のモデル)を表示し、インデックスを選択させ、次に発見されたモデルをリストアップしてチャットするモデルを選択させます。モデル選択プロンプトで 0 を選択すると、新しい /api/tags 取得にスキップするため、CSVが古いまたは空の場合でも元のコネクターの動作が維持されます。
ollamaScraper.py はシンプルなヘルパーで、.shodan_api トークンファイルを保持し、国(またはグローバル)を指定させ、いくつかの既製のShodan dork(またはカスタムクエリ)から選択させ、中断するかユーザー定義のホスト上限に達するまでShodanページを巡回します。すべてのIPは results/scraper/targets.txt に書き込まれるため、スキャナーはすぐに出力を再利用できます。必要に応じて --output-dir で別のディレクトリを指定できます。
また、オプションの会社/組織フィルターを提供し、dorkに org:"Company" を追加します。また、自分が所有するシステム、または明示的なテスト許可を得たシステムのみを対象とするよう警告を表示します。
--skip-scrape、--skip-scan、--skip-connect:パイプラインの一部をスキップして再開--targets:共有ターゲットファイルの選択--ports、--scan-concurrency、--scan-timeout:スキャナーステップの調整--scan-output-prefix、--scan-output-dir:スキャナーCSV出力の制御--scan-gen-ok-only、--scan-vuln-only、--scan-show-unknown:スキャナーフィルター--scan-csv:スキャンをスキップする場合に既存のスキャナーCSVを再利用--connector-row:コネクター起動時に行を自動選択ナビゲーターはモデル名から 7B、13b、500m などのパラメータサイズを抽出します。ホストごとの最大サイズがテーブルに表示され、ソート/フィルタリング(--min-params / --max-params)に使用されます。
OllamaHoundは防御的および許可された攻撃的セキュリティのために構築されています:
7h30th3r0n3
スキャナー大規模非同期探索、バージョンフィンガープリンティング、CVE分類、モデルプロービング。
|
コネクター発見されたOllamaインスタンスと対話するためのリッチUI対話型CLIクライアント。
|
スクレイパーShodanを利用したターゲット収集ツールで、対話的に
|
ナビゲータースキャナーCSVの検索/フィルタリングヘルパー。エクスポートと対話型メニューを備えています。
|
オーケストレータースクレイパー→スキャナー→コネクターをチェーンし、各出力を次のモジュールに引き継ぎます。
|
結果出力は |
/api/generate が HTTP 200 を返すホストが上位に表示--gen-ok-only:/api/generate が動作するホストのみ保持--vuln-only:RCE/DoSと分類されたホストのみ保持--show-unknown:バージョンが不明/解析不能なホストを含める| モジュール | 出力 | デフォルトの場所 |
|---|
| スクレイパー | ターゲットリスト | results/scraper/targets.txt |
| スキャナー | タイムスタンプ付きCSV | results/scanner/<prefix>_YYYYMMDD_HHMMSS.csv |
| ナビゲーター | オプションのJSON/CSVエクスポート | navigator_results.json / navigator_results.csv |
| オーケストレーター | ターゲット+スキャナーCSV | results/orchestrator/targets.txt + results/scanner/ |