被动信息收集
简介
- 公开渠道可获得的信息
- 与目标系统不产生直接交互
- 尽量避免留下一切痕迹
信息搜集内容
- IP地址段
- 域名信息
- 邮件地址
- 文档内容数据
- 公司地址
- 公司组织架构
- 联系电话/传真号码
- 人员姓名/职务
- 目标系统使用的技术架构
- 公开的商业信息
信息用途
- 用信息描述目标,构建目标系统运作过程
- 发现
- 社会工程学攻击
- 物理缺口
信息收集内容
信息收集——DNS
完全限定域名——FQDN,例如baidu.com可能属于域名下的一个主机记录
一个域如baiu.com
下面会有很多种类型的域名记录
- A记录:主机记录
- C name :别名记录
- NS记录:每个域都有域名服务器,对这个域进行域名解析,域名服务器地址通过NS记录进行定义和注册
- MX:邮件交换记录,
- ptr记录:反响域名解析,IP——>域名
DNS查找:
- 浏览器缓存,浏览器会缓存DNS记录一段时间(2-30min)
- 系统缓存(gethostname)
- 路由器缓存
- 如果还是没有,那么就去检查ISP有没有吧
- 递归搜索
- ISP的DNS服务器会从根域名开始进行递归查询
递归查询:
主机向本地域名服务器的查询一般都是采用递归查询。
如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是返回一个失败的响应,表示无法查询到所需的IP地址。
迭代查询:
本地域名服务器向根域名服务器的查询通常是采用迭代查询。
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么返回给本地域名服务器所要查询的IP地址,要么返回给本地域名服务器下一步应当查询的域名服务器的IP地址。
假设的主机想知道另一个主机(域名为 my.xxsilence.net)的IP地址。具体步骤如下:
① 主机先向其本地域名服务器进行递归查询,如果缓存中没有,继续下一步。
② 本地域名服务器采用迭代查询,先向一个根域名服务器查询。
③ 根域名服务器告诉本地域名服务器,下一次查询的顶级域名服务器 dns.net。
④ 本地域名服务器向顶级域名服务器 dns.net。
⑤ 顶级域名服务器 dns.net,下一次应查询的权限域名服务器dns.xxsilence.net的IP地址。
⑥ 本地域名服务器向权限域名服务器dns.xxsilence.net进行查询。
⑦ 权限域名服务器dns.xxsilence.net告诉本地域名服务器,所查询的主机的IP地址。
⑧ 本地域名服务器最后把查询结果告诉主机。
nslookup
nslookup
www.sina.com
逐级进行解析,到最后获取ip地址
1.查询mx记录,邮件交换记录
set type=mx(可以修改类型,如a,查询a记录)
sina.com//这里不需要写www,因为www加上后就变为主机域名,不加的话是域名
2.查询上面显示出来的邮件服务器地址
set type=a
freemx1.sinamail.sina.com.cn
freemx2.sinamail.sina.com.cn
freemx3.sinamail.sina.com.cn
3.查询域名服务器名称
> set type=ns
> sina.com
4.查询域名服务器的IP地址
> set type=a
> ns1.sina.com.
> ns4.sina.com.
> ns3.sina.com.cn.
> ns4.sina.com.cn.
> ns1.sina.com.cn.
5.查询新浪邮件服务器的 PTR 记录
//可能会查出不同结果,域名可以解析成多个cname就和主机记录
> set type=ptr
> 202.108.3.242
6.设置指定域名服务器
我们使用不同DNS服务器解析出来的结果可能不同,是因为现在互联网大部分网站采用智能DNS,终端用户所处网络环境不同DNS返回的查询结果可能不同,比如在美国访问新浪,会解析一个距离更近的域名地址,优化互联网流量,访问尽量发生在本地。
# 指定域名服务器之后,两次结果不同
> server 8.8.8.8
> www.sina.com
7.指定 type 为 any,解析所有记录
> set type=any
> sina.com
spf 记录:反垃圾邮件记录
在接收邮件的时候进行反向域名解析,查询比对这个记录匹配则是正常邮件,来确认是否是垃圾邮件
text = "v=spf1 include:spf.sinamail.sina.com.cn -all"
DIG命令
查询DNS时可以使用不同DNS服务器来解析
dig @8.8.8.8 www.sina.com mx
dig www.sina.com any
//+noall是所有信息都不显示的意思,+answer是只显示answer内容
dig +noall +answer mail 163.com any | awk '{print $5}'//输出结果显示第5列(最终解析地址)
-x:反向查询
反向查询:dig +noall +answer -x 8.8.8.8
nslookup没有以下特性,可以查bind版本。linux作为DNS服务器,提供DNS服务的一般是bind软件包
例如查询sina.com只针对当前域名查,无法查询www.sina.com,news.sina.com等。
完美结果是把所有DNS注册的结果fqdn名称,所有记录都获取到。要达成这个目标,一种思路是拿下DNS服务器。而dig可以辅助我们完成这个目标,获取bind版本信息,如果版本存在漏洞可以利用。
txt:对应记录名称。chaos类级别,查询chaos类里面对应的txt记录类型
bind版本信息: dig +noall +answer txt chaos VERSION.BIND @ns3.dnsv4.com
DNS追踪: dig +trace example.com
之后可以通过这个版本去官网查看是否是最新版本,根据文档查看漏洞修复,寻找可以利用的漏洞。
如何判断根域(或者.com域)名服务器被劫持?
跟踪命令,不会直接向本地DNS服务器进行请求,直接去请求根域名服务器,进行迭代查询
- DNS追踪
跟踪过程:直接迭代查询,不经过本地缓存域名0服务器(从根域开始)
//如果无法跟踪,需要指定一个DNS服务器如:8.8.8.8
root@kali:~# dig +trace 163.com @8.8.8.8
DNS区域传输
假如有sina.com,我们想要知道他下面的所有主机名www.sina.com\new.sina.com等等,这样暴露在互联网上攻击面就知道了,如果我们可以知道这一个域里所有的主机记录,是最关键的,也是攻击者最想实现的目标。
区域传输简介
DNS服务器信息同步的过程,比如在一台服务器上修改了数据,其他DNS服务器也会进行修改,他们之间有一种同步机制,使用的就是区域传输。
正常情况下区域传输发生在本域的域名服务器之间,如果配置错误的话,可能会造成任何人都可以进行区域传输,任何人都能拿到域下所有主机记录。
常见命令
如果他配置有问题,就会进行区域传输,把数据获取到
需要知道他的一个域名服务器,因为它的域名服务器里才有所有的记录
@后面的是域名服务器,在后面是查询的域名。axfr:区域传输,差异化的传输
dig @ns1.example.com example.com axfr
root@kali:~# dig sina.com any
//host也可以实现区域传输,-l进行全区域传输,-T是显示时间
host -T -l sina.com ns1.example.com
可以看到连接被拒绝
传输数据,区域传输使用的是TCP的53端口,而正常查询DNS服务使用的是udp的53端口
DNS字典爆破
1. 简介
2. fierce
3. dnsdict6
4. dnsenum
5. dnsmap
6. dnsrecon
一般熟练掌握一个爆破工具就好
fierce
fierce命令先执行区域传输,失败后才进行字典爆破
fierce dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt
//列出所有fierce生成的文件,我
dpkg -L fierce
我们可以猜测host.txt就是它的字典文件
dnsdict6
这个工具速度比较快,字典质量也较高
Options:
-4 显示ipv4地址
-t NO 指定线程数默认是8.最大32
-D 指定手机用哪个字典
-d display IPv6 information on NS and MX DNS domain information.
-e ignore no NS for domain errors
-S 指定srv记录猜解
//-t设置并发数,-x使用扫描级别的字典,-s:小字典,-m普通字典,-l是大字典,-x使用更大字典,-u使用最大字典
dnsdict6 -d4 -t 16 -x sina.com
dnsnum
root@kali:~# dpkg -L dnsenum
/usr/share/dnsenum/dns.txt
//dpkg查不到可以使用find,find比较慢,查询含有dnsenum的文件
find / -name dnsenum
root@kali:~# cp /usr/share/dnsenum/dns.txt dnsenum.txt
//
root@kali:~# dnsenum -f dnsenum.txt -dnsserver 8.8.8.8 sina.com -o sina.xml
dnsmap
root@kali:~# dpkg -L dnsmap
/usr/share/dnsmap/wordlist_TLAs.txt
root@kali:~# cp /usr/share/dnsmap/wordlist_TLAs.txt dnsmap.txt
root@kali:~# dnsmap sina.com -w dnsmap.txt
dnsrecon
root@kali:~# dpkg -L dnsrecon
/usr/share/dnsrecon/namelist.txt
root@kali:~# dnsrecon -d sina.com --lifetime 10 -t brt -D /usr/share/dnsrecon/namelist.txt
root@kali:~# dnsrecon -t std -d sina.com
DNS注册信息
注册域名的时候有时会留下注册人的一些信息,可以拿来做一些社会工程学,物理攻击等等
最好的这种信息查询途径是通过whois
不同区域有不同地区whois
https://www.afrinic.net/
http://www.apnic.net/
https://www.arin.net
https://www.iana.com
kali下查询whois
root@kali:~# whois sina.com