nmap是用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图,Nmap的发送特制的数据包到目标主机,然后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具。
1.主机探测
2.端口扫描
3.版本检测
4.支持探测脚本的编写
官网:Nmap: the Network Mapper - Free Security Scanner
主机发现
-iR [number] 随机选择目标 //对随机生成number个地址进行扫描。
-iL target.txt 从文件中加载IP地址 //扫描target文件下的使用IP地址
-sL 简单的扫描目标
-sn 对目标进行ping检测,不进行端口扫描(会发送四种报文确定目标是否存活,)
-Pn 将所有主机视为在在线,跳过主机发现 //目标机禁用ping,绕过ping扫描
-PS[portlist] (TCP SYN ping) 需要root权限
-PA[portlist] (TCP ACK ping)
-PU[portlist] (UDP ping)
-PY [portlist] (SCTP ping)
-PE/PP/PM ICMP回显,时间戳和网络掩码请求探测
-PO[协议列表] IP协议Ping
-n/-R 从不执行DNS解析/始终解析[默认:有时]
--dns-servers 指定自定义DNS服务器
--system-dns 使用OS的dns服务器
--traceroute 跟踪到每个主机的跃点路径
扫描技术
-sS 使用TCP的SYN进行扫描 //SYN扫描,使用最频繁,安全,快
-sT 使用TCP进行扫描 //TCP连接扫描,不安全,慢
-sA 使用TCP的ACK进行扫描 //检测哪些端口被屏蔽
-sU UDP扫描 //UDP扫描,慢,可得到有价值的服务器程序
-sI 僵尸ip 目标 ip Idle扫描 //使用僵尸机对目标机发送数据包
-sF FIN扫描
-b FTP反弹扫描
端口规格和扫描顺序
-p 扫描指定端口 //nmap -p 80 yonyou.com
--exclude-ports 从扫描中排除指定端口
-f 快速模式-扫描比默认扫描更少的端口,使用小数据包发送,避免被识别出//nmap -f yonyou.com
-r 连续扫描端口-不随机化
--top-ports 扫描最常用的端口
服务/版本探测
-sV 探测服务/版本信息 //对端口上的服务程序版本进行扫描
--version-intensity 设置版本扫描强度(0-9)
--version-all 尝试每个强度探测
--version-trace 显示详细的版本扫描活动(用于调试)
脚本扫描
-SC 192.168.96.4 使用脚本进行扫描,为脚本文件
--script = , 以逗号分隔的目录,脚本文件或脚本类别
--script-args = 为脚本提供参数
--script-args-file=文件名 从文件名中加载脚本参数
--script-trace 显示发送和接受的所有数据
--script-updatedb 更新脚本数据库
--script-help= 显示有关脚本的帮助
操作系统检测
-o 启用os检测 //对目标主机的操作系统进行扫描
--osscan-limit 将os检测限制为可能的目标
--osscan-guess 推测操作系统检测结果
时间和性能
--host-timeout 设置超时时间
--scan-delay 设置探测之间的时间间隔
-T <0-5> 设置时间模板,值越小,IDS报警几率越低
防火墙/IDS规避和欺骗
-f 报文分段
-s 欺骗源地址
-g 使用指定的本机端口
--proxies 使用HTTP/SOCK4代理
-data 想发送的数据包中追加自定义的负载
--data-string 将自定义的ACSII字符串附加到发送数据包中
--data-length 改变发生数据包的默认的长度,避免被识别出来是nmap发送的
--spoof-mac MAC地址欺骗
--badsum 发送带有虚假TCP/UNP/STCP校验和的数据包
输出
-oN 标准输出
-oX 192.168.96.4 -oX myscan.xml XMl输出 //对扫描结果另存在myscan.xml
-oS script jlddi3
-oG grepable
-oA 同时输出三种主要格式
-v 显示冗余信息(扫描细节)
-d 调试级别
--packet-trace 跟踪发送和接收的报文
--reason 显示端口处于特殊状态的原因
--open 仅显示开放的端口
杂项
-6 对ipv6地址的主机进行扫描
-A ip address 启动Os检测,版本检测,脚本扫描和traceroute//强力扫描,耗时长
-V 显示版本号
-h 帮助信息
扫描常见端口 proxychains4 nmap -sT -Pn x.x.x.x -p 80,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,11211,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open 快速扫描全部端口 nmap -sS -Pn -n --open --min-hostgroup 4 --min-parallelism 1024 --host-timeout 30 -T4 -v -p 1-65535 -iL ip.txt -oX output.xml
1、open(开放的)
应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描 的主要目标。安全意识强的人们知道每个开放的端口 都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。 而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。 非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。
2、closed(关闭的)
关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。 它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行up 也对部分操作系统探测有所帮助。 因为关闭的关口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。 系统管理员可能会考虑用防火墙封锁这样的端口。 那样他们就会被显示为被过滤的状态,下面讨论。
3、filtered(被过滤的)
由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则 或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供 任何信息。有时候它们响应ICMP错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧, 不做任何响应。 这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的。 这使得扫描速度明显变慢。
4、unfiltered(未被过滤的)
未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。
5、open|filtered(开放或者被过滤的)
当无法确定端口是开放还是被过滤的,Namp就把该端口划分成 这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。 UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。
6、closed|filtered(关闭或者被过滤的)
该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。