kankburhan/takeit
GitHub: kankburhan/takeit
一款基于 Go 开发的子域名接管漏洞检测工具,通过 CNAME 链分析和 HTTP 指纹匹配快速识别悬挂 DNS 记录和潜在的域名劫持风险。
Stars: 1 | Forks: 1
# TakeIt:极速子域名接管检测工具
[](https://goreportcard.com/report/github.com/kankburhan/takeit)
[](https://github.com/kankburhan/takeit/blob/main/LICENSE)
[](https://makeapullrequest.com)
**TakeIt** 是一款面向安全专业人员和漏洞赏金猎人的快速、精准子域名接管检测工具。该工具由 [can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz) 指纹数据库驱动,通过 CNAME 链分析、NXDOMAIN 检测、HTTP 指纹识别和通配符 DNS 侦测,识别配置错误的子域名。
## 功能特性
- **CNAME 链解析** — 跟踪完整的 CNAME 链(最多 10 跳),并根据指纹检查每一跳
- **精准 NXDOMAIN 检测** — 使用 `net.LookupHost` 进行可靠的悬挂记录检测
- **HTTP 指纹匹配** — 不区分大小写的正文和状态码匹配,并具有限制读取大小的功能
- **通配符 DNS 检测** — 标记通配符 DNS 父域以减少误报
- **服务识别** — 精确显示哪个服务(GitHub Pages, S3, Azure 等)存在漏洞
- **JSON 输出** — JSON 行输出格式,便于与 `jq` 及其他管道工具集成
- **自定义 DNS 解析器** — 可使用任何 DNS 解析器(Cloudflare, Google, 内部 DNS)
- **多种输入方式** — 支持标准输入、文件 (`-l`) 或命令行参数,且可组合使用
- **域名去重** — 自动跳过重复的域名
- **重试机制** — 针对瞬态 DNS/HTTP 故障自动重试
- **逼真的 User-Agent** — 使用类似浏览器的 UA 以避免被 WAF 拦截
- **并发扫描** — 可配置线程数以实现高速扫描
## 安装说明
### 预编译二进制文件
从 [Releases](https://github.com/kankburhan/takeit/releases) 页面下载最新版本。
### 通过 Go 安装
```
go install github.com/kankburhan/takeit@latest
```
### 从源码构建
```
git clone https://github.com/kankburhan/takeit.git
cd takeit
go build -o takeit
```
## 使用方法
```
_____ _ _____ _
|_ _| | | |_ _| |
| | __ _| | _____ | | | |_
| |/ _' | |/ / _ \| | | __|
| | (_| | < __/| |_| |_
\_/\__,_|_|\_\___\___/ \__|
by kankburhan
Usage:
takeit [flags]
cat domains.txt | takeit [flags]
Flags:
-l string File containing list of domains
-t int Number of threads (default 10)
-timeout int HTTP timeout in seconds (default 10)
-r string Custom DNS resolver (e.g., 1.1.1.1 or 1.1.1.1:53)
-o string Output file for results
-f string Filter output (e.g., potential)
-json Output results as JSON lines
-silent Show only vulnerable results
-update Update takeit version
-update-db Update fingerprint database
-v Show version
-h Show help
```
## 示例
### 基础扫描
```
# Scan 单个域名
takeit example.com
# 从 stdin Scan
cat subdomains.txt | takeit
# 从文件 Scan
takeit -l subdomains.txt
```
### 高级用法
```
# 20 线程,保存结果到文件
takeit -l subdomains.txt -t 20 -o results.txt
# JSON 输出,仅显示易受攻击,pipe 到 jq
takeit -l subs.txt -json -silent | jq 'select(.vulnerable)'
# 自定义 DNS resolver (Cloudflare)
takeit -l subs.txt -r 1.1.1.1
# Silent 模式 — clean output,仅显示 takeovers
cat subs.txt | takeit -silent
# 合并多个输入
takeit -l list1.txt sub.example.com
# 针对慢速目标的 Custom timeout
takeit -l subs.txt -timeout 20
# 完整 pipeline: subfinder -> takeit -> notify
subfinder -d example.com -silent | takeit -json -silent | notify -silent
```
### 更新指纹库
```
# 更新 fingerprint 数据库到最新
takeit -update-db
# 更新工具本身
takeit -update
```
## JSON 输出格式
使用 `-json` 时,每一行都是一个 JSON 对象:
```
{
"domain": "blog.example.com",
"cname": "example.github.io",
"cname_chain": ["example.github.io"],
"vulnerable": true,
"service": "GitHub Pages",
"fingerprint": "There isn't a GitHub Pages site here.",
"http_status": 404
}
```
字段说明:
| 字段 | 描述 |
|-------|-------------|
| `domain` | 正在检查的子域名 |
| `cname` | 最终解析的 CNAME |
| `cname_chain` | 完整的 CNAME 解析链 |
| `vulnerable` | 是否可能发生子域名接管 |
| `service` | 匹配的服务名称(当存在漏洞时) |
| `fingerprint` | 匹配的指纹字符串 |
| `is_wildcard` | 父域是否具有通配符 DNS |
| `http_status` | 目标返回的 HTTP 状态码 |
| `error` | 如果检查失败,显示错误信息 |
## 工作原理
1. **CNAME 链解析** — 解析目标域名的完整 CNAME 链(最多 10 跳)
2. **模式匹配** — 根据已知服务指纹(不区分大小写)检查链中的每一个 CNAME
3. **NXDOMAIN 验证** — 对于需要的服务,通过 `net.LookupHost` 验证 CNAME 目标是否返回 NXDOMAIN
4. **HTTP 指纹识别** — 获取 HTTP 响应(优先 HTTPS,其次 HTTP)并匹配状态码和正文内容
5. **通配符检测** — 测试父域是否存在通配符 DNS,以标记潜在的误报
6. **结果报告** — 报告存在漏洞的域名,并附带匹配的服务名称和置信度指标
## 欢迎贡献!
TakeIt 是开源项目,我们欢迎各种贡献。无论是修复错误、添加功能还是改进文档 —— 欢迎向我们发送 PR!
## 许可证
TakeIt 基于 **MIT License** 授权。详情请参阅 [LICENSE](LICENSE) 文件。
## 免责声明
TakeIt 仅供**教育目的**和**授权安全测试**使用。严禁未经授权使用本工具。在扫描任何域名之前,请务必确保您已获得许可。
标签:Bug Bounty, C2日志可视化, CNAME解析, DNS安全, DNS检测, GitHub, Go语言, Homebrew安装, HTTP指纹, 可自定义解析器, 域名劫持, 子域名安全, 子域名接管, 悬空记录, 指纹识别, 日志审计, 漏洞靶场, 程序破解, 网络安全, 配置审计, 防御检测, 隐私保护