April 15, 2023
By: Kevin

nmap 地表最强大的端口扫描器

  1. 端口
  2. 端口扫描和nmap
  3. 使用
    1. 基本扫描
    2. 隐形扫描
    3. 版本扫描
    4. 操作系统扫描
    5. 激进的扫描
    6. 扫描多个主机
    7. 端口扫描
    8. 从文件扫描
    9. 浏览和导出扫描结果
    10. Nmap帮助
    11. Nmap脚本引擎
    12. Zenmap
  4. 参考资料

Nmap是渗透测试人员使用的最著名的扫描工具, 本文介绍了一些端口相关的基础知识, 以及Nmap的一些核心功能以及一些有用的命令.

端口

网络上的计算机要提供某种服务, 需要通过某个端口来完成. 端口不对应任何的硬件, 是一个软件层的抽象.

端口的范围在1到65335, 常见的端口有22(ssh), 80(http), 3306(mysql), 5900(vnc)等等. 端口的范围有三个分段:

| port range     | usage              |
|----------------|--------------------|
| 1     to 1024  | well-known port    |
| 1024  to 49151 | registed port      |
| 49151 to 65535 | any thing you like |

unix/linux 主机上的 /etc/services 文件记录了常见端口

less /etc/services

端口扫描和nmap

检查服务器是否开放了某个端口的操作称为端口扫描, 可以批量扫描一个子网内的所有计算机.

nmap就是这么一个命令, 是Network Mapper的缩写.

它是一个开源的Linux命令行工具,用于扫描网络中的IP地址和端口,并检测已安装的应用程序.

Nmap允许网络管理员查找在其网络上运行的设备,发现开放的端口和服务,并检测漏洞.

Nmap无需复杂配置, 支持简单的命令(例如,检查主机是否启动)和通过Nmap脚本引擎进行复杂脚本.

Nmap的其他功能包括:

  • 能够快速识别单个或多个网络上的所有设备,包括服务器、路由器、交换机、移动设备.
  • 帮助识别在系统上运行的服务,包括Web服务器、DNS服务器和其他常见应用程序, Nmap还可以以合理的准确性检测应用程序版本,以帮助检测现有的漏洞.
  • Nmap可以找到有关在设备上运行的操作系统的信息。它可以提供操作系统版本等详细信息,从而在渗透测试期间更容易计划其他方法.
  • 在安全审计和漏洞扫描期间,您可以使用Nmap脚本引擎中的现有脚本攻击系统.
  • Nmap有一个名为Zenmap的图形用户界面。它可以帮助您开发网络的可视化映射,以获得更好的可用性和报告.

使用

基本扫描

扫描网络上的活动设备列表是网络映射的第一步。有两种类型的扫描可用于此:

Ping扫描—扫描给定子网上启动和运行的设备列表.

nmap -sP 192.168.1.1/24

扫描单个主机—扫描单个主机的1000个知名端口。这些端口是SQL、SNTP、apache等流行服务使用的端口.

nmap www.baidu.com
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-15 20:19 CST
Nmap scan report for www.baidu.com (110.242.68.4)
Host is up (0.042s latency).
Other addresses for www.baidu.com (not scanned): 110.242.68.3
Not shown: 997 filtered tcp ports (no-response)
PORT    STATE SERVICE
21/tcp  open  ftp
80/tcp  open  http
443/tcp open  https

隐形扫描

隐形扫描通过发送SYN数据包和分析响应来执行。如果收到SYN/ACK,则表示端口已打开,可以打开TCP连接.

然而,隐形扫描永远不会完成3向握手,这使得目标很难确定扫描系统.

nmap -sS scanme.nmap.org

可以使用“-sS”命令执行隐形扫描. 隐形扫描速度更慢,不像其他类型的扫描那样具有攻击性,因此您可能需要等待一段时间才能获得响应.

版本扫描

查找应用程序版本是渗透测试的关键部分.

可以从特定版本的服务的公共漏洞和漏洞(CVE)数据库中找到现有漏洞. 然后,可以使用Metasploit等开发工具攻击机器.

nmap -sV scanme.nmap.org

要进行版本扫描,使用“-sV”命令. Nmap将提供其版本的服务列表. 版本扫描并不总是100%准确,但它确实使您离成功进入系统又近了一步.

