在渗透测试过程中,信息收集可谓是重中之重,在信息收集端口扫描方面nmap可谓是神器,除此之外还提供服务识别、系统识别、存活主机判断等功能。
可去官网上下载最新版本(https://nmap.org)
目录
主要功能用法
一、基本扫描
1、最简单的扫描
nmap 192.168.0.100
默认发送一个ARP ping数据包,来探测1-10000内所开放的端口
可以接受的地址格式:
www.abc.com、192.168.0.100、192.168.0.100-200、192.168.0.1/24
2、扫描文件列表中的主机
当需要扫描的主机多而乱的时候,可将其放入一个txt文件里面
nmap -iL hostlist.txt
3、扫描速度
nmap -T4 192.168.0.100
-T0~-T5:从左往右速度逐渐变快,但是扫描的准确率降低,默认为-T3
二、主机发现
1、-sL(列表扫描)
nmap -sL 192.168.0.1/24
仅仅列出指定网络上的每台主机,不发送任何数据报
2、-sP(Ping扫描)
nmap -sP 192.168.1.100
对目标进行Ping扫描,不进行端口扫描,默认发送一个ICMP回声请求和一个TCP报文到80端口,非特权用户则发送一个SYN报文,当特权用户扫描局域网则是发送ARP请求仅仅列出指定网络上的每台主机,不发送任何数据报
3、-PS(SYN扫描)、-PA(ACK扫描)、-PU(UDP扫描)、-PR(ARP扫描)
nmap -PS 192.168.0.100
发送对应的报文,并且还会进行端口扫描
4、-PE(ICMP echo)、-PP(ICMP timestamp)、-PM(ICMP netmask)
nmap -PE 192.168.0.100
分别使用ICMP的者三中请求包进行扫描,并且还会进行端口扫描
三、端口扫描
nmap所知别端口的6个状态
open(开放的):表明端口是开放的
closed(关闭的):关闭的端口,对于nmap来说是可访问的,也许过段时间再去扫可能就开放了
filtered(被过滤的):无法确定端口开放,可能受到防火墙或路由器规则的影响
unfiltered(未被过滤的):端口可以访问,但不能确定端口是否开放
open|filtered(开放或者过滤的):无法确定开放或过滤,可能是端口未响应
closed|filtered(关闭或者过滤的):不能确定端口是关闭还是过滤
1、-p(指定端口)
nmap -p 80 192.168.0.100
使用-p指定端口80进行扫描,可指定多个端口如:21,22,80;也可以是一个端口段:1-100
2、-sS(TCP SYN扫描)
nmap -sS 192.168.0.100
最常用的扫描选项,SYN扫描不会建立三次握手,执行速率快效率高
3、sT(TCP扫描)
nmap -sT 192.168.0.100
会与目标主机建立完整的TCP连接(三次握手),这样会在目标主机上面留下大批连接日志请求,扫描速度慢效率低
4、-sU(UDP扫描)
nmap -sU 192.168.0.100
扫描UDP端口,可与扫描TCP端口的选项一起使用,检查两种协议。扫描速度比较慢,可添加--host-timeout选项来跳过慢速主机
5、-sN(TCP Null)、-sF(TCP FIN)、-sX(Xmas)
nmap -sN 192.168.0.100
当端口关闭时,任何不含SYN、RST、ACK的报文会导致一个RST返回,端口开放则没有任何响应,于是可构造:-sN——不设置任何标志位(tcp标志头为0)、-sF——只设置TCP FIN标志位、-sX——设置FIN,PSH和URG标志位
能够躲过无状态防火墙和和报文过滤路由器
6、-sA(TCP ACK扫描)
nmap -sA 192.168.0.100
主要用于发现防火墙规则,确定是有状态还是无状态,哪些端口是被过滤的
7、-sO(IP协议扫描)
nmap -sO 192.168.0.100
扫描目标主机支持哪些IP协议(如TCP、ICMP、UDP、IGMP等)
8、-F(快速扫描)
nmap -F 192.168.0.100
扫描常用的100个端口
9、--top-ports
nmap --top-ports 10 192.168.0.100
扫描常见的10个端口,其中的10可变,可以是其他数量
四、服务和版本探测
-sV(版本探测)
nmap -sV 192.168.0.100
nmap -sV -A 192.168.0.100
使用-sV选项启用版本探测,可与-A选项一起使用进行操作系统和版本探测
nmap -sV --version-intensity 8 192.168.0.100
使用--version-intensity 选项来指定探测强度,取值为0~9之间,取值越大探测强度也就越大,默认为7
五、操作系统探测
-O(启用操作系统检测)
nmap -O 192.168.0.100
--osscan-limit:当发现开放或者是关闭的TCP端口时,使用该选项可以更快的扫描
nmap -O --osscan-limit 192.168.0.100
--osscan-guess或--fuzzy:当无法确定操作系统时,可使用该选项找到相近的匹配
nmap -O --osscan-guess 192.168.0.100
六、绕防火墙
1、-f、--mtu(分段扫描)
nmap -f 192.168.0.100
nmap --mtu 8 192.168.0.100
使用--mtu选项时,需要指定偏移大小,必须为8的倍数
2、-D(诱饵扫描)
nmap -D 192.168.0.97,192.168.0.98,192.168.0.99 192.168.0.100
-D选项后面那三个用逗号分隔的ip地址为诱饵ip,诱饵主机必须是存活的主机
nmap -D RND:5 192.168.0.100
使用RND来随机生成ip地址
3、空闲扫描
nmap -P0 -sI 192.168.0.111 192.168.0.100
其中192.168.0.111为僵尸机
4、随机扫描
nmap --data-length 25 192.168.0.100
在发送报文时附加随机数据
nmap --randomize-hosts 192.168.0.1-100
对目标主机进行随机排列扫描
5、欺骗扫描
nmap -sT -PN --spoof-mac 01:02:03:04:05:06 192.168.0.100
欺骗目的主机源主机MAC地址为01:02:03:04:05:06
nmap --badsum 192.168.0.100
发送带有虚假TCP/UDP/SCTP校验和的数据包
除此之外,各种选项还可以进行组合,来实现更强大的扫描