以一个域名为例,信息收集主要获取以下信息:

  • 该域名注册人
  • 与其关联的子域名
  • 测试该域名是否存在CDN加速,获取其真实IP
  • 获取其网络框架、服务器操作系统、Web容器等信息

信息收集分类

  • 主动信息收集

    主动信息收集通过相关工具扫描目标主机或网站。这种方式获取到的信息更为准确,且能获取到的信息更多,但缺点也比较明显。通过主动信息收集容易留明显的攻击访问痕迹,易发现和被溯源

  • 被动信息收集

    被动信息收集通过搜索引擎等公开渠道进行相关信息的检索收集信息,这种方式不直接与目标建立交互访问连接,避免了留下访问痕迹。被动信息收集的优缺点正好与主动信息收集的优缺点相反,被动信息收集不会留下访问痕迹以免被溯源发现,但收集到的信息依赖于搜索引擎,准确性和质量无法保证

whois 查询

whois协议是一种 基于TCP(默认端口43)的简单文本查询协议,其可以查询有关域名、IP地址、注册时间、AS编号等等信息(可能存在信息隐藏),由IETF RFC 3912定义,相关特点:

  • 数据格式:文本格式,非结构化
  • 查询方式: 单行查询,一次仅能查询一个对象(域名/IP)
  • 响应格式:非标准,因服务器和注册商不同而异
  • 安全性:明文传输,无加密、无认证

whois协议过程(简化版)

  1. 建立连接
    客户端连接到whois服务器的TCP43端口

常见whois服务器列表:

类型 组织/地区 whois服务器地址
域名 通用顶级域(.com/.net) whois.verisign-grs.com
域名 .org whois.pir.org
域名 .cn(中国) whois.pir.org
IP地址 北美(ARIN) whois.arin.net
IP地址 欧洲(RIPE NCC) whois.ripe.net
IP地址 亚洲(APNIC) whois.apnic.net
  1. 发送查询
    客户端发送一行域名或IP地址的文本信息(example.com\n)给服务器
  2. 服务器响应
    服务器返回包含域名/IP地址的注册信息文本(通常包括注册商、注册人、联系方式等)
  3. 关闭连接
    服务端返回信息后立即关闭连接

使用telnet模拟whois查询的例子:
image

在kali中使用whois工具

1
$ whois [-h/i/T] [whois.iana.org] [example.com/8.8.8.8]
  • -h:使用自定义的whois服务器
  • -i:指定需要返回的特定信息(whois -i domain example.com 查询域名)
  • -T:指定输出格式(whois -T query example.com)

image

也可以通过站长之家查询。站长之家是一个融合了多种查询工具(whois、whois反查、邮件反查、电话反查、ICP备案查询等)的网站

子域名查询

子域名为网站主域的二级或多级域名,一般安全措施低于主域,因此常常被作为红方渗透突破口,即使用人数较少、网站隐藏较深的脆弱资产。一般子域名查询方法有以下多种:

Searchdns网站查询

Search DNS是英国安全公司Netcraft提供的域名/IP查询业务网站,其访问大型网站比较有效,主要功能如下:

  • 子域名查询(基于历史 DNS 和 Netcraft 数据)
  • DNS记录信息
  • 网站托管服务商信息
  • 网站历史、技术堆栈

搜索引擎+Google hacking

可以使用Baidu/Google/Bing/Duckduckgo/等搜索引擎配合搜索匹配语法查找目标网站子域名。或者使用fofa网络空间测绘引擎搜索

本地工具类

  • 子域名挖掘机
    Windows环境下的GUI域名挖掘工具,数据源来自百度、搜狗、Google、Censys、Netcraft 等搜索引擎
  • wydomain
    wydomain是一款开源的子域名挖掘工具,基于 Python 编写,其数据来源是Google、Bing、FOFA、Shodan、Censys、DNSPod等网站。其不仅支持字典枚举查询方法,也支持API查询方法。kali环境下的安装与使用方式:
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
# 安装方法
$ git clone https://github.com/ring04h/wydomain.git
$ cd wydomain
$ pip install -r requirements.txt
# 字典查询
$ python dnsburte.py -h
usage: dnsburte.py [-h] [-t] [-d] [-f] [-o]

wydomian v 2.0 to bruteforce subdomains of your target domain.

