INTRODUCTION
dnsmap 最初于 2006 年发布,灵感来源于 Paul Craig 的虚构故事《The Thief No One Saw》,该故事收录于《Stealing the Network - How to 0wn the Box》一书中。
dnsmap 主要供渗透测试人员在基础设施安全评估的信息收集/枚举阶段使用。在枚举阶段,安全顾问通常会发掘目标公司的 IP 网段、域名、电话号码等信息。
子域名暴力破解是枚举阶段应使用的另一种技术,当其他域名枚举技术(如区域传输)失效时尤其有用(顺便提一句,如今我极少看到区域传输被公开允许)。
如果你对研究隐蔽的计算机入侵技术感兴趣,我建议阅读这个优秀(且有趣)的章节,你可以在网络上免费找到:
http://www.ethicalhacker.net/content/view/45/2/
我很高兴地宣布 dnsmap 已被收录于 Backtrack 2、3 和 4,并得到了社区的广泛评价:
http://backtrack.offensive-security.com/index.php?title=Tools http://www.networkworld.com/community/node/57543 http://forums.remote-exploit.org/tutorials-guides/12746-dnsmap-tutorial.html http://www.linuxhaxor.net/2007/07/14/backtrack-2-information-gathering-all-dnsmap/ http://www.darknet.org.uk/2009/03/dnsmap-022-released-subdomain-bruteforcing-tool/
编译
编译应直接进行:
$ make
或:
$ gcc -Wall dnsmap.c -o dnsmap
安装
或:
如果你希望通过批量方式暴力破解多个目标域名,可以使用附带的 dnsmap-bulk.sh 脚本。只需将脚本复制到 /usr/local/bin/ 目录,便可从任意位置调用。例如:
并设置执行权限,例如:
局限性
缺乏多线程支持。这一速度问题希望能在未来版本中得到解决。
可能发生的趣事
发现有趣的远程访问服务器(例如:https://extranet.targetdomain.com)
发现配置不当和/或未打补丁的服务器(例如:test.targetdomain.com)
发现新的域名,从而能够绘制目标组织不显眼/难以发现的网段(注册查询——即 whois 是你的朋友)
有时你会发现某些暴力破解出的子域名解析到内部 IP 地址(RFC 1918)。这很棒,因为有时它们是真实且最新的“A”记录,这意味着从互联网仅通过标准 DNS 解析(而非区域传输等方式)也有可能枚举目标组织的内部服务器。
发现使用动态 DNS 服务配置的嵌入式设备(例如:linksys-cam.com)。此方法是 Google 搜索技巧之外寻找设备的另一种途径。
用法
暴力破解可以使用 dnsmap 内置的单词列表或用户提供的单词列表。结果可保存为 CSV 和人类可读的格式,供进一步处理。dnsmap 不需要 root 权限即可运行,出于安全原因不应以 root 权限运行。
只需不带任何参数运行 dnsmap 即可获得用法语法:
$ ./dnsmap
dnsmap 0.30 - DNS 网络映射器,作者 pagvac(gnucitizen.org)
用法:dnsmap <目标域名> [选项] 选项: -w <单词列表文件> -r <常规结果文件> -c <CSV 结果文件> -d <延迟毫秒数> -i <要忽略的 IP>(如果你得到误报,此选项很有用)
注意:延迟值是一个随机最大值。例如:如果你输入 1000,每个 DNS 请求将最多延迟 1 秒。默认情况下,dnsmap 使用 10 毫秒的最大延迟值作为 DNS 查找之间的间隔。
示例 使用 dnsmap 内置的单词列表进行子域名暴力破解:
$ ./dnsmap targetdomain.foo
使用用户提供的单词列表进行子域名暴力破解:
$ ./dnsmap targetdomain.foo -w wordlist.txt
使用内置单词列表并将结果保存到 /tmp/ 目录:
$ ./dnsmap targetdomain.foo -r /tmp/
由于上例中仅提供了路径而未提供文件名,dnsmap 将创建一个包含当前时间戳的唯一文件名。例如: /tmp/dnsmap_targetdomain_foo_2009_12_15_234953.txt
使用内置单词列表、将结果保存到 /tmp/,并在每次请求之间随机等待最多 3 毫秒的示例:
$ ./dnsmap targetdomain.foo -r /tmp/ -d 300
建议在 dnsmap 干扰了你的在线体验(即占满带宽)的情况下使用 -d(延迟毫秒数)选项。
延迟 0.8 秒、以常规格式和 CSV 格式保存结果、过滤两个用户提供的 IP、并使用用户提供的单词列表进行子域名暴力破解:
$ ./dnsmap targetdomain.foo -d 800 -r /tmp/ -c /tmp/ -i 10.55.206.154,10.55.24.100 -w ./wordlist_TLAs.txt
如需批量暴力破解多个目标域名,请使用附带的 bash 脚本,例如:
$ ./dnsmap-bulk.sh domains.txt /tmp/results/
单词列表
http://packetstormsecurity.org/Crackers/wordlists/dictionaries/ http://www.cotse.com/tools/wordlists1.htm http://wordlist.sourceforge.net/
其他类似工具——选择即自由!
WS-DNS-BFX http://ws.hackaholic.org/tools/WS-DNS-BFX.tgz
DNSDigger http://www.ernw.de/download/dnsdigger.zip
Fierce Domain Scan http://ha.ckers.org/fierce/
Desperate http://www.sensepost.com/research_misc.html
DNSenum http://dnsenum.googlecode.com/files/dnsenum1.2.tar.gz
ReverseRaider http://complemento.sourceforge.net/
Knock http://knock.gianniamato.it/
-- pagvac | GNUCITIZEN.org 2010 年 2 月