Linux Command nmap - 主机发现,端口扫描,服务和版本探测 实践

nmap

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

其基本功能有三个:

  • 是扫描主机端口,嗅探所提供的网络服务
  • 是探测一组主机是否在线
  • 还可以推断主机所用的操作系统,到达主机经过的路由,系统已开放端口的软件版本
NMap端口状态

当nmap向目标主机发送报文并根据返回报文从而认定端口的6种状态。(注意:这六种状态只是namp认为的端口状态,例如:有些主机或者防火墙会返回一些不可靠的报文从而妨碍nmap对端口开放问题的确认)

  • Open(开放的):端口处于开放状态,意味着目标机器上的应用程序正在该端口监听连接/报文

  • Closed(关闭的):端口处于关闭状态。这里我们值得注意的是关闭的端口也是可访问的,只是该端口没有应用程序在它上面监听,但是他们随时可能开放

  • Filtered(过滤的):由于包过滤阻止探测报文到达端口, Nmap 无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙

  • Unfiltered(未被过滤的):意味着端口可访问,但 Nmap 不能确定它是开放还是关闭

    这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没能够被nmap访问。端口被定义为Unfilterd只会发生在TCP ack扫描类型时当返回RST的报文。而端口被定义为filtered 状态的原因是是报文被防火墙设备,路由器规则,或者防火墙软件拦截,无法送达到端口,这通常表现为发送NMAP的主机收到ICMP报错报文,或者主机通过多次重复发送没有收到任何回应)。

  • Open|filtered状态:这种状态主要是nmap无法区别端口处于open状态还是filtered状态。这种状态只会出现在open端口对报文不做回应的扫描类型中,如:udp,ip protocol ,TCP null,fin,和xmas扫描类型

  • Closed|filtered状态:这种状态主要出现在nmap无法区分端口处于closed还是filtered时

例子

主机发现,以下结果为不存在:

:nmap 1.2.3.4
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 22:55 CST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.09 seconds

检查目标主机mail所开启的TCP服务:

:nmap www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 22:47 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.015s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 997 filtered ports
PORT    STATE  SERVICE
80/tcp  open   http
443/tcp open   https
445/tcp closed microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 7.30 seconds

仅仅进行ping扫描 (主机发现),没有进一步的测试 (如端口扫描或者操作系统探测):

:nmap -sP www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 22:56 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.028s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds

TCP SYN 主机扫描:

  1. 主机发现只连接目标主机TCP的80 端口,不使用ICMP,连接时发送SYN标志位的空TCP报文;
    SYN 标志位告诉对方您正试图建立一个连接。通常目标端口是关闭的,一个 RST (复位) 包会发回来;
    2. 如果碰巧端口是开放的,目标会进行 TCP 三步握手的第二步,回应 一个SYN/ACK TCP 报文。
    3. 然后运行 Nmap 的机器则会扼杀这个正在建立的连接,发送一个 RST而非 ACK 报文,否则,一个完全的连接将会建立。 RST 报文是运行 Nmap 的机器而不是Nmap 本身响应的,因为它对收到 的 SYN/ACK 感到很意外。
    4. Nmap 并不关心端口开放还是关闭。 无论 RST 还是 SYN/ACK 响应都告诉 Nmap 该主机正在运行。
不会建立连接,只是试一下可不可以:
:nmap -PS www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 22:59 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.018s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 997 filtered ports
PORT     STATE  SERVICE
80/tcp   open   http
443/tcp  open   https
4444/tcp closed krb524

Nmap done: 1 IP address (1 host up) scanned in 8.10 seconds

TCP ACK主机扫描

  1. TCP ACK 扫描和刚才讨论的TCP SYN扫描相当类似(-PA 选项使用和 SYN 探测相同的默认端口80)。 区别就是设置TCP的 ACK 标志位而不是 SYN 标志位。 提供SYN和ACK两种ping是使其通过防火墙的机会尽可能大。
  2. ACK 报文表示确认一个建立连接的尝试,但该连接尚未完全建立。 所以远程主机应该总是回应一个 RST 报文, 因为它们并没有发出过连接请求到运行 Nmap 的机器,如果它们正在运行的话。
  3. 由于没头没脑的 ACK 报文通常会被识别成伪造的而丢弃。解决这个两难的方法是通过即指定 -PS,又指定-PA 来即发送 SYN 又发送 ACK。
:nmap -PS -PA www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 23:01 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.024s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 6.61 seconds

TCP SYN 端口扫描

  1. (半连接2/3)默认用—SP去发现主机
  2. SYN扫描最默认最受欢迎的扫描选项,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口。 SYN 扫描相对来说不张扬,不易被注意到,因为它从来不完成 TCP 连接。
  3. 它常常被称为半开放扫描,因为它不打开一个完全的 TCP 连接。它发送一个 SYN 报文,就像您真的要打开一个连接,然后等待响应。 SYN/ACK 表示端口在监听 (开放) ,而 RST (复位)表示没有监听者。
:sudo nmap -sS www.baidu.com
Password:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 23:04 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.023s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 8.16 seconds

TCP connect()扫描,如果该端口开放会建立三次握手过程:

:nmap -sT www.baidu.com

服务和版本探测:

:nmap -sV www.baidu.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-17 23:06 CST
Nmap scan report for www.baidu.com (163.177.151.110)
Host is up (0.014s latency).
Other addresses for www.baidu.com (not scanned): 163.177.151.109
Not shown: 998 filtered ports
PORT    STATE SERVICE  VERSION
80/tcp  open  http     Apache httpd
443/tcp open  ssl/http Apache httpd

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.77 seconds

感觉都差不多,需要跟抓包一起看。。

发布了157 篇原创文章 · 获赞 7 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/LU_ZHAO/article/details/104933732