当前位置: 首页 > 科技观察

Linux下NMAP常用扫描介绍(一)_0

时间:2023-03-13 01:23:11 科技观察

我们在之前的NMAP安装文章中,列举了10种不同的ZeNMAP扫描模式。大多数模式使用各种参数。各种参数代表执行不同的扫描模式。本文将介绍其中四种通用扫描类型。四种通用扫描类型下面列出了四种最常用的扫描类型:PING扫描(-sP)UDP扫描(-sU)TCPSYN扫描(-sS)TCPConnect()扫描(-sT)当我们使用NMAP时scan,这四种扫描是我们需要精通的。更重要的是,你需要知道这些命令是干什么的,需要知道这些命令是怎么做的。本文将介绍PING扫描和UDP扫描。TCP扫描会在后面的文章中介绍。PING扫描(-sP)有些扫描会导致网络拥塞,但是PING扫描最多只会在网络中生成两个数据包。当然这两个包不包括可能需要的DNS查找和ARP请求。每个扫描到的IP至少需要一个数据包才能完成Ping扫描。通常使用Ping扫描来检查指定IP地址上是否有在线主机。例如,当我有网络连接但无法连接到给定的Web服务器时,我可以使用PING来确定服务器是否在线。PING也可用于验证我当前设备和Web服务器之间的路由是否正常工作。注意:当我们讨论TCP/IP时,相关信息在Internet和使用TCP/IP协议的局域网(LAN)上都很有用。这些程序都有效。它在广域网(WAN)上也能很好地工作。当参数为域名时,我们需要域名解析服务找到对应的IP地址,此时会产生一些额外的数据包。比如我们执行pinglinuxforum.com时,首先需要请求域名(linuxforum.com)的IP地址(98.124.199.63)。当我们ping98.124.199.63时不需要DNS查找。当MAC地址未知时,需要发送ARP请求获取指定IP地址的MAC地址(LCTT译注:这里的指定IP地址不一定是目的IP)。Ping命令将Internet消息控制协议(ICMP)数据包发送到指定的IP地址。此数据包是一个需要响应的ICMPEcho请求。当服务器系统在线时,我们会得到一个响应数据包。当两个系统之间存在防火墙时,PING请求包可能会被防火墙丢弃。一些服务器还配置为不响应PING请求以避免可能的PING死亡。(LCTT译注:目前的操作系统似乎不太可能)注:PINGofdeath是一种恶意制作的PING数据包,当发送到系统时会导致打开的连接等待rest数据包。一旦系统响应了一堆这样的恶意请求,由于所有可用的连接都已经打开,系统将拒绝所有其他连接。处于这种状态的系统在技术上是无法访问的。当系统收到ICMPEcho请求时,它将返回ICMPEcho响应。当源系统收到ICMPEcho响应时,我们知道目标系统可以在线访问。使用NMAP时,您可以指定单个IP地址或IP地址范围。当指定为PING扫描(-sP)时,对每个IP地址执行PING命令。在图1中,您可以看到我的nmap-sP10.0.0.1-10命令的结果。该程序将尝试联系IP地址在10.0.0.1和10.0.0.10之间的每个系统。为每个IP地址发出三个ARP请求。在我们的示例中,发出了30个请求,10个IP地址中有两个响应。(LCTT译注:此处原文存疑。)图1和图2是网络上另一台电脑使用Wireshark抓包发送的请求——没错,这个抓包是在Windows系统下完成的。第一行显示发送的第一个请求,广播请求是MAC地址对应的IP地址10.0.0.2。10.0.0.1被跳过,因为NMAP在10.0.0.1机器上执行。由于跳过了本地IP地址,我们现在可以看到总共只发出了27个ARP请求。第二行显示了机器10.0.0.2的ARP响应。第3行到第10行是对其他八个IP地址的ARP请求。第十一行是10.0.0.2发送(重新)发送的另一个ARP响应,因为10.0.0.2没有收到请求系统(10.0.0.1)的回复。第十二行是源系统发起的到10.0.0.2的HTTP连接的'SYN'和Sequence0。第13行和第14行中的两个Restart(RST)和Synchronize(SYN)响应用于关闭(并重新发送)第12行中打开的连接。请注意,SequenceID为'1'-是源SequenceID+1。第十五行开头,内容类似。(LCTT译注:此处原文有误,已根据情况修改)图2回到图1,可以看到有两台主机在线。其中一个是本地机器(10.0.0.1),另一个是(10.0.0.2)。整个扫描耗时14.40秒。PING扫描是一种用于发现在线主机的快速扫描。扫描结果中没有关于网络、系统的其他信息。这是在您的网络上发现在线主机的一个很好的初始方法,然后您可以对在线系统执行更复杂的扫描。您可能还会发现一些不应该在网络上的系统。互联网上出现的流氓软件是非常危险的。他们可以轻松收集内网信息和相关系统信息。获得在线系统列表后,您可以使用UDP扫描来查看哪些端口可能处于打开状态。UDP扫描(-sU)既然您知道哪些系统在线,您的扫描就可以集中在那些IP地址上。在整个网络上执行大量无针对性的扫描活动不是一个好主意。系统管理员可以使用程序来监控网络流量并在发生大量异常活动时触发警报。用户数据报协议(UDP)可用于发现在线系统上的开放端口。由于UDP不是面向连接的协议,因此不需要响应。这种扫描方式可以向指定的端口发送一个UDP包。如果目标系统没有响应,则端口将被关闭或过滤。如果端口打开,则应该有响应。在大多数情况下,目标系统将返回一条ICMP消息,说明端口无法访问。ICMP消息让NMAP知道端口已关闭。如果端口是打开的,那么目标系统应该用一个ICMP消息来响应,告诉NMAP这个端口是可以到达的。注意:只会扫描前1024个常用端口。(LCTT译注:这里将1000改为1024,因为说明书上说默认扫描1到1024端口)在后面的文章中,我们会介绍如何进行深度扫描。因为我知道主机10.0.0.2在线,所以我只会扫描这个IP地址。扫描期间共发送和接收了3278个数据包。sudonmap-sU10.0.0.2此命令的输出如图3所示。图3在此图中,您可以看到端口137(netbios-ns)已打开。图4显示了Wireshark捕获的结果。你看不到所有捕获的数据包,但你可以看到一长串UDP数据包。图4如果我关闭目标系统上的防火墙会怎样?我的结果略有不同。NMAP命令执行结果如图5所示。图5注意:执行UDP扫描时需要root权限。大量的数据包是由于我们使用了UDP。当NMAP发送UDP请求时,它不保证一定会收到数据包。它多次发送请求,因为数据包可能会在中间丢失。