本章是进入渗透测试工作流程的第一步。无论你是高级还是新手,本章都将帮助你成功地进行网络扫描。在开始扫描网络之前,我们将介绍您需要了解的基础知识。之后,我们将深入研究如何扫描网络目标。本章涵盖以下内容:
一、网络基础
二、识别活主机
三、扫描服务、
四、枚举
五、操作系统指纹
六、nmap脚本引擎
七、扫描子域
网络基础
在开始扫描和识别主机之前,首先了解组网的基础知识。例如,为什么我们使用10.0.0.1/16?或者什么是TCP握手?让我们开始!学习以下的内容
网络协议
下面是成功扫描网络需要了解的两个主要网络协议。
传输控制协议(TCP)是网络基础设施中使用的主要协议。每个应用服务器(HTTP、FTP、SMTP等)都使用此协议来正确连接客户端与服务器。
TCP称为使用三向握手的概念来建立网络连接。首先,要启动 TCP 会话,客户端向服务器发送 SYN 数据包(同步)。服务器接收 SYN 并使用同步/确认(SYN/ACK)回复客户端数据包。最后,客户端通过向服务器发送数据包ACK数据包来完成会话。例如,图3.1显示了Bob先生上网并使用浏览器(客户端)通过访问www进行Google(Web服务器)搜索的场景。
了解 TCP 握手等概念非常重要。像 Nmap 这样的网络扫描仪使用它来识别活动主机、开放端口(您将在接下来的部分中了解更多相关信息)。像 Wireshark 这样的网络嗅探器是了解计算机网络如何工作的好工具。为什么?因为网络感知探器会监听通过中断的所有中断和传出流量。要启动 Wireshark,只需在终端窗口中输入其名称 ($wireshark)。 ,您选择网络接口;它要么是需要连接,要么是WiFi WLAN。在本例中,我们使用etho,然后单击屏幕左上角的“开始”按钮
UDP
用户数据报协议 (UDP) 是一种无连接的网络连接。
与 TCP 连接正好,UDP 客户端和服务器不能保证数据包传输,
因此 UDP 中不存在三向握手。使用 UDP 的应用程序示例包括音频和视频流 - 您正在寻找此类连接的性能。在前面,显示了最流行的应用程序及其相应的协议(TCP 或 UDP)。
其他网络协议
TCP和UPD是最流行的网络协议,但也存在其他类型的协议。在本节中,我们将介绍其余的内容。
ICMP
ICMP (Internet Control Message Protocol)协议用于测试连通性。Ping工具使用该协议来测试主机网络是否启动并运行(默认情况下traceroute也使用它)。下面以ping 10.0.20.1为例,检查Wireshark的ICMP连接情况。
ARP
ARP (Address Resolution Protocol)是一种将IPv4地址映射到MAC地址的机制。这个概念对于内部网络的工作是必不可少的。路由器通过IP地址(第3层)在互联网上相互连接,但是一旦数据包进入你的网络,那么ARP表将使用MAC地址(第2层)。你可以使用命令ARP -a来获取ARP表内的项目列表(保存在本地主机上):
arp -a
这些层指的是前面显示的OSI层。开放系统互连(OSI)将网络连接分成不同的层。
IP地址
互联网协议(IP)是网络的主要支柱之一,它使计算机能够相互通信。IP地址分为IPv4和IPv6两种版本。
IPv4
IPv4是32位的,但总是以十进制格式表示,如192.168.0.1,等于11000000.10101000.00000000.00000001。把它写成十进制比写成二进制更简单,对吧?IP地址分为公网IP地址和私网IP地址。公网IP地址用于internet,私网IP地址用于intranet。您的公共IP地址可能是由您的互联网服务提供商(ISP)自动提供给您的,除非您购买了静态公共IP地址。以下是私有IPv4地址范围:
子网和CIDR
子网的作用是将网络划分为更小的范围(网段)。子网将标识IP范围内的主机数量。例如,192.168.0.1可以有一个子网掩码255.255.255.0,这意味着我们可以请使用此IP范围内的254台主机。无类域间路由(CIDR)是为了简化子网掩码而创建的。如果我们以前面的示例为例,我们可以编写子网/24 (CIDR等效)而不是长子网。表3.2列出了可供参考的子网和子网掩码。
IPv6
到目前为止,我们仍然大量使用IPv4来运行网络基础设施。自从世界上有一些尝试从IPv4到IPv6的变化,IPv4地址总有一天会用完。您至少需要了解IPv6在实践中是如何工作的。IPv6的格式是128位十六进制字符。下面是一个价值一万亿字的IPv6的例子:
oooofff0:0000:eeee: 000000000000000:fe77:03a我们将使用这个示例来了解IPv6格式是如何工作的。为了首先遵循IPv6的细节,我们需要删除前导零。
前:fff0:0000:eeee: 000000000000000:fe77:03a
后:fff0:0:eeee:0:0:0:fe77:3aa2。
压缩零序列(在我们的示例中,有三个零序列)并将它们替换为....
前: fff0:0:eeee:0:0:0:fe77:3a
后: fff0:0:eeee::fe77:3a
请注意,在IPv6中,一个0序列只能压缩一次。
端口号
端口号和IP地址就像兄弟姐妹一样。没有端口号,网络数据包将永远无法到达目的地。端口号就像一个公民地址。街道名称(IP地址)不足以获得某一属性;您将需要一个公民号码(端口号)有一个完整的地址。假设您正在使用浏览器访问www.google.com。您的数据包将需要web服务器主机的IP地址和端口号,
HTTPS的默认端口号是443。在同一台服务器上(具有相同的IP地址),谷歌可以托管其他服务,
例如FTP;然后数据包将使用端口21到达它。
网络扫描
现在您已经了解了网络的基本知识,是时候开始行动了。在接下来的部分中,您将了解如何识别网络中的目标主机。
识别活主机
有多种方法可以确定主机是否已启动并在网络上运行。
Ping
您可以使用 Ping 快速检查网络连接。那么,Ping 的底层是如何工作的呢?当您执行 ping 命令时,您的 Kali 主机将向目标发送 ICMP echo 请求,然后目标将使用 ICMP echo 回复数据包进行响应。因此,你可以说目标还活着。 ping 命令对于系统管理员很有用,但我们是精英,对吧? 稍后,您将了解为什么必须使用 Nmap 来扫描活动主机。最后,您需要注意,某些系统管理员会在防火墙级别关闭ICMP回显,以阻止黑客检查某些服务器的连接性。
ARP
地址解析协议是一个奇妙的实用程序,它将IP地址映射到本地网络中的物理MAC地址。现在,我们可以利用ARP表的内容,在Kali上使用ARP -scan命令列出同一网络上的所有主机:
arp-scan [ip地址]
Nmap
现在是时候向您展示我用来识别活动主机的最喜欢的工具:Nmap。您将需要使用以下命令选项来完成这项工作:
nmap -sn [ip地址]
为了帮助你记住它,把选项-s想象成Sam, N是Nanny。这些选项的真正含义如下:
n代表No。
s代表扫描。
这就是为什么此选项的名称为“无端口扫描”。有些人称之为Ping扫描,但不要把它和我们在本章前面讨论的ICMP Ping工具混在一起。话虽如此,让我们看看为什么这个选择是神奇的。为了识别活动的主机,Nmap将尝试执行以下操作:
1. 将发送 ICMP echo 请求,如果 ICMP 被阻止,Nmap 也不会放弃。
2.另外,它还会发送 ICMP 时钟请求。
3. 将向端口 80 发送 ACK 数据包,终端端口 443.
4 发送SYN 限制数据包。
最后,它会发送一个 ARP 请求。太强大了,对吧?重要的是要明白,你需要成为 Kali 机器上的 root 用户(或 sudo 组的成员),否则你的选项将受到,并且您将无法执行所有这些功能。让我们让 Sam 和 Nanny 付诸行动
端口扫描和服务枚举
在网络扫描期间,您需要执行的任务之一是查找每台主机上的开放端口。为什么?假设您想了解局域网 (LAN) 上的所有 Web 服务器;端口扫描可以让您轻松获取此信息。看看 Nmap 如何像老板一样处理这个任务。
TCP端口SYN扫描
在Nmap中有很多选项可以执行端口扫描,但是对于TCP,我总是使用SYN扫描。事实上,Nmap默认会执行这种类型的端口扫描:
为了记住它,你可以将选项-ss与Sam和Samantha联系起来。当您想要执行端口扫描时,请始终考虑Sam和Samantha。
如果你的名字是Sam,那你就太幸运了,但ss选项代表SYN扫描,有些人称之为隐身扫描;我编了SAM-Samantha的术语,这样你们就能轻松记住了。让我向您解释一下SYN扫描在Nmap中的工作原理。当提供ss选项时,扫描器将向服务器发送SYN请求,如果在响应中收到SYN/ ACK,则它将显示端口是打开的。如果扫描器没有接收到SYN/ACK,则关闭或过滤它。需要说明的是,过滤意味着有防火墙在保护它:
UDP
现在,UDP端口扫描呢?要在Nmap中使用UDP端口扫描,你必须添加sU选项:
nmap -sU [IP地址]
重要的是要注意,UDP由于其无连接的性质而很慢。我们总是可以使用T5计时选项来调整它,使它更快。防火墙可以很容易地阻止internet地址上的T5。T2选项是您扫描互联网IP地址时的朋友,因此您可以绕过雷达(防火墙等):
nmap -sU -T5 [IP地址]
因此,为了让UDP扫描器识别端口是打开还是关闭,它将发送一个UDP数据包并等待来自目的地的响应。如果Nmap是否得到响应,则可能端口是打开的。另一方面,如果扫描器接收到ICMP错误,则端口被关闭或过滤:
使用Nmap扫描的基础
让我们讨论Nmap中的一些基础知识。如果你在没有任何选项的情况下运行Nmap,默认情况下该工具将使用三个重要的功能:
它会将速度设置为T3。
它将扫描顶端的TCP 1000端口。
假设您是Kali机器的root用户,它将默认设置SYN TCP扫描。
那么,所有这一切都发生在前端,这意味着您不需要指定 T3 速度,因为它默认就在那里。它与端口号(不需要添加 --top-ports 1000)或 TCP SYN 扫描(不需要添加 -ss 选项)相同。在前面的示例中,我们为 SYN 扫描指定了 ss 选项,但这里不需要这样做,因为 Nmap 会默认设置它,对吗? 对于调整部分,请务必记住明智地选择速度。例如,不要在生产IP地址上使用像T5这样的快速速度;相反,请坚持使用默认值(T3)。另外,请确保选择适合您需要的端口数量,可以是前100个端口,也可以是默认选项 1,000 个。让我们看一个实际的例子;假设您使用 TCP 扫描来扫描前 100 个端口:
#更快的扫描TCP
nmap --top-ports 100 -T5 [IP地址]