haccer/subjack

GitHub: haccer/subjack

一个用 Go 编写的高并发子域名接管安全审计工具。

Stars: 2035 | Forks: 352

# subjack [![Go 报告卡](https://goreportcard.com/badge/github.com/haccer/subjack)](https://goreportcard.com/report/github.com/haccer/subjack) [![GoDoc](https://godoc.org/github.com/haccer/subjack/subjack?status.svg)](http://godoc.org/github.com/haccer/subjack/subjack) [![GitHub 许可证](https://img.shields.io/github/license/haccer/subjack.svg)](https://github.com/haccer/subjack/blob/master/LICENSE)

subjack logo
Subdomain Takeover Tool

**Subjack 2.0 即将推出** Subjack 是一个用 Go 编写的子域名接管工具,旨在并发扫描子域名列表并识别可被劫持的域名。凭借 Go 的速度和效率,该工具在批量测试方面表现出色。请始终手动再次检查结果以排除误报。 Subjack 还会检查附加域名的子域名是否不存在(NXDOMAIN)且**可以注册**。再也无需使用 dig!这也具有跨平台兼容性。 **更新内容?(最后更新于 2018年9月17日)** - 自定义指纹支持 - 新服务(重新添加了 Zendesk && 添加了 Readme, Bitly 等) - 轻微的性能提升 ## 安装 需要 [Go](https://golang.org/dl/) `go get github.com/haccer/subjack` ## 如何使用: 示例: - `./subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl` 选项: - `-d test.com` 如果你想测试单个域名。 - `-w domains.txt` 是你的子域名列表。 - `-t` 是线程数(默认:10 个线程)。 - `-timeout` 是连接超时前等待的秒数(默认:10 秒)。 - `-o results.txt` 保存结果的位置。对于 JSON:`-o results.json` - `-ssl` 强制使用 HTTPS 请求,这可能会返回不同的结果集并提高准确性。 - `-a` 跳过 CNAME 检查并向每个 URL 发送请求。**(推荐)** - `-m` 标记存在无效记录但有效的 CNAME 条目。 - `-v` 详细模式。显示每个请求的更多信息。 - `-c` 配置文件的路径。 ## 实战应用 你可以使用 [scanio.sh](https://gist.github.com/haccer/3698ff6927fc00c8fe533fc977f850f8),这是一个概念验证(PoC)脚本,用于利用 Rapid7 的 Project Sonar 的结果批量定位易受攻击的子域名。该脚本解析并检索转储数据中所需的 CNAME 记录,生成一个庞大的子域名列表,以便用 subjack 检查它们是否容易受到恶意子域名接管攻击。当然,这不是获取大量测试数据的唯一方法。**请负责任地使用此工具 ;)** ## 将 subjack 添加到你的工作流 ``` package main import ( "fmt" "encoding/json" "io/ioutil" "strings" "github.com/haccer/subjack/subjack" ) func main() { var fingerprints []subjack.Fingerprints config, _ := ioutil.ReadFile("custom_fingerprints.json") json.Unmarshal(config, &fingerprints) subdomain := "dead.cody.su" /* Use subjack's advanced detection to identify if the subdomain is able to be taken over. */ service := subjack.Identify(subdomain, false, false, 10, fingerprints) if service != "" { service = strings.ToLower(service) fmt.Printf("%s is pointing to a vulnerable %s service.\n", subdomain, service) } } ``` 有关更多函数,请参阅 [godoc](https://godoc.org/github.com/haccer/subjack/subjack)。 ## 常见问题 **问:** 我的字典应该是什么样的? **答:** 你的字典应包含你要检查的子域名列表,看起来应该像这样: ``` assets.cody.su assets.github.com b.cody.su big.example.com cdn.cody.su dev.cody.su dev2.twitter.com ``` ## 参考 关于恶意子域名接管的更多信息: - [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz) - [https://labs.detectify.com/2014/10/21/hostile-subdomain-takeover-using-herokugithubdesk-more/](https://labs.detectify.com/2014/10/21/hostile-subdomain-takeover-using-herokugithubdesk-more/)
标签:Bug Bounty, C2日志可视化, CNAME记录, EVTX分析, Go语言, HTTPS, NXDOMAIN, Snort, 可自定义解析器, 域名安全, 子域名劫持, 子域名接管, 子域名枚举, 安全扫描, 并发扫描, 指纹识别, 日志审计, 时序注入, 程序破解, 系统安全, 网络安全, 资产收集, 配置审计, 隐私保护