1. 介绍
Nmap即网络映射器,对Linux系统/网络管理员来说是一个开源且非常通用的工具。Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口。它的图形化界面是Zenmap,分布式框架为Dnamp。
1.1 基本功能
- 主机探测,即探测一组主机是否在线
- 端口扫描,即扫描主机端口,嗅探所提供的网络服务
- 推断主机所用的操作系统
- 版本检测
- 支持探测脚本的编写
1.2 Nmap在实际中应用场合如下
- 通过对设备或者防火墙的探测来审计它的安全性
- 探测目标主机所开放的端口
- 通过识别新的服务器审计网络的安全性
- 探测网络上的主机
2. Nmap相关命令详解
2.1 Nmap用于主机发现
HOST DISCOVERY:
-sL: List Scan - 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现
-sn: Ping Scan - 只进行主机发现,不进行端口扫描
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程
-PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现
-PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。
-PO[protocollist]: 使用IP协议包探测对方主机是否开启
-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析
--dns-servers <serv1[,serv2],...>: 指定DNS服务器
--system-dns: 指定使用系统的DNS服务器
--traceroute: 追踪每个路由节点
2.2 Nmap用于端口扫描
SCAN TECHNIQUES:
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
-sN/sF/sX:指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
–scanflags :定制TCP包的flags。
-sI <zombiehost[:probeport]>:指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
-sY/sZ:使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
-sO:使用IP protocol 扫描确定目标机支持的协议类型。
-b :使用FTP bounce scan扫描方式
2.3 Nmap用于端口参数与扫描顺序
PORT SPECIFICATION AND SCAN ORDER:
-p : 扫描指定的端口
实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)
-F: Fast mode – 快速模式,仅扫描TOP 100的端口
-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。
–top-ports :扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)
–port-ratio : 扫描指定频率以上的端口。与上述–top-ports类似,这里以概率作为参数,让概率大于–port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。
2.4 Nmap用于版本侦测
SERVICE/VERSION DETECTION:
-sV: 指定让Nmap进行版本侦测
–version-intensity : 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
–version-light: 指定使用轻量侦测方式 (intensity 2) 。
–version-all: 尝试使用所有的probes进行侦测 (intensity 9) 。
–version-trace: 显示出详细的版本侦测过程信息。
2.5 Nmap用于操作系统探测
OS DETECTION:
-O: 启用操作系统检测,也可以使用-A来同时启用操作系统检测和版本检测
–osscan-limit:针对指定的目标进行操作系统检测
–osscan-guess:推测操作系统检测结果
3. Nmap具体操作演示
本机ip为192.168.10.55
3.1 用Nmap扫描特定IP地址
nmap 192.168.10.55 #扫描本机ip
nmap -vv 192.168.10.55 #用-vv对结果进行详细输出
nmap 192.168.10.168 #扫描别的机器ip
3.2 自行设置端口范围进行扫描
nmap -p 1-1000 192.168.10.55 #扫描本机1-1000之间的端口
3.3 指定端口号进行扫描
nmap -p 22,80,3306 192.168.10.55 #扫描本机22,88,3306的端口
3.4 对目标进行Ping扫描
nmap -sP 192.168.10.168 #探测目标主机是否在线
nmap -sP 192.168.10.0/24 #探测192.168.10.0网段的主机是否在线,只显示在线的主机
3.5 路由跟踪
nmap --traceroute 192.168.10.168 #对目标主机进行路由追踪
3.6 操作系统探测
nmap -O 192.168.10.55
3.7 万能开关扫描
nmap -A 192.168.10.55 #可以查看到目标服务器上ssh的版本号、内核版本、端口等
3.8 查找主机服务版本号
nmap -sV 192.168.10.168
3.9 使用TCP ACK (PA)和TCP Syn (PS)扫描远程主机
有时候包过滤防火墙会阻断标准的ICMP ping请求,在这种情况下,我们可以使用TCP ACK和TCP Syn方法来扫描远程主机
nmap -PS 192.168.10.168
3.10 SYN扫描
利用基本的SYN扫描方式测试其端口开放状态。
nmap -sS -T4 192.168.10.168
nmap -PS -p 22,80 192.168.10.168
3.11 FIN扫描
利用FIN扫描方式探测防火墙状态。用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态。
nmap -sF -T4 192.168.10.168
3.12 ACK扫描
利用ACK扫描判断端口是否被过滤。针对ACK探测包,为被过滤的端口(无论打开或关闭)会回复RST包。
nmap -sA -T4 192.168.10.168
nmap -PA -p 22,80 192.168.10.168
3.13 执行一次隐蔽的扫描
nmap -sS 192.168.10.168
都到这儿了,更多文章,详见个人微信公众号ALL In Linux,来扫一扫吧!
转载:https://blog.csdn.net/weixin_44729138/article/details/115919536