nmap在网络和渗透中使用相当频繁,相关教程也层出不穷。在此,我只整理出最实用的,言简意赅,方便自己,方便他人。
一、nmap介绍
NMAP,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。
二、nmap功能
1.主机发现; //探测存活主机
2.端口扫描; //探测开放端口及端口的服务
3.版本侦测; //探测服务的版本,eg:httpd 1.0
4.OS检测。 //检测目标的操作系统。
5.漏洞扫描。 //配合一些特定漏洞扫描脚本进行漏扫(用的极少,漏洞一般用专业的漏扫工具)
端口扫描原理:
以ping(ICMP协议)、发TCP/UDP包、ARP包、SYN/ACK三次握手等等十多种探测方式。
端口状态:
(1) open:端口是开放的。
(2) closed:端口是关闭的。
(3) filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。
(4) unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。
三、nmap参数
1.主机发现:
-sL:仅仅是显示,扫描的IP数目,不会进行任何扫描(较少用,意义不大)。
-sn:ping扫描,即主机发现。
-Pn:不检测主机存活,默认视目标为存活主机,直接对其进行端口探测。
-PS/PA/PU/PY:TCP SYN Ping/TCP ACK Ping/UDP Ping发现。
-PE/PP/PM:使用ICMP echo, timestamp and netmask 请求包发现主机。
-P0:在扫描之前,不ping主机;有些网络防火墙可能禁止ICMP请求包,使用这种扫描类型可以跳过ping测试。
-n/-R:-n表示不进行DNS解析,以加快扫描速度;-R表示总是进行DNS解析。
-exclude:排除指定主机。(比如不扫某个网段中的某个IP)
-excludefile:排除指定文件中的主机。(不扫某个网段中的某些IP)
2.端口扫描:
-p:指定端口扫描,eg:-p 80,8080,3306(指定端口)-p 1-65535(全端口),如未指定默认扫描1000个最有可能开放的TCP端口。
-F:快速扫描,扫描常见的100个TCP端口。
3.版本侦测:
-sV:开放版本探测,可以直接使用-A同时打开操作系统探测和版本探测。
4.OS检测:
-O:启用操作系统检测,可以直接使用-A同时打开操作系统探测和版本探测。
5.漏洞扫描:
-sC:根据对应的端口选择相应的漏洞脚本。
6.扫描技巧:
-v:强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-A:打开操作系统探测和版本探测(可同时代替-sV和-O),进攻性(Aggressive)方式扫描。
-T4:指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4,不做设置nmap默认是T3;
-sS/sT/sA/sW/sM:SYN/TCP connect()/ACK/TCP窗口扫描/ Maimon扫描。
-sU:以UDP扫描。
-sP:ping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP echo请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sN/sF/sX:以TCP Null,FIN,and Xmas扫描。
-sY/sZ:SCTP INIT/COOKIE-ECHO 扫描(较少使用)。
-sO:使用IP protocol 扫描确定目标机支持的协议类型(较少使用)。
-b “FTP relay host”:使用FTP bounce scan(较少使用)。。
7.输入输出:
-iL:从文件中读取待检测的目标,文件中的表示方法支持机名,ip,网段。
-oX:输出结果为xml文件。
-oG:输出便于通过bash或者perl处理的格式,非xml。
四、常用组合
1.GUI下nmap默认参数:
nmap -T4 -A –v + target //以默认的方式扫描存活主机、开放端口、服务、版本、OS信息,不是全端口扫描,适合新手。
2.探测某一IP全端口:
nmap –p 1-65535 192.168.1.110 //根据时间和效率可以选加-Pn、-v、-T4、-A等等组合
3.仅探测某一网段的存活主机:
nmap -sP 10.0.0.0/24 //也可加一些其他参数,就不列举了
4.探测某一网段的存活主机的开放端口:
nmap –T4 –A –v -p 1-65535 –sP 10.0.0.0/24 –oX 10.0.0.0.xml
The End!