官网
nmap.org/ 下载地址:nmap.org/download.ht…
介绍
Nmap(Network Mapper)是一个开源的网络扫描和安全审计工具,用于发现网络上的主机、服务和安全漏洞。它被广泛用于网络管理、系统维护以及安全测试。
基本原理
- 发送 ICMP Echo 请求(ping 请求)到目标主机。
- TCP半开扫描:Nmap 发送 SYN 包并监控响应,而不完成 TCP 握手。Nmap 向目标主机的特定端口发送 TCP SYN 包。如果目标端口开放,主机会发送 SYN-ACK 响应;如果端口关闭,主机会发送 RST 响应;如果没有响应,则主机可能离线或被防火墙阻止。
- TCP全开扫描:发送 TCP ACK 包到目标主机。根据主机的响应可以判断是否在线
- 局域网ARP请求:发送 ARP 请求到子网中的 IP 地址。
- 服务探测:确认主机在线后,Nmap 会向开放端口发送特定的数据包,根据返回的响应分析服务类型和版本。
- 操作系统识别:Nmap 会分析响应的 TCP/IP 堆栈特征来推测操作系统。通过检测: TTL(生存时间) :不同操作系统设置的 TTL 值不同。 窗口大小、标志位等 TCP/IP 头信息。
功能介绍
主机发现:识别网络上的设备,确定哪些主机处于在线状态。
主机发现探测方式:
- ICMP Echo 请求(ping): 通过发送 ICMP Echo 请求来检查主机是否在线。
- TCP 半开扫描: 发送 TCP SYN 包,如果得到 SYN-ACK 响应,则主机在线。
- TCP 全开扫描: 完成 TCP 握手(SYN-ACK-ACK),确认主机及其端口的状态。
- ARP 邻居探测: 在局域网中使用 ARP 请求识别在线主机。
端口扫描:检测主机上开放的端口,确定运行的服务和协议。例如,检查 HTTP、FTP、SSH 等服务是否在特定端口上运行。
端口探测方式:
- TCP 半开扫描: 发送 SYN 包,获取响应来判断端口是否开放。
- TCP 全开扫描: 完成整个 TCP 握手过程,以确认端口状态。
- UDP 扫描: 通过发送 UDP 数据包到指定端口,检查是否有响应来判断端口开放情况。
服务探测:获取运行在开放端口上的服务版本信息,以便识别潜在的漏洞。
服务探测方式
向开放的端口发送特定的数据包,分析返回的数据以识别运行的服务及其版本。例如,发送 HTTP 请求来获取网页标题。
nmap -sV -p 80,443 <目标IP>
# Nmap 发送 HTTP 请求到 80(HTTP)和 443(HTTPS)端口。根据返回的 HTTP 头信息,Nmap 能识别出运行的 Web 服务器(如 Apache、Nginx、IIS 等)及其版本
操作系统识别:通过分析网络响应,Nmap 可以猜测目标主机的操作系统及其版本。
发送特定的数据包(如 TCP SYN、ACK 等),然后分析返回的 TCP/IP 堆栈特征(如 TTL、窗口大小、标志位等)来推测操作系统。
-
安全漏洞扫描:结合脚本引擎(NSE),Nmap 可以用于扫描已知的漏洞和不安全的配置。
-
网络拓扑映射:生成网络设备的结构图,帮助理解网络的拓扑结构。
常用端口和服务
| 端口号 | 服务名称 | 协议 | 描述 |
|---|---|---|---|
| 20 | FTP (数据) | TCP | 文件传输协议的数据传输端口 |
| 21 | FTP (控制) | TCP | 文件传输协议的控制端口 |
| 22 | SSH | TCP | 安全外壳协议,用于安全远程登录 |
| 23 | Telnet | TCP | 非加密的远程登录协议 |
| 25 | SMTP | TCP | 简单邮件传输协议 |
| 53 | DNS | TCP/UDP | 域名系统,用于域名解析 |
| 67 | DHCP (服务器) | UDP | 动态主机配置协议,服务器端口 |
| 68 | DHCP (客户端) | UDP | 动态主机配置协议,客户端端口 |
| 80 | HTTP | TCP | 超文本传输协议,网页服务 |
| 110 | POP3 | TCP | 邮局协议版本3,邮件接收服务 |
| 143 | IMAP | TCP | Internet邮件访问协议 |
| 443 | HTTPS | TCP | 安全超文本传输协议,安全网页服务 |
| 3306 | MySQL | TCP | MySQL 数据库服务 |
| 3389 | RDP | TCP | 远程桌面协议 |
| 5432 | PostgreSQL | TCP | PostgreSQL 数据库服务 |
| 6379 | Redis | TCP | Redis 内存数据库服务 |
| 8080 | HTTP (替代) | TCP | 常用于网页服务的替代端口 |
-
21:FTP(文件传输协议)
-
22:SSH(安全外壳协议)
-
23:Telnet(非加密远程登录协议) Telnet 使用户能够在本地计算机上输入命令,这些命令会通过网络发送到远程计算机,远程计算机会执行这些命令并返回结果。
-
25:SMTP(简单邮件传输协议)
-
110:POP3(邮局协议版本3)
-
143:IMAP(Internet邮件访问协议)