Nmap 及其扩展:从 Masscan 到 Burp Suite 的网络与 Web 扫描器探索
Nmap
安装
在 Linux 上
- 对于基于 Debian/Ubuntu 的系统:
sudo apt-get update sudo apt-get install nmap - 对于基于 CentOS/RHEL 的系统:
sudo yum install nmap - 对于基于 Arch 的系统:
sudo pacman -S nmap
在 Windows 上
- 从 Nmap 官方网站下载安装程序。
- 运行安装程序并按照说明操作。
基本扫描技术
- 扫描单个主机
此命令扫描单个 IP 地址。
nmap 192.168.1.1 - 扫描多个主机
扫描多个 IP 地址或范围。
nmap 192.168.1.1 192.168.1.2 192.168.1.3 nmap 192.168.1.1-3 - 扫描子网
使用 CIDR 表示法扫描整个子网。
nmap 192.168.1.0/24 - 通过主机名扫描
按主机名扫描,需要进行 DNS 解析。
nmap example.com
端口扫描技术
- 默认端口扫描
默认情况下,Nmap 扫描最常用的 1000 个端口。
nmap 192.168.1.1 - 扫描特定端口
指定要扫描的端口。
nmap -p 22,80,443 192.168.1.1 - 扫描所有端口
扫描全部 65535 个端口。
nmap -p- 192.168.1.1 - 高级扫描选项
- TCP 连接扫描:如果 SYN 扫描不可用,则使用 TCP 连接扫描。
nmap -sT 192.168.1.1 - SYN 扫描(隐蔽扫描):SYN 扫描速度更快且更隐蔽,需要 root 权限。
nmap -sS 192.168.1.1 - UDP 扫描:扫描 UDP 端口(比 TCP 扫描慢)。
nmap -sU 192.168.1.1 - 全面扫描:结合多种选项进行全面扫描。
选项说明:nmap -sS -sU -T4 -A -v 192.168.1.1-sS: SYN 扫描。-sU: UDP 扫描。-T4: 时间模板(更快)。-A: 启用操作系统检测、版本检测、脚本扫描和路由追踪。-v: 详细输出。
- TCP 连接扫描:如果 SYN 扫描不可用,则使用 TCP 连接扫描。
服务和版本检测
- 版本检测
确定开放端口上运行的服务版本。
nmap -sV 192.168.1.1 - 积极的服务检测
使用积极的检测技术以获取更多信息。
nmap -A 192.168.1.1
操作系统检测
- 基本操作系统检测
识别目标的操作系统。
nmap -O 192.168.1.1
Nmap 脚本引擎(NSE)
Nmap 的脚本引擎允许执行复杂任务,如漏洞检测和利用。脚本存储在 Nmap 安装目录的 scripts 目录中。
-
运行默认脚本 运行一组默认脚本。
nmap -sC 192.168.1.1 -
运行特定脚本 指定要运行的单个脚本。
nmap --script=http-enum 192.168.1.1 -
运行脚本类别 运行某一类别的脚本。
nmap --script=default,vuln 192.168.1.1 -
常见脚本类别:
auth: 认证脚本。broadcast: 网络广播脚本。default: 默认脚本。discovery: 主机发现脚本。dos: 拒绝服务脚本。exploit: 漏洞利用脚本。external: 依赖外部资源的脚本。fuzzer: 模糊测试脚本。intrusive: 侵入性脚本。malware: 恶意软件检测脚本。safe: 安全脚本。version: 服务版本检测脚本。vuln: 漏洞检测脚本。
-
示例:漏洞扫描 扫描目标是否存在漏洞。
nmap --script vuln 192.168.1.1
输出选项
- 正常输出
将正常输出保存到文件。
nmap -oN output.txt 192.168.1.1 - XML 输出
将输出保存为 XML 格式。
nmap -oX output.xml 192.168.1.1 - Grepable 输出
将输出保存为适合 grep 命令的格式。
nmap -oG output.gnmap 192.168.1.1 - 保存所有格式
将输出保存为正常、XML 和 grepable 格式。
nmap -oA output 192.168.1.1
计时与性能
- 计时模板
使用计时模板控制扫描速度。
nmap -T0 192.168.1.1 # 偏执的(最慢,用于规避 IDS) nmap -T1 192.168.1.1 # 偷偷摸摸的 nmap -T2 192.168.1.1 # 礼貌的 nmap -T3 192.168.1.1 # 正常的 nmap -T4 192.168.1.1 # 积极的 nmap -T5 192.168.1.1 # 疯狂的(最快) - 分片数据包
使用微小的分片 IP 数据包以规避数据包过滤器。
nmap -f 192.168.1.1 - 随机化主机顺序
以随机顺序扫描主机以规避检测。
nmap --randomize-hosts 192.168.1.0/24
Nmap 的替代品
1. Masscan
- 概述 Masscan 以其高速扫描能力而闻名,专为快速执行大规模扫描而设计。由于其高效的网络堆栈,它可以在几分钟内扫描整个互联网。
- 安装
- 在 Linux 上
- 对于基于 Debian/Ubuntu 的系统:
sudo apt-get install masscan - 对于其他系统,可以从源代码编译:
git clone https://github.com/robertdavidgraham/masscan cd masscan make sudo make install
- 对于基于 Debian/Ubuntu 的系统:
- 在 Linux 上
- 用法
- 基本端口扫描
masscan -p 1-65535 192.168.1.0/24-p 1-65535: 扫描从 1 到 65535 的所有端口。192.168.1.0/24: 指定目标网络范围。
- 控制扫描速度
为避免网络过载,控制每秒发送的数据包速率:
masscan -p 80 --rate=1000 192.168.1.0/24--rate=1000: 每秒发送 1000 个数据包。
- 基本端口扫描
- 提示
- 效率:Masscan 专为速度而设计,但对某些网络来说可能过于激进。请调整速率并谨慎使用。
- 输出:使用
--output-format选项以不同格式(如 JSON 或 XML)获取输出。
2. ZMap
- 概述 ZMap 是一款用于大规模互联网调查的高性能网络扫描器。它可以高效地扫描整个 IPv4 地址空间。
- 安装
- 在 Linux 上
- 对于基于 Debian/Ubuntu 的系统:
sudo apt-get install zmap - 对于其他系统,可以从源代码编译:
git clone https://github.com/zmap/zmap cd zmap mkdir build cd build cmake .. make sudo make install
- 对于基于 Debian/Ubuntu 的系统:
- 在 Linux 上
- 用法
- 基本扫描
zmap -p 80 192.168.1.0/24-p 80: 扫描 80 端口。192.168.1.0/24: 指定目标网络范围。
- 带速率控制的扫描
控制扫描速率以避免网络过载:
zmap -p 80 -r 1000 192.168.1.0/24-r 1000: 将速率限制为每秒 1000 个数据包。
- 基本扫描
- 提示
- 速度:ZMap 非常快,但会产生大量流量。请使用速率控制并监控网络影响。
- 输出:结果默认通常为 JSON 格式。使用
-o指定输出文件路径。
3. OpenVAS(Greenbone 漏洞管理器)
- 概述 OpenVAS 是一款开源漏洞扫描器,提供全面的安全评估。它包括一个强大的 Web 界面,用于管理和审查扫描。
- 安装
- 在 Linux 上
对于基于 Debian/Ubuntu 的系统:
sudo apt-get install openvas sudo gvm-setupgvm-setup初始化设置,包括更新漏洞数据库。
- 在 Linux 上
对于基于 Debian/Ubuntu 的系统:
- 用法
- 访问 Web 界面:OpenVAS 通过 Web 界面进行管理,通常可通过
https://localhost:9392访问。 - 基本扫描
- 登录 Web 界面。
- 创建新的扫描配置。
- 指定目标和扫描参数。
- 启动扫描并通过界面查看结果。
- 访问 Web 界面:OpenVAS 通过 Web 界面进行管理,通常可通过
- 提示
- 配置:OpenVAS 需要初始配置和更新。确保漏洞数据库是最新的。
- 扫描选项:OpenVAS 为扫描提供详细的配置选项,包括选择特定的漏洞测试。
4. Nessus
- 概述 Nessus 是一款广泛使用的商业漏洞扫描器,提供深入的扫描和报告功能。它拥有广泛的插件支持,适用于企业环境。
- 用法
- 访问 Web 界面:Nessus 通过 Web 界面管理,通常可通过
https://localhost:8834访问。 - 基本扫描
- 登录 Web 界面。
- 通过选择适当的模板(例如,基本网络扫描)创建新扫描。
- 配置扫描设置,包括目标 IP 地址。
- 启动扫描并在界面中查看结果。
- 访问 Web 界面:Nessus 通过 Web 界面管理,通常可通过
- 提示
- 插件:Nessus 使用插件执行漏洞检查。确保插件是最新的。
- 许可:Nessus 有免费版(家庭版)和付费版(专业版)。专业版提供更多功能和支持。
5. Nikto
- 概述 Nikto 是一款 Web 服务器扫描器,用于识别 Web 服务器中潜在的漏洞。它会检查过时的软件和已知漏洞。
- 安装
- 在 Linux 上
- 对于基于 Debian/Ubuntu 的系统:
sudo apt-get install nikto - 对于其他系统,可以从源码下载并安装:
git clone https://github.com/sullo/nikto cd nikto
- 对于基于 Debian/Ubuntu 的系统:
- 在 Linux 上
- 用法
- 基本扫描
nikto -h http://192.168.1.1-h: 指定目标 URL 或 IP 地址。
- 带附加选项的扫描
nikto -h http://192.168.1.1 -p 80,443 -T 2-p 80,443: 扫描特定端口。-T 2: 设置计时模板(2 表示礼貌的)。
- 基本扫描
- 提示
- Web 安全:Nikto 专门用于 Web 服务器安全。可与其他工具一起使用,进行全面的 Web 应用评估。
- 定制:使用配置文件或命令行选项定制扫描,以专注于特定测试。
6. Angry IP Scanner
- 概述 Angry IP Scanner 是一款轻量级网络扫描器,具有图形用户界面(GUI)。它对于快速扫描 IP 地址和端口很有用。
- 安装
- 从 Angry IP Scanner 网站下载。
- 按照适用于您的操作系统的安装说明进行操作。
- 用法
- GUI 操作:通过 GUI 操作。打开应用程序并指定 IP 范围和端口范围进行扫描。
- 扫描结果:结果在 GUI 中显示,并可导出为 CSV 或 TXT 格式。
- 提示
- 易用性:适合快速扫描和喜欢 GUI 而不是命令行工具的用户。
- 局限性:与 Nmap 等更高级的工具相比,基本扫描能力有限。
7. Scanless
- 概述 Scanless 是一款使用在线服务执行隐蔽端口扫描以规避检测的工具。
- 安装
- 在 Linux 上
sudo apt-get install scanless
- 在 Linux 上
- 用法
- 基本扫描
scanless -l 192.168.1.1-l: 使用在线服务执行扫描。
- 基本扫描
- 提示
- 隐蔽性:适合避免直接检测。结果通过第三方服务获得。
- 服务可用性:在线服务的可用性和可靠性可能有所不同。
8. Arachni
- 概述 Arachni 是一款功能丰富的 Web 应用程序安全扫描器,旨在发现 Web 应用程序中的漏洞。
- 安装
- 从 Arachni 网站下载。
- 按照安装说明进行操作。
- 用法
- 基本扫描
对指定的 URL 运行扫描。arachni http://192.168.1.1 - 高级选项
arachni --checks sqli http://192.168.1.1--checks sqli: 运行特定的漏洞检查(例如,SQL 注入)。
- 基本扫描
- 提示
- Web 安全焦点:最适合进行全面的 Web 应用程序安全评估。
- 配置:提供许多配置选项,用于定制扫描。
9. Burp Suite
- 概述 Burp Suite 是一款流行的 Web 应用程序安全测试工具,具有扫描和分析功能。
- 安装
- 从 PortSwigger 网站下载。
- 按照安装说明进行操作。
- 用法
- GUI 操作:通过图形用户界面操作。
- 扫描设置:通过 GUI 设置扫描,包括配置爬取和扫描参数。
- 基本扫描
- 打开 Burp Suite。
- 将您的浏览器配置为使用 Burp Suite 作为代理。
- 通过代理导航到目标 Web 应用程序以捕获请求。
- 使用 Scanner 工具执行自动漏洞评估。
- 提示
- 高级功能:专业版提供高级扫描和分析功能,包括与其他工具和扩展的集成。
- 定制:Burp Suite 允许广泛定制扫描和爬取设置。
工具对比
网络扫描器
-
Nmap 与 Masscan
- Nmap:
- 用例:全面的网络探索和安全审计。
- 优势:提供详细扫描,具有广泛的服务和版本检测、操作系统指纹识别和脚本选项。适用于深入分析和较小规模的扫描。
- 何时使用:当需要关于目标的详细信息,包括开放端口、服务和漏洞,并且为了准确性可以接受较慢的扫描速度时。
- Masscan:
- 用例:大规模高速端口扫描。
- 优势:速度极快且高效,能够在几分钟内扫描整个互联网。适用于大规模侦察。
- 何时使用:当速度至关重要,并且需要快速扫描大型网络或互联网时。在像 Nmap 这样更详细的工具之前,将其用作识别活跃主机和开放端口的初步扫描。
- Nmap:
-
ZMap 与 Masscan
- ZMap:
- 用例:大规模互联网范围的调查。
- 优势:在扫描大型 IPv4 地址空间方面效率高,专注于速度和可扩展性。
- 何时使用:用于进行大规模调查和绘制互联网地图。适用于学术或大规模安全研究项目。
- Masscan:
- 用例:高速端口扫描,与 ZMap 类似,但因其易用性和灵活性而常受青睐。
- 优势:提供高速扫描,并支持一系列端口扫描技术。
- 何时使用:用于小规模的高速端口扫描,或需要快速评估大型网络时。
- ZMap:
漏洞扫描器
- OpenVAS 与 Nessus
- OpenVAS:
- 用例:带有 Web 界面的开源漏洞扫描。
- 优势:免费使用,拥有广泛的漏洞测试库和用户友好的界面。
- 何时使用:当您需要一个免费的开源漏洞扫描器,具有全面的功能,并且不介意花费时间进行设置和维护时。
- Nessus:
- 用例:具有广泛插件支持的商业漏洞扫描。
- 优势:提供高级功能、广泛的插件支持,非常适合企业环境。
- 何时使用:当您需要一个可靠的专业级扫描器,具有频繁更新和高级支持时。适用于对漏洞管理有特定要求的组织。
- OpenVAS:
Web 应用扫描器
- Nikto 与 Burp Suite
- Nikto:
- 用例:扫描 Web 服务器以发现已知漏洞和错误配置。
- 优势:快速,专注于 Web 服务器漏洞,使用起来简单直接。
- 何时使用:当您需要快速评估 Web 服务器安全性,并且主要关注服务器级别的问题而不是特定于应用程序的漏洞时。
- Burp Suite:
- 用例:全面的 Web 应用程序安全测试。
- 优势:具有扫描、爬取和分析 Web 应用程序的广泛功能,包括识别复杂漏洞(如 SQL 注入、XSS 等)的高级能力。
- 何时使用:当您需要对 Web 应用程序安全进行详细和彻底的分析时。适用于对 Web 应用程序进行深入测试,以及需要高级工具和定制化的用户。
- Nikto:
附加工具
-
Angry IP Scanner
- 用例:带有 GUI 的轻量级网络扫描。
- 优势:易于使用,可快速进行 IP 和端口扫描。
- 何时使用:用于快速网络扫描,并且首选图形界面。不如其他工具详细,但适合基本网络侦察。
-
Scanless
- 用例:使用在线服务进行隐蔽端口扫描。
- 优势:通过使用第三方服务避免直接检测。
- 何时使用:当您想要在不直接与目标网络交互的情况下执行扫描时,这对于规避检测很有用。
-
Arachni
- 用例:详细的 Web 应用程序安全扫描。
- 优势:用于查找 Web 应用程序漏洞的综合工具,具有广泛的配置选项。
- 何时使用:当您需要对 Web 应用程序进行详细的安全评估,并且需要针对特定漏洞的可定制扫描时。FINISHED CSD0tFqvECLokhw9aBeRqgSiAqVe48+7NFsYcViW/ddNEq7XrC9L2rtn4KEpb2/pUCdmLMkOSw4W9whoD144q75HMfQabiny/42/YeEFTOzVhRDTYsLWyh87yswbaS0tXabs3A/I8iBVn80ZtZliAJExKv8Qm3+HRuQt84P1B+s=