Nmap 进行扫描和枚举记录
2023-12-21 22:10:37 Author: 渗透安全团队(查看原文) 阅读量:9 收藏

使用Nmap扫描网络

NO.1

基本用法

Nmap 的基本用法包括 Nmap 工具的概要。使用该工具的基本命令是:

Nmap [ <Scan Type> ...] [ <Options> ] { <target specification> }//这描述了该工具的基本用法,其中包括扫描类型、搜索中可以包含的各种选项,最后一部分包括目标规范。

Nmap 提供多种类型的扫描,可用于收集有关网络上的主机和服务的不同类型的信息。Nmap 中一些最常见的扫描类型包括:

    Ping 扫描:

    Ping 扫描用于确定主机是否在线。它向目标主机发送ICMP回显请求数据包并等待响应。如果收到响应,则主机被视为在线。为了执行 ping 扫描,我们使用标志“-sP”和“-sn”。用于执行 ping 扫描的命令示例是:

nmap -sP 192.168.10.1-255 // 此命令扫描网络并报告活动主机。

    TCP 连接扫描:

    TCP 连接扫描会建立到目标端口的完整 TCP 连接,以确定该端口是否打开。这是最基本、最可靠的扫描类型,但也是最慢且最容易检测到的。为了执行连接扫描,我们使用标志“-sT”。用于执行 TCP 连接扫描的命令示例是:

nmap -T4 -sT scanme.nmap.org


上图描绘了scanme.nmap.org 的 TCP 连接扫描结果。

    TCP SYN 扫描:

    TCP SYN 扫描也称为“半开”扫描,它向目标端口发送 SYN 数据包,并等待 SYN-ACK 或 RST 数据包作为响应。如果收到SYN-ACK数据包,则该端口被视为打开。为了执行 TCP SYN 扫描,我们使用标志“-sS”。用于执行 TCP 连接扫描的命令示例是:

nmap -sS -p- 192.168.10.1 // 此扫描执行隐形扫描,即不会留下扫描痕迹。

    TCP FIN、Xmas 和 Null 扫描:

    这些扫描使用 TCP 标志的不同组合来确定端口是否打开。它们对于逃避防火墙和入侵检测系统很有用。我们分别使用以下标志“-sF”、“-sX”、“-sN”来表示TCPFIN、XMAS 和 Null 扫描。

    UDP 扫描:

    UDP 扫描将 UDP 数据包发送到目标端口,并等待 ICMP “端口不可达”错误消息作为响应。如果没有收到错误消息,则该端口被视为打开。为了执行 UDP 扫描,我们使用标志“-sU”。用于执行 UDP 扫描的命令示例是:

nmap -sU -T4 scanme.nmap.org

    操作系统检测扫描:

    操作系统检测扫描使用多种技术来识别主机的操作系统。这对于了解网络环境和识别潜在漏洞非常有用。为了启用操作系统检测,我们使用标志“-o”。用于执行操作系统检测的命令示例是:

nmap -O -v 192.168.0.1

    版本检测扫描:

    版本检测扫描尝试识别在特定端口上运行的服务的特定版本。此信息可用于识别漏洞并确保软件是最新的。为了启用版本检测扫描,我们使用标志“-sV”。用于执行版本检测扫描的命令示例是:

nmap -sV -T4 scanme.nmap.org

脚本扫描:脚本扫描允许您在目标主机上运行Nmap 脚本引擎 (NSE)脚本,该脚本可用于收集有关网络上的主机和服务的其他信息。

高级用法

NMap 是用于网络探索和管理的强大工具,它提供了许多高级功能,可用于收集有关网络上的主机和服务的更详细信息。以下是 Nmap 高级用法的一些示例:

以下示例显示使用-A选项进行的完整扫描,该选项启用操作系统检测、版本检测、脚本扫描和跟踪路由。

该图描述了我们目标的扫描过程。

该图是我们执行的扫描的扫描报告。

使用Nmap过滤端口

NO.2

在漏洞扫描中识别开放端口的重要性


