一、被动信息收集
1、概念:
信息收集的方式分为两种:被动收集和主动收集。被动信息收集方式是指利用第三方的服务对目标进行访问了解,比如Google搜索。主动信息收集方式:通过直接访问、扫描网站,这种流量流经网站的行为,比如:nmap扫描端口。
2、被动信息收集的目的:
通过公开渠道,取获取目标主机的信息,从而不与目标系统直接交互,避免留下痕迹。
3、信息收集的内容范围:
1、ip地址段;
2、域名信息;
3、邮件地址;
4、文档图片数据;
5、公司地址;
6、公司组织架构;
7、联系电话、传真号码等;
8、人员姓名、职务;
9、目标系统使用的技术架构;
10、公开的商业信息;
二、DNS 域名解析原理
1、 DNS 服务器概述:
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS服务器分为根域DNS服务器、顶级域名DNS服务器。根域DNS服务器有13个,都存储了全部的顶级域名服务器的所在地址;
2、域名记录的类别:
1.A记录
A记录是最常见和最常用的一种记录类型,用于指定主机名和IP(IPv4)地址之间的关系。通过添加A记录,网站管理者可以将域名与网站服务器地址进行绑定。
2.AAAA记录
与A记录相对的是,AAAA记录是用于将域名解析到IPv6地址的一种DNS记录类型。国内很多解析服务器不支持AAAA记录的设置,如果想进行AAAA记录解析,就需要将域名的NS记录指向一些专业的域名解析厂商。
3.CNAME记录
CNAME记录也是比较常用的一种记录类型,它是主机名到主机名的映射。如果需要将域名指向另一个域名,而不是一个IP地址,那么就需要添加一条CNAME记录。在CDN、企业邮箱、全局流量管理等业务场景下,经常会使用到CNAME记录。
4.NS记录
NS记录用于将子域名交给其他DNS服务商解析时使用,从某种意义上来讲NS记录相当于设置子域名解析服务器的A记录,用于在解析请求时确定该服务器的IP地址。大多数域名注册商默认使用自己的NS记录来解析用户的域名,但用户也可以设置NS记录指向更专业安全的域名解析厂商。
5.MX记录
MX记录是邮件交换记录,主要用于邮箱解析,在发送邮件时根据收件人的地址后缀进行邮件服务器的定位。MX记录的权重对邮件服务非常重要,发送邮件时,会先对域名进行解析,查找MX记录,按照权重从小到大的顺序联通服务器进行邮件发送。
6.TXT记录
TXT记录,一般用于某个主机名的标识和说明,通过设置TXT记录可以使别人更方便地联系到你。此外TXT记录还常用于做SPF反垃圾邮件和SSL证书的DNS验证等。
7.PTR记录
PTR记录可以简单理解为A记录的反向记录,用于将一个IP地址指向对应的主机名,实现通过IP地址访问域名。
8.SOA记录
SOA记录又叫起始授权机构记录,NS标记多台解析服务器,SOA记录用于表明在众多NS记录中哪一台才是主服务器。当要查询的域名在所有递归解析服务器中没有域名解析的缓存时,就会回源来请求此域名的SOA记录,获取提供权威解析服务的地址。
9.SRV记录
SRV记录即服务定位(SRV)资源记录,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
10.URL转发
URL转发,是将当前访问的域名指向另一个网络地址,可以分为显性转发和隐性转发两种。显性URL:将域名指向另一个网络地址时,访问域名自动跳转至目标网址,地址栏显示为目标网站地址。隐性URL:访问域名跳转到目标网站,但地址栏显示为原网站地址。
3、DNS缓存
不负责解析域名,只是缓存域名解析结果。
但在实际的解析过程中,并不是客户端的每一次访问都需要委托递归服务器进行迭代查询,而是先搜索浏览器自身的DNS缓存,如果有,解析到此为止;如果DNS缓存中没有结果就会读取操作系统中的HOSTS文件查找对应的映射关系,如果有到此完成;如果没有,再请求递归服务器,进行全球递归查询。从中我们可以看出DNS缓存是获取域名解析记录的第一步骤。
4、DNS查询过程
一个DNS查询过程,通过8个步骤的解析过程就使得客户端可以顺利访问域名,但实际应用中,通常这个过程是非常迅速的;
1) 浏览器缓存:当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);
2) 系统缓存:当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;
3) 路由器缓存:当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客户端的DNS缓存;
4) ISP(互联网服务提供商)DNS缓存(一般就是本地DNS服务器):当在用户客户端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;
5) 根域名服务器:当以上均未完成,则进入根服务器进行查询。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器;
6) 顶级域名服务器:顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器;
7) 主域名服务器:主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;
8)保存结果至缓存:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。
5、DNS查询方式: 递归查询和迭代查询
(1)、主机向本地域名服务器的查询一般都是采用递归查询。
(2)、本地域名服务器向根域名服务器的查询的迭代查询。
递归:客户端只发一次请求,要求对方给出最终结果。
迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。
三、DNS信息收集方法
1、将域名解析为IP地址
可以采用直接ping的方法,这样比较直接;如果想知道百度的ip地址,命令如下:ping www.baidu.com ,可以看到百度的IP地址为:110.242.68.4
ping命令支持指定数据包的数量,ping www.baidu.com -c 1 指定发送一个数据包;
2、使用nslookup查看域名
nslookup (全称 name server lookup) ,是一个在命令行界面下的网络工具,它有两种模式: 交互 & 非交互,进入交互模式在命令行界面直接输入nslookup
按回车,非交互模式则是后面跟上查询的域名或者 IP 地址按回车。一般来说,非交互模式适用于简单的单次查询,若需要多次查询,则交互模式更加适合。
非交互模式:nslookup 的查询在不指定参数的情况下,默认查询的类型为A。非交互模式下每次查询需要输入完整的命令和参数
Server: 192.168.19.2 本机DNS设置
Address: 192.168.19.2#53Non-authoritative answer:
12306.cn canonical name = 12306.cn.wsglb0.com. #12306.cn域名的别名
Name: 12306.cn.wsglb0.com
Address: 101.28.249.31 #12306.cn解析出来的IP v4
Name: 12306.cn.wsglb0.com
Address: 2408:871a:a900:6::29 #12306.cn解析出来的IP v6
查询所有:nslookup -query=any 12306.cn
-querytype
和 -type
的效用一致,可以简写为 -q
和 -ty
,其在不指定类型的情况下默认查询类型为 A
交互模式:在命令行下输入 nslookup,回车进入交互模式;
可以看到进入交互模式后不再需要输入完整的命令便可以进行查询,并且可以连续的进行查询(友情提示Ctrl+C
或者Cmd+C
退出)
最上面的 Server 和 Address 是该词查询的 DNS 服务器。可以自己指定,也可以默认。
默认情况下 DNS 服务器的端口为53
非权威应答(Non-authoritative answer)意味着answer来自于其他服务器的缓存,而不是权威的12306服务器。缓存会根据 ttl(Time to Live)的值定时的进行更新。
3、DNS 信息收集-DIG
作用:查询DNS包括NS记录,A记录,MX记录等相关信息的工具。
语法: dig (选项) 需要查询的域名
@<DNS 服务器地址>: 指定进行域名解析的域名服务器;
@<服务器地址>:指定进行域名解析的域名服务器;
-b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
-f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
-P:指定域名服务器所使用端口号;
-t<类型>:指定要查询的DNS数据类型;
-x<IP地址>:执行逆向域名查询;
-4:使用IPv4;
-6:使用IPv6;
-h:显示指令帮助信息。
主机:指定要查询域名主机;
查询类型:指定DNS查询的类型;
查询类:指定查询DNS的class;
查询选项:指定查询选项。
any #显示所有类型的域名记录。默认只显示 A 记录
- dig 命令默认的输出信息可以分为 5 个部分。
- 第一部分显示 dig 命令的版本和输入的参数。
- 第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
- 第三部分中的 "QUESTION SECTION" 显示我们要查询的域名。
- 第四部分的 "ANSWER SECTION" 是查询到的结果。
- 第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。
使用-x 参数 IP 反查域名
root@xuegod53:~# dig -x 114.114.114.114
四、查询网站的域名注册信息和备案信息
1、Whois 查询方式: Web 接口查询和 Whois 命令查询;
(1)、通过 Web 接口查询:
这里只是举2 个例子,其实有很多。
阿里云:https://whois.aliyun.com/
站长之家:http://whois.chinaz.com/
(2)、Whois 命令查询
root@xuegod53:~# whois xuegod.cn
2、备案信息查询
(1)、Web 接口查询:
http://icp.chinaz.com/
(2)、天眼查
https://www.tianyancha.com/
五、 使用 Maltego 收集子域名信息
1、子域名介绍:
顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在http://example.com这个域名中,顶级域是.com(或.COM),大小写视为相同。
常见的顶级域主要分2类:
2、顶级域名介绍:
通用顶级类别域名常见的有:用于工商金融企业的.com;用于教育机构的.edu;用于政府部门的.gov;用于互联网络信息中心和运行中心的.net;用于非盈利组织的.org。
国家及地区顶级域,如".cn"代表中国,".uk"代表英国等,地理顶级域名一般由各个国家或地区负责管理。子域名(Subdomain Name),凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名,三级子域名以及多级子域名。
3、 挖掘子域名的重要性
子域名是某个主域的二级域名或者多级域名,在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠近主域。
例如:www.xxxxx.com 主域不存在漏洞,并且防护措施严密。而二级域名 edu.xxxxx.com 存
在漏洞,并且防护措施松散。
4、子域名挖掘方法
1. 子域名挖掘工具 :Maltego 子域名挖掘机。
先在Maltego官网注册,因为目前该工具不登录是不能正常使用的,同学们需要使用 gmail
邮箱或 163 进行注册。
注册帐号网址:https://www.paterva.com/web7/community/community.php
账号注册成功:
在KALI中打开maltego,使用免费版本就可以;
2. 搜索引擎挖掘 如: 在 Google 中输入 site:qq.com
3. 第三方网站查询:http://tool.chinaz.com/subdomain、https://dnsdumpster.com/
4. 证书透明度公开日志枚举:https://crt.sh/ 、http://censys.io/
5. 其他途径:https://phpinfo.me/domain 、http://dns.aizhan.com