Skip to content

Latest commit

 

History

History
1197 lines (830 loc) · 51.5 KB

File metadata and controls

1197 lines (830 loc) · 51.5 KB

二、先进侦察技术

执行渗透测试时,可操作的信息是成功的关键。互联网上可获得的公共数据数量惊人,筛选所有数据以找到有用的信息可能是一项艰巨的任务。幸运的是,有一些工具可以帮助收集和整理这些丰富的知识。在本章中,我们将回顾其中的一些工具,并将重点介绍如何使用这些信息来确保渗透测试高效、集中和有效。涵盖的主要主题包括:

  • 什么是侦察?我们为什么需要侦察

  • 侦察类型

  • 使用 DNS 快速识别潜在目标

  • 使用搜索引擎获取数据

  • Using metadata to your advantage

    在本章中,我们将使用 IANA 拥有和维护的域名 example.com, example.orgexample.net。请勿将其用于练习目的。

    这些域名用于表示您拥有和/或有权将用作测试目标的域名。理想情况下,您可以使用 DNS 服务器建立一个分段和受控的虚拟实验室,允许您在空闲时测试所有这些命令。

侦察概论

当您很好地掌握了被测试的环境时,渗透测试是最有效的。有时候,雇佣你的公司会向你提供这些信息,有时候,你需要出去进行侦察,以了解哪怕是最琐碎的东西。无论哪种情况,在进行任何工作(包括侦察)之前,确保在接战规则中明确范围。

许多公司不知道攻击者可以在野外找到和使用哪些类型的数据。渗透测试人员需要将此信息公之于众。您将向业务部门提供真实数据,然后他们可以根据其风险偏好采取行动。您能够找到的信息因目标而异,但通常包括 IP 范围、域名、电子邮件地址、公共财务数据、组织信息、使用的技术、职务、电话号码等项目。有时,您甚至可以通过互联网找到公开的机密文件或私人信息。在将单个数据包发送到组织的网络之前,可以对公司进行全面分析。

被动侦察阶段的主要目标是收集尽可能多的可操作数据,同时留下很少有人搜索数据的指标。

被动侦察避免与目标网络直接接触。

获得的信息将用于重新创建您在测试时预期会遇到的系统类型,提供执行有效的社会工程攻击或物理破坏所需的信息,并确定是否存在仍然使用默认用户名和密码的易受攻击的外部设备,如路由器或交换机。在高度安全的环境中,事情可能不会那么容易,但在执行渗透测试时,不建议进行假设。在处理支持数千用户的复杂网络配置时,有时会忽略一些常识。

本书中描述的侦察与 PTE 中的“情报收集”类别密切相关。

我们将重点关注的侦察类型包括**OSINT(开源情报)**和足迹。我们使用的所有资源都将是免费的,但需要注意的是,互联网上也有可以使用的付费网站。

开源情报(OSINT):包括收集、处理和分析公开可用的数据,并将其转化为可操作的信息。公开可用的数据源包括但不限于:

  • 来自法院、税务表格等的公共数据
  • 搜索引擎
  • 会议
  • 学术来源
  • 博客
  • 研究报告
  • 来自图片、可执行文件、文档等的元数据
  • 公开提供的文件

封装外形:用于非侵入式枚举网络环境。结果用于定位可能存在的漏洞,并提供有关目标网络上运行的系统、软件和服务类型的信息。在执行非侵入式封装外形时可以获得的信息类型包括:

  • 域名解析服务器
  • IP 范围
  • 横幅
  • 操作系统
  • 确定是否使用了 IDS/IPS
  • 使用的技术
  • 网络设备类型

在进行渗透测试时,这些丰富的信息非常有用。

侦察工作流程

按程序进行侦察最有效。执行侦察时应遵循三个主要阶段:

Reconnaissance workflow

作为如何使用此工作流的示例,让我们假设我们正在进行涉及虚构公司的渗透测试。这家公司公开提供了有关其外部路由器的信息。

  • **第 1 阶段:**我们能够验证在初始规划阶段提供的 IP 范围实际上属于我们的客户。
  • **第二阶段:**通过数据筛选,我们发现有几个路由器配置为默认状态,并且登录凭证从未更改。我们验证信息是否准确,然后进入下一阶段。
  • **第 3 阶段:**根据收集到的验证信息,我们确定在网络上获得 toe 控制的最佳方法是破坏外部路由器并从那里开始工作。

我们已经演示了如何使用此工作流的简化示例。在现实世界中,会有许多变量影响您对目标系统的决策。在测试的侦察阶段收集的信息将是渗透测试成功和彻底程度的决定性因素。

DNS 侦察

**域名系统(DNS)**可以在侦察阶段提供有价值的数据。如果您还不了解 DNS,您可能需要花一些时间来很好地掌握该服务及其工作方式。在非常的基础级别,DNS 用于将域名转换为 IP 地址。幸运的是,有许多工具非常适合从名称服务器提取所需的数据。您能够收集的信息示例包括:

|

记录

|

说明

| | --- | --- | | CNAME | 别名,用于将多个名称绑定到单个 IP。一个 IP 地址可以有多个与之关联的 CNAME 记录。 | | A. | 用于将域名或子域名转换为 32 位 IP 地址。它还可以存储其他有用的信息。 | | MX | 将域名绑定到关联的邮件服务器。 |

也可以从 DNS 工具收集其他记录类型;表中列出的记录是最流行的,通常也是最有用的。

DNS 侦察被视为活动足迹,因为您需要与客户拥有的资产交互以接收信息。

Nslookup-当你需要它时,它就在那里

nslookup是一种 DNS 查询工具,可用于从域名解析 IP 地址,反之亦然。此工具用于查询任何给定名称服务器的特定记录。虽然 nslookup不是我们测试工具包中最强大的 DNS 工具,但您可以相信,它将在您需要时安装。 nslookup是跨平台的,在大多数操作系统上都会预装。

在下面的示例中,我们修改了命令输出,以最大限度地提高学习体验。

我们打算帮助您理解输出的格式和含义。在许多情况下,我们用 example.com/net/org和虚构的 IP 地址(通常是不可路由的 IP)替换了原来使用的域名。不要期望直接复制输出,而是关注所描述的概念,然后在您有适当权限对其执行测试的域和服务器上实践这些步骤。