识别开放端口在漏洞扫描中至关重要,因为它允许安全研究人员确定可以从 Internet 访问哪些网络服务或应用程序,以及这些服务或应用程序可能存在哪些潜在漏洞或弱点。然后,该信息可用于确定安全工作的优先级并集中精力解决最关键的风险。

使用 Nmap 进行基本端口过滤

Nmap 提供了多个命令和选项来过滤正在扫描的端口。以下是一些基本的:

    -p 选项:此选项允许您指定要扫描的端口范围。例如,nmap -p 1-100 target_host扫描目标主机上的端口1到100 。    

    --top-ports 选项:该选项扫描 N 个最常用的端口。例如,nmap --top-ports 100 target_host扫描目标主机上最常用的100 个端口。

    -F 选项:此选项仅扫描最常见的100 个TCP 端口。

    -Pn选项:该选项会跳过主机发现,这意味着Nmap在扫描之前不会尝试确定目标主机是否存活。当扫描具有阻止主机发现探测的防火墙的主机时,这非常有用。

    -sS选项:该选项执行TCP SYN扫描,这是一种隐秘扫描,不会完成TCP握手,并且不太可能被防火墙检测到。

    -sU 选项:此选项执行 UDP 扫描,这对于查找目标主机上开放的 UDP 端口很有用。

    --exclude 选项:此选项允许您从扫描中排除特定端口。例如,nmap --exclude 22,53,80 target_host扫描目标主机上除端口 22、53 和 80 之外的所有端口。

        --help :此选项允许您检查 Nmap 的所有可用命令。如果您感到困难或难以记住命令,它会很有帮助。nmap --help

这些只是一些用于过滤端口的基本 Nmap 命令和选项。通过使用这些选项的组合,您可以微调 Nmap 扫描以针对网络上的特定服务和漏洞。

使用 Nmap 进行高级端口过滤

    排除端口:Nmap 允许您使用“--exclude-ports”选项从扫描中排除特定端口,例如“nmap --exclude-ports 22,53 target”。这对于避免扫描众所周知的服务端口很有用。

    仅扫描开放端口:Nmap 允许您仅扫描开放或具有特定状态(例如“开放”、“关闭”或“已过滤”)的端口,使用“--open”选项,例如 nmap --开放目标。

    扫描协议:Nmap 允许您分别使用-sS或-sU选项指定要扫描的协议(TCP 或 UDP),例如 nmap -sU target。

    主要端口:Nmap 有一个--top-ports选项,允许您扫描指定数量的最常见端口,例如nmap --top-ports 100 target。

    版本检测:Nmap 有一个--version-intensity选项,允许您指定版本检测的详细级别,范围从0 到 9,例如nmap --version-intensity 9 target。

    脚本扫描:Nmap 有一个--script选项,允许您指定要在目标系统上运行的脚本,例如nmap --script ssl-enum-ciphers target。

使用 Nmap 自定义和自动化端口过滤的技术

    1. Shell 脚本:Nmap 可以与 shell 脚本集成以自动执行重复性任务,例如扫描目标列表并将结果保存到文件中。

    2. 输入文件:Nmap 可以从文件中读取目标,允许您指定大量目标,而无需手动键入每个目标。nmap -iL <输入文件> 目标

    3.输出文件格式:Nmap支持多种输出文件格式,包括XML和grepable,可以很容易地被其他工具解析和处理。nmap -oN target - 以正常格式输出扫描。nmap -oX target - 以 XML 格式输出扫描。

    4. 预设:Nmap 包含多个预设,例如“aggressive”、“intense”和“fast”,可用于快速自定义扫描选项。

    5. Nmap 脚本:Nmap 拥有大量预先编写的脚本库,可用于自动执行常见任务,例如版本检测、操作系统指纹识别和漏洞扫描。

    6.命令行选项:Nmap提供了大量的命令行选项,可用于自定义扫描,例如指定目标、端口范围和计时选项。

    7. 配置文件:Nmap 允许您将自定义扫描选项保存到文件中,以便将来快速重新创建扫描。

    通过使用这些技术,可以使用 Nmap 自动化和自定义端口过滤,以满足您的特定需求。这可以节省时间并提高扫描效率。

