渗透测试—— 被动信息收集部分

常见的被动信息收集方式总结

被动信息收集简介

DNS查询

  1. 域名记录

    1. A:主机地址(域名 -> IP)
    2. Cname:主机别名记录
    3. NS:域名服务器记录
    4. MX:邮件交换记录
    5. PTR:反向解析(IP -> 域名)
  2. DNS查找:

    1. 浏览器缓存,浏览器会缓存DNS记录一段时间(2-30min)
    2. 系统缓存(gethostname)
    3. 路由器缓存
    4. 如果还是没有,那么就去检查ISP有没有吧
    5. 递归搜索
    6. ISP的DNS服务器会从根域名开始进行递归查询
  3. 递归查询:

    主机向本地域名服务器的查询一般都是采用递归查询。

    如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是返回一个失败的响应,表示无法查询到所需的IP地址。
    img

4.迭代查询:

本地域名服务器向根域名服务器的查询通常是采用迭代查询。

当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么返回给本地域名服务器所要查询的IP地址,要么返回给本地域名服务器下一步应当查询的域名服务器的IP地址。

5.假设的主机想知道另一个主机(域名为 my.xxsilence.net)的IP地址。具体步骤如下:

  1. 主机先向其本地域名服务器进行递归查询,如果缓存中没有,继续下一步
  2. 本地域名服务器采用迭代查询,先向一个根域名服务器查询。
  3. 根域名服务器告诉本地域名服务器,下一次查询的顶级域名服务器 dns.net。
  4. 本地域名服务器向顶级域名服务器 dns.net。
  5. 顶级域名服务器 dns.net,下一次应查询的权限域名服务器dns.xxsilence.net的IP地址。
  6. 本地域名服务器向权限域名服务器dns.xxsilence.net进行查询。
  7. 权限域名服务器dns.xxsilence.net告诉本地域名服务器,所查询的主机的IP地址。
  8. 本地域名服务器最后把查询结果告诉主机。

NSLOOKUP

  1. type=a、mx、ns、any

  2. 或者使用 q 。(q = type)

  3. 组合使用

    1
    nslookup -type=ns example.com 156.154.70.22
  • 主机解析 Cname(别名记录)
1
root@kali:~# nslookup
  • 只查询 A 记录
1
2
> set type=a
> www.sina.com

在这里插入图片描述

  • 只查询 mx 记录
1
2
> set type=mx
> sina.com
1
2
3
4
5
# 查邮件交换服务器的IP地址
> set type=a
> freemx1.sinamail.sina.com.cn
> freemx2.sinamail.sina.com.cn
> freemx3.sinamail.sina.com.cn.
  • 查询域名服务器名称
1
2
> set type=ns
> sina.com
1
2
3
4
5
6
7
# 查询域名服务器的IP地址
> set type=a
> ns1.sina.com.
> ns4.sina.com.
> ns3.sina.com.cn.
> ns4.sina.com.cn.
> ns1.sina.com.cn.
  • 查询 PTR 记录
1
2
> set type=ptr
> 202.108.3.242

在这里插入图片描述

1
2
3
# 指定域名服务器之后,两次结果不同
> server 8.8.8.8
> www.sina.com
  • 指定 type 为 any
1
2
> set type=any
> sina.com
1
2
3
text = "v=spf1 include:spf.sinamail.sina.com.cn -all"
# spf 记录:反垃圾邮件记录
# 在接收邮件的时候进行反向域名解析,查询比对这个记录,来确认是否是垃圾邮件
  • 组合使用
1
2
3
4
5
6
7
8
9
10
11
12
# 默认使用 /etc/resolv.conf 文件的域名服务器
root@kali:~# cat /etc/resolv.conf
domain localdomain
search localdomain
nameserver 10.10.10.2

root@kali:~# nslookup -q=any 163.com
Server: 10.10.10.2
Address: 10.10.10.2#53

# 指定域名服务器
root@kali:~# nslookup -q=any 163.com 114.114.114.114

被动信息——dig

1.DIG
  • dig @8.8.8.8 www.sina.com mx
  • dig www.sina.com any
  • 反向查询:dig +noall +answer -x 8.8.8.8
  • bind版本信息: dig +noall +answer txt chaos VERSION.BIND @ns3.dnsv4.com
  • DNS追踪: dig +trace example.com
  • 抓包比较递归查询、迭代查询过程的区别

