
Массовая разведка, определение версий, тестирование CVE и фреймворк для прямой эксплуатации открытых экземпляров Ollama.
Модульный инструментарий для обнаружения открытых серверов Ollama, определения версий и проверки доступа к моделям.
OllamaHound — это модульный инструментарий, ориентированный на Red Team, для обнаружения публично доступных серверов Ollama, определения версий, классификации уязвимостей (CVE), проверки возможности генерации текста и (опционально) интерактивного CLI-сеанса для контролируемого тестирования.
@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@%.-+-:#@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@+--=%@@@@@@@@-.@@@+ #@@@@@@@@@@@@@@@@@ @@@@@@@@@@@= %%+.=@@@%###-.@@@@= %@@@@@@@@@@@@@@@@ @@@@@@@@@@@-.@@@@..--====-.=@@@@.-@@@@@@@@@@@@@@@@ @@@@@@@@@@@# +#+-:*%@@@@@@@@@@@@- +@@@@@@@@@@@@@@@ @@*@@@@@#*+=:::.-*%@@@@@@@@@@@@@@%::%@@@@@@@@@@@@@ @+:-@@*----=***+==-=#@@@@@@@@@@@@@@::@@@@@@@@@@@@@ @*+#@=-==+=%@@@@%#=+:*%%%@@@@#++%@@+ %@@@@@@@@@@@@ +:=@#.+-@#=#@%+++%@:* =++==*@- *@@-.@@@@@@@@@@@@@ %=+@+--*@@*=##+++%#.+::=@#%:+@%@@@@%.=@@@@@@@@@@@@ @@@@#.+-@@%=*@@@@@+.* =-:*@-=@@@@@@@* %@@@@@@@@@@@ @@@@@+:==#*=%@@@@*-=.:--+*-=@@@@@@@@+ %@@@@@@@@@@@ @@@@@@#=----+*++=--=**++*#%@@@@@@@@% =@@@@@@@@@@@@ @@@@@@@@%*-:---.+*%@@@@@@@@@@@@@@@@+-:+@@@@@@@@@@@ @@@@@@@@@@# ==:.%@@@@@@@@@@@@@@@@@@@@%.-@@@@@@@@@@ @@@@@@@@@@#.@@:.#@@@@@@@@@@@@@@#@@@@@@% *@@@@@@@@@ @@@@@@@@@*::--::=%@@@@@@@@@@@@::@@@@@@@ =@@@@@@@@@ @@@@@@@@-.#@@@@@-.@@@@@@@@@@#.-@@@@@@@@*.-@@@@@@@@ @@@@@@@@.-@@@@@%::@@@@@@@@%=.+@@@@@@@@@@%.-@@@@@@@ @@@@@@@@#::++=::+@@@@@@@%=:=%@@@@@%%@@@@@+ @@@@@@@ @@@@@@@@@@=.:: #@@@@@@@=.+@@@@@@%=:*@@@@@= @@@@@@@ @@@@@@@@@@@@%-.%@@@@@@# *@@@@@#-:+@@@@@@% +@@@@@@@ @@@@@@@@@@@@@.=@@@@@@@@=:===---*@@@@@@@@@.=@@@@@@@ @@@@@@@@@@@@@=.%@@@@@@@@#-##%@@@@@@@@@@@@.-@@@@@@@ @@@@@@@@@@@@@@= -%@@@@@@# #@@@@@@@@@@@@@# #@@@@@@@ @@@@@@@@@@@@@@@ .:=*%%@%#..*@@@@@@@@@@@+.+@@@@@@@@ @@@@@@@@@@@@@@@.=@*==- -=*. --==+*#**=:-#@@@@@@@@@ @@@@@@@@@@@@@@@:-@@@@# #@@+ %%##*..++#%@@@@@@@@@@@ @@@@@@@@@@@@@@@::@@@@-.@@@% *@@@@-:@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@*.=++::%@@@@::%@%+ *@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@%***%@@@@@@%=---=%@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@---OllamaHound---@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@---By 7h30th3r0n3---@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!!! ПРЕДУПРЕЖДЕНИЕ !!!
⚠️ Правовое и этическое уведомление
Этот проект предназначен для авторизованных оценок безопасности (внутренние сети, согласованные задания, лабораторные среды).
Используйте только в системах, которыми вы владеете или на которые у вас есть явное письменное разрешение.
Используя это программное обеспечение, вы соглашаетесь, что несёте единоличную ответственность за свои действия.
Автор(ы) и авторы вклада предоставляют это программное обеспечение «как есть» и отказываются от любой ответственности
за любое неправомерное использование, ущерб или юридические последствия, возникающие в результате его использования.
/api/tags и /api/generateresults/scraper/targets.txtresults/scanner/<префикс>_YYYYMMDD_HHMMSS.csvВы можете выполнять эти шаги по отдельности или запустить оркестратор для автоматической цепочки первых трёх этапов.
asyncio + aiohttp (тысячи одновременных сокетов)rich<префикс>_YYYYMMDD_HHMMSS.csvGET /api/version → запасной GET /version → запасной заголовок Server< 0.1.47<= 0.3.14GET /api/tagsaiohttprichpackagingrequestsshodanУстановка зависимостей:
python3 -m pip install -U aiohttp rich packaging requests shodan
Использование Docker:
docker build -t ollamahound .
docker run -it --rm ollamahound <скрипты ollamahound>
Вариант 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 обязателен при пропуске этапа сканирования).Остальная часть этого раздела по-прежнему актуальна, если вы хотите запускать каждый модуль вручную.
Скрапер:
# Стандартный интерактивный сбор (выбор dork'а Shodan)
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 + только уязвимые
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 может содержать по одной записи на строку:
192.0.2.1010.0.0.0/24ollama.example.orgЕсли вы сгенерировали список с помощью скрапера, укажите сканеру путь results/scraper/targets.txt (или любой другой путь, выбранный с помощью --output-dir).
ollamaScraper.py может создать для вас results/scraper/targets.txt, выполнив запрос к Shodan:
python3 ollamaScraper.py
Скрипт кэширует ваш API-ключ в .shodan_api, позволяет выбрать dork (глобальный или с привязкой к стране) и добавляет каждый найденный хост в 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 == 200scan.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Используйте навигатор для фильтрации, сортировки и экспорта результатов из одного 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, запрашивает страну (или глобальный вариант), позволяет выбрать один из нескольких готовых dork'ов Shodan (или пользовательский запрос), а затем обходит страницы Shodan до тех пор, пока вы не прервёте выполнение или не достигнете заданного лимита хостов. Каждый IP записывается в results/scraper/targets.txt, что позволяет сканеру сразу же использовать эти данные. При желании укажите другой каталог через --output-dir.
Скрипт также предоставляет опциональный фильтр компании/организации, который добавляет org:"Company" к dork'у, и выводит предупреждение о том, что тестировать следует только те системы, которыми вы владеете или на которые имеете явное разрешение.
--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 сканера при пропуске этапа сканированияНавигатор извлекает размеры параметров из названий моделей, например 7B, 13b или 500m. Наибольший размер на хост отображается в таблице и используется для сортировки/фильтрации (--min-params / --max-params).
OllamaHound создан для защитных и авторизованных тестов безопасности:
7h30th3r0n3
Сканер (Scanner)Высокомасштабируемое асинхронное обнаружение, определение версии, классификация CVE, проверка моделей.
|
Коннектор (Connector)Интерактивный CLI-клиент с богатым интерфейсом для взаимодействия с обнаруженным экземпляром Ollama.
|
Скрапер (Scraper)Сборщик целей на основе Shodan, формирующий
|
Навигатор (Navigator)Инструмент поиска/фильтрации для CSV-файлов сканера с возможностью экспорта и интерактивным меню.
|
Оркестратор (Orchestrator)Соединяет этапы: скрапер → сканер → коннектор, передавая выходные данные каждого следующему.
|
Результаты (Results)Выходные данные сохраняются в каталоге |
POST /api/generate/api/generate возвращает HTTP 200, помещаются в начало--gen-ok-only — оставляет только хосты с рабочей /api/generate--vuln-only — оставляет только хосты с классификацией RCE/DoS--show-unknown — включает хосты с неизвестными/нераспознаваемыми версиями--connector-row — для автоматического выбора строки при запуске коннектора| Модуль | Выходной файл | Расположение по умолчанию |
|---|
| Скрапер | Список целей | results/scraper/targets.txt |
| Сканер | CSV с временной меткой | results/scanner/<префикс>_YYYYMMDD_HHMMSS.csv |
| Навигатор | Опциональный экспорт JSON/CSV | navigator_results.json / navigator_results.csv |
| Оркестратор | Цели + CSV сканера | results/orchestrator/targets.txt + results/scanner/ |