使用Nmap枚举HTTP和HTTPS

NO.3

使用 Nmap 枚举 HTTP 和 HTTPS 的基本命令和选项

使用 Nmap 执行基本枚举的第一步是检查目标 IP 地址或主机名上的开放端口。可以使用nmap -p80 [目标 IP 地址或主机名]命令来检查目标上的端口 80 是否打开,如果打开,则返回有关在该端口上运行的服务的信息。

同样,nmap -p443 [目标 IP 地址或主机名]命令可用于检查端口443上的开放端口,该端口是 HTTPS 的默认端口。

另一个有用的枚举命令是nmap --script http-enum [目标 IP 地址或主机名]。此命令运行内置的 Nmap 脚本,该脚本尝试识别 Web 服务器和版本,以及服务器上的任何虚拟主机或目录。

除了这些基本命令之外,Nmap 还提供了几个可用于自定义扫描和收集更详细信息的选项。例如,-sV选项可用于确定开放端口上运行的服务的版本。-A选项可用于启用操作系统检测、版本检测、脚本扫描和跟踪路由。

此外,--script-args http.useragent=[User-Agent string]选项可用于指定连接到 HTTP 服务时将使用的用户代理字符串。上述示例如下:

nmap -p80 --script http-sqli-finder --script-args http.useragent="Mozilla 42" scanme.nmap.org

如何使用Nmap执行基本HTTP和HTTPS枚举

第一步是使用nmap -p 80 [目标 IP 地址或主机名]和nmap -p 443 [目标 IP 地址或主机名]命令检查目标 IP 地址或主机名上的开放端口。这将返回有关在这些端口上运行的任何服务的信息,包括服务名称、版本和任何开放端口。

使用Nmap扫描IP 45.33.32.156或Scanme.Nmap.Org上的80端口,返回端口被过滤且服务为HTTP的结果。


使用Nmap扫描IP 20.205.243.166或github.com上的443端口,返回结果为端口被过滤,服务为HTTPS的结果。

接下来,可以使用nmap --script http-enum [目标 IP 地址或主机名] 命令运行内置 Nmap 脚本,该脚本尝试识别 Web 服务器和版本,以及服务器上的任何虚拟主机或目录。

nmap --script http-enum github.com


最后,我们可以使用前面讨论的选项来自定义扫描并收集更详细的信息。例如,-sV选项可用于确定开放端口上运行的服务的版本,“-A”选项可用于启用操作系统检测、版本检测、脚本扫描和traceroute。此外,--script-args http.useragent=[User-Agent string]选项可用于指定连接到 HTTP 服务时将使用的用户代理字符串。

使用 Nmap 枚举 HTTP 和 HTTPS 的高级选项和命令

使用 Nmap 执行高级 HTTP 和 HTTPS 枚举时,有多种选项和命令可用于收集有关网络上运行的 Web 服务的更详细信息。一些高级选项包括:

    -sV:此选项用于探测目标上运行的 Web 服务器软件的版本。

    -sC:此选项用于运行脚本扫描,可用于执行其他侦察,例如识别 Web 服务器软件的类型或检查常见漏洞。

   -A:该选项用于启用操作系统检测、版本检测、脚本扫描和traceroute。在对目标网络执行全面侦察时,此选项非常有用。

nmap -sV 45.33.32.156

使用Nmap扫描IP 45.33.32.156或Scanme.Nmap.Org该图描绘了扫描结果,其中包括版本信息、服务信息等。

此外,可以使用高级命令对 HTTP 和 HTTPS 服务执行更详细的枚举。例如,http-enum命令可用于枚举 Web 服务器上的目录和文件,http-methods 命令可用于识别 Web 服务器上允许的 HTTP 方法。

使用Nmap枚举SMB

NO.4

使用 Nmap 进行基本 SMB 枚举