optional arguments:
-h , --help show this help message and exit
-t , --thread thread count
-d , --domain domain name
-f , --file subdomains dict file name
-o , --out result out file
#API查询
$ python wydomain.py -h
usage: wydomain.py [-h] [-d] [-o]

wydomain v 2.0 to discover subdomains of your target domain.

optional arguments:
-h , --help show this help message and exit
-d , --domain domain name
-o , --out result out file

常用爆破字典:

字典名称 说明
default.csv top 200 子域名字典
dnstop.csv dnspod.com官方提供的top 2000条子域名字典
wydomain.csv wyodmian 1.0大字典 的top 3000子域名字典(非常高效)
  • theHarvester
    Kali Linux 自带的一款经典开源信息收集工具,不仅支持子域名,还能收集邮箱、用户名、IP 地址,其数据源为Google, Bing, Yahoo, Baidu, Hunter.io, Shodan 等,支持邮箱/子域名/IP/组织名信息收集
1
2
3
4
5
6
$ theHarvester [-d] [-b] [-l] [-f]
-d:目标域名
-b:使用的数据源(如 baidu、google、bing、shodan、crtsh)
-l:限制结果数量
-f:保存输出文件
$ theHarvester -d example.com -b baidu

出现An exception has occurred: Server disconnected报错信息时,说明 TheHarvester在请求某个数据源(如 Google、Bing、Shodan 等)时,被断开连接或远程服务器主动断开连接。该数据源可能存在请求频率检测行为,需要配置-l 检测次数参数或配置相关API

域名-IP类

  • ping 命令可以实现简单的域名查找IP地址功能
1
$ ping testfire.net
  • nslookup 命令行工具,主要用于查询域名DNS记录,即域名对应的IP地址,某个IP地址的域名(反向解析),查询域名MX、NS、TXT等记录,测试DNS工作状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ nslookup [参数 -type=A/MX/……] [目标域名/IP地址] [指定DNS服务器]
#DNS服务器信息
Server: 8.8.8.8
Address: 8.8.8.8#53
#查询返回信息
Non-authoritative answer:
Name: google.com
Address: 142.250.72.238

#nslookup工具还支持进入交互模式,可连续查找多个记录
$ nslookup
> set type=MX
> example.com
> set type=NS
> example.com
> exit

交互模式常用参数说明

参数 说明
set type=A 查询A记录(默认)
set type=MX 查询邮件交换记录
set type=NS 查询权威名称服务器
set type=TXT 查询TXT记录(SPF、DKIM、验证等)
set debug 显示详细信息
server [IP] 切换DNS服务器
  • dig 命令行工具可以查询详细的域名、IP 地址、DNS 记录等,常见的命令为
1
$ dig [域名] [记录类型] [选项]

 可以使用dig命令结合域传输漏洞,获取目标主域的子域名等等信息

1
2
$ dig @[目标权威DNS服务器域名] [目标域名] axfr
$ dig @a.iana-servers.net example.com axfr
  • dnsenum kali自带的字典爆破子域名工具,使用/usr/share/dnsenum/dns.txt默认字典,可以一并实现解析DNS、检测域传输漏洞、子域名爆破等等功能
1
$ dnsenum testfire.net

image

文件信息泄露

crossdomain.xml文件会列出授权的域,允许来自其他域的 Flash 内容或应用进行请求,这同时也直接暴露了相关子域名信息。crossdomain.xml文件一般存放在网站根目录

网站指纹信息收集

  1. 操作系统探针

    • 大小写判断系统
      windows系统对大小写不敏感,但linux敏感。因此可以将http://xxx.com/index.php改为http://xxx.com/index.phP,通过访问结果判断服务器类型
    • 服务开启判断
      IIS默认开启80(HTTP)端口和3389(RDP)端口,而linux默认开启22(SSH)端口
    • ttl值判断
  2. 数据库类型探针

    • nmap端口扫描(基本都能扫出来)
    • 搭建组合判断法
      windows:mssql、access、mysql
      linux: mysql
  3. cms框架指纹识别
    常见的cms:dedecms织梦、thinkphp、wordpress、Discuz、joomla、drupal等。可以根据网站底部版权信息、powerby等判断

  4. 在线指纹识别工具

    好像工具失效了