Nmap参考手册(二)——目标限定/活动主机
目标限定
- nmap命令中只要不是扫描选型,都会被认为是目标限定。对域名先进行DNS解析,通过解析出来多个域名,默认只扫描第一个,
若全部扫描需打开-resolve-all
选项 - 如果你想扫描整个局域网的所有主机,那么Nmap支持CIDR格式目标
- 192.168.10.0/24可以扫描128个ip
- 192.168.10.0/24和192.168.10.1/24是一样的
- 这个方法支持IPV6
- 更强的目标限定机制
-
192.168.0-255.1-254
会跳过192.168.xx.0和192.168.xx.255因为这些可能是子网号或广播地址 -
192.168.3-5,7.1
包含了 192.168.3.1, 192.168.4.1, 192.168.5.1, 192.168.7.1 - 这个方法不支持IPV6
- nmap可以同时接受各种目标限定比如:
nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7
-
- 非全局范围的IPv6地址需要有一个区域ID后缀,
- 在unix上可能是这样
fe80::a8bb:ccff:fedd:eeff%eth0
, - windows可能是
fe80::a8bb:ccff:fedd:eeff%1
- 在unix上可能是这样
- 一些扫描选项也可以对扫描目标进行限定
-
-iL <inputfilename>
(Input from list)- 当有一大堆IP需要扫,全部写在命令行太难看,可以提前制作成文件。
- 文件中的目标限定可以是IP地址、主机名、CIDR、ipv6、8bit范围。
- 文件中的目标限定之间用 空格、换行、制表分隔开
- 文件中可以包含#开头的注释
-
-iR <num hosts>
(Choose random targets)- 用于随机调查,胡乱扫描指定数量的IP
- nmap -Pn -sS -p 80 -iR 0 --open这个命令可以随意锁定 一个服务器进行浏览
-
--exclude <host1> [,<host2>[,...]]
(Exclude hosts/networks)- 排除目标限定中的部分IP,用于排除某些明知道不能扫描的关键服务器
-
--excludefile <exclude_file>
(Exclude list from file)- 对标-iL
-
-n
(No DNS resolution)- 告诉Nmap永远不要对它找到的主IP地址进行反向DNS解析
- 这选项可以节省扫描时间,因为DNS解析浪费时间
-
-R
(DNS resolution for all targets)- 告诉Nmap总是对目标IP地址进行反向DNS解析。
-
--resolve-all
(Scan each resolved address)- 对解析出来的多个IP都进行扫描
-
--unique
(Scan each address only once)- 当目标限定有交叉时,自动去重
-
--system-dns
(Use system DNS resolver)- 一般情况下Nmap 自带的DNS解析速度比系统的快,但是如果你认为Nmap的DNS解析不好,可以用这个选项让系统DNS接管这个活儿。
- 一般情况下用不到,因为Nmap的DNS解析大多时候是靠谱的
-
dns-servers *
*[,*
*[,...]]
(Servers to use for reverse DNS queries)- 如果你觉得系统指定的DNS解析器不给力,可以自己指定
- 如果你开启了–system-dns,那就意味着系统接管了DNS服务,于是这个选项变得无意义
-
- DNS反向查询(rDNS)
- 查询一个IP对应主机名
- 但是并非每一个IP都会有主机名的,因此实际上通过ip获取的是一个ptr记录
活动主机发现
- 做渗透前侦测工作时一个很大的任务是将目标锁定在开放了某个端口的ip上,
- 在没有给出扫描选项之前,nmap对每一个IP默认进行如下探测
- ICMP echo请求 主机存活性验证
- 一个TCP SYN包到443端口
- 一个TCP ACK 包到80端口
- 一个ICMP timestamp请求
- 以上相当于扫描选项
-PE -PS443 -PA80 -PP
探测局域网主机存活性的方法
-
ping扫描
nmap -sP CIDR
- 高效但是有时扫描遗漏
-
无ping扫描
nmap -p0 192.168.123.1/24
- 可避免防火墙的发现,可以详细的看到设备开启了那些端口
- 探测ip和mac地址准确,但端口不准
-
TCP Syn Ping扫描
nmap -PS 192.168.123.1/24
- 传输层的TCP/IP扫描,通过发送和接收报文的形式进行扫描,在这种情况下每个端口都会轻易的被发现,扫描更加精确。
-
TCP ACK PING扫描
nmap -PA 192.168.123.1/24
- 很多防火墙会*
SYN
报文,所以nmap提供了SYN
和ACK
两种扫描方式,这两者的结合大大的提高了逃避防火墙的概率。 - 在实际中我们通常将 ps 和pa两个参数放到一起,这样效果会更好
- 很多防火墙会*
-
UDP扫描
nmap -PU 192.168.123.1/24
-
ARP扫描
nmap -PR 192.168.123.1/24
- ARP扫描是nmap对目标进行一个apr ping扫描的过程,尤其在内网的情况下。因为在本地局域网防火墙是不会禁止ARP请求的。所以在内网中使用apr扫描时非常有效的。
-
列表扫描
nmap -sL 192.168.123.1/24
- 仅仅是列出制定网络上的每台主机,不发送任何报文给目标。
- 快但会列出一些无用信息
-
反向域名解析
nmap -R 192.168.123.1/24
-
路由追踪
nmap --traceroute -v 192.168.123.1/24
- 使用
--traceroute
选项可以实现路由追踪,可以帮助用户了解网络通行的情况
- 使用
-
-PE
;-PP
;-PM
(ICMP Ping Types)- -PE就是普通ping(ICMP 8号回声请求),但是很多服务器会关了
- -PE -PM是时间戳和地址掩码请求,分别是ICMP13 15,由于普通ping 经常被关闭,这两个选项可能会特别用处。
B站视频课笔记:
-
对于知道主机存活或防火墙开启的机器,使用-Pn选项可以停止探测之前的ICMP请求,防触发防火墙安全机制
-
-p n-m指定端口
-
使用命令nmap -sV IP 地址来识别目标机器的服务信息。
侵略性扫描
-
使用命令
nmap -A -V -T4 IP地址
来探测目标机器的操作系统、服务等信息。 -
使用
nmap -sC -sV -O IP地址
来探测目标机器的操作系统、服务等信息。- sC 参数表示使用Nmap脚本进行探测
- sV 表示探测目标机器上的服务信息,
- 0表示探测目标机器的操作系统信息。
- -sc: equivalent to --script=default
-
nmap -sn CIDR
对该网络中所有主机进行ping扫描,以探测主机存活性。 -
nmap -sn CIDR -OX test.xml
对该网络中所有主机进行ping扫描,以探测主机存活性。同时将结果输出到test.xml文件中,以便后续使用。
端口探测
-
nmap -p80,135 scanme.nmap.org
80,135端口 -
nmap -p1-100 scanme.nmap.org
1-100端口 - nmap
-p- scanme.nmap.org
全部端口
NSE
- NSE(Nmap Script Engine)Nmap脚本引擎,内置很多可以用来扫描的、针对特定任务的脚本。通过NSE可以不断拓展Nmap的扫描策略,加强Nmap的功能。
- Nmap中使用 --script 参数来指定调用的脚本,并且脚本存储在Nmap安装路径下的script文件夹下,对于 kali Linux存储在 /usr/share/nmap/script/下。