1.默认使用 /etc/resplv.conf 指定的域名服务器

1
2
3
4
5
6
7
8
9
10
root@kali:~# nslookup sina.com -type=any 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: sina.com
Address: 66.102.251.33

#默认使用 /etc/resplv.conf 指定的域名服务器
root@kali:~# dig sina.com any
1
2
# 指定域名服务器
root@kali:~# dig sina.com any @8.8.8.8
1
2
3
4
# 尝试指定不同的域名服务器
root@kali:~# dig sina.com any @202.106.2.20
root@kali:~# dig sina.com any @114.114.114.114
root@kali:~# dig sina.com any @8.8.8.8

2.迭代别名记录查询

1
2
3
4
5
6
7
# 修改默认域名服务器
root@kali:~# cat /etc/resolv.conf
domain localdomain
search localdomain
nameserver 114.114.114.114

root@kali:~# dig mail.163.com any

3.一些参数

  • +noall:不显示信息
  • +answer:显示结果
1
2
3
root@kali:~# dig +noall +answer mail.163.com any
mail.163.com. 131 IN CNAME mail163.ntes53.netease.com.
root@kali:~# dig +noall +answer mail.163.com any | awk '{print $5}'

4.反向查询

1
root@kali:~# dig 163.com
1
2
# 反向查询 PTR记录
root@kali:~# dig -x 123.58.180.8

5.查询bind版本信息

1
2
3
# 使用 dig 默认只会查询当前 fqdn 名称,不会查询所有的记录
# dig 可以查询 bind 版本信息,根据 bind 漏洞,就可以全部获取 DNS 服务器权限
root@kali:~# dig sina.com any
1
2
3
# 查询结果为空(被隐藏)
root@kali:~# dig +noall +answer txt chaos VERSION.BIND @ns2.sina.com.
VERSION.BIND. 0 CH TXT " "

6.DNS追踪

1
2
3
# 跟踪过程:直接迭代查询,不经过本地缓存域名0服务器(从根域开始)

root@kali:~# dig +trace 163.com
1
抓包比较递归查询、迭代查询过程的区别

在这里插入图片描述

2.区域传送

1.区域传送:在本域的各个域名服务器之间进行信息同步

2.区域传送

1
2
3
# dig @ns1.example.com example.com axfr

root@kali:~# dig sina.com any
1
root@kali:~# dig @ns2.sina.com sina.com axfr

在这里插入图片描述

1
2
3
# host -T -l sina.com 8.8.8.8

root@kali:~# host -T -l sina.com ns2.sina.com.

在这里插入图片描述

