Kaleidora/dnsub-scanning-tool
GitHub: Kaleidora/dnsub-scanning-tool
dnsub 是一款集多源被动查询与主动暴力破解于一体的子域名枚举工具,旨在帮助安全人员在渗透测试前期快速全面地发现目标攻击面。
Stars: 0 | Forks: 0
# dnsub
  
主题:dns-infrastructure-mapper, subdomains, pentest-tool, subdomain-enumeration, subdomain-bruteforcing, scanning-tool, scanner, security-scanner, directory-scanner, code-scanner, subdomain-recon-logic, attack-surface-auditor, dns-namespace-discovery, automated-reconnaissance-engine, passive-dns-inspector
(7) VT_Driver 模块
VT_Driver 项目概述
VT_Driver 是一个基于 Intel VT (Virtualization Technology) 的驱动项目,旨在利用虚拟化技术创建一个虚拟机环境。这使其能够绕过游戏驱动的反调试机制,从而方便对游戏驱动进行调试。该项目使用 C++ 编写,与操作系统内核密切交互,实现了一系列复杂的功能,包括虚拟机管理、内存虚拟化、hooking 技术以及调试事件处理。
绕过反调试机制:VT_Driver 模块利用 Intel VT (Virtualization Technology) 创建虚拟机环境,从而能够绕过游戏驱动的反调试机制。这使得开发者在调试期间能够更方便地分析和修改游戏驱动,找出诸如性能瓶颈和逻辑错误之类的问题。
多系统调试适配:DbgkSysWin11 和 DbgkSysWin10 模块是专门针对 Windows 11 和 Windows 10 系统开发的,确保了在不同操作系统版本上都能提供有效的调试功能。
[点击下载](https://github.com/yunxu1/dnsub/releases "Releases")
##### 参数:
```
./dnsub_darwin_amd64 -h
[*] Censys ......... [×]
[*] Fofa ......... [×]
[*] ZoomEye ......... [×]
[*] IP138 ......... [√️]
[*] brute ......... [√️]
[*] Crtsh ......... [√️]
[*] CertSpotter ......... [√️]
[*] Baidu ......... [√️]
[*] NetCraft ......... [√️]
example: dnsub -d example.com
-d string
target domain
-debug
enable debug output log info
-depth int
enumerating subdomain depth using a param[f2] file content (default 2)
-dns string
dns server address (default 9.9.9.9)
-domain--file string
load domain list file path
-dot
use dns-over-tls query dns infoarmation
-f string
load subdomain filepath. eg: dnsubnames.txt (default "dict/dnsubnames.txt")
-f2 string
load subdomain filepath. eg: dnsub_next.txt (default "dict/dnsub_next.txt")
-json
json output
-o string
output result to csv,set file path.
-prefix string
subdomain dictionary prefix Multi-line "," split
-suffix string
subdomain dictionary suffix Multi-line "," split
-t int
thread pool numbers (default 100)
-timeout int
dns question timeout,unit is second (default 5)
-v int
show verbose level (default 1)
-version
show version
-h help
```
#### **API接口配置**
dnsub 2.0 及以上版本不仅支持子域名枚举,还增加了主流 API 接口的查询功能。目前支持的接口包括:
| API | 地址 | 是否需要KEY |
| ----------- | ------------------------- | ----------- |
| Censys | https://censys.io/ | 是 |
| Crtsh | https://crt.sh/ | - |
| CertSpotter | https://certspotter.com | - |
| Fofa | https://fofa.so/ | 是 |
| ZoomEye | https://www.zoomeye.org/ | 是 |
| Baidu | https://www.baidu.com | - |
| IP138 | https://www.ip138.com | - |
| NetCraft | https://www.netcraft.com/ | - |
| - | - | - |
##### 如何配置接口key以及接口是否启用?
在 dnsub 目录下的 `config.ini` 配置文件中,你可以启用或禁用 API,并配置相应的 key。详情请参考 `config.ini` 配置模板。
这里我们以 fofa 为例:
```
[Fofa]
Enable = 1
Email = admin@qq.com
Key = 775d77f470007332c700f12a8b9e0c01
Timeout = 5
```
使用 `-h` 参数可以查看配置的加载状态。
```
dnsub -h
[*] ZoomEye ......... [×]
[*] brute ......... [√️]
[*] Censys ......... [×]
[*] Crtsh ......... [√️]
[*] CertSpotter ......... [√️]
[*] NetCraft ......... [√️]
[*] Fofa ......... [×]
[*] Baidu ......... [√️]
[*] IP138 ......... [√️]
```
#### 开始使用
**场景1:** 简单扫描域名 example.com
```
dnsub -d example.com
```

**场景2:** 显示子域名的 banner 信息并将扫描结果输出到 CSV 文件。
在这里,你可以设置参数 `-v 2` 来增加显示结果的详细程度。主要显示的信息包括 **协议、响应码、Banner、标题**,让你能够快速掌握子域名的详细信息。
```
dnsub -d example.com -v 2 -o example.csv
```

**场景3:** 我有一个比默认字典强大得多的自定义字典,该如何使用?
dnsub 提供了 `-f` 和 `-f2` 两个参数用于设置字典。它们分别用于指定子域名字典以及二级及以上子域名的字典。你可以使用这些参数来指定字典的路径。
**场景4:** 如何枚举 3 级或 4 级字典?
只需使用参数 `-depth 3` 即可枚举三级的域名字典。输入你需要枚举的级数即可。如果你特别无聊,甚至可以输入 2333。
**场景5:** 我发现目标子域名遵循某些特定模式,例如 pre-xxx.example.com 和 dev-xxx.example.com。这些子域名非常常见,通常用于测试环境、开发环境等类似用途。那么我们该如何枚举它们呢?
+ 使用 `-prefix` 参数设置域名前缀
+ 使用 `-suffix` 参数设置域名后缀
此功能可根据需要向字典中添加前缀和后缀。它在原始字典的基础上运行,不会影响其原有的枚举结果。但是,请确保包含子域名的连接符,例如 `pre-` 和 `pre.`。
```
dnsub -d example.com -prefix uat-,pre-,admin.
uat-www.example.com
pre-www.example.com
admin.www.example.com
```
**场景6:** 我可以加载一个海量字典并在服务器上运行吗?当然可以。我一直都是这么做的。
1. 这里使用 `nohup` 让 dnsub 在服务器后台运行;
2. `-depth 3` 参数将枚举深度设置为 3 级
3. `-o` 参数将结果输出到文件 `example.csv` 中
4. 使用 `-t` 参数将线程数设置为 200
5. 使用 `-f` 参数加载超大字典
```
nohup ./dnsub_linux_amd64 -d example.com -depth 3 -o example.csv -t 200 -f subdomains_big.txt > /dev/null &
```
**场景7:** 我遇到了 DNS 污染。切换 DNS 服务器也无济于事,所有枚举出来的子域名结果都是假的。我该怎么办?
首先,子域名污染是什么样的?子域名被污染后,无论你怎么查询它的 DNS,它总会返回一个 IP 地址。这个 IP 并不固定,但当你访问该域名时,它实际上并没有指向真正的目标。这导致枚举工具经常返回一堆垃圾信息。
如图:

DNS 污染频繁发生在诸如 Web 代理和代理服务器之类的域名上。特别是在对这些被污染的域名进行三级或四级以上的枚举时,结果大多是垃圾信息,毫无实际价值。你明白这种污染发生的原因。
在这里,dnsub 只需使用 `-dot` 即可解决 DNS 污染问题。当然,选择此参数会大大降低你的子域名枚举速度。因此,你需要指定一个相对较快的 DNS。这里推荐使用阿里云 DNS。 在这里,dnsub 只需使用 `-dot` 选项即可简单解决 DNS 污染。但是,选择此参数会显著降低子域名枚举速度。因此,你需要指定更快的 DNS 服务——我们推荐使用阿里云 DNS,配置参数如下:`-dns 223.5.5.5`
```
dnsub -d example -dot
```
**场景8:** 我有一份想要扫描的子域名列表。该如何处理?
首先,你需要将这些子域名放入一个文本文件中,每行一个;
```
cat targets.txt
baidu.com
qq.com
zhaopin.com
```
第二步:使用 `-domain--file` 参数指定目标列表。在这里,*你不需要使用 `-d` 参数*。
```
dnsub -domain--file targets.txt -v 2 -t 100
```

与之前的要求一样——我想将这份子域名列表上传到服务器进行扫描。我该如何操作?
```
nohup ./dnsub_linux_amd64 -domain--file targets.txt -depth 3 -o example.csv -t 200 -f subdomains_big.txt > /dev/null &
```
##### 版本更新记录:
2020/4/25
+ 优化了泛解析识别;
+ 缩短了打印行数;
+ 增强了域名访问检测的稳定性,忽略请求超时的域名;
2021/1/16
+ 增加了 API 和爬虫功能
+ 增加了模块加载打印信息
+ 增加了多子域名扫描功能
+ 增加了 JSON 格式的扫描结果输出
+ 增加了枚举子域名前缀和后缀的配置规则
+ 修复了多线程输出时导致部分文本丢失的 bug
+ 优化了配置加载
+ 优化了多域名加载
2021/1/19
+ 增加了 DNS dot 模式查询,以解决由 DNS 污染导致的结果不准问题(启用此功能可能会影响扫描速度)
+ 优化了 HTTP banner 获取功能
+ 调整了 CSV 文本输出内容
标签:C++, DNS命名空间, DNS枚举, Docker容器, EPT Hook, EVTX分析, Fofa, GitHub, Golang, GraphQL安全矩阵, IP138, VT驱动, Windows 10, Windows 11, 代码生成, 侦察引擎, 内存虚拟化, 内核交互, 反反调试, 域名字典爆破, 子域名扫描, 子域名爆破, 安全扫描器, 安全编程, 攻击面发现, 数据擦除, 日志审计, 服务器安全, 渗透测试工具, 游戏驱动调试, 白帽工具, 网络安全, 网络安全工具, 自动化侦察, 虚拟化技术, 被动DNS, 资源下载, 隐私保护, 黑盒测试