unicrons/yatt

GitHub: unicrons/yatt

yatt 是一款域名仿冒变体生成与注册状态检测工具,通过多种排列技术和 DNS 解析帮助企业发现已注册的相似域名。

Stars: 2 | Forks: 0

# 又一个 Typosquatting 工具 (`yatt`) [![ci](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)](https://github.com/unicrons/yatt/actions/workflows/ci.yml) [![最新发布](https://img.shields.io/github/v/release/unicrons/yatt)](https://github.com/unicrons/yatt/releases/latest) [![许可证:Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) `yatt` 生成域名的相似变体,通过 DNS 解析它们,并报告哪些已被 注册。 运行两次 typosquatting 扫描,大多数工具都会给你同样一大堆结果。`yatt` 具有记忆功能:它会保留历史记录,向你展示自上次以来*发生的变化*,并且绝不会重复询问 你已经排查过的域名。 ![yatt scan demo](https://static.pigsec.cn/wp-content/uploads/repos/cas/4f/4ff91c9cb86d834b4fde625e7718c92d24c6576af8d063c9bfccd0d34f6739be.gif) ## 功能 - 涵盖每种 squatting 机制的排列技术 —— 拼写错误、键盘滑按、同形异义词、 bitsquatting、点插入、TLD 交换([docs/techniques.md](docs/techniques.md) 包含完整列表)。 - 通过在可注册域名上的 NS rcode 读取注册状态,因此 parked、仅 MX 和 仅委派注册都不会被遗漏。 - 每个区域的通配符(catch-all)检测,包括从不返回 NXDOMAIN 的注册局。 - 在 QPS 上限内的并发解析。 - 带有跨扫描 diff 的扫描历史:`new`/`changed`/`unchanged`/`gone`。 - 持久化的排查结论,将在未来的所有扫描中保留。 - 状态存储在 SQLite 中 —— 默认为本地文件,或保存在 S3 中并跨机器共享。 - 扫描配置、配置文件、表格/JSON/NDJSON 输出,以及 AbuseIPDB/Shodan 扩展链接。 ## 安装说明 从 [最新发布版本](https://github.com/unicrons/yatt/releases/latest) 下载适合你平台的预编译二进制文件, 解压它,并将 `yatt` 放入你的 `PATH`: ``` tar -xzf yatt_Linux_arm64.tar.gz # or unzip yatt_Darwin_arm64.zip on macOS ./yatt --version ``` 如果拥有 Go 工具链,你可以选择从源码安装: ``` go install github.com/unicrons/yatt@latest ``` 或者直接构建检出的代码(devbox shell 提供了 go、goose、golangci-lint、sqlite 和 gotestsum): ``` devbox shell go build -o yatt . ./yatt --version ``` ## 快速开始 ``` yatt scan example.com ``` ## 使用方法 ``` yatt scan permute, resolve, record, and report yatt history list the recorded scans of a seed yatt diff compare the last two scans, without resolving yatt triage record a verdict on a candidate yatt triage list list the verdicts recorded for a seed yatt state push|pull|unlock manage a database kept in S3 Main global flags: -o, --output string output format: table|json|ndjson (default "table") --db string scan database path, or s3://bucket/key to keep it in S3 --resolver string upstream DNS resolver as host[:port] (default: the system resolver) --qps float cap DNS queries per second across all workers (0 for unlimited) Main scan flags: --profile string scan profile: quick|full, or one defined in --config --technique strings techniques to run (default: all) --show-unregistered also report candidates nobody has registered --status strings report only candidates with these triage statuses --exclude-status strings report every candidate except those with these statuses ``` 完整的命令和 flag 参考请见 [docs/cli.md](docs/cli.md)。 ## 示例 ``` yatt scan example.com yatt scan example.com --show-unregistered yatt scan example.com --technique omission,homoglyph --limit 50 yatt scan example.com --output json | jq '.[] | select(.has_mx)' yatt scan example.com --resolver 1.1.1.1 --timeout 5s yatt scan example.com --profile full ``` 记录一次的排查结论将过滤未来的所有扫描: ![yatt triage demo](https://static.pigsec.cn/wp-content/uploads/repos/cas/3a/3adc6baca89111a836725a3418dcfe77770bba12c2945e8b4d21906cdf38eef2.gif) ## 文档 | 文档 | 涵盖内容 | | --- | --- | | [docs/cli.md](docs/cli.md) | 所有命令和 flag,输出流,IDN/punycode 处理 | | [docs/techniques.md](docs/techniques.md) | 十种排列技术及其建模内容 | | [docs/registration.md](docs/registration.md) | “已注册”如何判定;从不返回 NXDOMAIN 的区域 | | [docs/reporting.md](docs/reporting.md) | 报告排序,种子行,扩展链接 | | [docs/state.md](docs/state.md) | 扫描历史,diff,排查结论,以及 S3 中的远程状态 | | [docs/configuration.md](docs/configuration.md) | 扫描配置和配置文件 | | [docs/development.md](docs/development.md) | 开发命令,包结构,重新生成 demo gifs | ## 开发 请参阅 [docs/development.md](docs/development.md):devbox 脚本(`build`、`test`、`lint`),包 结构,以及如何重新生成 demo gifs。 ## 许可证 基于 [Apache License 2.0](LICENSE) 授权。 由 [unicrons.cloud](https://unicrons.cloud) 用 ❤️ 制作 🦄
标签:DNS解析, EVTX分析, Linux安全, 域名安全, 域名抢注检测, 威胁情报, 开发者工具, 开源项目, 日志审计, 漏洞探索