诸神之眼:Nmap网络安全审计技术揭秘
上QQ阅读APP看书,第一时间看更新

2.2 网络协议与主机发现技术

如今互联网结构极其复杂,各种不同硬件架构,运行着各种不同操作系统的设备却令人惊讶地连接在一起。这一切都能正常运行要归功于网络协议。网络协议通常是按照不同层次开发出来的,每个不同层次的协议负责的通信功能也各不相同。这些协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合,它们“各尽其能,各司其职”。目前分层模型有OSI和TCP/IP两种。本书中涉及的模型都采用了TCP/IP分层结构,因为这个结构更简洁实用。

TCP/IP协议包括的层如图2-2所示,从下到上依次为网络接口层、网络层、传输层、应用层。

图2-2 TCP/IP分层协议

网络接口层的功能是接收IP数据包,并负责把这些数据包送至目标网络。

网络层的功能为实现网络之间的互连,根据数据包的IP地址将数据包从一个网络通过路由器传到另一网络。人所熟知的ARP协议、IP协议、ICMP协议、IGMP协议都在这一层。

传输层的协议目前比较少,主要是TCP和UDP两个,功能是为通信双方的主机提供端到端的服务。

应用层的功能为针对客户发出的请求,服务器做出响应并提供相应的服务。例如,平时最为常见的HTTP协议、FTP协议、SMTP协议等都处在这一层,应用层的协议数量是最多的。

这些协议与2.1节中讲的例子又有什么关系呢?你还记得为什么有人敲门,屋里的人就会有回应吗?对,因为这是生活中一个默认的约定。而现在讲述的协议恰恰就如同这个约定一样,这些协议中明确规定了如果一台计算机收到来自另一台计算机的特定格式数据包后应该如何处理。比如,这里有一个TEST协议(这个协议目前并不存在,这里只是为了举例方便,假设A主机和B主机都遵守这个协议),它规定了如果一台主机A收到来自于主机B的格式为“请求”的数据包,那么它必须在一定时间内向主机B再发送一个格式为“回应”的数据包(实际上这个过程在很多真实的网络协议中都存在)。

那么,如果现在想知道主机A是否为活跃主机的话,该怎么办?只需要在你的主机上构造一个“请求”,然后将它发送给主机B。如果主机B是活跃主机,那么就会收到来自它的“回应”数据包,否则的话,就会什么都收不到。

实际操作中,可以利用哪些真实的协议,又有哪些协议做出了如同前面所述的规定呢?最好的方法就是去阅读Request For Comments (RFC)文档,所有的协议规范都可以参考这个文档,这是一系列以编号排定的文件。基本的互联网通信协议在RFC文件内都有详细说明。

接下来介绍Nmap的第一个参数-sn(之前的版本中是-sP,现在采用了-sn的写法)。这个参数在这一章中很重要,因为Nmap在扫描时,默认会将目标例如端口之类的信息也扫描出来,但是如果只是想要知道目标是否为活跃主机,则并不需要这些信息,反倒会浪费大量的时间,这里就可以使用这个参数来指定不对目标的端口和其他信息进行扫描。

    命令语法:Nmap -sn [目标]

例如,对192.168.0.1进行扫描,可以执行下面的命令。

    Nmap 192.168.0.1

扫描完成后,Nmap默认显示如下的信息。

    Starting Nmap 7.12 ( https://Nmap.org ) at 2016-09-17 11:36
    Nmap scan report for 192.168.0.1
    Host is up (0.040s latency).
    Not shown: 997 closed ports
    PORT       STATE   SERVICE
    23/tcp     open    telnet
    80/tcp     open    http
    5431/tcp   open    park-agent
    MAC Address: D8:FE:E3:B3:87:A9 (D-Link International)
    Nmap done: 1 IP address (1 host up) scanned in 4.01 seconds

而如果使用-sn参数,则只会显示是否为活跃主机这一条,在Nmap中执行如下命令。

    Nmap -sn 192.168.0.1

扫描完成后,Nmap默认显示如下信息。

    Starting Nmap 7.12 ( https://Nmap.org ) at 2016-09-17 11:39
    Nmap scan report for 192.168.0.1
    Host is up (0.0040s latency).MAC Address: D8:FE:E3:B3:87:A9 (D-Link International)
    Nmap done: 1 IP address (1 host up) scanned in 1.94 seconds

下面就已经被广泛用来进行主机发现的协议进行讲解。