tjnull/cygor

GitHub: tjnull/cygor

Cygor是一款自动化资产发现和枚举框架,用于安全测试和红蓝对抗。

Stars: 66 | Forks: 3

# Cygor
[![cygor_banner](https://github.com/tjnull/cygor/blob/main/images/cygor-banner.jpg)](https://github.com/tjnull/cygor)
## 概述 Cygor 是一个模块化资产发现框架,将扫描、解析和服务枚举整合到一个工作流程中。它用自动化的过程取代了单独工具的拼凑,无缝地处理发现、丰富和目标枚举,从而减少手动工作量,让您专注于结果而不是工具管理。 Cygor 的 Web UI 将原始扫描数据的混乱组织成一个单一的视觉指挥中心。您无需翻阅无尽的 XML、JSON 或纯文本,结果会自动解析、丰富并在一个专为快速分类和决策制定而构建的空间中显示。 由 FastAPI 和 Bootstrap 5 驱动,仪表板使以下操作变得简单: - 一眼看到全局——计数器和摘要揭示服务分布、状态码趋势和操作系统指纹。 - 立即深入——只需单击即可从高级指标切换到每个主机的详细信息、端口和模块结果。 - 可视化暴露——Cygor 的一个名为 Lockon 的模块会捕捉活动网络服务的截图,并将输出直接嵌入,无需离开仪表板即可提供即时上下文。 - 在分类过程中保持组织——标记已审查和未审查的发现,过滤和排序结果,并专注于最高价值的靶点。 Web UI 不仅用于展示,它关乎效率和清晰度。通过将所有收集到的数据集中到一个交互式工作空间中,它缩短了解析文件或协调输出的时间,让测试人员专注于最重要的事情:理解环境并采取行动。 ## 为什么叫 Cygor? 我创建的许多工具、技术和技巧都受到了 Spawn 宇宙的启发。如果您从未读过 Spawn 漫画,没关系,我将分享一些关于为什么选择这个角色作为这个工具名称的信息。 Cygor 这个名字来源于 Cy-Gor,Spawn 宇宙中的一个悲剧性反英雄。曾是迈克尔·科尼琴齐——一个政府特工,也是阿尔·辛蒙斯的密友——他试图在辛蒙斯被谋杀后揭露腐败。然而,他被捕获并被强迫进入 Project Sim,这是弗雷德里克·威廉海姆博士的类人猿实验,在那里一只大猩猩的身体与科尼琴齐的头脑通过侵入式网络技术融合在一起。结果是被称为 Cy-Gor 的野兽——网络大猩猩的缩写。 在逃脱监禁后,Cy-Gor 发起了暴力狂潮,甚至在混乱和愤怒中撕毁了政府数据中心。尽管多次被追捕和重新捕获,但他最终反抗了试图控制他的系统——移除跟踪植入物,打破束缚,为自己开辟一条道路,在机器、野兽和人类之间挣扎。 - 参考:https://www.spawnworld.com/encyclopedia/cygor.htm ## 谁应该使用 Cygor? - 红队和安全测试人员 - 自动化发现,简化枚举,并在大型行动中保持上下文。 - 蓝队和系统管理员 - 发现未知资产,验证清单,并发现扩大攻击面的配置错误。 - 安全研究人员 - 快速解析和分析扫描数据,以识别趋势、被忽视的服务和识别有模式的异常。 - 学生和教师 - 在结构化、可重复的环境中学习现实世界的侦察和枚举技术。 # Cygor 使用工具: - Nmap - 可靠的服务和版本检测;XML 输出被解析为结构化的主机/服务数据。 - Masscan - 高速端口扫描,用于快速发现大型网络。 - Naabu - 简单、快速的 TCP 端口扫描器,与 Masscan/Nmap 工作流程互补。 - Playwright - 浏览器自动化引擎,由 Lockon 利用以捕获网页截图。 - Web 内容发现 - ffuf、feroxbuster、gobuster 和 dirsearch 由 `webenum` 模块并行编排(仅运行已安装的工具)。 - 服务枚举工具 - rpcclient/polenum (MSRPC)、ldapsearch/ldapdomaindump (LDAP)、snmpwalk/onesixtyone (SNMP)、dig/dnsrecon (DNS) 和 showmount (NFS) 为探索模块提供支持;每个模块在其工具不存在时都会干净地跳过。 - Python 库 - (requests、colorama、SQLModel 等) 用于解析、丰富、输出格式化和数据库处理。 # 安装 Cygor 支持几种安装 Cygor 的方法:pip、pipx、uv 和 docker。 ## 使用 pipx 安装 一些依赖项(例如 `gssapi` 用于 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 . ``` ## 使用 Docker 部署 Cygor 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 服务 Docker Compose 设置包括: - **PostgreSQL 服务**:自动配置的数据库(如果不可用,则回退到 SQLite) - **Cygor 服务**:Web UI 和应用程序 - **自动端口检测**:检查端口冲突,并在需要时使用备用端口 - **持久卷**: - `results/`:扫描输出、credrecon 结果和数据库文件 - `cygor-config/`:本地配置卷(自动创建) ### 端口配置 默认情况下: - **生产**:PostgreSQL 在主机端口 `5432` 上公开(如果可用) - **开发**:PostgreSQL 在主机端口 `5434` 上公开(如果可用) - **内部**:容器始终在内部使用端口 `5432`(Docker 网络) 如果端口被占用,您可以: 1. **使用包装脚本**(推荐 - 自动检测可用端口): ./docker-compose-up.sh up --build 2. **手动设置端口**: export POSTGRES_HOST_PORT=5435 docker compose up --build 3. **删除端口映射**(如果您不需要外部 PostgreSQL 访问): 在 `docker-compose.yaml` 中注释掉 `ports:` 部分 ### 手动 Docker 构建 要手动构建 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 ``` ### 数据库行为 - **使用 Docker Compose**:使用 PostgreSQL 服务(自动配置) - **如果 PostgreSQL 失败**:自动回退到 SQLite - **独立容器**:默认使用 SQLite(除非设置了 `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/](cygor/wiki/) — 安装、11 个内置枚举模块、插件开发、工作空间管理等等。GitHub 将该目录渲染为可导航的文档站点(从 [cygor/wiki/README.md](cygor/wiki/README.md) 开始)。相同的页面也由 Web UI 在 `/docs` 上提供,一旦您运行 `cygor web start`。 # 运行 Cygor 使用 Cygor 的顶级命令来访问可用的工具。每个子命令都有自己的帮助屏幕(Cygor --help),其中记录了标志和操作。 ``` tjnull@kali:~$ cygor Usage: cygor [args] Commands: banner Cygor tool banner (Warning it is large!) scan Automated scanner to discover hosts and services. (Will require root/sudo privileges for scanning). parse Analyze a NMAP scan file (nmap, gnmap, xml) and extract categorized hostlists by common service. enum Loads enumeration modules that are located in the cygor modules directory. workspace Manage workspaces (init/set-default/show). web Control/launch the Cygor Web UI (start/stop/status) or run directly. Environment: CYGOR_WORKSPACE Override default workspace just for this run. CYGOR_RESULTS_DIR Used by web and modules if set. (Auto-set from default workspace.) ``` ## Cygor 扫描器 您需要 `sudo`(`root`)权限才能在 `cygor` 中运行扫描器: ``` Run host discovery with Masscan only: cygor scan -i eth0 -f scope.txt --discover masscan Run host discovery with both Masscan and Naabu, then Nmap on merged results: cygor scan -i eth0 -f scope.txt --discover masscan naabu --nmap-source merge Discovery only (no Nmap), save results in results/discovery/: cygor scan -i eth0 -f scope.txt --discover masscan naabu --discover-only Reuse saved discovery results for Nmap top ports scan: cygor scan --use-discovery results/discovery/merged-discovered.txt --scan-type top-ports Run Nmap with custom ports on discovered hosts: cygor scan --use-discovery results/discovery/masscan-discovered.txt --ports 80,443,8443 Run Nmap with 10 parallel processes on full scope (Max is 100): \cygor scan -i eth0 -f scope.txt --discover naabu --processes 10 --scan-type fullscan: Run Cygor to discover hosts and scan them with Nmap with a provided lists of IP Addresses or CDRs: 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 Exclude specific subnets or hosts from scan: cygor scan -i eth0 -f scope.txt --exclusions exclusions.txt --discover masscan ``` ## Cygor 解析器: ``` Parse a directory of Nmap results and print hostlists: cygor parse results/nmap Parse a single XML and write hostlists to results/parsed-hostlists: cygor parse results/nmap/scan1.xml -o results Recursively parse .xml/.nmap/.gnmap files and write outputs: cygor parse /path/to/scans --out-dir results ``` ## Cygor 枚举模块 Cygor 提供了一个不断增长的协议特定枚举模块集。每个模块都封装了经过验证的工具,将输出解析为类型化的行(“解析而不是转储”),并将结果放入库存(数据库 + Web UI)中,以便按主机进行搜索和关联。高信号观察结果也会自动输入到 **下一步引擎** 中,该引擎在 Web UI 中显示优先级较高的发现和可运行的后续命令。 | 模块 | 服务 | 它做什么 | |---|---|---| | `lockon` | HTTP/S、RDP、VNC、X11 | 在协议间捕获截图,以快速进行视觉分类。 | | `webenum` | HTTP/S | 并行多工具内容发现(ffuf、feroxbuster、gobuster、dirsearch),具有跨工具去重/关联和可选截图。 | | `smbexplorer` | SMB(445) | 枚举共享、权限和可访问文件;NTLM/Kerberos/pass-the-hash。 | | `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、认证机制、VRFY 用户枚举、开放中继测试。 | | `dbprobe` | 数据库 | 探测 Redis/MySQL/PostgreSQL/MongoDB/Elasticsearch/CouchDB 的未授权访问和版本。 | ``` List all available modules: cygor enum --list Run lockon against an http hostlist: cygor enum lockon web -f results/parsed-hostlists/http/http-hostlist.txt -o results/enum/lockon Run web content discovery (multi-tool, with screenshots): cygor enum webenum -f results/parsed-hostlists/http-https/http-https-hostlist.txt --screenshot Run nfsexplorer against NFS targets (exports only): cygor enum nfsexplorer -i results/parsed-hostlists/nfs/nfs-hostlist.txt --info Run smbexplorer and list files: cygor enum smbexplorer -i results/parsed-hostlists/smb/smb-hostlist.txt --list-files Enumerate MSRPC (null session) with password policy + RID cycling: cygor enum rpcexplorer -i results/parsed-hostlists/smb/smb-hostlist.txt --rid-cycle Probe databases for unauthenticated access (point at any DB service hostlist): cygor enum dbprobe -i results/parsed-hostlists/mysql/mysql-hostlist.txt ``` 运行 `cygor enum --help` 以获取每个模块的完整选项参考。 ## Cygor 插件 Cygor 是可扩展的——将 Python 文件放入 `~/.cygor/plugins/`,它就像任何内置模块一样出现在 `cygor enum --list`(和在 Web UI 中)。包装您自己的工具,跨团队分发内部扫描器,或为特定行动扩展 Cygor 而不进行分支。 ``` Scaffold a new plugin (writes ~/.cygor/plugins/my_scanner.py): cygor plugin create "My Scanner" Install a plugin from a local file or a git URL: cygor plugin install ./my_scanner.py cygor plugin install https://github.com/example/cygor-myscanner Validate, list, update, remove: cygor plugin validate ./my_scanner.py cygor plugin list cygor plugin update --all cygor plugin remove my_scanner Run an installed plugin (same as a built-in module): cygor enum my_scanner -t 10.10.10.5 ``` 三个参考插件位于 [docs/examples/modules/](docs/examples/modules/):一个最小示例、一个外部工具包装器和完整的注释模板。请参阅 **[插件开发指南](docs/plugins.md)** 了解完整的插件格式、选项/列/视图、依赖项处理、版本兼容性和可选的插件允许列表。 ## Cygor Web UI 收集数据后,您可以将数据加载到 Cygor 的 Web UI 中,将扫描结果转换为主机、服务和其他关键发现的清晰可视化。Cygor 将创建一个名为 cygor.db 的文件,其中包含将数据建模到 Cygor Web UI 所需的数据。 ### 启动 Web 服务器 ``` # 基本用法 - 在默认主机/端口(127.0.0.1:8000)启动 cygor web start # 在所有接口上启动,端口 8080 cygor web start -H 0.0.0.0 -p 8080 # 使用自定义结果目录启动 cygor web start --load-dir /path/to/results # 使用详细输出启动 cygor web start -vv # 使用所有选项启动 cygor web start -H 0.0.0.0 -p 8080 --load-dir ~/scan-results -vv ``` ### 命令行选项 运行 `cygor web start --help` 以获取完整的选项列表。 ### Web 服务器管理 ``` # 检查 Web 服务器是否正在运行 cygor web status # 停止正在运行的 Web 服务器 cygor web stop ``` ### 数据库选项 Cygor 会自动检测并使用 PostgreSQL(如果可用),否则回退到 SQLite: - **PostgreSQL**(推荐用于生产): - 如果 `psql` 可用,则自动检测 - 如果需要,则创建数据库和用户 - 连接字符串:`postgresql+psycopg_async://user:pass@host/db` - **SQLite**(默认回退): - 无需设置 - 数据库文件:结果目录中的 `cygor.db` - 适用于单用户部署 # 免责声明: Cygor 是一个安全研究和教育框架。它仅应在您有明确、书面授权的环境中使用——例如渗透测试行动、红队行动、课堂实验室或个人测试范围。 此软件不得用于未经授权的访问、入侵或破坏您不拥有或控制系统的系统。这样做可能违反您所在司法管辖区的法律和法规,并可能导致刑事起诉或民事诉讼。 通过下载、运行或修改 Cygor,您同意: - 您对其使用负全部责任。 - 您将限制其用于合法和道德的场景。 Cygor 的作者和贡献者不接受因滥用、损害或由此软件使用引起的后果的任何责任。
标签:AV绕过, Bootstrap, CTI, FastAPI, Python, SOC, Spawn Universe, TCP SYN 扫描, Web UI, 云存储安全, 决策支持, 安全测试, 攻击性安全, 效率提升, 无后门, 服务枚举, 本地模型, 模块化框架, 测试用例, 特征检测, 结果分析, 网络扫描, 请求拦截, 逆向工具