跳转到内容

Venom Academy/Ethical Hacking/扫描与枚举

来自 Wikibooks,开放世界中的开放书籍

在本章中,我们将讨论扫描和枚举。枚举的目的是收集尽可能多的关于活动系统的信息。这是为了识别活动目标并可能找到端口等。

主机发现

[编辑 | 编辑源代码]

渗透测试人员最重要的是第一步,他们需要知道如何识别哪个目标是活动的,哪个目标不是。我们可以使用各种方法和程序来发现活动目标。其中最常用的方法是 ping,它是通过向系统发送 ICMP 回声来工作的,并检查它是否响应。让我们在谷歌上运行一个 ping 扫描

Ping www.google.com
Pinging [74.125.232.145] with 32 bytes of data:
Reply from 74.125.232.145 time=253ms TTL=51
Reply from 74.125.232.145 time=192ms TTL=51
Reply from 74.125.232.145 time=165ms TTL=51

一个名为 nmap(网络映射器)的优秀程序可以使我们的枚举工作更容易,它允许我们扫描系统范围。以下是我们可以使用它的方法。

nmap -sP "ip address"

在上面的示例中,我们使用了 -sP 命令来启用 nmap 只识别活动系统。以下是一个示例

root@venom [$]~ nmap -sP 192.168.15.1/24
Starting nmap 7.1 (https://nmap.org) at 2019-12-27 18:9 CAT
Nmap scan report for WinMaxCPE (192.168.15.1)
Host is up (0.0021s latency).
Mac Address: 20:21:7B:65:12:2A (Intel Corporate)
Nmap scan report for root (192.168.15.23)
Host is up.

端口扫描

[编辑 | 编辑源代码]

端口扫描主要分为两类,TCP 扫描和 UDP 扫描。端口扫描可以作为识别运行在端口上的服务或端口是否打开的一种方式。Nmap 支持多种扫描方法,例如 TCP 连接扫描和 TCP SYN 扫描

Nmap 使用以下语法

nmap <scan type> <option arguments> <specified target>

对于初学者来说,以下语法适用。

nmap <target>

上面的示例应该能够返回关于目标主机上开放端口的详细信息。我们也可以使用 * 符号扫描端口。以下示例展示了语法

root@venom [$]~ 192.168.15.*
Starting nmap 7.1 (https://nmap.org) at 2019-12-27 18:9 CAT
Nmap scan report for WinMaxCPE (192.168.15.1)
Host is up (0.0021s latency).
PORT                   STATE     SERVICE
53/TCP                 Open       domain
80/TCP                 Open       http
21/TCP                 Open       ftp
 

此 nmap 扫描将扫描整个 IP 范围 192.168.15-255,然后返回有关开放端口的详细信息。结果将只基于活动的系统。

端口状态类型

[编辑 | 编辑源代码]

我们已经知道 Nmap 可以扫描主机,但它会返回扫描端口在当前时刻所处的端口状态/状态。Nmap 的端口状态如下所示

  • 开放 - 意味着端口可以访问,目标主机上的应用程序正在通过它监听
  • 关闭 - 意味着端口无法访问,目标主机上没有应用程序正在通过该端口监听
  • 过滤 - 意味着 nmap 无法确定端口是打开还是关闭,这可能意味着目标位于防火墙之后
  • 未过滤 - 端口是可访问的,但无法区分它们是打开还是关闭

漏洞扫描

[编辑 | 编辑源代码]

现在让我们看看如何扫描易受攻击的主机。为此阶段,我们使用hping3。这个工具最初用于测试防火墙,直到它被引入 IDLE 扫描。hping3 的主要语法如下所示

hping3 -S -r <target host>

如上所示,-S 规范用于发送 SYN 标志,-R 用于启用检查相对 ID

现在让我们对主机 192.168.15.211 执行一个示例

root@venom [$]~ hping3 -S -r 192.167.15.211
HPING 192.168.15.211 (eth0 192.168.15.211): S set , 40 headers + 0 data bytes
len=46 IP=192.168.15.211 ttl=128 id=+1 sport=0 flags=RA seq=1 win=0 rtt=0.8 ms

如你所见,ID 正在逐个递增。这表明目标主机足够脆弱,可以成为我们的僵尸主机,我们可以将其用于 IDLE 扫描。或者,我们将使用 metasploit 辅助模块来检查主机是否可以成为僵尸主机。因此,让我们通过调用以下命令来启动 metasploit

msfconsole

在那里,你将等待 metasploit 控制台打开,然后你将看到类似于以下内容的文本

msd >

现在,你必须选择要使用的模块,在本例中,我们使用的是 ipidseq 模块,现在输入以下内容

msf > use auxiliary/scanner/ip/ipidseq

现在,你需要使用以下内容指定目标主机,在我的示例中,目标主机是 192.168.15.1

msf auxiliary(ipidseq) > set rhost 192.168.15.211

为了启动攻击,我们使用 run 命令

msf auxiliary (ipidseq) > run

Nmap 扫描方法

[编辑 | 编辑源代码]

TCP SYN 扫描

[编辑 | 编辑源代码]

TCP SYN 扫描是针对指定目标机器运行的默认扫描类型。这是执行速度最快的扫描。扫描的工作原理如下

  • 主机向目标主机上的端口 80 发送 SYN 数据包
  • 如果目标主机以 SYN/ACK 数据包响应,那么 nmap 将知道目标主机上的特定端口是打开的
  • 如果在发送数据包后目标主机没有响应,那么 nmap 将知道该端口被过滤了。

TCP 扫描使用以下命令执行

nmap -sS <target host>

空扫描

[编辑 | 编辑源代码]

空扫描通过在 TCP 标头中发送一个无标志位来执行。如果没有返回响应,则意味着端口是打开的。收到 RST 数据包表示端口已关闭。空扫描使用以下语法执行

nmap -sN <target host>

FIN 扫描

[编辑 | 编辑源代码]

默认情况下,FIN 标志用于关闭当前打开的连接。在 FIN 扫描中,发送方向目标主机发送 FIN 标志。如果没有返回响应,则表示端口是打开的。如果目标机器以 RST 响应,则表示端口已关闭。FIN 扫描的语法命令是

nmap -sF <target host>

隐形扫描

[编辑 | 编辑源代码]
  • 偏执 (0) - 无并行扫描。发送数据包之间间隔 5 分钟。
  • 隐蔽 (1) - 无并行扫描。发送数据包之间间隔 15 秒。
  • 礼貌 (2) - 无并行扫描。发送数据包之间间隔 0.4 秒。
  • 正常 (3) - 默认扫描。尝试在不超载网络的情况下快速完成。
  • 激进 (4) - 比正常更快,但会加载网络。
  • 疯狂 (5) - 并行扫描,在 15 分钟内超时主机,不会等待超过 0.3 秒来进行单个探测。丢失大量信息。

nmap 还提供选项来控制扫描超时。将这些选项与上述选项结合使用,可以提供更精细的扫描,例如每分钟执行 100 个数据包的扫描。自己尝试以下扫描。

root@venom [$]~ nmap -T sneaky --scan_delay 600
文件:Screencast 01-11-2020 03-18-33 PM.webm
此视频文件展示了常规 nmap 扫描的演示
华夏公益教科书