nmap命令_Kali Linux实战篇:Nmap主机发现原理与实战

42bfaa623c53797633bf195b592322f6.png

一、Nmap介绍

nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。

正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Nmap 常被跟评估系统漏洞软件Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。

二、主机发现

    主机发现(Host Discovery),即用于发现目标主机是否在线(Alive,处于开启状态)。

    主机发现发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。

    主机发现基本原理:(以ICMP echo方式为例)

8c4a1bba1ccafe14a6c9806020148854.png

Nmap的用户位于源端,IP地址192.168.0.5,向目标主机192.168.0.3发送ICMP Echo Request。如果该请求报文没有被防火墙拦截掉,那么目标机会回复ICMP Echo Reply包回来。以此来确定目标主机是否在线。

    默认情况下,Nmap会发送四种不同类型的数据包来探测目标主机是否在线。

(1) ICMP echo request

(2) a TCP SYN packet to port 443

(3) a TCP ACK packet to port 80

(4) an ICMP timestamp request

    依次发送四个报文探测目标机是否开启。只要收到其中一个包的回复,那就证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。

    通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。而在某些特殊应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。

    不管是作为辅助用法还是专门用途,用户都可以使用Nmap提供的丰富的选项来定制主机发现的探测方式。

    -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。

    -sn: Ping Scan 只进行主机发现,不进行端口扫描。

    -sP: Ping Scan 只进行主机发现,不进行端口扫描。

    -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。

    -PS[portlist]: 使用TCP SYN Ping扫描方式进行发现。

    -PA[portlist]: 使用TCP ACK Ping扫描方式进行发现。

    -PU[portlist]: 使用TCP UDP Ping扫描方式进行发现。

    -PY[portlist]: 使用SCTP INIT Ping扫描方式进行发现。

    -PR: ARP Ping Scan

    -PE: 使用ICMP echo Ping扫描方式发现主机。

    -PP: 使用ICMP timestamp Ping扫描方式发现主机。

    -PM: 使用ICMP netmask Ping扫描方式发现主机。

    -PO[protocollist]: 使用IP协议包探测对方主机是否开启(非ping扫)。

    -n:表示不进行DNS反向解析(使用该选项的时候Nmap永远不对目标ip地址作反向域名解析)

    -R:表示总是进行DNS解析(使用该选项的时候Nmap永远对目标ip地址作反向域名解析)。

    -6: 扫描IPv6地址

    —dns-servers : 指定DNS服务器。

    —system-dns: 指定使用系统的DNS服务器

    —traceroute: 路由跟踪(使用—traceroute选项即可进行路由追踪.)使用路由追踪功能可以帮助用户了解网络的同行情况,通过此选项可以轻松地查出从计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间.

 其中,比较常用的使用的是-sn,表示只单独进行主机发现过程;-Pn表示直接跳过主机发现而进行端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项);-n,如果不想使用DNS或reverse DNS解析,那么可以使用该选项。

例如:

命令 nmap 192.168.20.16

84ca3a68c4a68fb55c5bebb22e877411.png

该扫描方式没有给出具体主机发现的选项,主要是针对IP或者域名进行扫描,扫描方式迅速,可以方便的发现目标端口的开放情况以及主机在线情况。

如果出现如下图的情况

63e0354b77820d6451284f5e26245cee.png

则先ping一下该IP地址,此处为ping 192.168.20.16来查看网络的连通性,网络通之后再执行nmap命令。

ee6a9678fa80a7aac4a4fe3390faa774.png

命令 nmap -sP 192.168.20.16/24

Ping扫描方式,只进行ping扫描,然后显示在线的主机。扫描时只需要加入 -sP ,Nmap进行ping扫描,然后回显出做出响应的主机,使用该选项扫描可以轻易的获取目标信息而又不被轻易发现。在默认的情况下Nmap回发送一个ICMP回声请求和一个TCP报文到目标端口。ping扫描的 优点是不会返回太多的信息造成对结果的分析,并且这是一种非常高效的扫描方式。

926ccec4b86b5cb107296fae32613095.png

命令 nmap -Pn 192.168.20.16

1019f12b24eec77301277289f5c1c325.png

加入 -Pn,将所有指定的主机视作开启的,跳过主机发现的过程。

命令 nmap -PS -v 192.168.20.16

d6f5c0f4e76ae32e6ae73198509cf975.png

TCP SYN Ping 扫描发送了一个设置了SYN标志的空TCP报文。默认目标的端口80 (也可以通过改变nmap.h)文件中的DeFault-TCP-PROBE-PORT值进行设置,也可以通过”-PS22,23,25,80,115,3306,3389 “进行设定,每个端口被并发的扫描。

通常情况下,nmap默认使用TCP ACK 和ICMP Echo请求对目标进行是否存活的响应,当目标主机的防火墙阻止这些请求时,可以使用 TCP SYN Ping扫描对目标主机是否存活进行判断。

Nmap是通过SYN/ACK和RST响应来对目标主机是否存活进行判断,但在特定的情况下防火墙会丢弃RST包,这种情况下扫描的结果会不准确,这时需要指定一个端口或者端口范围来避免这种情况。

例如输入命令:nmap -PS80,100-200 -v 192.168.20.16

命令 nmap -PA -v 192.168.20.16

6bed24604dd97a25ac54010a54237d24.png

TCP ACK Ping扫描,这种探测方式可以探测阻止SYN包或者ICMP Echo请求的主机。

可以同时使用 -PA -PS

nmap -PA -PS 192.168.20.16

命令 nmap -PU -v 192.168.20.16

cd529eb11259b1354d5db866102420bc.png

UDP Ping 扫描是发送一个空的UDP报文到指定的端口,如果不指定端口则默认40125

使用UDP ping扫描时Nmap会发送一个空的UDP包到目标主机,如果目标主机响应则返回一个ICMP端口不可达错误,如果目标主机不是存活状态则会返回各种ICMP错误信息。


 学习更多白帽子网络攻防与编程系列课,可点击【阅读原文】前往!     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值