santhsecurity/gossan

GitHub: santhsecurity/gossan

一款 Rust 编写的快速模块化攻击面发现工具,将子域名、端口、技术栈、隐藏路径、云资产、DNS 安全等侦察能力整合为一体,并通过跨模块关联构建完整的攻击面图谱。

Stars: 0 | Forks: 1

# gossan [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0e304ed13a185051.svg)](https://github.com/santhsecurity/gossan/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/gossan)](https://crates.io/crates/gossan) **快速、模块化的攻击面发现工具。** 子域名、端口、技术栈、隐藏路径、云资产、DNS 安全、源站 IP:一站式扫描。 ## 安装 ``` cargo install gossan ``` ## 使用方法 ``` # Full recon 扫描 gossan scan example.com # 特定模块 gossan scan example.com --modules subdomain,portscan,hidden # 自定义端口 gossan scan example.com --ports 80,443,8080,8443 # JSON 输出 gossan scan example.com --format json -o results.json # 探测 SYN engine 会选择哪个 packet I/O backend gossan probe-engine # 自适应 (AIMD) rate control — 在 TX-drop bursts 时减半,缓慢恢复 gossan scan example.com --adaptive-rate # 其他格式:SARIF (security-tool 集成)、nmap-xml (-oX)、 # masscan-grep (-oG)、graphml (Gephi/Cytoscape/yEd)。 gossan scan example.com --format sarif -o report.sarif gossan scan example.com --format nmap-xml -o scan.xml ``` ## 输出格式 | `--format` | 别名 | 用途 | |------------------|---------------------|----------| | `text` | (默认) | 人类可读终端输出 | | `json` | — | 脚本 / 流水线 (顶层 `Finding` 数组) | | `jsonl` | `ndjson` | 流式处理 / 日志传输器 | | `sarif` | — | GitHub 代码扫描, sarif-multitool | | `markdown` | `md` | Issue 正文 / Wiki | | `nmap-xml` | `nmap`, `xml`, `-oX`| 可直接用于 nmap 消费者 | | `masscan-grep` | `grepable`, `-oG` | 可直接用于 masscan 消费者 | | `graphml` | `graph-ml` | Gephi / Cytoscape / yEd | ## 环境变量 | 变量 | 效果 | |--------------------------------------------|--------| | `GOSSAN_LOG_JSON=1` | 结构化 JSON 日志 (Loki/CloudWatch/Datadog) | | `GOSSAN_ALLOW_UNSAFE_PATHS=1` | 覆盖 `--out` 的路径穿越防护 | | `GITHUB_TOKEN` | scm GitHub 组织枚举 | | `GITLAB_TOKEN` | scm GitLab 组枚举 | | `CENSYS_API_ID` + `CENSYS_API_SECRET` | 源站 Censys 集成 | | `SHODAN_API_KEY` | 源站 favicon-hash 交叉引用 | | `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY` | 云资产内部向外发现 | ## 截图 ``` +-------------------------------------------------------------+ | gossan scan example.com | +-------------------------------------------------------------+ | [✓] Subdomain Enum : 124 found | | [✓] Port Scanning : 12 open ports | | [✓] Tech Fingerprinting : React, Nginx, PHP | | [✓] Cloud Assets : 1 S3 bucket found (public!) | | | | Findings: | | - [HIGH] S3 Bucket 'example-backup' is publicly readable. | | - [MED] Exposed .git directory at dev.example.com/.git/ | | - [LOW] Missing DMARC record on mail.example.com | +-------------------------------------------------------------+ ``` ## 架构 Gossan 是一个由独立、可复用 crate 组成的工作空间。每个 crate 都是一个独立的扫描器,可以单独使用,也可以通过 `gossan` CLI 组合使用。 | Crate | 描述 | |-------|-------------| | `gossan-core` | 核心类型、traits、配置、速率限制 | | `gossan-subdomain` | 子域名枚举 (CT 日志, Wayback, DNS 暴力破解) | | `gossan-portscan` | TCP 端口扫描,支持 TLS 检查和 Banner 抓取 | | `gossan-techstack` | 技术栈指纹识别 (Headers, Cookies, HTML 模式) | | `gossan-dns` | DNS 安全审计 (SPF, DMARC, DKIM, CAA, 区域传送) | | `gossan-hidden` | 隐藏端点发现 (目录爆破, sitemap, robots.txt, swagger) | | `gossan-cloud` | 云资产发现 (S3, GCS, Azure blobs) | | `gossan-js` | JavaScript 分析 (secrets, API 端点, WASM) | | `gossan-origin` | 源站 IP 发现 (绕过 CDN/WAF) | | `gossan-crawl` | 带有表单/参数提取的认证 Web 爬虫 | | `gossan-correlation` | 跨模块发现结果关联 | | `gossan-checkpoint` | 扫描检查点与恢复 | | `gossan-engine` | 无状态 masscan 级别的 SYN 引擎 (netforge, 需要 root 权限) | | `gossan-headless` | 无头浏览器集成 | | `gossan-horizontal` | 水平发现 (ASN/BGP 映射 + 所有权) | | `gossan-graph` | 基于图的攻击面管理 (ASM) | | `gossan-scm` | 源代码控制映射 (GitHub/GitLab 发现) | | `gossan-intel` | 全球被动情报 (本地批量数据集索引) | | `gossan-fleet` | 分布式 Master/Worker 编排 | ## 保守活动映射器 当设置了 `--conservative` 时,Gossan 会运行一个 **零误报水平资产验证器**,在将候选域名/IP 输入到下游的 Warpscan (静态规则扫描) 和 Sear (URL 触发) 之前,确认它们是否真正属于同一组织或活动。 **每个候选对象都会使用多个独立信号与种子进行成对测试:** | 信号 | 权重 | 描述 | |--------|--------|-------------| | TLS 证书序列号 | 高 | 相同的叶子证书 = 相同的部署 | | SSH 主机密钥 | 高 | 相同的密钥交换指纹 | | 共享的 GA/GTM 跟踪器 | 高 | 相同的分析媒体资源 = 相同的运营者 | | WHOIS 注册人匹配 | 中 | 所有权级别的关联 | | Favicon 哈希 (mmh3) | 中 | 兼容 Shodan 的 favicon 指纹 | | 内容哈希 | 中 | 完全相同的页面内容 | | 错误页面结构 | 中 | 404 页面的 DOM 结构哈希 (不受内容轮换影响) | | HTTP/2 SETTINGS 指纹 | 低 | 服务器 SETTINGS 帧 = 部署配置 | | Header 排序 | 低 | 响应头序列 = 中间件栈 | | JARM TLS 指纹 | 低 | TLS 栈指纹 (来自 CDN 的高环境噪声) | | DNS 解析 IP | 低 | 共享主机使得此信号单独使用时噪声很大 | **评分规则:** - 已知的 CDN/共享主机值 (Cloudflare JARM、默认 favicon、AWS ELB IP) 会被**列入黑名单**,权重为零。 - 候选对象必须超过**多信号阈值**:任何单一的弱信号都不能产生匹配。 - 每个发出的匹配项都带有一个**置信度级别** (高/中/低),以便下游消费者可以决定自己的风险承受能力。 ``` # 用于安全 downstream feeding 的 Conservative mode gossan scan example.com --conservative # 搭配使用: warpscan scan ./campaign-assets --rules-dir ./rules # Static rule matching sear analyze "https://candidate.evil.tk" --depth full # URL detonation ``` ## 传奇般的准确性:差异化信号情报 Gossan 是唯一一款专为在**“镜像迷宫”**中生存而设计的扫描器:在这种环境中,成千上万的子域名或路径别名指向同一个根资产。 - **响应基线化**:每个新主机都会使用随机化的“垃圾”路径进行探测,以建立结构基线 (DOM 树、模糊哈希和 Header 签名)。 - **结构增量引擎**:随后的发现将与该基线进行比较。结构相似度大于 98% 的资产会被标记为 **镜像资产**,并自动**限流**以节省带宽。 - **信号狙击**:打破模式的异常值 (例如,隐藏在大量镜像中的单个 `openapi.json`) 将被提升为 **信号资产**,以进行深度分析。 - **响应炸弹防护**:强制切断超过安全 `Content-Length` 阈值 (5MB HTML / 10MB JS) 的 TCP 连接,以防止 OOM 攻击。 ## 作为库使用 ``` use gossan_portscan::PortScanner; use gossan_core::{Config, Scanner, ScanInput, Target}; let scanner = PortScanner; let config = Config::default(); let input = ScanInput { targets: vec![/* ... */] }; let output = scanner.run(input, &config).await?; ``` ## 许可证 MIT: [Santh Security](https://santh.dev)
标签:ASM, DNS安全, Gephi, GitHub, LIDS, Linux安全, masscan, Rust, SARIF, 云资产发现, 反取证, 可视化界面, 威胁发现, 威胁情报平台, 子域名枚举, 安全工具集成, 安全评估, 实时处理, 密码管理, 开源安全工具, 技术栈指纹识别, 数据统计, 源站IP探测, 端口扫描, 系统安全, 网络安全, 网络流量审计, 网络资产测绘, 逆向工程平台, 通知系统, 隐私保护, 隐藏端点发现