CIDR
CIDR (Classless Inter-Domain Routing) 是一种用于表示 IP 地址范围的方法。CIDR 基于无类别域间路由 (Classless Inter-Domain Routing) 的概念,取代之前的 A、B、C 类地址划分方式。
CIDR 使用 IP 地址和前缀长度的组合来表示 IP 地址范围。格式为 “<IP 地址>/<前缀长度>”,其中 IP 地址为要表示的网络地址,前缀长度表示网络地址中前面固定部分的位数。
如:192.168.10.0/24表示192.168.10.0这个网段,子网掩码为255.255.255.0
端口状态
- open 表示端口处于开放状态Closed 表示端口处于关闭状态;
- -Filterd 表示端口处于过滤无法收到返回的probe状态;
- — UnFilterd 表示端口收到返回的probe,但是无法确认;
- Opend/UnFilterd 表示端口处于开放或者是过滤状态:
- Closed/UnFilterd 表示端口处于关闭或者未过滤状态
本次扫描实验以metasploitable靶机作为演示
这里是metasploitable靶机安装教程
nmap <CIDR> # 对整个网段进行扫描
nmap -pn-m <IP>
指定端口n到m
对比上面扫描结果发现只有10-100的端口被扫描出来了
服务指纹
为了确保有一个成功的渗透测试或网络设备监控,必须需要知道目标系统中服务的指纹信息。服务指纹信息包括服务端口、服务名和版本等
nmap服务指纹识别原理:通过分析目标往Nmap发送的数据包中某些协议标记、选项和数据,我们可以推断发送这些数据包的操作系统等。nmap通过向目标主机发送多个UDP与TCP数据包并分析其响应来进行操作系统指纹识别工作。
操作:
服务信息扫描
nmap -sV <IP>
# 识别目标IP服务指纹信息(服务名、服务端口、该服务的版本号等)
侵略性详细扫描
nmap -A -v -T4 <IP>
是 Nmap 命令的一个示例,用于对指定 IP 进行全面扫描,并输出详细信息。这个命令使用了以下选项:
-A
表示使用全面扫描选项,包括服务和操作系统版本探测、脚本扫描和跟踪路由。-v
表示使用详细模式,输出更多的信息。-T4
表示设置扫描速度为 “快速模式”,在权衡准确性和速度之间寻找平衡。
扫描结果
默认脚本扫描
nmap -sC -sV -O <IP>
是 Nmap 命令的一个示例,用于对指定 IP 进行端口扫描、服务版本探测和操作系统识别。
这个命令使用了以下选项:
-sC
表示运行默认脚本扫描。-sV
表示对开放端口进行服务版本扫描。-O
表示尝试识别目标主机的操作系统。
扫描结果与上述扫描结果相同只是在表述上做了拆分
SYN隐蔽性扫描
nmap -sS
是 nmap
中执行 SYN 扫描的命令。SYN扫描是半半握手扫描,被扫主机不会保留日志
-sS
参数告诉 nmap
使用 SYN 扫描技术。SYN 扫描是一种常用的扫描技术,用于确定目标主机上哪些端口处于开放状态。
使用 nmap -sS
命令时,您需要指定要扫描的目标主机或目标网段。例如:
nmap -sS <目标主机或目标网段>
ping扫描
nmap -sP
是 Nmap 命令的一个示例,用于进行主机发现。这个命令使用了 -sP
选项,表示进行 Ping 扫描。
例如,运行以下命令:
nmap -sP <CIDR>
nmap -sP 192.168.0.0/24
目标主机日志会留下扫描痕迹
主机存活试探扫描
也是ping扫描但是不做详细端口扫描
nmap -sn
选项表示进行 Ping 扫描,以便查找网络上存活的主机。
nmap -sn <CIDR>
将 <CIDR>
替换为您要扫描的 CIDR 格式的 IP 地址范围。例如,对于 CIDR 网络 192.168.0.0/24
,可以运行以下命令:
nmap -sn 192.168.0.0/24
注意:
-sn
和 -sP
都表示 Nmap 的 Ping 扫描选项,用于探测网络上的响应 Ping 命令的主机。 它们的区别如下:
-sn
: 这个选项表示进行 Ping 扫描并忽略端口扫描,主要用于测试主机的可达性。使用该选项时,Nmap 只会向主机发送一个 Ping 包,如果主机响应则被视作”Up”。-sP
: 这个选项表示进行 Ping 扫描并且会同时采用指定 Ping 技术对主机端口进行轻量的扫描,确认主机是否可用。 在 Linux、BSD 和 macOS 系统上,默认使用 ICMP ECHO REQUEST 包。在 Windows 系统上,默认使用 TCP SYN 包。它只会确认主机是否可达,而不会扫描开放的端口。
因此,主要区别在于 -sn
只进行了 Ping 测试,而 -sP
进行了更多的测试确认主机的可达性,也就是对主机端口的轻量级测试。 在进行网络扫描时,应该根据需要选择合适的 Ping 扫描选项。
指定端口的规则
nmap -p-
是一个有效的 Nmap 命令选项,用于进行全部端口扫描。该选项告诉 Nmap 扫描目标的所有端口,而不仅仅是常见的端口。
指定端口范围 nmap -p 1-1000 scanme.nmap.org
将使用 Nmap 工具对 scanme.nmap.org
进行端口范围扫描,范围为 1 到 1000 的端口。
指定特定协议的端口nmap -p T:25,U:53 scanme.nmap.org
将使用 Nmap 工具对 scanme.nmap.org
进行指定端口扫描,包括 TCP 端口 25 和 UDP 端口 53。[在这个命令中,T
表示仅扫描指定协议的 TCP 端口,而 U
表示仅扫描指定协议的 UDP 端口。]
根据协议名指定特定端口nmap -p smtp scanme.nmap.org
将使用 Nmap 工具对 scanme.nmap.org
进行 SMTP 端口 (TCP 端口 25) 扫描。
NSE
NSE (Nmap Scripting Engine) 是 Nmap 工具的一个组成部分,它允许用户编写和执行自定义脚本,扩展和自定义 Nmap 对目标主机进行的扫描和探测。
NSE 脚本可以执行各种任务,包括漏洞扫描、服务探测、操作系统识别、安全审计等。用户可以编写自己的脚本,也可以使用 Nmap 社区共享的脚本,从而快速识别目标主机上的漏洞和弱点。
使用NSE脚本扫描
当您使用 Nmap NSE 时,可以选择使用不同的脚本来执行各种任务。以下是一些常用的 NSE 脚本示例:
- 漏洞扫描:
vuln
脚本可以用来检测目标主机上的已知漏洞。例如,使用以下命令可以扫描目标主机上的常见漏洞:nmap --script vuln <target>
- 服务识别:
banner
脚本可以获得目标主机上运行的服务的版本信息。例如:nmap --script banner <target>
- 默认脚本扫描:使用
-sC
参数可以运行默认脚本扫描,它将自动应用一组常用的脚本进行扫描:nmap -sC <target>
- 操作系统探测:
os
脚本可以用来尝试识别目标主机运行的操作系统。例如:nmap --script os <target>
- 指定脚本参数:可以使用
--script-args
参数来传递参数给特定脚本。例如,要指定http-title
脚本的参数:nmap --script http-title --script-args http-title.url='/'
这些只是 NSE 脚本的一小部分示例。您可以在 Nmap 的官方文档和 Nmap 社区网站上找到更多有关可用脚本和如何编写自己脚本的信息。
指定DNS解析
--dns-service <DNS服务器的IP>
指定DNS服务器,不指定为电脑默认DNS服务器,但是在域渗透过程中有些域名是通过域内DNS服务器解析IP地址的,而默认DNS服务器是解析不出来的。
对于已经知道主机存活或者防火墙开启的机器,可以使用:-Pn
参数来停止探测之前的ICMP请求,以达到不触发防火墙安全机制。
指定网卡扫描
nmap -e <网卡名称> <目标主机或目标网段>
其中,<网卡名称>
是要使用的网络接口的名称,如 eth0
或 wlan0
,而 <目标主机或目标网段>
是要扫描的目标主机或网段。
以下是一个示例:
nmap -e eth0 192.168.0.1