SMB(服务器消息块)是一种用于 Windows 环境中文件和打印机共享的协议。SMB 通常在企业网络中用于在用户之间共享文件和资源。攻击者还可以利用中小企业来获得对敏感信息和系统的未经授权的访问。

使用Nmap枚举SMB协议的基本命令如下:

nmap -p 139,445 --script smb-enum-shares.nse [target IP address]

此命令扫描SMB 协议常用的端口139和445并运行smb-enum-shares.nse脚本。smb-enum-shares.nse 脚本是一个 Nmap 脚本,用于枚举目标系统上的 SMB 共享。

除了基本命令之外,还可以使用多个选项来修改 Nmap 扫描的行为。例如,-v 选项可用于增加输出的详细程度,提供有关扫描结果的更详细信息。-oN 选项可用于将扫描结果保存到正常格式的文件中。

使用 Nmap 进行高级 SMB 枚举

1. 脚本参数

可以使用参数自定义 Nmap 脚本以提供特定结果。例如,smb-enum-shares.nse 脚本有几个可用于修改其行为的参数。例如,-u 参数可用于指定访问共享资源的用户名和密码。

nmap -p 139,445 --script smb-enum-shares.nse -script-args user=username,pass=password [target IP address]

2. 计时选项

Nmap 中的计时选项可用于调整扫描速度。例如,-T 选项可用于指定扫描应使用的计时模板。例如,-T4 选项将使扫描速度更快,但可能会丢失某些主机或服务。

nmap -p 139,445 -T4 --script smb-enum-shares.nse [target IP address]

3. 操作系统检测

Nmap 还可用于执行操作系统检测。这在执行 SMB 枚举时非常有用,因为扫描结果将取决于目标系统的操作系统。-O 选项可用于启用操作系统检测

nmap -p 139,445 -O --script smb-enum-shares.nse [target IP address]

4.版本检测

Nmap 还可以用于执行版本检测。这在执行 SMB 枚举时非常有用,因为扫描结果将取决于目标系统使用的 SMB 协议的版本。-sV 选项可用于启用版本检测。

nmap -p 139,445 -sV --script smb-enum-shares.nse [target IP address]

5. 输出格式

Nmap 扫描的结果可以多种格式保存。例如,-oN 选项可用于以普通格式保存结果,而 -oX 选项可用于以 XML 格式保存结果。

nmap -p 139,445 --script smb-enum-shares.nse -oN smb-enum-results.txt [target IP address]
nmap -p 139,445 --script smb-enum-shares.nse -oX smb-enum-results.xml [target IP address]

要使用 Nmap 执行高级 SMB 枚举,您需要熟悉该工具及其各种选项。第一步是在您的系统上安装 Nmap(如果您尚未安装)。一旦安装了 Nmap,您就可以开始使用它来执行高级 SMB 枚举。

高级 SMB 枚举最有用的选项之一是-p 选项,它允许您指定要扫描的端口号。SMB 的默认端口是 TCP 端口445,但您可以指定要扫描的任何端口号。例如,如果您想扫描 TCP 端口139,您可以使用以下命令:

nmap -p 139 -sS target

高级 SMB 枚举的另一个有用选项是-A 选项,它允许您启用操作系统检测、版本检测、脚本扫描和跟踪路由。例如,如果您想使用 Nmap 对目标执行全面扫描,您可以使用以下命令:

nmap -A target

您还可以使用 Nmap 通过指定要运行的特定脚本来执行更高级的 SMB 枚举。例如,如果您想运行smb-os-discovery脚本,您可以使用以下命令:

nmap --script smb-os-discovery target

SMB 枚举的另一个高级选项是--script-args 选项,它允许您将附加参数传递给脚本。例如,如果您想将用户名和密码传递给 smb-enum-shares 脚本,您可以使用以下命令:

nmap --script smb-enum-shares --script-args smbuser=user,smbpass=pass target

声明

NO.5


文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247513061&idx=2&sn=87b83d7f8fa251ce9f41e8e49e8714c9&chksm=c0a7e3d919a372867a634d2581b8ef5bfdd3bebc7b8011276cec63d6e12ab07dfc9f4a34f25a&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh