1.主机探测
即主机发现(Host Discovery),用于发现目标主机是否在线(Alive,处于开启状态)。主机发现发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。
Nmap用于主机发现的一些用法:
-sL: List Scan (列表扫描),仅将指定的目标的IP列举出来,不进行主机发现。
-sn: Ping Scan (Ping扫描),只进行主机发现,不进行端口扫描。
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
--traceroute: 追踪每个路由节点
2.端口扫描
端口扫描是Nmap最基本最核心的功能,用于探测目标主机所开放的端口。
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK的方式来对目标主机进行扫描。
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
-p <port ranges>: 扫描指定的端口
-F: 快速模式,仅扫描TOP 100的端口
-iL 文件目录\1.txt: 扫描主机列表1.txt中的所有目标地址
-sP 192.168.0.100/24: 扫描目标地址所在C段的在线状态
-sF -T4 192.168.0.100: FIN扫描,用于识别端口是否关闭,收到RST回复说明端口关闭,详见下表
使用-sT参数可以更真实模拟TCP的三次握手请求,一般用时会更大些。而-sU则比较少用,而且跟linux内核有些不同,很多时候会等待很长时间。
端口的6种状态:
状态 | 含义 |
---|---|
open | 开放的,表示应用程序正在监听该端口的连接,外部可以访问 |
filtered | 被过滤的,表示端口被防火墙或其他设备阻止,不能访问 |
closed | 关闭的,表示目标主机未开启改端口 |
unfiltered | 未被过滤的,无法确定所处状态 |
open/filtered | 开放的或被过滤的,Nmap不能识别 |
closed/filrered | 关闭的或被过滤的,Nmap不能识别 |
常见服务对应端口号:
服务 | 端口号 |
---|---|
HTTP | 80 |
HTTPS | 443 |
FTP | 21 |
TOMCAT | 8080 |
远程登录 | 3389 |
MySQL | 3306 |
Oracle数据库 | 1521 |
WebLogic | 7001 |
3.版本检测
-sV:指定让Nmap惊醒版本检测
-version-intensity <level>:指定版本检测的强度(0-9),默认为7
-version-trace:显示出详细的版本侦测过程信息
其他选项:
-A 同时打开操作系统指纹和版本检测
-v 显示冗余,表示详细输出扫描情况
-T4:表示制定扫描过程使用的时序,共6个级别(0-5),等级越高,扫描越快,越容易被防火墙检测
一次比较完整的Nmap扫描
namp -T4 -A -v ip