前言
nmap是一个免费的开源的应用程序,主要用来网络发现与安全扫描,本身设计师用来扫描大型网络,当然也可以扫描单个主机。nmap使用原始ip报文来发现网络上的主机,以及提供的服务,还有所用的系统版本等等nmap的功能相当强大,强烈推荐去阅读官方文档
官方文档链接
格式
nmap [ <扫描类型> …] [ <选项> ] { <扫描目标说明> }
返回状态
Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。“所感兴趣的端口表格”是其中的关键。那张表列出端口号,协议,服务名称和状态。状态可能是open(开放的),filtered(被过滤的),closed(关闭的),或者unfiltered(未被过滤的)。Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是open(开放的) 还是closed(关闭的)。closed(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是unfiltered(未被过滤的) 如果Nmap报告状态组合open|filtered 和 closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议扫描时 (-sO),Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。
主机发现
-sn:只进行主机发现
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程
-sP (Ping扫描) 容易被防火墙捕获
-sP选项在默认情况下, 发送一个ICMP回声请求和一个TCP报文到80端口。如果非特权用户执行,就发送一个SYN报文 (用connect()系统调用)到目标机的80端口。当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR), ,除非使用了–send-ip选项。-sP选项可以和除-P0)之外的任何发现探测类型-P*选项结合使用以达到更大的灵活性。一旦使用了任何探测类型和端口选项,默认的探测(ACK和回应请求)就被覆盖了。当防守严密的防火墙位于运行Nmap的源主机和目标网络之间时, 推荐使用那些高级选项。否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。
-PS [portlist](TCP SYN Ping)
SYN标志位告诉对方您正试图建立一个连接。通常目标端口是关闭的,一个RST (复位) 包会发回来。如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应 一个SYN/ACK TCP报文。然后运行Nmap的机器则会扼杀这个正在建立的连接, 发送一个RST而非ACK报文,否则,一个完全的连接将会建立。RST报文是运行Nmap的机器而不是Nmap本身响应的,因为它对收到 的SYN/ACK感到很意外。
-PA [portlist](TCP ACK Ping) 容易被防火墙捕获
TCP ACK ping和刚才讨论的SYN ping相当类似。也许您已经猜到了,区别就是设置TCP的ACK标志位而不是SYN标志位。ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。所以远程主机应该总是回应一个RST报文, 因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话。
-PU [portlist](UDP Ping)
它发送一个空的(除非指定了–data-lengthUDP报文到给定的端口,如果目标机器的端口是关闭的,UDP探测应该马上得到一个ICMP端口无法到达的回应报文。这对于Nmap意味着该机器正在运行。许多其它类型的ICMP错误,像主机/网络无法到达或者TTL超时则表示down掉的或者不可到达的主机。没有回应也被这样解释。如果到达一个开放的端口,大部分服务仅仅忽略这个 空报文而不做任何回应。
-PR(ARP Ping)
端口扫描
-sS(TCPSYN扫描)
它常常被称为半开放扫描,因为它不打开一个完全的tcp连接.它发送一个syn报文,就像您真的要打开一个连接,然后等待响应.表示端口在监听(开放),而rst(复位)表示没有监听者.)如果数次重发后仍没响应,该端口就被标记为被过滤.如果收到icmp不可到达错误(类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤.
-sT(tcp CONNECT()扫描)
nmap通过创建没有像大多数其他扫描类型那样编写原始数据包,而是编写原始数据包。connect()系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文.这是和浏览器,P2P客户端以及大多数其它网络应用程序用以建立连接一样的高层系统调用。
会留下日志
-sU(UDP扫描)
-sA(TCPACK扫描)
这种扫描与目前为止讨论的其它扫描的不同之处在于它不能确定open(开放的)或者)open|filtered(开放或者过滤的))端口.它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的.
-p (只扫描指定的端口)
版本与服务
-sV(版本探测)
打开版本探测.您也可以用-A同时打开操作系统探测和版本探测.
-O(启用操作系统检测)
也可以使用-A来同时启用操作系统检测和版本检测.
来源:CSDN
作者:带头大哥段坤
链接:https://blog.csdn.net/qq_40252049/article/details/103767202