image.png

Nmap包含四项基本功能:主机发现/端口扫描/版本探测/操作系统探测 这四项功能之间存在大致的依赖关系,比如图片中的先后关系,除此之外,Nmap还提供规避防火墙的技巧以及NSE库 检测活在网络上的主机(主机发现) 检测主机上开放的端口(端口发现或枚举) 检测到相应的端口(服务发现)的软件和版本 检测操作系统,硬件地址,以及软件版本 检测脆弱性的漏洞(Nmap的脚本)

端口探测是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP的开放情况 默认情况下,Nmap会扫描1000个最有可能开放的端口

为什么要研究nmap,他是现代fofa/goby这类武器的原理之一 而且安全开发面试题可能会出现,华少就出现过

端口扫描

Nmap通过探测将端口划分为6个状态

  1. open :端口开放
  2. closed: 端口关闭
  3. filtered:端口被防火墙IDS/IPS屏蔽,无法确定状态
  4. unfiltered:端口没有被屏蔽,但是否开放需要进一步确定
  5. open|filtered:端口是开放或者被屏蔽
  6. closed|filtered:端口是关闭的或被屏蔽

提供了十多种探测方式

TCP SYN scanning

默认扫描方式,通常被称为半开放扫描(Half-open scanning) 该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么判断端口是开放的;如果收到RST包,说明该端口是关闭的
如果没有收到回复,那么判断该端口是被屏蔽了
因为该方式仅仅是发送SYN包对目标主机的特定端口,但不建立完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围比较广

image.png

TCP connect scanning

使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭,该方式扫描速度比较慢,而且会建立完整的TCP连接会在目标机上留下记录信息,不够隐蔽
image.png

TCP ACK scanning

向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽,没有收到RST包,说明被屏蔽了
该方式智能用于确认防火墙是否屏蔽了某个端口,可以辅助TCP SYN 的来判断目标主机防火墙状况
image.png

TCP FIN/Xmas/Null scanning

这三种方式被成为秘密扫描(Stealthy Scan) 因为相对比较隐蔽
FIN扫描向目标主机的端口发送的TCP FIN包或Xmas tree包/Null包
如果收到对方的RST回复包,那说明该端口是被关闭的
没有收到RST包说明端口可能是开放的或被屏蔽的(open|filtered)

其中Xmas tree包是指flags中FIN URG PUSH被置为1的TCP包;Null包是指所有Flags都为0的TCP包

image.png

UDP scanning

用于判断UDP端口的情况,向目标主机的UDP端口发送探测包,如果收到回复 “ICMP port unreachable” 就说明该端口是关闭的;如果没有收到回复,那说明UDP端口可能是开放的或者屏蔽的
image.png

其他几种方式

使用SCTPINIT/COOKIE-ECHO方式来探测SCTP的端口开放情况;
使用IP protocol方式来探测目标主机支持的协议类型(TCP/UDP/ICMP/SCTP等等)
使用idle scan方式借助僵尸主机来扫描主机达到隐蔽自己的效果
使用FTP bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐藏自己身份的目标

扫描选项

  1. -sS/sT/sA/sW/sM:
  2. 指定使用TCP SYN/Connect/ACK/Window/Maimon scans的方式对目标主机进行扫描
  3. -sU:指定使用UDP扫描方式确定目标主机的UDP端口情况
  4. -sN/sF/sX:
  5. 指定使用TCP NULL/FIN/Xmas进行扫描
  6. --scanflags <flags>:定制TCP包的flags
  7. -sI <zombiehost[:probeport]>:指定使用idle scan方式来扫描主机
  8. -sY/sZ:使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放情况
  9. -sO:使用ip protocol扫描确定目标机支持的协议类型
  10. -b <FTP relay host>:使用FTP bounce scan扫描方式

主机探测

判断主机是否开机

-sL

只是将其要扫描的IP列出,并没有发出任何数据包进行探测

-sn

ping扫描,禁止端口扫描

  1. nmap -sn 1.1.1.1

图片.png
会发送4种不同的数据包去探测,只要收到其中任何一种返回包,就可以判断主机是打开的
- ICMP协议 请求回显包
- TCP协议 SYN请求包
- TCP协议 ACK请求包
-ICMP协议 timestamp请求包

当目标为内网的时候,便是ARP协议


-n

取消域名解析

目标是内网IP
1.没有加-n域名解析参数,直接向网关发起DNS解析
2.如果加上-n参数,不进行域名解析,直接进行广播查询