操作系统扫描

除了服务及其版本外,Nmap还可以使用TCP/IP指纹提供有关底层操作系统的信息. Nmap还将尝试在操作系统扫描期间找到系统正常运行时间.

nmap -sV scanme.nmap.org

可以使用osscan-limit等附加标志将搜索限制为几个预期目标. Nmap将显示每个操作系统猜测的置信度百分比.

操作系统检测并不总是准确的,但它有助于探测者更接近他们的目标。

激进的扫描

Nmap有一个攻击性模式,可以启用操作系统检测、版本检测、脚本扫描和跟踪路由. 可以使用-A参数执行攻击性扫描.

nmap -A scanme.nmap.org

激进的扫描比常规扫描提供的信息要好得多. 然而激进的扫描也会发出更多的探测,并且更有可能在安全审计期间被检测到(容易暴露自己).

扫描多个主机

Nmap具有同时扫描多台主机的能力。当您管理庞大的网络基础设施时,此功能会派上用场.

您可以通过多种方法扫描多个主机:

将所有IP地址写在一行中,以同时扫描所有主机。

nmap 192.164.1.1 192.164.0.2 192.164.0.2

使用星号(*)一次扫描所有子网。

nmap 192.164.1.*

添加逗号来分隔地址结尾,而不是键入整个域。

nmap 192.164.0.1,2,3,4

使用连字符指定IP地址范围

nmap 192.164.0.0–255

端口扫描

端口扫描是Nmap最基本的功能之一, 可以通过多种方式扫描端口.

使用-p参数扫描单个端口

nmap -p 973 192.164.0.1

如果指定端口类型,则可以扫描有关特定类型连接的信息,例如TCP连接.

nmap -p T:7777, 973 192.164.0.1

一系列端口可以通过用连字符分隔来扫描它们

nmap -p 76–973 192.164.0.1

还可以使用-top-ports标志来指定要扫描的顶部n个端口

nmap --top-ports 10 scanme.nmap.org

从文件扫描

如果想扫描一个大的IP地址列表,您可以通过导入包含IP地址列表的文件来完成.

nmap -iL /input_ips.txt

上述命令将生成“input_ips.txt”文件中所有给定域的扫描结果.

除了简单地扫描IP地址外,您还可以使用其他选项和标志.

浏览和导出扫描结果

渗透测试可以持续几天甚至几周, 导出Nmap结果有助于避免冗余工作,并有助于创建最终报告.

详细输出: -v verbsoe

nmap -v scanme.nmap.org

详细输出提供了有关正在执行的扫描的更多信息。监控Nmap在网络上执行的分步操作是有用的, 对于初学者特别有用.

输出到文本

Nmap扫描也可以导出到文本文件。它将与原始命令行输出略有不同,但它将捕获所有基本的扫描结果.

nmap -oN output.txt scanme.nmap.org

XML输出

Nmap扫描也可以导出到XML, 导入扫描结果时易于解析.

nmap -oX output.xml scanme.nmap.org

多种格式一起导出, 还可以使用-oA命令一次以所有可用格式导出扫描结果.

nmap -oA output scanme.nmap.org

上述命令将在三个文件中导出扫描结果——output.xml,output.Nmap和output.gnmap

Nmap帮助

Nmap有一个内置的帮助命令,列出了可以使用的所有标志和选项, 考虑到Nmap附带的命令行参数数量,它通常很方便.

nmap -h

Nmap脚本引擎

Nmap脚本引擎(NSE)是一个非常强大的工具,可以使用它来编写脚本和自动化许多网络功能.

可以找到大量分布在Nmap上的脚本,或者根据您的要求编写自己的脚本, 甚至可以使用Lua编程语言修改现有脚本.

Zenmap

Zenmap是Nmap的图形用户界面。这是一个免费的开源软件,可帮助您启动并运行Nmap。

除了提供可视化网络映射外,Zenmap还可以保存和搜索扫描件以备将来使用.

Zenmap非常适合想要在不通过命令行界面的情况下测试Nmap功能的初学者.

参考资料

https://github.com/jasonniebauer/Nmap-Cheatsheet

Tags: linux nmap