默认输出

为了快速查找域名 example.com的 IP 地址,我们在回溯终端会话中输入以下内容:

# nslookup example.com 

您将看到以下格式的输出:

Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: example.com
Address: 127.1.72.107

8.8.8.8上的服务器是谷歌提供的公共 DNS 服务器™. #53 UDP 是发出请求时使用的端口。前面的示例输出将指示 example.com解析为 127.1.72.107

任何以 127.x.x.x 开头的 IP 地址都将重定向到本地主机。在查看 DNS 记录和选择潜在目标时,请注意这一点。

更改名称服务器

可以使用其他 DNS 名称服务器验证结果。在以下示例中,我们将 DNS 名称服务器更改为 156.154.70.22,这是 Comodo Secure DNS®提供的名称服务器的 IP 地址,用于向公众提供安全浏览。在执行测试时,列出几个公开可用的 DNS 服务器是有益的。当处理受损的 DNS 服务器时,这些可以用作某种健全性检查。我们还查询与 example.com:关联的名称服务器

root@bt:~# nslookup
> server
Default server: 8.8.8.8
Address: 8.8.8.8#53
Default server: 8.8.4.4
Address: 8.8.4.4#53
> server 156.154.70.22 
Default server: 156.154.70.22
Address: 156.154.70.22#53
> set type=ns
> example.com
Server: 156.154.70.22
Address: 156.154.70.22#53
Non-authoritative answer:
example.com nameserver = ns51.example.com.
example.com nameserver = ns52.example.com.

本例首先初始化 nslookup,然后在 NSLOOKUP 命令控制台中建立变量。我们首先输入 server,显示 8.8.8.8的当前值。之后,我们决定使用不同的服务器,因此我们键入了 server 156.154.70.22,因为我们特别关注 example.com 的名称服务器。我们通过输入 set type=ns将类型定义为ns(名称服务器)。

一旦设置好变量,我们就可以通过输入域名来查询无数个域名,比如 example.com并按回车

要离开控制台,请键入 exit,然后按进入

到目前为止,我们所做的一切都可以简化为一个命令行:

root@bt:~# nslookup -type=ns example.com 156.154.70.22 

我们已经调用了 nslookup,使用了 type=ns选项来拉取关联的域名服务器,提供了我们想要的域名信息为 example.com,最后我们指定使用 156.154.70.22作为我们的解析 DNS 域名服务器。这将产生以下输出:

Server: 156.154.70.22
Address: 156.154.70.22#53
Non-authoritative answer:
example.com nameserver = ns51.example.com.
example.com nameserver = ns52.example.com.

提示

任何时候执行命令行工具时,都可以将输出发送到一个文件以供以后查看。当您开始构建自己的脚本以自动化测试时,这一点尤为重要。例如, nslookup example.com > example-resolv.txt

创建自动化脚本

如前所述, nslookup是一个很好的选择,因为它通常预装在所有平台上。例如,如果您使用的是轴心点,您可以放心,这是一个默认情况下可用的工具。由于 nslookup可以在单个命令行提示符下运行,因此您可以轻松创建一个脚本,自动提取有关许多域名或主机名的信息,然后将输出放入文本文件中。

  1. 在回溯中,打开一个终端会话,键入 nano AutoM8并按进入

  2. 在 nano 编辑器中,键入以下代码,在其中我们使用 #!/bin/sh启动bourneshell,将 DomainNames.txt文件中的每一行项目解析为 HOSTNAME变量,然后输出字符串“Getting name servers for”,后跟当前正在解析的 HOSTNAME。然后,我们使用 nslookup命令在 8.8.8.8:

    #!/bin/sh
    for HOSTNAME in `cat DomainNames.txt``
    do
    echo "Getting name servers for [$HOSTNAME]"
    nslookup -type=ns $HOSTNAME 8.8.8.8
    done
    
    

    使用指定的公共名称服务器执行名称服务器查找

  3. Ctrl+O然后按回车确认保存您的数据。

  4. Ctrl+X退出返回终端屏幕。

  5. 输入 nano DomainNames.txt

  6. In nano enter the following:

    替换您有权测试的域,而不是下面列表中使用的 example.com/net/org域!!!

    example.com
    example.net
    example.org
    
    
  7. Ctrl+O键,然后按Ctrl+X键保存文件。

  8. 在终端中,我们需要通过键入:

    # chmod +x AutoM8 
    
    

    使 AutoM8文件可执行

  9. 现在通过键入:

    # ./AutoM8 
    
    

    来运行 AutoM8脚本

  10. 您应该看到类似以下格式的输出:

```
root@bt:~# ./AutoM8 
"Getting name servers for [example.com]"
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.com nameserver = ns52.example.com.
example.com nameserver = ns51.example.com.
Authoritative answers can be found from:
"Getting name servers for [example.net]"
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.net nameserver = ns51.example.com.
example.net nameserver = ns52.example.com.
Authoritative answers can be found from:
"Getting name servers for [example.org]"
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.org nameserver = ns52.example.com.
example.org nameserver = ns51.example.com.

```
  1. 现在输入:
```
# ./AutoM8 > NameServerListing.txt
# cat NameServerListing.txt