3.帮助文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
root@kali:~# dig -h
Usage: dig [@global-server] [domain] [q-type] [q-class] {q-opt}
{global-d-opt} host [@local-server] {local-d-opt}
[ host [@local-server] {local-d-opt} [...]]
Where: domain is in the Domain Name System
q-class is one of (in,hs,ch,...) [default: in]
q-type is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a]
(Use ixfr=version for type ixfr)
q-opt is one of:
-4 (use IPv4 query transport only)
-6 (use IPv6 query transport only)
-b address[#port] (bind to source address/port)
-c class (specify query class)
-f filename (batch mode)
-i (use IP6.INT for IPv6 reverse lookups)
-k keyfile (specify tsig key file)
-m (enable memory usage debugging)
-p port (specify port number)
-q name (specify query name)
-t type (specify query type)
-u (display times in usec instead of msec)
-x dot-notation (shortcut for reverse lookups)
-y [hmac:]name:key (specify named base64 tsig key)
d-opt is of the form +keyword[=value], where keyword is:
+[no]aaflag (Set AA flag in query (+[no]aaflag))
+[no]aaonly (Set AA flag in query (+[no]aaflag))
+[no]additional (Control display of additional section)
+[no]adflag (Set AD flag in query (default on))
+[no]all (Set or clear all display flags)
+[no]answer (Control display of answer section)
+[no]authority (Control display of authority section)
+[no]badcookie (Retry BADCOOKIE responses)
+[no]besteffort (Try to parse even illegal messages)
+bufsize=### (Set EDNS0 Max UDP packet size)
+[no]cdflag (Set checking disabled flag in query)
+[no]class (Control display of class in records)
+[no]cmd (Control display of command line)
+[no]comments (Control display of comment lines)
+[no]cookie (Add a COOKIE option to the request)
+[no]crypto (Control display of cryptographic fields in records)
+[no]defname (Use search list (+[no]search))
+[no]dnssec (Request DNSSEC records)
+domain=### (Set default domainname)
+[no]dscp[=###] (Set the DSCP value to ### [0..63])
+[no]edns[=###] (Set EDNS version) [0]
+ednsflags=### (Set EDNS flag bits)
+[no]ednsnegotiation (Set EDNS version negotiation)
+ednsopt=###[:value] (Send specified EDNS option)
+noednsopt (Clear list of +ednsopt options)
+[no]expire (Request time to expire)
+[no]fail (Don't try next server on SERVFAIL)
+[no]header-only (Send query without a question section)
+[no]identify (ID responders in short answers)
+[no]idnout (convert IDN response)
+[no]ignore (Don't revert to TCP for TC responses.)
+[no]keepopen (Keep the TCP socket open between queries)
+[no]mapped (Allow mapped IPv4 over IPv6)
+[no]multiline (Print records in an expanded format)
+ndots=### (Set search NDOTS value)
+[no]nsid (Request Name Server ID)
+[no]nssearch (Search all authoritative nameservers)
+[no]onesoa (AXFR prints only one soa record)
+[no]opcode=### (Set the opcode of the request)
+[no]qr (Print question before sending)
+[no]question (Control display of question section)
+[no]rdflag (Recursive mode (+[no]recurse))
+[no]recurse (Recursive mode (+[no]rdflag))
+retry=### (Set number of UDP retries) [2]
+[no]rrcomments (Control display of per-record comments)
+[no]search (Set whether to use searchlist)
+[no]short (Display nothing except short
form of answer)
+[no]showsearch (Search with intermediate results)
+[no]sigchase (Chase DNSSEC signatures)
+[no]split=## (Split hex/base64 fields into chunks)
+[no]stats (Control display of statistics)
+subnet=addr (Set edns-client-subnet option)
+[no]tcp (TCP mode (+[no]vc))
+timeout=### (Set query timeout) [5]
+[no]topdown (Do +sigchase in top-down mode)
+[no]trace (Trace delegation down from root [+dnssec])
+trusted-key=#### (Trusted Key to use with +sigchase)
+tries=### (Set number of UDP attempts) [3]
+[no]ttlid (Control display of ttls in records)
+[no]ttlunits (Display TTLs in human-readable units)
+[no]unknownformat (Print RDATA in RFC 3597 "unknown" format)
+[no]vc (TCP mode (+[no]tcp))
+[no]zflag (Set Z flag in query)
global d-opts and servers (before host name) affect all queries.
local d-opts and servers (after host name) affect only that lookup.
-h (print help and exit)
-v (print version and exit)


root@kali:~# host -h
host: illegal option -- h
Usage: host [-aCdilrTvVw] [-c class] [-N ndots] [-t type] [-W time]
[-R number] [-m flag] hostname [server]
-a is equivalent to -v -t ANY
-c specifies query class for non-IN data
-C compares SOA records on authoritative nameservers
-d is equivalent to -v
-i IP6.INT reverse lookups
-l lists all hosts in a domain, using AXFR
-m set memory debugging flag (trace|record|usage)
-N changes the number of dots allowed before root lookup is done
-r disables recursive processing
-R specifies number of retries for UDP packets
-s a SERVFAIL response should stop query
-t specifies the query type
-T enables TCP/IP mode
-v enables verbose output
-V print version number and exit
-w specifies to wait forever for a reply
-W specifies how long to wait for a reply
-4 use IPv4 query transport only
-6 use IPv6 query transport only

被动信息收集-DNS字典爆破

1.DNS字典简介
1
2
3
4
5
- fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt
- dnsenum -f dnsbig.txt -dnsserver 8.8.8.8 sina.com -o sina.xml
- dnsmap sina.com -w dns.txt
- dnsrecon -d sina.com --lifetime 10 -t brt -D dnsbig.txt
- dnsrecon -t std -d sina.com
2.fierce
1
2
3
4
5
root@kali:~# dpkg -L fierce
/usr/share/fierce/hosts.txt

root@kali:~# cp /usr/share/fierce/hosts.txt wordlist.txt -f
root@kali:~# fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist wordlist.txt
3.dnsenum
1
2
3
4
5
root@kali:~# dpkg -L dnsenum
/usr/share/dnsenum/dns.txt

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
1
2
3
4
5
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
1
2
3
4
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注册信息

1.在网页查询

在这里插入图片描述

https://www.afrinic.net/

http://www.apnic.net/

https://www.arin.net

https://www.iana.com

2.使用

1
root@kali:~# whois sina.com
1
root@kali:~# whois wooyun.org
1
root@kali:~# whois -h whois.apnic.net 192.0.43.10

二、搜索引擎

1.简介
  • 公司新闻动态
  • 重要雇员信息
  • 机密文档/网络拓扑
  • 用户名密码
  • 目标系统软硬件技术架构

SHODAN:

1.简介

常见filter:

  • net
1
net:8.8.8.0/24
  • city
1
city:Beijing
  • country(CN、US)
1
country:US
  • port(80、21、22、23)
1
port:80
  • os
1
os:linux
  • Hostname(主机或域名)
1
hostname:www.baidu.com

GOOGLE搜索

1.简介
  • inurl:“level/15/exec/-/show”
  • intitle:“netbotz appliance” “ok”
  • inurl /admin/login.php
  • inurl:qq.txt
  • filetype:xls “username | password“
  • inurl:ftp “password” filetype:xls site:baidu.com
  • Service.pwd
  • http://exploit-db.com/google-dorks

YANDEX

1.简介

查询用户信息

1.邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Usage: theharvester options 

-d: Domain to search or company name
-b: data source: google, googleCSE, bing, bingapi, pgp, linkedin,
google-profiles, jigsaw, twitter, googleplus, all

-s: Start in result number X (default: 0)
-v: Verify host name via dns resolution and search for virtual hosts
-f: Save the results into an HTML and XML file (both)
-n: Perform a DNS reverse query on all ranges discovered
-c: Perform a DNS brute force for the domain name
-t: Perform a DNS TLD expansion discovery
-e: Use this DNS server
-l: Limit the number of results to work with(bing goes from 50 to 50 results,
google 100 to 100, and pgp doesn't use this option)
-h: use SHODAN database to query discovered hosts

Examples:
theharvester -d microsoft.com -l 500 -b google -h myresults.html
theharvester -d microsoft.com -b pgp
theharvester -d microsoft -l 200 -b linkedin
theharvester -d apple.com -b googleCSE -l 500 -s 300

root@kali:~# theharvester -d microsoft.com -b pgp

2.文件

  • Usage: metagoofil options
1
2
3
4
5
6
7
-d: domain to search
-t: filetype to download (pdf,doc,xls,ppt,odp,ods,docx,xlsx,pptx)
-l: limit of results to search (default 200)
-h: work with documents in directory (use "yes" for local analysis)
-n: limit of files to download
-o: working directory (location to save downloaded files)
-f: output file
  • Examples
    • metagoofil -d apple.com -t doc,pdf -l 200 -n 50 -o applefiles -f results.html
    • metagoofil -h yes -o applefiles -f results.html (local dir analysis)

CUPP制作个人专属字典

1.简介
  • 按个人信息生成其专属的密码字典
2.安装
1
2
git clone https://github.com/Mebus/cupp.git
python cupp.py -i

图片信息

1.exif (linux)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
用法: exif [选项...] 文件
-v, --version 显示软件版本
-i, --ids 显示 IDs,以代替信息标识名称
-t, --tag=信息标识 选择信息标识
--ifd=IFD 选择 IFD
-l, --list-tags 列出所有 EXIF 信息标识
-|, --show-mnote 显示 MakerNote 的内容
--remove 删除信息标识或是 ifd
-s, --show-description 显示信息标识说明
-e, --extract-thumbnail 解出缩略图
-r, --remove-thumbnail 删除缩略图
-n, --insert-thumbnail=FILE 将 FILE 作为缩略图插入
--no-fixup 不修复文件中存在的标识信息
-o, --output=FILE 将数据写入 FILE
--set-value=STRING tag 值
-c, --create-exif 如果 EXIF 数据不存在就创建它
-m, --machine-readable 以机器可读的格式(tab 分隔)输出
-w, --width=宽度 输出宽度
-x, --xml-output 以 XML 格式输出
-d, --debug 显示调示信息

帮助选项:
-?, --help 显示此帮助信息
--usage 显示简短的使用信息