声明:本文初衷是分享网络安全知识。请不要利用技术做任何对网络安全有害的事情。因传播和使用本文提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人承担。
在渗透测试或SRC漏洞挖掘中,安全测试人员通常会获得一些域名资产。为了更好地进行渗透测试,通常需要收集子域。
为什么需要收集子域?
扩大资产范围可以增加漏洞发现的概率。
众所周知,一般情况下,主站的安全性可能相对较高,而一些不常使用的子站或上线不久的站,在安全性方面可能考虑不充分,可能成为目标系统的脆弱点。
通常很有可能是同一个组织使用同一个应用构建多个服务,补丁情况可能大致相同,因此出现同一个漏洞的概率很大。
域名收集通常分为两种方式,即被动收集和主动收集。被动收集是指在不与目标系统交互的情况下通过第三方进行收集。这种方式优势明显,因为不需要和目标系统进行交互,所以不会对目标系统产生任何影响,也不会触发任何安全产品的报警。
被动子域名收集方法:
信息披露
搜索引擎
网络空之间的映射引擎
证书透明度
第三方DNS服务
AS号码查询
SAN集合
使用公共数据集
主动收集是指通过与目标系统交互来收集子域。因为需要与目标系统进行交互,很可能会发生高频访问,存在违反安全产品报警的风险。如何主动收集子域名:
字典枚举
替换扫描
域传输脆弱性
安全扩展
DNS缓存
被动子域集合信息披露
Corssdomain.xml跨站点策略文件,主要是为web客户端设置跨域数据处理的权限,可能包含一些域名信息。
在Github和Gitee等代码库中可能会有相关子域的信息。
捕获并分析数据包,例如对一些静态资源、一些APP或applet接口、邮件服务器等的请求。
【→所有资源关注我,私信回复“素材”获取←】1。网络安全学习路线2、电子书3、安全工厂内部视频4、100份src文档5、常见安全面试问题6、ctf大赛经典题目解析7、完整工具包8、应急响应笔记。
搜索引擎常用的搜索引擎有Google和,基本搜索语法:
网址:*.baidu.com
一般是作为工具集合的补充,也可以用来写批量操作的脚本。
网络资产搜索引擎
空之间的通用映射引擎:
初段
钟馗之眼
未来金融建议
使用语法直接在搜索框中搜索。基本语法:domain=Your_domain
也可以使用API进行搜索。
echo ' domain = " Baidu . com " ' | base64-| xargs-I { } curl " https://fofa . info/API/v1/search/all email = $ { Your _ Mail } Key = $ { Your _ Key } page = 1 qbase64 = { } "
编写另一个脚本,简单地处理返回的数据以获得子域列表。
从base64import b64encode导入JSON #配置信息domain = ' domain = " Baidu . com " ' domain = str)," utf-8 ")email = " Your _ email " key = " Your _ key " # endurl = " https://fofa . info/API/v1/search/all email = { email } key = { key } qbase 64 = { domain } "。format+" Page = { Page } " Page = 1 subdomain = list while true:URL = URL . format)req = requests . get . text result = JSON . loads[' results ']if result:tmp =[I[0]for I in result]subdomain+= tmplse:break Page+= 1 print
注意:这里的代码只展示了处理的逻辑,还没有考虑优化处理。
第三方DNS服务病毒总数
VirusTotal运行DNS复制功能,并通过存储用户访问URL时执行的DNS解析来建立数据库。
其他在线DNS工具概述:https://decoder.link/
https://searchdns.netcraft.com/
https://dnsdumpster.com/
https://pentest-tools . com/information-gathering/find-sub domains-of-domain
file/tupian/20220804/ppnmap-script targets-ASN-script-args targets-ASN . ASN = Your _ ASN > net blocks . txt
像fofa这样的网络空映射引擎也支持ASN查找。
疗养院
是在s an的SSL标准x509中定义的扩展。带SAN字段的SSL证书可以扩展该证书支持的域名,使得一个证书可以支持多个不同域名的解析。
允许使用安全证书中的subjectAltName字段将多个值与证书相关联。这些值称为主题别名。该名称可以包括:IP地址、DNS名称等。
这里以Firefox浏览器为例:
您还可以使用appsecco提供的shell脚本:
东南's/^subject://p;/X509v3主题替代名称/{ N;s/^.* n//;:a;s/^,/ 1 2 n 1/;ta;p;q;}' < < )
开放数据集
使用发布的扫描数据集收集子域信息。推荐两个常用的:
https://scans . io/study/sonar . rdns _ v2 https://open data . rapid 7 . com/
通常,这些数据集相对较大,因此您可以使用命令快速找到它们。wget https://scans . io/data/rapid 7/sonar . fdns _ v2/2017 04 17-fdns . JSON . gz cat 20170417-fdns.json.gz | pigz-DC | grep "。Your_Target.org" | jq
活动子域集合
字典枚举
枚举就是利用常用子域字典进行暴力攻击,最终获得有效子域。这种方法有很大的局限性,能收集多少子域取决于字典的覆盖范围。同时有一个致命的缺点,就是会造成大量的流量,可能会对目标系统的安全产品造成报警。
常用工具:
用有感光胶的金属板做套色印刷的方法
布鲁托-旧
DNS发现
Dnssearch
积累
亚布鲁特
subDomainBrute
子列表3r
OneForAll
DNS路由
有些工具可能很久没更新了,字典也可能旧了。你可以根据需要把它们修改成你自己的字典。
替换扫描利用已知领域/子域的排列组合来识别新的子域,词典具有一定的针对性,提高了准确率。
常用的工具是altdns。
域传输脆弱性
DNS区域转移是将DNS数据库或DNS记录从主名称服务器复制到辅助名称服务器的过程。如果没有严格配置DNS服务器,一旦收到AXFR请求,就会执行域转移,从而导致此漏洞。在域名传输过程中,传输的信息除了子域外,还包括邮箱地址、邮箱服务器等信息,可用于钓鱼攻击。其实域名转移漏洞本身就是一个高危漏洞。
传输域漏洞的常用身份验证方法:
网络管理命令行工具
# 1.nslookup命令进入交互式shell $ nslookup # 2。服务器命令参数设置查询DNS服务器$ server xxx.com# 3。如果漏洞存在,您可以使用ls命令列出所有域名$ ls# 4。退出$ exit。
挖苦
在Linux下,可以使用dig命令发送DNS请求。在这里,您只需要发送axfr类型的DNS请求。如果此漏洞存在,将返回所有解决记录。
Dig @Target_DNS_Server_IP axfr查询域名
dnswalk
Kali中已经预装的工具,这里需要注意的是,应该使用域名的完整形式,即,。不能省略。
dnswalk your_domain。
端口扫描工具
namap中还有一个针对域转移漏洞的检测脚本:
nmap-script DNS-zone-transfer-script-args DNS-zone-transfer . domain = Your _ domain-p 53-Pn dns.xxx.yyy.com
安全扩展
DNSSEC是域名系统安全的扩展,主要用于通过建立信任链来保护DNS中数据的完整性和真实性。由于DNSSEC处理不存在的域名的方式,可以遍历DNSSEC域并枚举域中的所有域名。
常用工具:
可以使用apt-get安装ldns-walk。
apt-get安装ldnsutils
nsec3walker
nsec3map
DNS缓存
在常见的企业网络中,DNS服务器通常被配置为向网络中的主机提供域名解析服务。除了解析私有域名,DNS服务器还会递归请求公网中的DNS服务器解析第三方域名。为了提高性能,通常使用缓存记录来记录解析的域名,尤其是第三方域名。
域名缓存检测技术是向这些服务器发送域名解析请求,但不需要递归方式。这样DNS只能解析私有域名和缓存中存储的域名。有了这项技术,渗透测试人员就知道哪些域名被请求了。
。/dnsrecon.py -t snoop -n Sever -D
自动化工具
OneForAll
OneForAll是一款全面的子域扫描工具,拥有多个模块和接口进行扫描,收集完整的子域信息,包括子域、子域IP、子域常用端口、子域标题、子域Banner、子域状态等。
[计] 下载这里用Docker来演示。
git克隆https://gitee.com/shmilylty/OneForAll.gitdocker拉shmilylty/one for all docker run-it-RM-v ~/results:/one for all/results-v ~/one for all/config:/one for all/config shmilylty/one for all-target Baidu.com运行
扫描结果路径:~/results
设置文件路径:~/OneForAll/config
目标域名:Baidu.com
ksubdomainKsubdomain是一个无状态子域爆破工具,可以在Windows/Linux/Mac上使用。它会很快炸开DNS,理论上最大的包传递速度在Mac和Windows上是30w/s,在Linux上是160w/s。
温馨提示:linux下需要安装libpcap-dev,Windows下需要安装WinPcap,可以直接在mac下使用。
[计] 下载使用
#用内置字典爆ksubdomain -d baidu.com#用字典爆域名ksubdomain-d Baidu . com-f subdomains . dict #字典里全是域名,可以用验证模式ksubdomain -f dns.txt -verify#爆三级域名ksubdomain-d baidu.com-L 2
子列表3r
Sublist3r使用许多搜索引擎来检测子域。
Sublist3r还使用Netcraft、Virustotal、ThreatCrowd、DNSdumpster和ReverseDNS进行子域检测。
[计] 下载使用
python sublist 3r . py-b-d Baidu.com
-d -domain要枚举的子域的域名。
-b -bruteforce启用subbruteforce模块。
-p -ports根据特定的tcp端口扫描找到的子域。
-v-verbose启用详细模式并实时显示结果。
-t-threads subbrute brute force使用的线程数。
-e-engine指定逗号分隔的搜索引擎列表。
-o -output将结果保存到文本文件中。
-h -help显示帮助信息并退出。
替代域名系统Altdns是一个使用排列扫描技术的子域发现工具,它可以帮助我们找到匹配某种排列或替换的子域。AltDNS接受域下的子域中可能存在的词,并获取你知道的子域列表。
用户只需要提供两个输入列表,altdns就可以为我们生成并输出大量可能存在的潜在子域并保存。这些保存的子域列表是DNS爆炸字典的好选择。
[计] 下载使用
python alt DNS . py-I sub domains . txt-o data _ output-w words . txt-r-s results _ output . txt
domain bus . txt文件包含目标的已知子域。
data_output文件将包含大量更改和替换的子域列表。
Words.txt是需要替换子域的单词列表——单词之间用线隔开。
Results_output.txt将包含被发现有效并具有DNS记录的已排列子域的最终列表。
r命令解析每个生成的有序子域。
-s命令用于指定altdns保存已解析置换子域结果的位置。
t命令用于指定解析器同时使用的线程数量
当然,还有很多优秀的工具。下面只是我个人认为的几种常用工具。只有合理使用,工具的作用才能最大化。常用工具有:用有感光胶的金属板做套色印刷的方法
布鲁托-旧
DNS发现
Dnssearch
积累
亚布鲁特
subDomainBrute
子列表3r
OneForAll
DNS路由
层
……
摘要
在渗透测试中,大多数测试人员使用自动化工具在项目周期中收集数据。但是对于已经收上来的资产无能为力的时候,尝试各种手段进一步扩大资产范围也是一个办法。所以本文系统整理了一些常见的收藏方法,希望对各位高手有所帮助~