```

您现在已经创建了一个名为 AutoM8的简单脚本,可用于将输出附加到您喜欢的任何文件中。我们通过使用 cat查看 NameServerListing.txt文件验证了这一点。

提示

挑战自己,使前面的代码更加高效和可重用。您将在本书中学习的一些工具可以通过这种方式实现自动化。尝试使用 grepawk以更清晰的方式解析结果。

理想情况下,您将使用具有 XML 输出的工具,以便可以轻松地将结果导入 MagicTree 或 Dradis,但在每天执行渗透测试时,您将希望了解如何为自己的特殊需要创建一些基本工具。Shell 脚本可以非常强大;python 是许多渗透测试人员的首选工具,甚至更好。

每个渗透测试人员至少应该知道一种基本脚本语言。

我们学到了什么?

如果您查看各种示例的输出,您应该注意到我们已经了解了很多关于我们的目标的知识。我们知道使用了哪些名称服务器,并且我们知道所有三个域都使用相同的名称服务器。我们还验证了我们已解析到特定 IP 地址的域名。这是在渗透测试的后期阶段非常有用的数据类型。现在让我们继续讨论一些我们可以使用的更强大的工具。

域信息搜索器(Dig)

**域信息搜索器(Dig)**是 nslookup的强大替代品。它可以运行命令行选项,也可以在需要执行多个查找时将文件直接导入其中。除非指定了名称服务器,否则 Dig 将使用 /etc/resolve.conf文件在名称服务器之间循环。Dig 有一个很长的选项列表,可以用来收集你想要的东西。

提示

有一个网站 http://www.digwebinterface.com/ 为公众提供挖掘功能。

默认输出

从终端命令行从回溯类型 dig example.com启动基本命令。下面是在作者拥有的域上运行此命令的示例。

根据目标域的不同,命令的输出可能会有所不同。

如果您按照命令进行操作,您将使用您拥有或有权测试的域名替换 example.com

root@bt:~# dig example.com 
; <<>> DiG 9.7.0-P1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56376
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 78294 IN A 10.1.1.1
;; Query time: 32 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun *** * **:**:** ****
;; MSG SIZE rcvd: 45

此详细输出表示 Dig 的版本,默认情况下,如果存在任何错误,将选择哪些全局选项, example.comA记录当然包含 10.1.1.1。我们还了解到,当前使用的名称服务器位于 8.8.8.8。此外,我们还提供了查询的运行时间,这在以后拼接数据时非常有用。DNS 记录可以更改,并且具有以前运行的 Dig 的日期戳可能很有用。

让我们再深入一点。我们将提取 example.com域的所有记录:

# dig +qr www.example.com any 

由于 any选项,这将拉取 example.com域可用的所有 DNS 记录, +qr开关将打印传出查询。结果将包括前面看到的页眉和页脚数据,但也将列出以下记录:

;; QUESTION SECTION:
;www.example.com. IN ANY
;; ANSWER SECTION:
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN MX 10 mx111.example.com.
example.com. 86400 IN A 127.208.72.107
example.com. 86400 IN NS ns2.example.com.
example.com. 86400 IN SOA ns2.example.com. hostmaster.example.com. 2011020501 28800 7200 604800 86400
example.com. 86400 IN MX 10 mx99.example.com.

使用挖掘进行区域转移

区域传输(AXFR)允许您一次从名称服务器中提取整个记录集。如果成功,将通过一个简单的命令向您提供名称服务器上所有信息的列表。在安全环境中,不太可能启用区域传输,因为它会向攻击者提供大量有关主机名和其他信息的数据。我们现在将回顾在域 example.com上执行区域转移所需的步骤。与本书中讨论的所有内容一样,您需要获得适当的许可才能为您的客户执行此类活动。

  1. 打开回溯终端窗口。

  2. 键入以下内容并按键输入:

    # dig @ns1.example.com example.com axfr 
    
    
  3. Review the results:

    ; <<>> DiG 9.7.0-P1 <<>> @ns1.example.com example.com axfr
    ; (1 server found)
    ;; global options: +cmd
    ; Transfer failed.
    
    

    我们的结果表明传输失败。在这种情况下,名称服务器的管理员已正确禁用执行区域传输的功能。现在,我们将在同一个域上尝试另一个名称服务器,并查看它是否也禁用了区域传输。

  4. 类型:

    # dig @ns16.example.com example.com axfr 
    
    
  5. 审查结果:

    ; <<>> DiG 9.7.0-P1 <<>> @ns16.zoneedit.com example.com axfr
    ; (1 server found)
    ;; global options: +cmd
    example.com. 7200 IN SOA ns16.zoneedit.com. soacontact.zoneedit.com. 2011409732 2400 360 1209600 300
    example.com. 7200 IN NS ns14.zoneedit.com.
    example.com. 7200 IN NS ns16.zoneedit.com.
    mail.example.com. 300 IN MX 1 mail1.example.com.
    testmachine.example.com. 300 IN A 192.168.1.1
    irc.example.com. 300 IN A 192.168.1.1
    mail1.example.com. 300 IN A 192.168.1.1
    note.example.com. 300 IN TXT "This is an example of a note"
    example.com. 7200 IN SOA ns16.zoneedit.com. soacontact.zoneedit.com. 2011409732 2400 360 1209600 300
    ;; Query time: 383 msec
    ;; SERVER: 69.64.68.41#53(69.64.68.41)
    ;; WHEN: Wed Oct 12 16:04:17 2011
    ;; XFR size: 10 records (messages 10, bytes 579)
    
    

回顾 example.com的记录时,我们发现了几个有趣的地方。 example.com似乎有几个子域指向同一 IP 地址。如果没有严格地将此站点设置为示例,您将拥有可枚举系统的真实 IP 地址。此外,还有一个包含琐碎信息的 TXT 记录。此外,可以说命名约定既不一致又信息丰富。

非常重要的是,您的所有名称服务器仅限于向受信任的服务器提供区域传输,或者完全不允许区域传输。

如果你想了解更多关于区域转移的信息,我强烈建议你看看 zonetransfer.me,它会将你重定向到http://www.digininja.org/projects/zonetransferme.php 。该网站的所有者在详细说明区域转移的工作方式方面做得非常出色。

挖掘的先进特征

我们一直在讨论 dig 的基本用法。现在我们将讨论此工具的更高级用法。

缩短产量

Dig 用途广泛,允许您以多种不同的输出格式提取数据。

我们可以使用 +nocmd消除输出的命令信息部分。它必须位于域名之前才能生效。

+noall通知 dig 我们不希望显示标志作为命令输出的一部分。

+answer可切换为仅显示应答部分。

root@bt:~# dig +nocmd +noall +answer example.com 

这将产生以下输出:

example.com. 44481 IN A 192.168.1.10

缩短输出结果时,可以使用本节中讨论的任何选项。这使得使用 awkgrep等工具来进一步操纵结果变得容易。

列出绑定版本

此命令将允许您确定名称服务器正在运行的绑定版本,除非服务器管理员对其进行了特别限制或更改。记住用您有权使用的名称服务器替换 example.com

# dig +nocmd txt chaos VERSION.BIND @ns1.example.com +noall +answer 

这将产生以下输出:

VERSION.BIND. 0 CH TXT "8.4.X"

我们已确定此特定名称服务器正在运行 bind 8.4.X。在枚举漏洞时,这些信息可能被证明是非常有价值的。

使用 Dig 反向 DNS 查找

有时需要将 IP 地址解析为域名。无需切换回 nslookup即可执行此任务,因为您只需键入:

# dig +nocmd +noall +answer -x 192.168.0.1 

您的输出将如下所示:

10.0.0.1.in-addr.arpa. 8433 IN PTR 43-10.any.example.org.

前面的命令允许我们确定与 192.168.0.1关联的域名。

多个命令

我们可以使用 dig 链接命令。在下面的示例中,我们使用缩短的输出格式向我们提供 example.comexample.netA记录,然后请求对 192.0.43.10进行反向查找。

# dig +nocmd +noall +answer example.com example.net -x 192.168.1.10 

结果输出如下(此输出中域名已替换为 example.org

example.com. 37183 IN A 192.168.1.10
example.net. 54372 IN A 192.168.10.11
10.0.0.1.in-addr.arpa. 6937 IN PTR 43-10.any.example.org.

追踪路径

如果您想查看 dig 解析您的域名的路径,您可以使用如下的 +trace选项:

# dig +trace example.com 

挖沟配料

dig 可以使用 -f选项,而不必像使用 nslookup时那样编写脚本来循环评估文件中的域名列表。我们可以使用 dig 命令格式来执行这些批处理作业。

  1. 我们将首先使用 BackTrack 中包含的 nano 文本编辑器创建一个新的 TXT 文件。在回溯中打开一个终端外壳并键入 nano digginIt.txt

  2. 在 nano 类型中,输入以下代码。请注意,每个命令都需要在自己的行上才能正常运行:

    +nocmd +noall +answer example.com
    +nocmd +noall +answer example.net
    +nocmd +noall +answer example.org ns
    
    
  3. Ctrl+O写入保存文件。

  4. Ctrl+X退出返回终端。

  5. 使用以下命令调用 dig 命令:

    # dig -f digginIt.txt 
    
    

结果将显示在您的屏幕上:

example.com. 33996 IN A 192.168.1.10
example.net. 51185 IN A 192.168.1.10
example.org. 82826 IN NS a.example.net.
example.org. 82826 IN NS b.example.net.

我们已成功创建并执行了挖掘批处理作业。这可以用于多种用途,包括创建和检查基线,执行从一个渗透测试到下一个渗透测试的重复任务,或者简单地跟踪用于执行这部分侦察的命令。存储批处理作业中使用的文本文件,以便以后验证结果。

DNS 蛮力施压

在安全环境中,DNS 暴力强制可能是确定在非连续 IP 空间中使用哪些主机的最佳选择。BackTrack 包含几个解决此需求的工具。我们将讨论由 RSnake 创建的 firef,它在 DNS 暴力强制方面是快速有效的。它将首先确定域的 IP 地址,查找相关的名称服务器,然后遍历字典单词列表。该工具提供了一个可用于测试的示例单词列表,但您应该尽快用更符合您需要的词典单词替换或补充它。

默认命令用法

在 BackTrack 中,我们将打开一个终端会话,并将目录更改为 fierce.plperl 脚本所在的位置:

# cd /pentest/enumeration/dns/fierce 

fierce.pl包含一个帮助部分,可通过以下方式访问:

# ./fierce.pl -h 

最基本的使用方法是:

# ./fierce.pl -dns example.com 

这将产生与以下类似的输出:

DNS Servers for example.com:
ns1.example.net
ns2.example.net
Trying zone transfer first...
Testing ns1.example.net
Request timed out or transfer not allowed.
Testing ns2.example.net
Request timed out or transfer not allowed.
Unsuccessful in zone transfer (it was worth a shot)
Okay, trying the good old fashioned way... brute force
Checking for wildcard DNS...
Nope. Good.
Now performing 1895 test(s)...

此输出表明所采取的第一步是定位 example.com域的名称服务器。下一步是检查服务器,看看是否可以执行区域传输。正如我们之前了解到的,区域传输将通过一个命令从服务器提取所有已知的域信息。如果您可以一次简单地提取整个记录集,那么就没有必要强制使用域名。

某些域包括通配符 DNS 记录。这将导致解析您使用的任何子域,无论它是否存在。在这种情况下,没有找到通配符 DNS 条目。

运行的测试数量将由您提供的单词列表中的单词数量决定。由于我们没有在前面的示例中指定要使用的列表,默认情况下将使用位于回溯上的 /fierce目录中的 hosts.txt

此处 fierce.pl用于允许区域传输的域:

# ./fierce.pl -dns example.com 

在这种情况下,工具的暴力强制功能是不必要的,因此没有初始化。详见以下结果:

DNS Servers for example.com:
ns14.zoneedit.com
ns16.zoneedit.com
Trying zone transfer first...
Testing ns14.zoneedit.com
Whoah, it worked - misconfigured DNS server found:
example.com. 7200 IN SOA ns16.zoneedit.com. soacontact.zoneedit.com. (
2011413884 ; Serial
2400 ; Refresh
360 ; Retry
1209600 ; Expire
300 ) ; Minimum TTL
example.com. 7200 IN NS ns14.zoneedit.com.
example.com. 7200 IN NS ns16.zoneedit.com.
example.com. 300 IN A 192.168.1.1
mail.example.com. 7800 IN MX 10 mail1.example.com.
testmachine.example.com. 300 IN A 192.168.1.1
irc.example.com. 300 IN A 192.168.1.1
mail1.example.com. 300 IN A 192.168.1.1
note.example.com. 300 IN TXT "This is an example of a DNS text record."
www.example.com. 300 IN A 192.168.1.1
There isn't much point continuing, you have everything.
Have a nice day.
Exiting...

查看结果,我们可以看到 fierce.pl表明此设置是一个错误配置,这应该是另一个指标,表明在任何情况下都不建议允许打开 AXFR。

创建自定义词表

如果我们已经知道我们想要检查什么,或者我们有一个单词列表,当我们理解被测试站点的命名约定时,这个列表可能更合适,那么建议制作一个自定义单词列表。

  1. 使用 nano myWordList.txt打开 Nano。

  2. 键入以下内容:

    irc
    mail
    mail1
    testmachine1
    testmachine
    www
    www1
    ns
    
    
  3. Ctrl+O并按Enter接受将文件写入 myWordList.txt

  4. Ctrl+X退出返回终端外壳。

现在我们已经创建了名为 myWordList.txt的自定义单词列表,让我们试一试:

# ./fierce.pl dns example.com wordlist myWordList.txt 

短暂延迟后,我们将收到以下输出:

DNS Servers for example.com:
ns14.zoneedit.com
ns16.zoneedit.com
Trying zone transfer first...
Testing ns14.zoneedit.com
Request timed out or transfer not allowed.
Testing ns16.zoneedit.com
Request timed out or transfer not allowed.
Unsuccessful in zone transfer (it was worth a shot)
Okay, trying the good old fashioned way... brute force
Checking for wildcard DNS...
Nope. Good.
Now performing 9 test(s)...
192.168.1.1 irc.example.com
192.168.1.1 mail1.example.com
192.168.1.1 testmachine.example.com
192.168.1.1 www.example.com
192.168.1.1 .example.com
Subnets found (may want to probe here using nmap or unicornscan):
192.168.1.1-255 : 5 hostnames found.
Done with Fierce scan: http://ha.ckers.org/fierce/
Found 5 entries.
Have a nice day.

虽然这个服务器不再允许我们使用区域传输,但是我们仍然能够通过使用一个好的单词列表来映射几个子域。

当您无法执行区域传输时,仍然可以使用一些方法来有效地枚举网络上的子域和主机名。内部 DNS 名称服务器将能够为您提供大量信息,这些信息稍后可用于评估网络漏洞,并最终用于攻击环境。 fierce.pl是我们渗透测试工具库的一个非常有用的补充,可以用来完成比简单的 DNS 暴力强迫多得多的任务。

收集和验证域和 IP 信息

当个人或公司实体注册域名时,会收集大量信息。根据注册隐私设置,您可以收集此信息并使用它验证您的 IP 空间,查找同一个人或公司拥有的其他网站的信息,甚至查找关键员工的电话号码和地址。这种类型的侦察被认为是被动的,因为它不直接联系客户拥有的资产来获取信息。

我们需要找到域名注册的注册商,以获取有用的信息。以下是顶级注册商的列表。

| 非洲的 | [http://www.afrinic.net](http://www.afrinic.net) | | 呼吸暂停 | [http://www.apnic.net](http://www.apnic.net) | | 阿林 | [http://ws.arin.net](http://ws.arin.net) | | 伊安娜 | [http://www.iana.com](http://www.iana.com) | | ICANN | [http://www.icann.org](http://www.icann.org) | | 拉尼克 | [http://www.lacnic.net](http://www.lacnic.net) | | NRO | [http://www.nro.net](http://www.nro.net) | | 成熟的 | [http://www.ripe.net](http://www.ripe.net) | | 内部的 | [http://www.internic.net](http://www.internic.net) |

与 whois 收集信息

域和 IP 空间注册信息可以通过whois找到。

使用whois时,请注意您需要遵守的具体限制和规则。例如,您不允许自动执行查询或将查询结果用于商业或个人利益。阅读从命令行运行简单的 whois example.com查询时出现的合法文本标题。注意警告,遵守规则。

whois 最基本的用法如下:

# whois example.com 

这将执行 example.com域的快速查找,并向您提供以下信息:

  • Whois 使用协议和合法标题
  • 域名
  • 注册商:该域名注册于
  • 使用的服务器是谁
  • 与域关联的主 DNS 名称服务器
  • 域创建和到期日期
  • 注册人信息,如名字、姓氏、组织、实际地址、电话号码和电子邮件地址
  • 分配的域管理员信息,如姓名、姓氏、组织、物理地址、电话号码和电子邮件地址
  • 域计费联系信息,如名字、姓氏、组织、物理地址、电话号码和电子邮件地址
  • 域技术联系信息,如名字、姓氏、组织、实际地址、电话号码和电子邮件地址

指定使用哪个注册器

有时您可能需要指定要查询的注册器。whois允许使用 -h“连接到主机”选项,从而简化了此操作。

# whois -h whois.apnic.net 192.0.43.10 

这个 IP 到底在哪里?

您可以使用whois查找 IP 地址分配给的来源国:

# whois -h whois.arin.net 192.0.43.10 | grep Country: 

我们在这里所做的是使用 -h选项指定 whois.arin.net来提取与 192.0.43.10相关的记录,因为我们特别想要与此 IP 相关的国家信息。我们使用 grep命令拉出 Country:行。以下是结果输出,表明此 IP 地址位于美利坚合众国:

Country: US

提示

您会发现输出格式会因注册器的不同而有所不同。花些时间熟悉不同的输出,这样你就知道将来要做什么了。从长远来看,这可能会为您节省大量时间。

防御措施

当你或你的客户注册域名时,你应该选择隐私选项。这些将限制公众可获得的信息。数据将替换为您的隐私代理提供的信息。如果出现需要有人与您联系的情况,他们会与您的代理人联系,后者会让您知道存在需要解决的问题。

使用搜索引擎为您完成工作

搜索引擎如果不能有效地使用,可能会产生绝对的信息过载。您不仅可以找到有关目标公司财务状况的信息,还可以找到有关关键员工、用户名和密码、机密文档(如网络图)、指示您使用或拥有的软件或硬件类型的信息,甚至可以找到系统处于默认状态的信息。这些信息在错误的人手中可能是毁灭性的。作为渗透测试人员,您的重点应该是将这类信息发布出来,并向客户展示如何使用这些信息访问客户最关键的资产(希望您也能告诉他们如何解决问题!)。

提示

有一些搜索引擎可以缓存信息以便快速访问,也有一些搜索引擎可以将网站和文档存档多年。甚至还有一些搜索引擎严格关注网络设备,如无线接入点或面向公众的路由器、交换机、服务器等。

肖丹

我们将与Shodan继续我们的足迹侦察工作。该搜索引擎专门用于索引连接到 Internet 的设备提供的横幅中的信息。搜索引擎主要索引来自端口 80 的查找,但也索引一些 Telnet、SSH 和 FTP 横幅。SHODAN 是一个 web 应用程序,可以访问http://www.shodanhq.com

SHODAN

通过Shodan您可以找到连接到互联网的设备的信息。除了允许您按 IP 地址或主机名进行搜索外,它还允许您按地理位置进行搜索。将搜索结果导出为 XML 是一项高级功能,需要您购买信用卡。如果您想在决定是否在导出上花钱之前为 MagicTree 或其他数据集中工具构建转换,可以使用一个示例导出。

过滤器

有几个免费的过滤器使缩小搜索范围变得更简单。大多数过滤器使用相同的格式:searchterm 过滤器:{filterterm};例如搜索 IIS 6.0 os:"Windows 2000。这些过滤器也可以相互结合使用,以获取一些非常有趣的结果。

以下是几个重要过滤器的列表:

  • **净:**可能是渗透测试仪最有用的过滤器之一。您可以使用 IP/CIDR 表示法(例如,127.1.1.0/24)搜索您的 IP 范围,以查看您的所有设备是否按预期配置,或者是否有迹象表明易受攻击的服务器或网络设备配置面向外部,并准备在测试期间受到危害。
  • **城市:**这将限制搜索到列出的城市。
  • **国家:**将搜索限制在所选国家/地区的设备上。这对于 pentesting 也非常重要,因为有时客户机可能会向您提供 IP 范围(您验证过,对吗?),然后由于位置原因将某些资产放在范围之外。例如,客户可能选择不针对位于新加坡的系统进行测试。
  • **端口:**将限制搜索到指定的端口。请记住,SHODAN 不会扫描和索引所有端口的横幅,只扫描 80、21、22 和 23 个端口的横幅。
  • **之前:**搜索指定日期之前扫描的系统。
  • **之后:**搜索在此日期之后扫描的系统。
  • **操作系统:**您希望在搜索中包括或排除哪些操作系统?

理解横幅

为了在 Shodan 中执行情感搜索,您必须对索引的横幅类型以及它们通常包含的信息类型有一些了解。

FTP、Telnet 和 SSH 横幅会有所不同,但每个横幅都会提供有用的版本控制信息。

HTTP 横幅

可以通过使用 nc example.com:80然后键入 HEAD / HTTP/1.0来收集横幅,其结果是您将在 SHODAN 结果中看到的典型横幅格式。由于 HTTP 横幅通常是最难理解的,我们将浏览一些常见的部分:

root@bt:~# nc example.com 80
Trying 192.168.1.1...
Connected to example.com.
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 200 OK 
Content-Length: 9908
Content-Type: text/html
Last-Modified: Tue, 11 Oct 2011 02:35:17 GMT
Accept-Ranges: bytes
ETag: "6e879e69be87cc1:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Sun, 16 Oct 2011 02:08:55 GMT
Connection: close
Connection closed by foreign host.

  • 突出显示的 HTTP/1.1 200状态代码将为您的查询提供响应,指示您请求的状态。在这种情况下, HEAD/ HTTP/1.0被接受并成功处理,因此启动了一个状态代码 200 OK
  • Content-Length:以八位字节的十进制数表示内容的长度。
  • Content-Type:将列出正在发送的内容类型。可以是图像/GIF、文本/HTML 或其他类型。
  • Accept-Ranges:表示服务器是否接受字节范围。将此设置为“无”将让客户端知道范围请求可能被拒绝。
  • ETag:向客户端提供当前实体标签值。
  • Server:将向您提供用于服务请求的软件版本和类型。这是渗透测试仪最重要的横幅结果之一。应建议客户隐藏此信息。您将使用此信息确定计算机上可用的攻击类型。
  • X-Powered-By:标志不是标准标头,但可以向攻击者提供有用的信息。也可以完全更改或禁用它。

常见状态代码包括:

|

HTTP 状态码

|

说明

| | --- | --- | | 200 | 导致显示结果的成功查询。 | | 301 | 文档已被永久移动。 | | 302 | 文档已被临时移动。 | | 307 | 正在使用临时重定向。 | | 400 | 语法错误-无法处理您的请求。 | | 401 | 请求需要身份验证。通常表示需要登录。 | | 403 | 请求被禁止。 | | 404 | 在服务器上找不到该页。 | | 502 | 服务器目前不可用。无法代表客户端获取资源。 | | 501 | 内部服务器错误导致服务器无法完成请求。-请求不受支持。 | | 505 | 使用了不支持的 HTTP 版本。 |

寻找特定资产

就像大多数搜索引擎一样,这个工具对用户非常友好。要执行基本搜索,只需在屏幕顶部的输入框中键入搜索字符串,您将看到一个结果列表。您可以使用我们前面讨论过的任何过滤器进行搜索,也可以尝试手动查找特定的横幅字段。

在网络上查找人员(及其文档)

在这个时代,一切都变得相互关联。人们在工作中使用个人设备,使用公共邮件服务器上的个人帐户发送公司电子邮件,并观看大量视频。多年来出现的一种趋势是,人们已经对互联网感到非常舒适,他们愿意与世界各地不知名的个人和网站分享他们的信息。我们现在将讨论一些方法,您可以使用这些方法来验证您的客户是否无意或故意将可采取行动的或机密的数据泄漏到公共互联网上。

谷歌黑客数据库

有很多关于谷歌黑客攻击的书,谈到其中的细节和技巧会很快转移本书的注意力。

提示

如果您不熟悉谷歌黑客,请搜索 Johnny Long 并访问他的网站http://www.hackersforcharity.com ,并查看谷歌黑客数据库(GHDB),这是谷歌 Dorks 的原始存储库。

位于 exploit-db.com的漏洞数据库已经接管并更新了 Long 先生的 Google Dorks 数据库。这是 GHDB 的官方网站。您应该将这些工具与良好的过滤器结合使用,以确保只获取所需的数据。下面是一些如何做到这一点的例子。

转到http://exploit-db.com/google-dorks 并选择一个查询。这是一个随机条目:

inurl:ftp "password" filetype:xls

通过以下修改将其输入 Google.com。添加 site:选项,然后添加域名,该域名是您参与规则的一部分:

site:example.com inurl:ftp "password" filetype:xls

在本例中,如果找到任何结果,则您已找到一个 MS Excel 文件,其中包含某种形式的“密码”。请记住,搜索结果会有所不同,最好的谷歌搜索查询通常集中于确定已安装软件的版本,寻找已知的易受攻击的安装,如果交战规则允许,这些安装将成为以后的目标。

您还应该执行重点搜索,查找所有主要文档类型,如 .pdf, .doc, .txt, .xls等。然而,还有一些额外的工具可以帮助我们做到这一点。

提示

警告:不要在主测试机上打开随机文件。您应该拥有一台未连接到网络或 Internet 的独立计算机,该计算机可用于打开未知(可能有害)文件和媒体。获取计算机访问权限的最简单方法之一是向用户发送一个文件,该用户利用漏洞打开系统,使攻击者无法访问。在不受控制的环境中打开未知文件是鲁莽的。不要成为那个用户。

谷歌过滤器

要了解您在浏览 Exploit DB 的**Google Hacking 数据库(GHDB)**时将看到的查询类型,您必须了解所使用的运算符类型。以下是更常见的高级操作符列表:

|

过滤器

|

说明

|

示例

| | --- | --- | --- | | allinurl | 在 URL 中搜索所有术语 | allinurl:example company | | allintext | 搜索页面文本中的所有术语 | allintext:company name | | intitle | 在页面标题中搜索术语 | intitle:ftp | | cache | 显示缓存页面 | cache:example.com | | phonebook | 搜索电话簿列表 | phonebook:CompanyName | | author | 按特定作者搜索 Google 组中的项目(使用 Google 组搜索此项目) | author:anonymous | | filetype | 搜索特定类型的所有文档 | filetype:pdf | | site | 将搜索限制到特定站点(或域) | site:example.com | | link | 查找指向指定 URL 的所有页面 | link:example.com |

美他古非

Metagoofil,一个强大的元数据收集工具,由 Christian Martorella(创建)http://www.edge-security.com ),可用于自动搜索引擎文档检索和分析。它还能够提供 MAC 地址、用户名列表等。

BackTrack 默认安装了 Metagoofil Blackhat 阿森纳版。打开终端并键入以下内容:

# cd /pentest/enumeration/google/metagoofil 

Metagoofil 是一个 Python 脚本,可以通过键入以下命令启动:

# ./metagoofil.py 

这将导致以下输出:

*************************************
* Metagoofil Ver 2.1 - *
* Christian Martorella *
* Edge-Security.com *
* cmartorella_at_edge-security.com *
* Blackhat Arsenal Edition *
*************************************
Metagoofil 2.1:
Usage: metagoofil options
-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
-f: output file
Examples:
metagoofil.py -d microsoft.com -t doc,pdf -l 200 -n 50 -o microsoftfiles -f results.html
metagoofil.py -h yes -o microsoftfiles -f results.html (local dir analysis)

让我们在 example.com域上试一试 metagoofil.py

# python metagoofil.py -d example.com -t doc,pdf -l 200 -n 50 -o examplefiles -f results.html 

作为一名渗透测试人员,您希望找到一些文档,这些文档在运行此工具时为您提供有关客户机的各种信息。我们目前在 example.com域上没有任何此类文档,因此输出如下:

*************************************
* Metagoofil Ver 2.1 - *
* Christian Martorella *
* Edge-Security.com *
* cmartorella_at_edge-security.com *
* Blackhat Arsenal Edition *
*************************************
['doc']
[-] Starting online search...
[-] Searching for doc files, with a limit of 200
Searching 100 results...
Searching 200 results...
Results: 0 files found
Starting to download 50 of them:
----------------------------------------
tuple index out of range
Error creating the file
[+] List of users found:
--------------------------
[+] List of software found:
-----------------------------
[+] List of paths and servers found:
---------------------------------------
[+] List of e-mails found:

正如前面的输出所指出的,如果这个站点有任何可以通过谷歌搜索的信息,它就会提供一个关于用户名、电子邮件地址、软件、服务器和路径的漂亮的 HTML 报告。所有这些都是通过一个简单的命令序列来完成的。您可以更改变量以查找 Google 基于 filetype:选项可以找到的任何文档类型。

在互联网上寻找线索

现在你应该有一些用户名,甚至可能有一些电话号码和职位。如果你计划进行社会工程测试,这些信息会很有用。

提示

谷歌(Google)等搜索引擎可以用来搜索企业员工在互联网上发布的信息,就像搜索馅饼食谱一样简单。确保在你开始之前,而不是之后,确认你的客户希望你对员工进行调查。有许多法律保护员工的隐私,只有律师才能让你知道什么是可以接受的,什么是不可以接受的。

渗透测试中一个突出的做法是搜索员工发布的论坛和小组帖子,其中可能包括与工作资产相关的信息。大多数信息不会以恶意的方式与世界共享,而是以无辜的方式共享。这并没有改变攻击者可以访问此信息并可能对目标公司使用此信息的事实。查找有关配置特定防火墙类型或其他网络设备的信息,例如公司管理员请求帮助。在公共论坛上发布问题的安全专业人员可能无意中提供了公司遵守哪些标准的线索。这些信息类型为渗透测试人员和高级攻击者提供了渗透其他安全环境所需的知识。

以下是一些帮助您查找更多信息的工具:

|

名称

|

说明

|

位置

| | --- | --- | --- | | 谷歌黑客数据库浏览器 | Web 应用程序,允许您输入站点和查询修饰符以自动执行 GHDB 查询。 | http://www.secapps.com/a/ghdb | | 地盘挖掘 3.0 | 搜索谷歌缓存。查找各种信息。需要.NET Framework 3.5 才能工作。 | http://www.mcafee.com/us/downloads/free-tools/sitedigger.aspx | | 收割机 | 从搜索引擎和 PGP 服务器搜索子域、主机名、用户、员工电子邮件和姓名。 | 包含在回溯或中 https://code.google.com/p/theharvester | | Lullar.com | 按姓名、电子邮件或用户名搜索人员。 | http://com.lullar.com/ | | 白页 | 很好找到商业信息。 | http://www.whitepages.com/ | | 偷看你 | 按用户名、姓氏或名字搜索人员。 | http://www.peekyou.com/ | | 耳鸣 | 在网上找到你的图片。 | http://www.tineye.com/ | | 互联网档案 | 个人收藏,将网站和文件的副本存档多年。 | http://www.archive.org/web/web.php |

元数据收集

在本章中,我们在讨论 Metagoofil时已经提到了元数据。元数据可以为渗透测试人员提供非常有用的信息。许多用户甚至不知道这些信息被附加到他们的文件中。一个很好的例子是与不同图像格式相关联的Exif数据。您可以了解使用了哪种类型的相机、拍摄照片的时间、拍摄地点(如果当时有可用的 GPS 数据)(电话摄像头…)等等。图片并不是唯一拥有此类广泛数据的文件。同样的情况也适用于 PDF 文档等。Foca是一个优秀的程序,具有直观的用户界面,其使用受到高度建议,但它是一个 Windows 程序,很难在回程上安装(尽管并非不可能!)。因此,我们将审查预装在我们选择的渗透测试工具包中的其他选项-回溯。

如果您的客户端使用 Windows 7 或 Windows Server 2008,请让他们知道,有一个选项可以通过单击鼠标从某些文件类型中删除所有个人元数据。

使用 exiftool 从照片中提取元数据

exiftool预装在回溯 5 上,可用于列出与多种文件类型相关的所有 Exif 数据。这个工具非常强大,可以将结果导出为多种不同的格式、写入文件元数据等。

我们将使用名为 FotoStation.jpg的图片作为第一个使用示例,该图片包含在 /pentest/misc/exiftool/t/images中。

要启动exiftool您可以打开终端会话并键入:

# cd /pentest/misc/exiftool 

如果您运行默认的 exiftool,您将看到工具帮助选择。这是相当广泛的,所以要准备大量的阅读。在这里,我们开始对 FotoStation.jpg:进行简单检查

# ./exiftoolimg/FotoStation.jpg 

这将产生以下输出:

ExifTool Version Number : 8.56
File Name : FotoStation.jpg
Directory : t/images
File Size : 4.2 kB
File Modification Date/Time : 2011:04:30 05:32:11-04:00
File Permissions : rw-r--r--
File Type : JPEG
MIME Type : img/jpeg
Image Width : 8
Image Height : 8
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Original Image Width : 1536
Original Image Height : 1024
Color Planes : 3
XY Resolution : 38.626
Rotation : 90
Crop Left : 18.422%
Crop Top : 24.458%
Crop Right : 83.035%
Crop Bottom : 77.817%
Crop Rotation : 0
Application Record Version : 2
Edit Status : Edit Status
Urgency : 1 (most urgent)
Category : Cat
Caption-Abstract : Caption *** Local Caption *** Local Caption
Special Instructions : Special Instructions
Object Cycle : Unknown (Afternoon)
Original Transmission Reference : OTR
Object Preview File Format : Unknown (Custom Field 01)
Object Preview File Version : Custom Field 02
Object Preview Data : (Binary data 15 bytes, use -b option to extract)
Document Notes : Document Notes
Image Size : 8x8

我们可以看到,这提供了大量的数据,但没有任何数据可以真正用于渗透测试。现在让我们尝试另一种文件格式:

# exiftoolimg/FlashPix.ppt 

这为我们提供了以下信息:

ExifTool Version Number : 7.89
File Name : FlashPix.ppt
Directory : ./t/images
File Size : 9.5 kB
File Modification Date/Time : 2011:04:30 05:32:11-04:00
File Type : PPT
MIME Type : application/vnd.ms-powerpoint
Title : title
Subject : subject
Author : author
Keywords : keywords
Comments : comments
Last Saved By : user name
Revision Number : 1
Software : Microsoft PowerPoint
Total Edit Time : 4.4 minutes
Create Date : 2007:02:09 16:23:23
Modify Date : 2007:02:09 16:27:49
Word Count : 4
Category : category
Presentation Target : On-screen Show
Manager : manager
Company : company
Bytes : 4610
Paragraphs : 4
Slides : 1
Notes : 0
Hidden Slides : 0
MM Clips : 0
App Version : 10 (0972)
Scale Crop : 0
Links Up To Date : 0
Shared Doc : 0
Hyperlinks Changed : 0
Title Of Parts : Times, Blank Presentation, Title
Heading Pairs : Fonts Used, 1, Design Template, 1, Slide Titles, 1
Code Page : 10000
Hyperlink Base : hyperlink base
Hyperlinks : http://owl.phy.queensu.ca/, http://www.microsoft.com/mac/#TEST, mailto:phil?subject=subject
Custom Text : customtext
Custom Number : 42
Custom Date : 2007:01:09 05:00:00
Custom Boolean : 1
Current User : user name

这是您在测试时要查找的元数据。在这个特定的例子中,为了学习的目的,已经删除了这些信息,但是一些感兴趣的领域应该包括:

  • 标题
  • 主题
  • 著者
  • 评论
  • 软件
  • 公司
  • 经理
  • 超链接
  • 当前用户

当所有这些数据都组合到您的数据收集和集中工具中时,它们就开始形成一幅美丽的画面。您可以使用exiftool从 Flash、PPT 和更多内容中提取或写入元数据。您可以从获取支持的文件类型的完整列表 http://www.sno.phy.queensu.ca/~phil/exiftool/#支持的

总结

在本章中,我们回顾了收集免费可用信息的许多专门方法。利用这些信息,我们能够为我们的目标网络创建一幅更大的图景。

在执行初始侦察后,我们应该能够确定客户提供给我们的网络空间是否准确。我们还应该能够成功地确定哪些文档可以在互联网上搜索,并且能够读取与所述文档相关的元数据。在渗透测试的这一点上,我们应该了解这项工作有多困难或容易。其中一个指标就是你从搜索引擎(如 Shodan)收集的结果。最后一点要注意的是,要非常认真地收集你发现的数据。文档是至关重要的,从长远来看,它将使您作为渗透测试人员的生活更加轻松。

在下一章中,我们将开始使用我们收集的信息。您将有机会直接枚举网络。我们还开始建立一个功能性实验室,让您能够遵循流程的每一步。第 3 章枚举:明智地选择目标中涵盖的一些主题包括了解如何以及何时使用 NMAP、如何利用 SNMP、各种避免技术等等!