默认探测主机
默认情况下,Nmap 用指定的协议对端口 1 到 1024 以及 nmap-services 文件中列出 的更高 的端口在扫描
默认情况下,Nmap 仍然对主机进行反向域名解析以获取 它们的名字
默认使用-T3,选项(-T3
)很少有主机崩溃和带宽问题,比较适合于谨慎的用户
默认-sS(TCP SYN扫描),半开放扫描,不进行完整TCP三次握手
Nmap 尝试检测带宽控制并相应地调整扫描的延迟,但并不影响明确说明何种速度工作最佳
T0
选项的主要影响是对于连续扫描,在一个时间只能扫描一个端口, 每个探测报文的发送间隔为5分钟。T1
和T2
选项比较类似, 探测报文间隔分别为15秒和0.4秒。T3
是Nmap的默认选项,包含了并行扫描。 T4
选项与 --max-rtt-timeout 1250 --initial-rtt-timeout 500
等价,最大TCP扫描延迟为10ms。T5
等价于 --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000
,最大TCP扫描延迟为5ms
-T 模板可以和优化调整控制选项组合使用,但模板必须首先指定,否则模板的标准值 会覆盖用户指定的值
open(开放的)
端口监听中,应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描 的主要目标。
closed(关闭的)
没有应用程序监听该端口,但是对Nmap探测报文做出相应,这种端口可对部分操作系统探测有帮助。
filtered(被过滤)
该端口组织探测报文
unfiltered(未被过滤)
端口可以访问,但是Nmap不确定是否开放还是关闭。
只有ACK扫描会把端口归类到此状态,其他类型扫描如:窗口扫描、SYN、FIN来扫描未过滤状态端口可以确定是否开放。
open | filtered(开放或者被过滤的)
当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。
closed | filtered(关闭或者被过滤的)
该状态用于Nmap不能确定端口是关闭的还是被过滤的。它只可能出现在IPID Idle扫描中。
nmap 192.168.1.1 扫描一个IP
nmap 192.168.1.1 192.168.2.1 扫描IP段
nmap 192.168.1.1-254 扫描一个范围
nmap nmap.org 扫描一个域名
nmap 192.168.1.0/24 使用CIDR表示法扫描C段
nmap -iL target.txt 扫描文件中的目标,大量指定IP列表
nmap -iR 100 扫描100个随机主机
nmap --exclude 192.168.1.1 排除列出的主机
nmap 192.168.1.1 -sS TCP SYN端口扫描(有root权限默认)
nmap 192.168.1.1 -sT TCP连接端口扫描(没有root权限默认)
nmap 192.168.1.1 -sU UDP端口扫描
nmap 192.168.1.1 -sA TCP ACK端口扫描
nmap 192.168.1.1 -sW 滑动窗口扫描
nmap 192.168.1.1 -sM TCP Maimon扫描
nmap 192.168.1.1-3 -sL 不扫描,仅列出目标
nmap 192.168.1.1/24 -sn 禁用端口扫描
nmap 192.168.1.1-5 -Pn 跳过主机发现,直接扫描端口
nmap 192.168.1.1-5 -PS22-25,80 端口X上的TCP SYN发现,默认80
nmap 192.168.1.1-5 -PA22-25,80 端口X上的TCP ACK发现,默认80
nmap 192.168.1.1-5 -PU53 端口X上的UDP发现,默认40125
nmap 192.168.1.1/24 -PR 本地网络上的ARP发现
nmap 192.168.1.1 -n 不做DNS解析
nmap 192.168.1.1 -p 21 扫描特定端口
nmap 192.168.1.1 -p 21-100 扫描端口范围
nmap 192.168.1.1 -p U:53,T:21-25,80 扫描多个TCP和UDP端口
nmap 192.168.1.1 -p- 扫描所有端口
nmap 192.168.1.1 -p http,https 基于服务名称的端口扫描
nmap 192.168.1.1 -F 快速扫描(100个端口)
nmap 192.168.1.1 --top-ports 2000 扫描前2000个端口
nmap 192.168.1.1 -p-65535 从端口1开始扫描
nmap 192.168.1.1 -T0 妄想症,非常非常慢,用于IDS逃逸
nmap 192.168.1.1 -T1 猥琐的,相当慢,用于IDS逃逸
nmap 192.168.1.1 -T2 礼貌的,降低速度以消耗更小的带宽,比默认慢十倍
nmap 192.168.1.1 -T3 正常的,默认,根据目标的反应自动调整时间模式
nmap 192.168.1.1 -T4 野蛮的,在一个很好的网络环境,请求可能会淹没目标
nmap 192.168.1.1 -T5 疯狂的,很可能会淹没目标端口或是漏掉一些开放端口
nmap 192.168.1.1 -sC 使用默认的NSE脚本进行扫描
nmap 192.168.1.1 --script=banner 使用单个脚本扫描,banner示例
nmap 192.168.1.1 --script=http,banner 使用两个脚本扫描,示例http,banner
nmap 192.168.1.1 --script=http* 使用通配符扫描,http示例
nmap 192.168.1.1 --script "not intrusive" 扫描默认值,删除侵入性脚本
nmap 192.168.1.1 --script=smb-vuln* 扫描所有smb漏洞
nmap 192.168.1.1 --script=vuln 扫描常见漏洞
nmap 192.168.1.1 -v 增加详细程度,-vv效果更好
nmap 192.168.1.1 -oN test.txt 标准输出写入到指定文件中
nmap 192.168.1.1 -oX test.xml 将输入写成xml的形式
nmap 192.168.1.1 -oG grep.txt 将输出写成特殊格式
nmap 192.168.1.1 -oA results 将输出所有格式,有三种 .xml/.gnmap/.nmap
nmap 192.168.1.1 --open 仅显示开放的端口
nmap 192.168.1.1 -T4 --packet-trace 显示所有发送和接收的数据包
nmap --resume test.txt 恢复扫描,配合-oG等命令使用
尝试确定端口上运行的服务的版本
nmap 192.168.1.1 -sV强度级别0到9,数字越大,正确性越强,默认值为7
nmap 192.168.1.1 -sV --version-intensity 8
轻量级版本扫描,使扫描进程加快,但它识别服务的正确率降低
nmap 192.168.1.1 -sV --version-light
version-all相当于version-intensity的最高级别9,保证对每个端口尝试每个探测报文
nmap 192.168.1.1 -sV --version-all
启用操作系统检测,版本检测,脚本扫描和跟踪路由...
nmap 192.168.1.1 -A
使用TCP/IP进行远程OS指纹识别
nmap 192.168.1.1 -O
当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配
nmap 192.168.1.1 -O --osscan-guess
报文分段,请求的扫描(包括ping扫描)使用微小的碎片IP数据包, 包过滤器检测更难
nmap 192.168.1.1 -f利用数据包分片技术,某些防火墙为了加快处理速度而不会进行重组处理,这样从而逃脱防火墙或闯入检测系统的检测,注意:mtu的值必须是8的倍数(如8,16,24,32等)
nmap 192.168.1.1 --mtu 32
使用-D选项就可以达到IP欺骗的目的,可以指定多个IP或者使用RND随机生成几个IP地址
nmap -D 10.1.1.1,20.2.2.2 192.168.1.1
nmap -D RND:11 192.168.1.1
源地址欺骗,从Microso扫描Facebook
nmap -S www.microso.com www.facebook.com
指定源主机端口,来手动设定用来扫描的端口,常用的如20、53、67端口
nmap -g 53 192.168.1.1
通过HTTP/SOCKS4代理中继连接
nmap --proxies http://191.1.1.1:1080,http://192.2.2.2:1080 192.168.1.1
添加垃圾数据,通过在发送的数据包末尾添加随机的垃圾数据,以达到混淆视听的作效果,200是垃圾数据长度
nmap --data-length 200 192.168.1.1
伪装MAC地址,可以手动指定MAC地址的值。或者为了简单起见,可以填写数字0,这将生成一个随机的MAC地址
nmap --spoof-mac 0 192.168.1.1
伪造检验值,这将使用伪造的TCP/UDP/SCTP校验和发送数据
nmap --badsum 192.168.1.1
示例命令
nmap -f -T0 -n -Pn --data-length 200 -D 192.168.1.101,192.168.1.102,192.168.1.103,192.168.1.23 192.168.1.1
nmap -sS -Pn -p 端口列表 -n --open -T4 --min-hostgroup 1024 --min-parallelism 1024 --host-timeout 30 -v参数解释:
--min-parallelism是关键参数,其设置了后误报率很高,如果追求速度不用考虑这个
1. -sS : Nmap默认使用TCP方式扫描,需要完成完整的三次握手,很费时,所以这里可以采用-sS让Nmap使用SYN方式扫描。
2. -Pn : 绕过防Ping(准确的说是不进行主机Ping发现)
3. -p : 指定扫描端口
4. -n : 不进行DNS解析(反向解析IP地址到域名)
5. --open : 只输出检测状态为open的端口,即开放的端口(输出结果的优化)
6. --min-hostgroup 1024 : 调整并行扫描组的大小
7. --min-parallelism 1024 : 调整探测报文的并行度
8. --host-timeout 30 : 检测超时的跳过(单位是秒 一般我们设置为30秒)
9. -T4 : 设置时间模板,总共有T0-T5,比较适中的是T4
10. -v : 打印详细扫描过程
IP收集这一块可以使用fofa、goby,快速探测也可以用fofa、goby,最后没办法了再搞nmap
端口列表可以借鉴goby扫描端口或者网上收集,比如:1433,445,135,5985,3389,22,1521,3306,6379,5432,389,25,110,143,443,5900,21,873,27017,23,3690,1099,5984,5632,80-100,7000-10000,13389,13306,11433,18080
1、-T0 -T1 很慢,规避IDS
2、对时间做优化,常用-T4,默认T3
3、-Pn -n --open
4、-sn 禁用端口探测
5、扫描
- 默认是-sS 模式
- 探测存活主机 nmap.exe 192.168.0.0/24 -sn
- 加入ip列表或者扫描单个IP nmap -iL IP.txt
- 探测常用攻击端口是否开放 nmap -iL IP.txt -p 端口 -T4
- 不确定的端口使用其他扫描技术再探测
- 确定开放端口后,探测服务版本nmap -iL IP.txt 开放端口列表 -T4 -sV -O
该内容转载自GitHub,更多内容请点击“阅读原文”
欢迎关注公众号"web安全工具库"
· 推 荐 阅 读 ·
《GO语言编程从入门到实践》
本书结合作者近十年一线开发经验,力图使用通俗易懂、深入浅出的描述和丰富的动手练习示例,介绍Go语言的语法特性和编程实践。精选20个动手练习项目,轻松掌握Go语言编程