
Massenaufklärung, Versions-Fingerprinting, CVE-Tester und Live-Exploitation-Framework für offene Ollama-Instanzen.
Modulares Toolkit zum Auffinden exponierter Ollama-Server, Fingerprinting von Versionen und Überprüfung des Modellzugriffs.
OllamaHound ist ein modulares, auf RedTeams ausgerichtetes Toolkit zum Auffinden öffentlich exponierter Ollama-Server, Fingerprinting von Versionen, Klassifizierung von CVE-Expositionen, Überprüfung, ob Textgenerierung möglich ist, und (optional) zur Bereitstellung einer interaktiven CLI-Sitzung für kontrollierte Tests.
@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@%.-+-:#@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@+--=%@@@@@@@@-.@@@+ #@@@@@@@@@@@@@@@@@ @@@@@@@@@@@= %%+.=@@@%###-.@@@@= %@@@@@@@@@@@@@@@@ @@@@@@@@@@@-.@@@@..--====-.=@@@@.-@@@@@@@@@@@@@@@@ @@@@@@@@@@@# +#+-:*%@@@@@@@@@@@@- +@@@@@@@@@@@@@@@ @@*@@@@@#*+=:::.-*%@@@@@@@@@@@@@@%::%@@@@@@@@@@@@@ @+:-@@*----=***+==-=#@@@@@@@@@@@@@@::@@@@@@@@@@@@@ @*+#@=-==+=%@@@@%#=+:*%%%@@@@#++%@@+ %@@@@@@@@@@@@ +:=@#.+-@#=#@%+++%@:* =++==*@- *@@-.@@@@@@@@@@@@@ %=+@+--*@@*=##+++%#.+::=@#%:+@%@@@@%.=@@@@@@@@@@@@ @@@@#.+-@@%=*@@@@@+.* =-:*@-=@@@@@@@* %@@@@@@@@@@@ @@@@@+:==#*=%@@@@*-=.:--+*-=@@@@@@@@+ %@@@@@@@@@@@ @@@@@@#=----+*++=--=**++*#%@@@@@@@@% =@@@@@@@@@@@@ @@@@@@@@%*-:---.+*%@@@@@@@@@@@@@@@@+-:+@@@@@@@@@@@ @@@@@@@@@@# ==:.%@@@@@@@@@@@@@@@@@@@@%.-@@@@@@@@@@ @@@@@@@@@@#.@@:.#@@@@@@@@@@@@@@#@@@@@@% *@@@@@@@@@ @@@@@@@@@*::--::=%@@@@@@@@@@@@::@@@@@@@ =@@@@@@@@@ @@@@@@@@-.#@@@@@-.@@@@@@@@@@#.-@@@@@@@@*.-@@@@@@@@ @@@@@@@@.-@@@@@%::@@@@@@@@%=.+@@@@@@@@@@%.-@@@@@@@ @@@@@@@@#::++=::+@@@@@@@%=:=%@@@@@%%@@@@@+ @@@@@@@ @@@@@@@@@@=.:: #@@@@@@@=.+@@@@@@%=:*@@@@@= @@@@@@@ @@@@@@@@@@@@%-.%@@@@@@# *@@@@@#-:+@@@@@@% +@@@@@@@ @@@@@@@@@@@@@.=@@@@@@@@=:===---*@@@@@@@@@.=@@@@@@@ @@@@@@@@@@@@@=.%@@@@@@@@#-##%@@@@@@@@@@@@.-@@@@@@@ @@@@@@@@@@@@@@= -%@@@@@@# #@@@@@@@@@@@@@# #@@@@@@@ @@@@@@@@@@@@@@@ .:=*%%@%#..*@@@@@@@@@@@+.+@@@@@@@@ @@@@@@@@@@@@@@@.=@*==- -=*. --==+*#**=:-#@@@@@@@@@ @@@@@@@@@@@@@@@:-@@@@# #@@+ %%##*..++#%@@@@@@@@@@@ @@@@@@@@@@@@@@@::@@@@-.@@@% *@@@@-:@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@*.=++::%@@@@::%@%+ *@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@%***%@@@@@@%=---=%@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@---OllamaHound---@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@---By 7h30th3r0n3---@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!!! WARNUNG !!!
⚠️ Rechtlicher & ethischer Hinweis
Dieses Projekt ist für autorisierte Sicherheitsbewertungen (interne Netzwerke, festgelegte Einsätze, Laborumgebungen) bestimmt.
Verwenden Sie es nur auf Systemen, die Ihnen gehören oder für die Sie ausdrückliche schriftliche Genehmigung haben.
Mit der Nutzung dieser Software erklären Sie sich damit einverstanden, dass Sie allein für Ihre Handlungen verantwortlich sind.
Der/die Autor(en) und Mitwirkenden stellen diese Software "wie besehen" zur Verfügung und lehnen jegliche Haftung
für Missbrauch, Schäden oder rechtliche Konsequenzen ab, die sich aus ihrer Nutzung ergeben.
/api/tags und /api/generateresults/scraper/targets.txtresults/scanner/<prefix>_YYYYMMDD_HHMMSS.csvDies kann schrittweise oder mit dem Orchestrator erfolgen, der die ersten drei Phasen verkettet.
asyncio + aiohttp (tausende parallele Sockets)rich<prefix>_YYYYMMDD_HHMMSS.csvGET /api/version → Fallback GET /version → Fallback Server-Header< 0.1.47<= 0.3.14GET /api/tagsaiohttprichpackagingrequestsshodanAbhängigkeiten installieren:
python3 -m pip install -U aiohttp rich packaging requests shodan
Docker verwenden:
docker build -t ollamahound .
docker run -it --rm ollamahound <ollamahound scripts>
Option A (am schnellsten): Scrapen → Scannen → Verbinden
python3 ollamaScraper.py
python3 ollamaScanner.py results/scraper/targets.txt --gen-ok-only
python3 ollamaConnector.py --scan-csv results/scanner/ollama_scan_*.csv
Option B (ein Befehl): Orchestrator-Pipeline
python3 ollamaOrchestrator.py --scan-gen-ok-only
ollamaOrchestrator.py führt nacheinander den Scraper, Scanner und Connector aus, sodass Sie mit einem einzigen Befehl von der Shodan-Ernte zu einer interaktiven CLI gelangen. Der Scraper und Connector bleiben interaktiv, aber der Orchestrator verbindet ihre Ausgaben für Sie.
python3 ollamaOrchestrator.py --scan-gen-ok-only --scan-vuln-only
results/orchestrator/targets.txt geschrieben (änderbar mit --targets).results/scanner/ mit dem Präfix von --scan-output-prefix (Standard orchestrator_scan).--connector-row, um beim Starten des Connectors automatisch eine Zeile auszuwählen, oder wählen Sie wie gewohnt interaktiv.--skip-scrape, --skip-scan und --skip-connect ermöglichen das Fortsetzen ab einem Zwischenschritt unter Verwendung vorhandener Ausgaben (--scan-csv ist erforderlich, wenn die Scan-Phase übersprungen wird).Der Rest dieses Abschnitts gilt weiterhin, wenn Sie jedes Modul manuell ausführen möchten.
Scraper:
# Basic interactive scrape (Shodan dork picker)
python3 ollamaScraper.py
# Custom output folder + filename
python3 ollamaScraper.py --output-dir results/my-scrape -o targets_acme.txt
Scanner:
# Scan targets.txt (default 11434, 500 concurrency, 8s timeout)
python3 ollamaScanner.py results/scraper/targets.txt
# Only hosts where /api/generate returns 200
python3 ollamaScanner.py results/scraper/targets.txt --gen-ok-only
# Multi-port scan (space and comma mix)
python3 ollamaScanner.py results/scraper/targets.txt -p 11434 8080,13871
# Aggressive sweep (short timeout + high concurrency)
python3 ollamaScanner.py results/scraper/targets.txt --timeout 3 -c 800
# Keep only vulnerable hosts (RCE/DoS) and unknown versions
python3 ollamaScanner.py results/scraper/targets.txt --vuln-only --show-unknown
# Custom CSV prefix + output dir
python3 ollamaScanner.py results/scraper/targets.txt -o scan_acme.csv --output-dir results/scanner_acme
Navigator:
# Filter a directory of scanner CSVs
python3 ollamaNavigator.py --scan-csv results/scanner --require-gen-ok --vuln rce
# Filter a single CSV, restrict to llama models, size >= 7B
python3 ollamaNavigator.py --scan-csv results/scanner/scan_20260107_180002.csv \
--model llama --min-params 7
# Exclude models + search keywords
python3 ollamaNavigator.py --scan-csv results/scanner --exclude-model qwen --search france
# Export filtered rows
python3 ollamaNavigator.py --scan-csv results/scanner --vuln dos \
--json-output results/navigator/dos.json --csv-output results/navigator/dos.csv
# Interactive filter menu
python3 ollamaNavigator.py --scan-csv results/scanner --interactive
Connector:
# Connect directly
python3 ollamaConnector.py --host http://127.0.0.1:11434 --model llama3
# Use a scanner CSV row (1-based index)
python3 ollamaConnector.py --scan-csv results/scanner/scan_20260107_180002.csv --scan-row 3
Orchestrator:
# Full pipeline
python3 ollamaOrchestrator.py
# Full pipeline + only gen-ok + vuln-only
python3 ollamaOrchestrator.py --scan-gen-ok-only --scan-vuln-only
# Reuse existing targets and CSV, only run connector
python3 ollamaOrchestrator.py --skip-scrape --skip-scan --scan-csv results/scanner/scan_20260107_180002.csv
# Skip connector (scrape + scan only)
python3 ollamaOrchestrator.py --skip-connect
targets.txt kann pro Zeile enthalten:
192.0.2.1010.0.0.0/24ollama.example.orgWenn Sie die Liste mit dem Scraper erstellen, geben Sie dem Scanner den Pfad results/scraper/targets.txt (oder den Pfad, den Sie mit --output-dir gewählt haben).
ollamaScraper.py kann results/scraper/targets.txt für Sie erstellen, indem es Shodan abfragt:
python3 ollamaScraper.py
Das Skript speichert Ihren API-Schlüssel zwischen, lässt Sie einen Dork (global oder länderspezifisch) auswählen und hängt jeden Treffer an results/scraper/targets.txt an, während grundlegende Informationen ausgegeben werden. Optional können Sie einen org:"Company"-Filter hinzufügen, um die Ergebnisse einzugrenzen. Strg+C oder das Erreichen des maximalen IP-Limits beendet den Vorgang. Verwenden Sie --output-dir/-o, um den Ordner oder Dateinamen zu ändern, und übergeben Sie diesen Pfad dann an den Scanner.
Nur Hosts anzeigen, bei denen /api/generate HTTP 200 zurückgibt:
python3 ollamaScanner.py targets.txt --gen-ok-only
Aggressiverer Scan (kurzer Timeout + hohe Parallelität):
python3 ollamaScanner.py targets.txt --gen-ok-only --timeout 3 -c 800
Vollständiger Scan-Befehl:
11434 und 8080 scannen/api/generate == 200 behaltenscan.csvpython3 ollamaScanner.py targets.txt -p 11434,8080 --timeout 2 -c 1200 \
--gen-ok-only --vuln-only --show-unknown -o scan.csv
Scanner-CSVs landen jetzt unter results/scanner/. Verwenden Sie --output-dir, wenn Sie die Dateien woanders ablegen möchten (der Ordner wird automatisch erstellt).
Der Scanner gibt eine rich-Tabelle aus mit:
? wenn unbekannt)rce, dos, patched, unknown)tags, generate, show)Eine CSV-Datei mit Zeitstempel wird automatisch geschrieben, z.B.:
ollama_scan_20260107_180002.csv
Felder:
ip, port, version, vuln, tags, generate, show, modelsVerwenden Sie den Navigator, um Ergebnisse aus einer einzelnen CSV-Datei oder einem gesamten Ordner mit Scanner-Ausgaben (dedupliziert nach Host/Port, Modelle zusammengeführt) zu filtern, zu sortieren und zu exportieren.
python3 ollamaNavigator.py --scan-csv results/scanner --require-gen-ok --vuln rce --model llama
--scan-csv akzeptiert eine einzelne CSV-Datei oder einen Ordner mit Scanner-Ausgaben.params (Standard), ip oder version.--interactive für einen menügesteuerten Filter-Editor + Exporte.--json-output oder --csv-output.Stellen Sie eine Verbindung zu einer gefundenen Instanz her und streamen Sie Antworten:
python3 ollamaConnector.py --host http://127.0.0.1:11434 --model llama3
Wenn Sie --model weglassen, ruft die CLI /api/tags ab, listet alle vom Server bereitgestellten Modelle auf und lässt Sie eines per Nummer auswählen. Jeder Prompt streamt Token in Cyan, bis der Server fertig ist oder Sie Strg+C drücken. Geben Sie exit/quit ein, um zu beenden.
Sie können den Connector auch auf eine Zeile in einer Scanner-CSV verweisen, damit Sie Host und Modell nicht erneut eingeben müssen:
python3 ollamaConnector.py --scan-csv scan_20260107_141056.csv --scan-row 3
--scan-row ist 1-basiert (die erste Zeile nach der Kopfzeile ist 1). Wenn Sie es weglassen, lädt der Connector die CSV, zeigt Ihnen jeden Host (IP/Port, Verwundbarkeitsstatus, erstes Modell), lässt Sie den Index auswählen und listet dann die gefundenen Modelle auf, damit Sie auswählen können, mit welchem Sie chatten möchten. Die Auswahl von 0 während der Modellaufforderung überspringt zu einem erneuten /api/tags-Abruf, sodass das ursprüngliche Connector-Verhalten auch dann noch funktioniert, wenn die CSV veraltet oder leer ist.
ollamaScraper.py ist ein einfacher Helfer, der eine .shodan_api-Token-Datei pflegt, nach einem Land (oder global) fragt, Sie aus mehreren vorgefertigten Shodan-Dorks (oder einer benutzerdefinierten Abfrage) auswählen lässt und dann Shodan-Seiten durchläuft, bis Sie unterbrechen oder ein benutzerdefiniertes Host-Limit erreicht ist. Jede IP wird nach results/scraper/targets.txt geschrieben, sodass der Scanner die Ausgabe sofort wiederverwenden kann. Geben Sie bei Bedarf ein anderes Verzeichnis über --output-dir an.
Es bietet auch einen optionalen Firmen-/Organisationsfilter, der org:"Company" an den Dork anhängt, und gibt eine Warnung aus, nur Systeme anzugreifen, die Ihnen gehören oder für die Sie eine ausdrückliche Genehmigung haben.
--skip-scrape, --skip-scan, --skip-connect zum Fortsetzen von Teilen der Pipeline--targets zur Auswahl der gemeinsamen Zieldatei--ports, --scan-concurrency, --scan-timeout zum Anpassen des Scanner-Schritts--scan-output-prefix, --scan-output-dir zur Steuerung der Scanner-CSV-Ausgabe--scan-gen-ok-only, --scan-vuln-only, --scan-show-unknown für Scanner-Filter--scan-csv zur Wiederverwendung einer vorhandenen Scanner-CSV beim Überspringen des ScansDer Navigator extrahiert Parametergrößen aus Modellnamen wie 7B, 13b oder 500m. Die höchste Größe pro Host wird in der Tabelle angezeigt und zum Sortieren/Filtern verwendet (--min-params/--max-params).
OllamaHound wurde für defensive und autorisierte offensive Sicherheit entwickelt:
7h30th3r0n3
ScannerHochskalierbare asynchrone Erkennung, Version-Fingerprinting, CVE-Klassifizierung, Modellüberprüfung.
|
ConnectorRich-UI interaktiver CLI-Client zur Kommunikation mit einer gefundenen Ollama-Instanz.
|
ScraperShodan-gestützter Ziel-Sammler, der interaktiv
|
NavigatorSuch-/Filter-Helfer für Scanner-CSVs mit Exporten und interaktivem Menü.
|
OrchestratorVerkettet Scraper → Scanner → Connector und übergibt jeweils die Ausgabe an die nächste Komponente.
|
ErgebnisseAusgaben liegen unter |
POST /api/generate/api/generate HTTP 200 zurückgibt, erscheinen zuerst--gen-ok-only behält nur Hosts mit funktionierender /api/generate--vuln-only behält nur Hosts, die als RCE/DoS klassifiziert sind--show-unknown schließt Hosts mit unbekannten/nicht analysierbaren Versionen ein--connector-row zur automatischen Auswahl einer Zeile beim Starten des Connectors| Modul | Ausgabe | Standardpfad |
|---|
| Scraper | Zielliste | results/scraper/targets.txt |
| Scanner | Zeitgestempelte CSV | results/scanner/<prefix>_YYYYMMDD_HHMMSS.csv |
| Navigator | Optionale JSON/CSV-Exporte | navigator_results.json / navigator_results.csv |
| Orchestrator | Ziele + Scanner-CSV | results/orchestrator/targets.txt + results/scanner/ |