暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 nmap 扫描目标网站中的端口

TIAP 2022-11-09
625

Nmap 是一个用于网络发现和安全审计的开源实用程序,可以将其用于渗透测试、网络分析等。

这是一个选项非常多的程序,不过我们本文的重点并不是介绍如何使用 nmap,而是介绍扫描端口的各种方法。为了便于演示,我们在下面的例子中将使用 nmap 提供的 scanme.nmap.org 作为扫描目标。

扫描开放的端口

使用 -sT 参数,nmap 可以执行简单的 TCP 扫描,以查找开放的端口:
    nmap -sT scanme.nmap.org

    在上图中可以看到,扫描目标中有两个比较重要的端口开放,分别为端口 22 和 80.

    22 端口和 80 端口分别是 ssh 和 http 服务使用的端口。如果这些端口之前未处于活动状态,那么应该检查目标系统的系统日志,以发现可能的安全漏洞。

    上述例子是扫描 TCP 端口,如果要扫描 UDP 服务端口,可使用如下命令:
      sudo nmap -sU scanme.nmap.org

      在这里需要注意的是,与 TCP 扫描不同,要扫描 UDP 端口,需要有 root 权限。

      扫描指定的端口

      nmap 的一个基本功能,使用 -p 选项,可以指定端口号来扫描单个端口。我们来看下面的例子。

      Apache 的端口号为 80 和 443,其中端口80是 Apache 上 HTTP 请求的默认端口号,我们可以使用 nmap 扫描该端口号,如下:
        nmap -p 80 scanme.nmap.org

        同样,对于 https 协议的 443端口(默认端口),也可以同样扫描:

          nmap -p 443 scanme.nmap.org

          ssh 服务的默认端口号为 22,因此如果要扫描 ssh 连接的话,可以扫描 22 端口:
            nmap -p 22 scanme.nmap.org

            另外,对于单个端口的扫描,还可以使用服务名称来代替端口号,比如对于ssh端口,可以使用:

              nmap -p ssh scanme.nmap.org

              以上是使用 nmap 扫描指定端口号的例子,大家可以照例尝试下扫描其他协议或端口号。

              下面给出了一些常用服务(协议)的默认端口号
              • 20: FTP data

              • 21: FTP 控制端口

              • 22: SSH

              • 23: Telnet (不安全,不建议使用)

              • 25: SMTP

              • 53: DNS services

              • 67: DHCP server port

              • 68: DHCP client port

              • 80: HTTP

              • 143: IMAP 邮件端口

              • 161: SNMP

              • 443: HTTPS - 加密的web服务

              • 587: SMTP - 消息提交端口

              扫描多个端口
              要扫描多个端口,依然可以使用 -p 选项,将多个端口之间使用逗号隔开,如下:
                nmap -p 22,25,80 scanme.nmap.org

                指定多个端口范围:

                  nmap -p 80-85,130-140,22 scanme.nmap.org

                  关于端口的范围,还有一种用法,比如上面的端口范围 80-85,可以省略前面的80,变成 -85,这样的话,实际的扫描范围为 1-85。下面的例子扫描端口 1 到 22:
                    nmap -p -22 scanme.nmap.org

                    类似,如果在端口范围中,省略后面那个值,则会从第一个指定的端口号开始扫描,一直到最后一个可能的端口号:
                      nmap -p 65255- scanme.nmap.org

                      在 nmap 中使用通配符

                      使用通配符还可以简化扫描任务,假设我们要扫描所有与 http 相关的端口:
                        nmap -p http* scanme.nmap.org

                        扫描顶部端口

                        扫描每个协议的所有 65536 个端口是一项非常耗时的任务,然而,这些端口中的大多数几乎没有开放。。。Nmap 的开发人员 Fyodor 简化了这个操作。

                        他通过研究数百万个IP地址和探索许多企业网络,找到了最流行的TCP和UDP端口。

                        根据 Fyodor 的研究,扫描工作要覆盖 90% 的开放端口,只需要针对 576 个 TCP 端口和 11307 个 UDP 端口即可。--top-ports 选项仅扫描这些常用的端口:
                          nmap --top-ports 1000 scanme.nmap.org

                          -F 选项只扫描最常用的前 100 个端口。

                          下面是我们总结的几个最常用的使用 nmap 扫描端口的方法:

                          扫描 TCP 端口,使用  -sT 选项:
                            sudo nmap -sT scanme.nmap.org

                            扫描 UDP 端口,使用 -sU 选项:

                              sudo nmap -sU scanme.nmap.org

                              扫描 TCP 和 UDP 端口,可使用如下命令:

                                sudo nmap -n -PN -sT -sU -p- scanme.nmap.org

                                扫描SYN数据包,可以使用 -sS 选项:

                                  sudo nmap -sS scanme.nmap.org
                                  使用 nmap 可以扫描目标网站上开放的端口,此外我们可以结合使用 netstat ps 命令,通过这些扫描出来的端口,来识别相应的服务。

                                  以上就是本次分享全部内容,欢迎讨论。


                                  【推荐阅读】
                                  Linux中常见的网络端口号
                                  Linux 中如何检查开放的端口
                                  Linux 中关于 ps 命令的一些常用例子
                                  Linux下网络连接分析指令:netstat
                                  实用Linux命令 - ps

                                  文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                  评论