nmap
主机发现
-
nmap -A baidu.com:全面扫描
-
nmap 127.0.0.1-200:扫描一个C段
-
nmap baidu.com :进行一个快速的扫描
-
Ping扫描:
- 只进行ping,然后显示出在线的主机
- 主机发现:
- nmap -sP 192.168.126.131/24
-
无Ping扫描:
-
常用于防火墙禁止ping的情况下
-
nmap -P0 192.168.121.32
-
可以手动设置扫描的协议
如:
TCP:对应协议编号为6。 ICMP:对应协议编号为1 IGMP:对应协议编号为2 UDP:对应协议编号为17
-
用TCP,UDP,IGMP协议向目标主机发包判断是否存活;
- nmap -p06,17,2 192.168.121.1/24
(默认用的为1,2,4)
-
-
TCP SYN扫描
- nmap -PS -v 192.168.21.1
- 通常情况下Nmap 默认ping扫描是使用TCP ACK和ICMP Echo请求对目标进行扫描.目标主机的防火墙阻止这些请求时,可以用TCP SYN Ping扫描进行对目标主机存活的判断
- 指定端口范围进行的扫描nmap -PS80,100-200 -v 192.168.21.1
-
TCP ACK Ping扫描
使用-PA选项可以进行TCP ACK Ping扫描,它与TCP SYN Ping扫描是非常类似的,唯一的区别是设置TCP的标志位是ACK而不是SYN,使用这种方式扫描可以探测阻止:SYN包或ICMP Echo请求的主机。很多防火墙会封锁SYN报文,所以Nmap提供了TCP SYN Ping扫描与TCP ACK Ping扫描两种探测方式,这两种方式可以极大地提高通过防火墙的概率,我们还可以同时使用-PS与-PA来既发送SYN又发送ACK。在使用TCP ACK Ping扫描时,Nmap 会发送一一个ACK标志的TCP包给目标主机,如果目标主机不是存活状态则不响应该请求,如果目标主机在线则会返回一个RST包。
- nmap -PA 192.168.21.1
- nmap -PA -PS -v 192.168.21.1两种一起用
-
UDP Ping 扫描
- nmap -PU 192.168.21.1
-
ARP Ping 扫描
- 通常在扫描局域网时使用,内网使用ARP Ping扫描方式是最有效的
- nmap 默认情况下扫描局域网内的主机会使用ARP扫描,即使指定了-PS等
- nmap -PR 192.168.21.1-200
-
列表扫描 -sL 不知道有啥用
-
禁止反向域名解析 -n
该选项很少使用,如果是对--台有域名绑定的服务器通常不会使用该选项;
如果是单纯扫描一-段IP, 使用该选项可以大幅度减少目标主机的相应时间,从而更快地得到结果。 -
反向域名解析
- -R选项意为反向解析城名,使用该选项时Nmap永远对目标IP地址作反向域名解析。
该选项多用于绑定域名的服务器主机上,该选项的使用便于我们了解目标的详细信息。例如,在扫描一个C段的时候,我们更加清楚在哪- - 段IP上存在哪些网站。
-
扫描IPV6
- nmap -6 fe80::1c98:68e:303d:496a
IPv6将会逐渐替换IPv4,但在一段相当长的时间内,IPv4 还会大量地存在。后面章节演示的IP则都是IPv4地址,如果需要扫描IPv6地址,则需要在每个语句的IPv6目标地址前面加上-6选项。
- --traceroute 路由跟踪
- nmap --traceroute -v baidu.com
端口扫描
-
所有的扫描选项都是以
-s<x>
形式出现的 -
ACK -sA | UDP -sU
-
端口六个状态
- open(开放的)
- closed(关闭的) 关闭的关口是可访问的
- filtered(被过滤的) 建议再次扫描
- unfiltered(未被过滤的) 未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。
- open|filtered(开放或者被过滤的) 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。
- closed|filtered(关闭或者被过滤的) 该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。
-
时序选项
在Nmap中使用-T (0-5)可以启用时序选项,对于时序选项这里有0~5不同的选项。
IDS:入侵检测系统
-T0 (偏执的):非常慢的扫描,用于IDS逃避。
-T1 (鬼祟的):缓慢的扫描,用于IDS逃避。
-T2 (文雅的):降低速度以降低对带宽的消耗,此选项- -般不常用。
-T3 (普通的):默认,根据目标的反应自动调整时间。
-T4 (野蛮的):快速扫描,常用扫描方式,需要在很好的网络环境下进行扫描,请求可能会淹没目标。
-T5 (疯狂的):极速扫描,这种扫描方式以牺牲准确度来提升扫描速度。
(现在一般用-T4)
nmap -T4 192.168.21.1
-
常用扫描选项
-
-p 指定扫描端口
- nmap -p 80,445 192.168.21.1
- nmap -p 1-1000 192.168.21.1
-
-F 快速扫描常用端口
- nmap -F 192.168.21.1
-
-r 使用该选项不会对端口进行随机的顺序扫描
-
--top-ports
- 扫描开发概率最高的1000个TCP端口
- nmap --top-ports 1000 192.168.21.1
- nmap --top-ports 100 192.168.21.1
-
-
TCP SYN 扫描 -sS
- nmap -sS 192.168.21.1
- 比较常用,扫描速度较快
- 比较隐蔽,不会轻易被目标主机发现
-
TCP 连接扫描 -sT
- 用于SYN扫描不能用的时候
- 基本不会对目标主机进行泛洪攻击或导致目标主机崩溃
- 比较稳定,基础
- 首先选用SYN扫描
-
UDP扫描-sU
使用-sU选项可以进行UDP扫描。UDP扫描是非常慢的,很多的安全审核人员忽略了这些端口,这显然是一个错误的做法。
-
隐藏扫描-sN -sF -sX
- -sF FIN扫描,使用TCP SYN被目标主机防火墙发现,会阻止SYN数据包.
- 这时候可以用-sF 尝试穿透
- 这些扫描方式可能会躲过一些无状态防火墙的过滤
- -sF FIN扫描,使用TCP SYN被目标主机防火墙发现,会阻止SYN数据包.
-
空闲扫描,利用跳板/代理扫描
-
nmap -sI www.0day.co:80 192.168.21.1
这里是利用僵尸主机为www0day.co 的主机对192.168.126.131 进行空闲扫描,如果有IDS,IDS 则会把www0day.co当作扫描者。
-
指纹识别与探测
- 版本探测
- 探测主机系统,以及一些服务的版本
使用-A选项后我们可以获取更加详细的信息和更加直观的方式。我们在以上的结果中甚至可以得到具体的Linux内核版本,这得益于强大的Nmap。
使用-sV选项或-A选项时,对于获知的结果不要过分地相信,Nmap并不一
定能全部躲过某些软件的伪装。
-
全端口版本探测
- nmap -sV --allports 192.168.21.1
-
设置扫描强度
--version-intensity 0~9
数值越大,可能越准确,耗时也更长
0最低 9最高
默认是7
- 获取详细的版本信息
--version-trace
操作系统探测
nmap -O 192.168.21.1
- 以下两个可以推测操作系统
nmap -O --fuzzy 192.168.21.1
nmap -O --osscan-guess 192.168.21.1
- 有一定的差别的
防火墙/IDS(入侵检测)逃逸
- 报文分段
nmap -sV -F 192.168.1.100
- IP欺骗 -D
RND 随机生成:
nmap -D RND:11 192.168.21.1
指定IP:
nmap -D 192.168.1.1,192.168.1.2,192.168.1.3 192.168.21.1
需要注意的是,诱饵主机必须处于工作状态,否则会导致目标主机的SYN洪水攻击。
- 源地址欺骗-sI
nmap -sI www. 0day.co:80 192.168.126.131
- 源端口欺骗
nmap --source-port 53 182.168.21.1
- MAC地址欺骗
--spoof-mac 0会随机生成一个
nmap -sT -PN --spoof-mac 0 192.168.126.131
保存和输出
- 标准保存 -oN
nmap -F -oN test.txt 192.168.21.1
- 补充保存 --append-output
nmap -F --append-out -oN test.txt 192.168.21.1