前言
被动信息收集定义可认为如下:
- 公开渠道可获得的信息
- 与目标系统不产生直接交互
- 尽量避免留下一切痕迹
有两个最早的官方文件如下:
美国军方:http://www.fas.org/irp/doddir/army/atp2-22-9.pdf
北大西洋公约组织:http://information-retrieval.info/docs/NATO-OSINT.html
1、收集的信息内容
以下这些都是要收集的目标信息:
- IP地址段
- 域名信息
- 邮件地址
- 文档图片数据
- 公司地址
- 公司组织架构
- 联系电话/传真号码
- 人员姓名/职务
- 目标系统使用的技术架构
- 公开的商业信息
2、DNS域名记录
- A记录:主机记录,是使用最广泛的DNS记录;(比如说,www.baidu.com可以创建多个A记录,对应多台物理服务器的IP地址,可以实现基本的流量均衡!)
- NS记录:也称为域名服务器记录,用于说明这个区域有哪些DNS服务器承担解析的任务
- SOA记录:起始授权机构记录,SOA记录说明了在众多NS记录里那一台才是主DNS服务器
- MX记录:邮件交换记录,MX记录是无可或缺的,比如:A用户向B用户发送一封邮件,那么他需要向DNS查询B的MX记录,DNS定位到了B的MX记录后反馈给A用户,然后A用户把邮件投递到B用户的MX记录服务器里
- Cname记录:别名记录
- PTR记录:反向地址解析记录,作用是把IP地址解析为域名。DNS的反向区域负责从IP到域名的解析,因此如果要创建PTR记录,必须在反向区域中创建
3、DNS查询过程(有图)
1、本地的DNS服务器一开始是不知道www.baidu.com的IP地址,它会去问根域服务器(即.域);
2、根域服务器只解析13个根域名服务器,所以不会直接www.baidu.com返回的IP地址,而是会返回.com域3、的域名服务器的地址,让本地域名服务器去问.com服务器;
4、本地DNS服务器去问.com服务器,但是.com服务器也不知道www.baidu.com的IP地址,但是会返回一个存储了baidu.com这个域名的服务器的地址,让本地服务器去问baidu.com域名服务器;
5、本地服务器就去问记录了baidu.com域名服务器,问它知不知道www.baidu.com对应的ip地址是多少。这个服务器一查,确实有一个域名是baidu.com的主机进行了A记录解析(即www.baidu.com),对应着一个ip地址,它会将ip地址返回给本地DNS服务器;
6、本地服务器拿到这个ip,先在本地缓存一份,然后再把www.baidu.com对应的ip地址返回给请求的主机;
这时候,当有其他主机问本地DNS服务器www.baidu.com对应的ip是多少时,本地DNS服务器发现自己的缓存中有这条记录,就会直接返回www.baidu.com的ip。
7、主机和本地服务器之间的查询称为递归查询,而本地服务器与各种域名服务器之间的查询称为迭代查询。
4、DNS信息收集——nslookup
nslookup是一个很好用的查DNS信息的命令
一些指令如下:
nslookup
> server #本地DNS
Default server: 192.168.37.2
Address: 192.168.37.2#53
> sina.com
Server: 192.168.37.2
Address: 192.168.37.2#53
Non-authoritative answer:
Name: sina.com
Address: 66.102.251.33
> set type=mx #指定查询类型
> sina.com
Server: 192.168.37.2
Address: 192.168.37.2#53
Non-authoritative answer:
sina.com mail exchanger = 10 freemx2.sinamail.sina.com.cn.
sina.com mail exchanger = 5 freemx1.sinamail.sina.com.cn.
sina.com mail exchanger = 10 freemx3.sinamail.sina.com.cn.
>server (IP) # 可以设置查询使用的域名服务器
>nslookup -type=any 163.com #显示所有信息
5、DNS信息收集——dig
还有一个命令是dig:
dig @8.8.8.8 sina.com; #dig @指定DNS服务器 要收集的域名
dig @8.8.8.8 sina.com any;
dig @8.8.8.8 sina.com mx;
可以多尝试用不同的DNS服务器
反向查询:
dig -x(反向) IP
查询DNS服务器bind版本信息,用于攻击DNS服务器:
dig +noall(什么也不输出) +answer(只显示answer) txt chaos VERSION.BIND @ns3.dnsv4.com
得到bind到官网查询,看是否最新版本,对比得到有什么漏洞
有很多bind是查不到的
建议自己做的话不要放出来
6、DNS追踪:
dig +trace www.sina.com
进行迭代追查
根域——.com域——sina.com域——www.sina.com;
可以抓包进行对比
7、DNS区域传输
将一个区域文件复制到多个DNS服务器上的过程叫做区域传输,这个功能能够完成DNS服务器之间的数据库同步,一般只发生在DNS服务器之间。
如果DNS区域传输存在漏洞,我们就可以利用DNS区域传输来查看目标的记录
首先我们要先知道一个域名服务器,因为域名服务器有所有主机的记录
采用 dig @域名服务器 域名 传输方法axfr (AXFR(Request for full zone transfer))
同步数据库记录;
例
dig sina.com ns
得到ns1.sina.com
dig @ns1.sina.com sina.com axfr
发起区域传输
host -T(显示时间) -l(区域传输) sina.com ns1.sina.com
8、DNS字典爆破
一般情况下,都不能直接与域名服务器进行同步。
得到想要的主机记录,这时候就可以使用DNS字典爆破,拿一个字典一个一个尝试,把对应的域名的解析记录全部暴力尝试出来。
建议熟悉一个顺手的命令,然后把字典集成
有以下这些命令:
dpkg -L fierce
#dpkg是进行包管理的,可以搜索出系统中与fierce相关的文件
fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist /usr/share/fierce/hosts.txt
# -dnsserver指定DNS服务器 -dns指定要查询的域 -wordlist指定字典
dnsdict6 -d4 -t 16 -x sina.com
# -t指定线程数 -x指定字典级别
这个命令默认集成的字典大且速度快
dnsenum -f dnsbig.txt -dnsservrer 8.8.8.8 sina.com -o sina.xml
# -f指定字典 -dnsserver指定DNS服务器 -o指定导出文件
dnsmap sina.com -w dns.txt
# -w指定字典
这个命令极慢
9、DNS注册信息
通过注册信息可以进行很多攻击,包括社会工程学
注册时不要留下太多信息,通过服务商进行注册
一些NIC网站:
www.afrinic.net
www.apnic.net
ws.arin.net
www.iana.com
www.icann.org
www.lacnic.net
www.nro.net
www.ripe.net
www.inernic.net
查询注册信息指令如下:
whois sina.com
#通过连接多个nic查询sina的注册信息
whois -h whois.apnic.net 192.0.43.10
结语
DNS查询是很基础也很好用的手段
不论是作为攻击还是防御都要重视
尤其为了安全,不要把很多信息放上注册
有两个不错的可参考博文如下:
https://blog.csdn.net/qq_38684504/article/details/89070247?ops_request_misc=%7B%22request%5Fid%22%3A%22158185330419726867814560%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id=158185330419726867814560&biz_id=0&utm_source=distribute.pc_search_result.none-task
https://blog.csdn.net/weixin_44479297/article/details/92064337?ops_request_misc=%7B%22request%5Fid%22%3A%22158185330419726867814560%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id=158185330419726867814560&biz_id=0&utm_source=distribute.pc_search_result.none-task
之后关于被动信息收集,还有shodan等内容