用于发现暴露的Ollama服务器、识别版本和验证模型访问权限的模块化工具包。
OllamaHound 是一个模块化、面向红队的工具包,用于 发现公开暴露的Ollama服务器、识别版本、分类CVE暴露、验证是否能够 进行文本生成,以及(可选)启用交互式CLI会话进行受控测试。
@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@%.-+-:#@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@+--=%@@@@@@@@-.@@@+ #@@@@@@@@@@@@@@@@@ @@@@@@@@@@@= %%+.=@@@%###-.@@@@= %@@@@@@@@@@@@@@@@ @@@@@@@@@@@-.@@@@..--====-.=@@@@.-@@@@@@@@@@@@@@@@ @@@@@@@@@@@# +#+-:*%@@@@@@@@@@@@- +@@@@@@@@@@@@@@@ @@*@@@@@#*+=:::.-*%@@@@@@@@@@@@@@%::%@@@@@@@@@@@@@ @+:-@@*----=***+==-=#@@@@@@@@@@@@@@::@@@@@@@@@@@@@ @*+#@=-==+=%@@@@%#=+:*%%%@@@@#++%@@+ %@@@@@@@@@@@@ +:=@#.+-@#=#@%+++%@:* =++==*@- *@@-.@@@@@@@@@@@@@ %=+@+--*@@*=##+++%#.+::=@#%:+@%@@@@%.=@@@@@@@@@@@@ @@@@#.+-@@%=*@@@@@+.* =-:*@-=@@@@@@@* %@@@@@@@@@@@ @@@@@+:==#*=%@@@@*-=.:--+*-=@@@@@@@@+ %@@@@@@@@@@@ @@@@@@#=----+*++=--=**++*#%@@@@@@@@% =@@@@@@@@@@@@ @@@@@@@@%*-:---.+*%@@@@@@@@@@@@@@@@+-:+@@@@@@@@@@@ @@@@@@@@@@# ==:.%@@@@@@@@@@@@@@@@@@@@%.-@@@@@@@@@@ @@@@@@@@@@#.@@:.#@@@@@@@@@@@@@@#@@@@@@% *@@@@@@@@@ @@@@@@@@@*::--::=%@@@@@@@@@@@@::@@@@@@@ =@@@@@@@@@ @@@@@@@@-.#@@@@@-.@@@@@@@@@@#.-@@@@@@@@*.-@@@@@@@@ @@@@@@@@.-@@@@@%::@@@@@@@@%=.+@@@@@@@@@@%.-@@@@@@@ @@@@@@@@#::++=::+@@@@@@@%=:=%@@@@@%%@@@@@+ @@@@@@@ @@@@@@@@@@=.:: #@@@@@@@=.+@@@@@@%=:*@@@@@= @@@@@@@ @@@@@@@@@@@@%-.%@@@@@@# *@@@@@#-:+@@@@@@% +@@@@@@@ @@@@@@@@@@@@@.=@@@@@@@@=:===---*@@@@@@@@@.=@@@@@@@ @@@@@@@@@@@@@=.%@@@@@@@@#-##%@@@@@@@@@@@@.-@@@@@@@ @@@@@@@@@@@@@@= -%@@@@@@# #@@@@@@@@@@@@@# #@@@@@@@ @@@@@@@@@@@@@@@ .:=*%%@%#..*@@@@@@@@@@@+.+@@@@@@@@ @@@@@@@@@@@@@@@.=@*==- -=*. --==+*#**=:-#@@@@@@@@@ @@@@@@@@@@@@@@@:-@@@@# #@@+ %%##*..++#%@@@@@@@@@@@ @@@@@@@@@@@@@@@::@@@@-.@@@% *@@@@-:@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@*.=++::%@@@@::%@%+ *@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@%***%@@@@@@%=---=%@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@---OllamaHound---@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@---By 7h30th3r0n3---@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!!! 警告 !!!
⚠️ 法律与道德声明
本项目仅用于 授权的安全评估(内部网络、限定范围的测试、实验室环境)。
仅可在您拥有或已获得 明确书面许可 的系统上使用。
使用本软件即表示您同意对自己的行为承担全部责任。
作者及贡献者按 “现状” 提供本软件,并 不承担任何责任
对于因误用、损害或法律后果而引起的任何问题。
扫描器大规模异步发现、版本指纹识别、CVE分类、模型探测。
|
连接器丰富的UI交互式CLI客户端,用于与发现的Ollama实例通信。
|
采集器基于Shodan的目标收割工具,交互式构建
|
导航器扫描CSV的搜索/过滤辅助工具,支持导出和交互式菜单。
|
编排器将采集器 → 扫描器 → 连接器串联,并将每个输出传递给下一个。
|
结果输出存储在 |
/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/tags 枚举模型POST /api/generate 测试生成/api/generate 返回 HTTP 200 的主机自动排在前面--gen-ok-only:仅保留 /api/generate 可用的主机--vuln-only:仅保留分类为RCE/DoS的主机--show-unknown:包含版本未知/无法解析的主机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 + 仅漏洞
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