unicrons/yatt
GitHub: unicrons/yatt
yatt 是一款域名仿冒变体生成与注册状态检测工具,通过多种排列技术和 DNS 解析帮助企业发现已注册的相似域名。
Stars: 2 | Forks: 0
# 又一个 Typosquatting 工具 (`yatt`)
[](https://github.com/unicrons/yatt/actions/workflows/ci.yml)
[](https://github.com/unicrons/yatt/releases/latest)
[](LICENSE)
`yatt` 生成域名的相似变体,通过 DNS 解析它们,并报告哪些已被
注册。
运行两次 typosquatting 扫描,大多数工具都会给你同样一大堆结果。`yatt`
具有记忆功能:它会保留历史记录,向你展示自上次以来*发生的变化*,并且绝不会重复询问
你已经排查过的域名。

## 功能
- 涵盖每种 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
```
记录一次的排查结论将过滤未来的所有扫描:

## 文档
| 文档 | 涵盖内容 |
| --- | --- |
| [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安全, 域名安全, 域名抢注检测, 威胁情报, 开发者工具, 开源项目, 日志审计, 漏洞探索