一个用Python编写的模块化资产发现框架,用于自动化重复的手动工作。
Cygor 是一个模块化的资产发现框架,将扫描、解析和服务枚举整合到一个工作流中。它用自动化流程取代了各种单独工具的拼凑,无缝处理发现、丰富和针对性枚举——减少人工开销,让您专注于结果而非工具管理。
Cygor 的 Web UI 将原始扫描数据的混乱整理成一个统一的视觉指挥中心。无需再翻阅无尽的 XML、JSON 或纯文本,结果会被自动解析、丰富并显示在一个专门为快速分类和决策而构建的空间中。
由 FastAPI 和 Bootstrap 5 驱动,仪表板让您可以轻松:
Web UI 不仅用于展示——它还关乎效率和清晰度。通过将所有收集的数据整合到一个交互式工作空间中,它减少了解析文件或协调输出所花的时间,让测试人员能够专注于重要的事情:理解环境并采取行动。
我创建的许多工具、技术和手法都受到《再生侠》宇宙的启发。如果你从未读过《再生侠》漫画,没关系,我会分享一些为什么选择这个角色作为工具名称的信息。
Cygor 这个名字源自 Cy-Gor,是《再生侠》宇宙中的一个悲剧反英雄。他原本是 Michael Konieczny——一名政府特工,也是 Al Simmons 的密友——在 Simmons 被杀后试图揭露腐败。然而,他被抓获并被迫加入 Project Sim,即 Dr. Frederick Willheim 的猿类实验,在一次侵入性赛博改造中,一只大猩猩的身体与 Konieczny 的思维融合在一起。结果就是被称为 Cy-Gor 的野兽——Cybernetic Gorilla(赛博大猩猩)的缩写。
逃离囚禁后,Cy-Gor 陷入了暴力的狂暴之中,甚至在困惑和愤怒中冲破了政府数据中心。尽管多次被追捕和重新捕获,他最终反抗了试图控制他的系统——移除追踪植入物,打破束缚,开辟自己的道路,徘徊在机器、野兽和人类之间。
webenum 模块并行编排(仅运行已安装的工具)。支持多种安装 Cygor 的方法:pip、pipx、uv 和 docker。
某些依赖项(例如 gssapi for Kerberos/WinRM)需要构建 C 扩展,因此请先安装构建工具链和 Kerberos 头文件:
# Debian/Ubuntu/Kali:
sudo apt install -y build-essential python3-dev libkrb5-dev
# 稳定版本:
pipx install cygor
# 从源码安装:
git clone https://github.com/tjnull/cygor
cd cygor
pipx install .
Cygor 的 Docker 设置包括应用程序和 PostgreSQL 数据库服务。如果 PostgreSQL 不可用,系统会自动回退到 SQLite。
生产环境(推荐):
# 选项 1:使用包装脚本(自动处理端口冲突)
./docker-compose-up.sh up --build
# 选项 2:直接使用 docker compose(使用默认端口)
docker compose up --build
开发环境(挂载源码):
# 选项 1:使用包装脚本(自动处理端口冲突)
./docker-compose-up.sh dev up --build
# 选项 2:直接使用 docker compose(使用默认端口)
docker compose -f docker-compose-dev.yaml up --build
Docker Compose 设置包括:
results/:扫描输出、credrecon 结果和数据库文件cygor-config/:本地配置卷(自动创建)默认情况下:
5432 上暴露(如果可用)5434 上暴露(如果可用)5432(Docker 网络)如果端口被占用,您可以:
使用包装脚本(推荐 - 自动检测可用端口):
./docker-compose-up.sh up --build
手动设置端口:
export POSTGRES_HOST_PORT=5435
docker compose up --build
移除端口映射(如果您不需要外部 PostgreSQL 访问):
注释掉 docker-compose.yaml 中的 ports: 部分
要手动构建 Docker 镜像:
docker build -t cygor .
运行单个容器(不带 PostgreSQL 服务):
docker run --rm -v ./results:/opt/cygor/results \
-e CYGOR_RESULTS_DIR=/opt/cygor/results \
cygor web --host 0.0.0.0 --port 8080 --load-dir /opt/cygor/results
CYGOR_DB_URL)Docker 的关键环境变量:
数据与工作空间:
CYGOR_RESULTS_DIR:结果目录(默认为 /opt/cygor/results)CYGOR_WORKSPACE:工作空间目录(默认为 /opt/cygor/results)CYGOR_RESULTS_PATH:结果卷的宿主机路径(默认为 ./results)CYGOR_CONFIG_PATH:认证配置卷的宿主机路径(默认为 ./cygor-config)数据库:
CYGOR_DB_URL:数据库连接字符串(由 docker-compose 自动设置)CYGOR_DB_USER:PostgreSQL 数据库用户(默认为 cygor)CYGOR_DB_PASSWORD:PostgreSQL 数据库密码POSTGRES_HOST_PORT:PostgreSQL 宿主机端口映射(用于端口冲突解决)调试与详细输出:
CYGOR_DEBUG:启用调试模式(设置为 1 启用)CYGOR_VERBOSE:详细级别(0=正常,1=详细,2=调试)详细指南位于 cygor/wiki/ 目录下——包括安装、11 个内置枚举模块、插件开发、工作空间管理等。GitHub 将该目录渲染为可导航的文档站点(从 cygor/wiki/README.md 开始)。运行 cygor web start 后,同一页面也会在 Web UI 的 /docs 提供。
使用顶层 Cygor 命令访问可用工具。每个子命令都有自己的帮助页面(cygor <command> --help),其中记录了标志和操作。
tjnull@kali:~$ cygor
Usage:
cygor <command> [args]
Commands:
banner Cygor 工具横幅(警告:很大!)
scan 自动扫描器,用于发现主机和服务。(扫描需要 root/sudo 权限)。
parse 分析 NMAP 扫描文件(nmap, gnmap, xml)并按常见服务提取分类的主机列表。
enum 加载位于 cygor 模块目录中的枚举模块。
workspace 管理工作空间(init/set-default/show)。
web 控制/启动 Cygor Web UI(start/stop/status)或直接运行。
Environment:
CYGOR_WORKSPACE 仅本次运行覆盖默认工作空间。
CYGOR_RESULTS_DIR 如果设置,由 web 和模块使用。(从默认工作空间自动设置。)
您需要 sudo(root)权限才能运行 cygor 中的扫描器:
仅使用 Masscan 运行主机发现:
cygor scan -i eth0 -f scope.txt --discover masscan
使用 Masscan 和 Naabu 运行主机发现,然后对合并结果运行 Nmap:
cygor scan -i eth0 -f scope.txt --discover masscan naabu --nmap-source merge
仅发现(无 Nmap),将结果保存在 results/discovery/:
cygor scan -i eth0 -f scope.txt --discover masscan naabu --discover-only
重用已保存的发现结果进行 Nmap 常用端口扫描:
cygor scan --use-discovery results/discovery/merged-discovered.txt --scan-type top-ports
对发现的主机使用自定义端口运行 Nmap:
cygor scan --use-discovery results/discovery/masscan-discovered.txt --ports 80,443,8443
在完整范围内使用 10 个并行进程运行 Nmap(最大 100):
\cygor scan -i eth0 -f scope.txt --discover naabu --processes 10 --scan-type fullscan:
运行 Cygor 发现主机并使用提供的 IP 地址或 CDR 列表使用 Nmap 扫描:
cygor scan -i eth0 --ips 10.10.10.1 10.10.10.5 10.10.20.0/24 --discover naabu --processes 10 --scan-type fullscan
从扫描中排除特定子网或主机:
cygor scan -i eth0 -f scope.txt --exclusions exclusions.txt --discover masscan
解析 Nmap 结果目录并打印主机列表:
cygor parse results/nmap
解析单个 XML 并将主机列表写入 results/parsed-hostlists:
cygor parse results/nmap/scan1.xml -o results
递归解析 .xml/.nmap/.gnmap 文件并写入输出:
cygor parse /path/to/scans --out-dir results
Cygor 提供了日益增长的协议特定枚举模块集。每个模块封装了经过验证的工具,将输出解析为类型化的行("解析而非转储"),并将结果存入清单(数据库 + Web UI),在那里它们可以按主机进行搜索和关联。高信号观察结果还会自动输入到下一步行动引擎中,该引擎在 Web UI 中显示优先级的发现和即用型后续命令。
| 模块 | 服务 | 功能 |
|---|---|---|
lockon | HTTP/S、RDP、VNC、X11 | 跨协议捕获屏幕截图,实现快速视觉分类。 |
webenum | HTTP/S | 并行多工具内容发现(ffuf、feroxbuster、gobuster、dirsearch),支持跨工具去重/关联和可选的屏幕截图。 |
smbexplorer | SMB (445) | 枚举共享、权限和可访问文件;NTLM/Kerberos/传递哈希。 |
nfsexplorer | NFS (2049) | 枚举导出、版本和文件;UID/GID 欺骗和 no_root_squash 检查。 |
rpcexplorer | MSRPC (445) | 空/认证会话:服务器信息、域 SID、用户、组、完整密码策略和 RID 循环。 |
ldapexplorer | LDAP/AD (389/636) | rootDSE、匿名绑定/搜索和认证域转储。 |
snmpexplorer | SNMP (161) | v1/v2c 社区暴力破解、设备系统信息和 MIB 扫描(用户/进程/软件/端口/接口)。 |
dnsexplorer | DNS (53) | 版本、开放解析器检测和 AXFR 区域传输。 |
ftpexplorer | FTP (21) | 横幅、匿名登录、目录列表、FEAT、匿名写入测试。 |
smtpexplorer | SMTP (25/587) | 横幅、STARTTLS、AUTH 机制、VRFY 用户枚举、开放中继测试。 |
dbprobe | 数据库 | 探测 Redis/MySQL/PostgreSQL/MongoDB/Elasticsearch/CouchDB 的未授权访问和版本。 |
列出所有可用模块:
cygor enum --list
对 http 主机列表运行 lockon:
cygor enum lockon web -f results/parsed-hostlists/http/http-hostlist.txt -o results/enum/lockon
运行 Web 内容发现(多工具,带屏幕截图):
cygor enum webenum -f results/parsed-hostlists/http-https/http-https-hostlist.txt --screenshot
对 NFS 目标运行 nfsexplorer(仅导出):
cygor enum nfsexplorer -i results/parsed-hostlists/nfs/nfs-hostlist.txt --info
运行 smbexplorer 并列出文件: