被动与主动侦察

在计算机系统和网络出现之前,孙子兵法在孙子兵法中教导说:“知己知彼,必胜不疑。” 如果您扮演攻击者的角色,则需要收集有关目标系统的信息。如果你扮演防御者的角色,你需要知道你的对手会发现你的系统和网络的什么

侦察(recon)可以定义为收集有关目标信息的初步调查。这是统一杀伤链在系统上获得初步立足点的第一步。我们将侦察分为:

  • 被动侦察
  • 主动侦察

在被动侦察中,您依赖于公开可用的知识。您无需直接与目标接触即可从公开可用资源中获取这些知识。把它想象成你从远处看着目标领土,而不是踏上那个领土

被动侦察活动包括许多活动,例如:

  • 从公共 DNS 服务器查找域的DNS记录
  • 检查与目标网站相关的招聘广告
  • 阅读有关目标公司的新闻文章

另一方面,主动侦察无法如此谨慎地实现。它需要与目标直接接触。把它想象成你检查门窗上的锁,以及其他潜在的入口点

主动侦察活动的例子包括:

  • 连接到公司服务器之一,例如HTTPFTPSMTP
  • 致电公司试图获取信息(社会工程学
  • 冒充修理工进入公司场所

考虑到主动侦察的侵入性,除非获得适当的法律授权,否则很快就会陷入法律困境

被动侦查

我们将学习三个命令行工具:

whois查询 WHOIS 服务器
nslookup查询DNS服务器
dig查询DNS服务器
我们使用whois查询 WHOIS 记录,而我们使用nslookupdig查询DNS数据库记录。这些都是公开可用的记录,因此不会提醒目标。

我们还将学习两种在线服务的用法:

  • DNSDumpster
  • Shodan.io

这两个在线服务使我们能够在不直接连接到目标的情况下收集有关目标的信息

Whois

WHOIS 是遵循RFC 3912规范的请求和响应协议。WHOIS 服务器在TCP端口 43 上侦听传入请求。域名注册商负责维护其租用域名的 WHOIS 记录。WHOIS 服务器回复与所请求域相关的各种信息。特别感兴趣的是,我们可以学习:

  • 注册商:域名是通过哪个注册商注册的?
  • 注册人联系方式:姓名、单位、地址、电话等。(除非通过隐私服务隐藏)
  • 创建、更新和到期日期:域名首次注册的时间是什么时候?最后一次更新是什么时候?什么时候需要更新?
  • 名称服务器:请求哪个服务器来解析域名?

要获取这些信息,我们需要使用whois客户端或在线服务。许多在线服务提供whois信息;但是,使用本地 whois 客户端通常更快、更方便

语法是whois DOMAIN_NAME,其中DOMAIN_NAME是您尝试获取更多信息的域。考虑以下示例执行whois tryhackme.com

user@TryHackMe$ whois tryhackme.com
[Querying whois.verisign-grs.com]
[Redirected to whois.namecheap.com]
[Querying whois.namecheap.com]
[whois.namecheap.com]
Domain name: tryhackme.com
Registry Domain ID: 2282723194_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.namecheap.com
Registrar URL: http://www.namecheap.com
Updated Date: 2021-05-01T19:43:23.31Z
Creation Date: 2018-07-05T19:46:15.00Z
Registrar Registration Expiration Date: 2027-07-05T19:46:15.00Z
Registrar: NAMECHEAP INC
Registrar IANA ID: 1068
Registrar Abuse Contact Email: abuse@namecheap.com
Registrar Abuse Contact Phone: +1.6613102107
Reseller: NAMECHEAP INC
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Registry Registrant ID: 
Registrant Name: Withheld for Privacy Purposes
Registrant Organization: Privacy service provided by Withheld for Privacy ehf
[...]
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
>>> Last update of WHOIS database: 2021-08-25T14:58:29.57Z <<<
For more information on Whois status codes, please visit https://icann.org/epp

我们可以看到很多信息;我们将按照显示的顺序检查它们。首先,我们注意到我们被重定向到whois.namecheap.com以获取我们的信息。在这种情况下,目前namecheap.com正在维护该域名的 WHOIS 记录。此外,我们可以看到创建日期以及最后更新日期和到期日期。

接下来,我们获取有关注册服务商和注册人的信息。我们可以找到注册人的姓名和联系信息,除非他们使用某些隐私服务。虽然上面没有显示,但我们得到了这个域的管理员和技术联系人。最后,如果我们有任何DNS记录要查找,我们会看到我们应该查询的域名服务器。

可以检查收集到的信息以发现新的攻击面,例如社会工程或技术攻击。例如,根据渗透测试的范围,您可能会考虑对管理员用户的电子邮件服务器或 DNS 服务器进行攻击,假设它们归您的客户所有并且在渗透测试的范围内。

需要注意的是,由于自动化工具滥用 WHOIS 查询来收集电子邮件地址,许多 WHOIS 服务都对此采取了措施。例如,他们可能会编辑电子邮件地址。此外,许多注册人订阅了隐私服务,以避免他们的电子邮件地址被垃圾邮件发送者收集并保护他们的信息的私密性

nslookup 和 dig

在前面的任务中,我们使用 WHOIS 协议来获取有关我们正在查找的域名的各种信息。特别是,我们能够从注册商那里获得DNS服务器。

使用 查找域名的 IP 地址nslookup,代表名称服务器查找。您需要发出命令nslookup DOMAIN_NAME,例如,nslookup tryhackme.com。或者,更一般地说,您可以使用nslookup OPTIONS DOMAIN_NAME SERVER. 这三个主要参数是:

  • OPTIONS 包含查询类型,如下表所示。例如,您可以使用AIPv4 地址和AAAAIPv6 地址。
  • DOMAIN_NAME 是您正在查找的域名。
  • SERVER 是您要查询的DNS服务器。您可以选择任何本地或公共 DNS 服务器进行查询。Cloudflare 提供1.1.1.11.0.0.1Google 提供8.8.8.88.8.4.4Quad9 提供9.9.9.9149.112.112.112。如果您想要 ISPDNS 服务器的替代方案,您可以选择更多的公共DNS服务器
查询类型 结果
A IPv4 地址
AAAA IPv6 地址
别名 规范名称
MX 邮件服务器
面向服务架构 授权开始
TXT TXT记录

例如,nslookup -type=A tryhackme.com 1.1.1.1(或者nslookup -type=a tryhackme.com 1.1.1.1因为它不区分大小写)可用于返回 tryhackme.com 使用的所有 IPv4 地址

user@TryHackMe$ nslookup -type=A tryhackme.com 1.1.1.1
Server:		1.1.1.1
Address:	1.1.1.1#53

Non-authoritative answer:
Name:	tryhackme.com
Address: 172.67.69.208
Name:	tryhackme.com
Address: 104.26.11.229
Name:	tryhackme.com
Address: 104.26.10.229

AAAAA 记录分别用于返回 IPv4IPv6 地址。这种查找有助于从渗透测试的角度了解。在上面的示例中,我们从一个域名开始,并获得了三个 IPv4 地址。如果这些 IP 地址在渗透测试的范围内,则可以进一步检查每个 IP 地址的不安全性

假设您想了解特定域的电子邮件服务器和配置。你可以发出nslookup -type=MX tryhackme.com. 这是一个例子:

user@TryHackMe$ nslookup -type=MX tryhackme.com
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
tryhackme.com	mail exchanger = 5 alt1.aspmx.l.google.com.
tryhackme.com	mail exchanger = 1 aspmx.l.google.com.
tryhackme.com	mail exchanger = 10 alt4.aspmx.l.google.com.
tryhackme.com	mail exchanger = 10 alt3.aspmx.l.google.com.
tryhackme.com	mail exchanger = 5 alt2.aspmx.l.google.com.

我们可以看到tryhackme.com当前的邮箱配置使用的是谷歌。由于 MX 正在查找邮件交换服务器,我们注意到当邮件服务器尝试发送电子邮件时@tryhackme.com,它将尝试连接到aspmx.l.google.com顺序为 1 的 。如果它繁忙或不可用,邮件服务器将尝试连接到下一个顺序邮件交换服务器,alt1.aspmx.l.google.comalt2.aspmx.l.google.com

Google 提供列出的邮件服务器;因此,我们不应期望邮件服务器运行易受攻击的服务器版本。但是,在其他情况下,我们可能会发现邮件服务器没有得到足够的保护或修补

当您继续对目标进行被动侦察时,这些信息可能会被证明是有价值的。您可以对其他域名重复类似的查询并尝试不同的类型,例如-type=txt. 谁知道您会在途中发现什么样的信息!

对于更高级的DNSdig查询和其他功能,如果您好奇的话,可以使用“Domain Information Groper”的首字母缩写词。让我们使用dig来查找 MX 记录并将它们与nslookup. 我们可以使用dig DOMAIN_NAME,但要指定记录类型,我们会使用dig DOMAIN_NAME TYPE。(可选)我们可以使用选择我们想要查询的服务器dig @SERVER DOMAIN_NAME TYPE

  • SERVER 是您要查询的DNS服务器。
  • DOMAIN_NAME 是您正在查找的域名。
  • TYPE 包含DNS记录类型,如前面提供的表中所示。
user@TryHackMe$ dig tryhackme.com MX

; <<>> DiG 9.16.19-RH <<>> tryhackme.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<

nslookup和的输出之间的快速比较dig表明dig返回了更多信息,例如默认情况下的 TTL(生存时间)。可以使用DNS服务器1.1.1.1命令就是dig @1.1.1.1 tryhackme.com MX