nmap发现主机

nmap扫描主机,判断网内是否有存活主机,主要有

  • IP发现
  • ICMP发现
  • TCP发现
  • UDP发现
  • SCTP

nmap主机发现的参数设置,主要包括IP、ICMP、UDP、ARP、SCTP,也可以设置跳过主机发现。nmap如果启用主机发现,则若探测主机不在线,将不会进行下一步端口扫描,如果趣确认主机在线,可以跳过主机发现,直接进行端口扫描。

IP发现

-PO <protocol list>:使用IP数据包探测目标主机是否开启。其中,protocol list是协议编号列表。用户可以指定多个IP编号,如6(TCP)、17(UDP)、1(ICMP)和2(IGMP)。多个编号之间使用逗号分隔。如果没有指定协议,默认协议为1(ICMP)、2(IGMP)和4(IPv4),等同于-PO1,2,4。
注意:在选项-PO中,O是大写字母O,不是数字0。另外,选项和协议编号之间没有空格。如果指定的协议为ICMP、IGMP、TCP、UDP,则默认添加对应的协议报头作为IP层的数据载荷。如果是其他协议,默认不添加任何数据载荷,除非使用--data、--data-string或者--data-length来指定。

  • 使用IP发现探测不在线主机

确实在默认的协议下,发送了 ICMP、IGMP、IPV4,而且由于没有收到回复,重发了一次。这里我是用eth0进行发现主机的。在实验的过程中,用eth1的话结果如下

可以看到是收到了来自192.168.72.2的响应。这里卡了我好久,因为教程里确实会收到响应,但是用eth0收不到响应。

后来发现是因为:eth1的虚拟网卡是NAT模式,有个默认网关:192.168.72.2,所以会收到来自网关的响应。而eth0是仅主机模式,没有连接网关,10.11.2.3这个我随便写的地址不可达,当然就收不到响应。后面教程里很多差别就是体现在这个RCVD中,都是由于这个原因。就不多解释了。 

-sn选项,nmap默认会在主机发现后进行端口扫描,-sn则禁用端口扫描。当仅使用-sn选项时,默认发送ICMP Echo、TCP-ACK(80端口)、TCP-SYN(443端口)、ICMP时间戳请求。

-n选项:不进行DNS反向解析,不去请求DNS服务器,能节省时间

  •  使用IP发现探测在线主机

这里注意在同一个网段下,nmap会默认使用ARP进行发现主机,。所以用 -send-ip禁用ARP,也可以使用 -disable-arp-ping,效果是一样的

如果不禁用ARP,就会默认使用ARP发现主机

  •  使用TCP实施IP发现,指定PO6则是使用TCP,设置ACK位实施主机发现,默认向目标主机的80端口发送TCP-ACK报文

可以看到向目标主机发送了TCP-ACK报文,收到TCP-RST,说明主机在线 。后面几种方法道理是一样的,只不过是发送不通的协议进行主机发现,归根结底都是在IP协议上实现的其他网络协议,就不一一截图分析了。有兴趣的朋友可以自己试一下。

ICMP发现

Internet控制报文协议(Internet Control Message Protocol,ICMP)是TCP/IP簇的一个子协议,用于在IP主机、路由器之间传递控制消息。该协议在网络中的主要作用就是实现主机探测、路由维护、路由选择和流量控制。Nmap工具可以利用该协议来实现主机探测。用户通过使用ICMP请求、ICMP响应、ICMP时间戳和ICMP地址掩码请求4种方式来实现主机发现,以探测活动的主机。

  • ICMP Echo请求  -PE,发送一个ICMP Echo(type=8/code=0)请求,等价于-PO1
  • ICMP时间戳 -PP ,发送一个ICMP时间戳请求(type=13/code=0)
  • ICMP掩码请求 -PM,发送要给ICMP掩码请求(type=17/cod=0)

TCP发现

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Nmap中,用户可以通过发送TCP SYN和TCP ACK请求来探测目标主机是否在线。

  • TCP SYN -PS,发送一个TCP-SYN请求
  • TCP ACK,-PA,发送一个TCP-ACK请求,等价于 -PO6

UDP发现

用户数据报协议(User Datagram Protocol,UDP)是OSI(Open System Interconnection,开放式系统互联)参考模型中的一种无连接的传输层协议,提供面向事务的简单不可靠信息传输服务。该协议和TCP一样,都位于传输层,处于IP的上一层,用来处理数据包。由于UDP不提供数据包分组、组装,不能对数据包进行排序,报文发送之后,无法确定是否能安全、完整地到达目的地。TCP报文通常会被防火墙限制,所以使用UDP报文探测是一个很好的方式。

由于UDP是一个无连接的协议,在发送数据包之前不需要建立连接。这样可以减少发送数据之前连接的时间。另外,使用UDP传输数据没有拥塞控制,所以传输速度快。使用UDP发现主机最大的优点就是可以穿越仅过滤TCP的防火墙和过滤器

  • -PU<portlist> UDP发现就是向目标主机指定的端口发送一个空的UDP报文,默认是40125。如果用户想要发送带数据的UDP报文,则可以使用--data-length选项追加数据。如果目标主机在线的话,将响应一个ICMP端口无法到达的报文。如果目标主机不在线,将忽略该报文,不做任何响应。另外,用户也可以指定扫描的UDP端口。如果目标主机指定的端口刚好开启,将会响应UDP报文。

ARP发现

  • -PR 发送ARP请求

SCTP发现

  • -PY <portlist>:实施SCTP INIT Ping扫描。该扫描方式默认向80端口发送一个SCTP INIT数据包来实施主机发现。也可以指定关联的端口,如-PY20,21。选项和端口之间没有空格,端口之间使用逗号分隔。如果目标主机在线,将收到一个SCTP INIT-ACK数据包;如果目标主机不在线,将不会收到响应包。

其他参数

-R:对IP地址进行反向域名解析。它是默认选项。
-n:禁止域名解析。

-traceroute:实施路由跟踪。

--P0或-Pn跳过主机发现。其中,-P0选项中的0是数字0而不是字母O。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值