nmap
基本功能:
1. 探测一组主机是否在线
2. 扫描主机端口,嗅探所提供的网络服务
3. 推断主机所用的操作系统
4. 支持探测脚本的编写
指定ip时,可以通过 . 或 ,
例如:192.168.0-255.1-254
又如:192.168.1,3,7.1-254 //指定某个网段
探测主机存活
探测的目的是获得响应以显示某个IP地址是否是活动的
(正在被某主机或者网络设备使用)
选项:
-p* 用于选择ping的类型(可以被结合使用)
可以使用不同的TCP端口/标志位和ICPM码发送许多探测报文,目的是增加穿透防守严密的防火墙机会
-PS[portlist](TCP SYN Ping) 例如:
namp -PS80,23,21,22 www.baidu.com
//发送一个设置了SYN标志位的空TCP报文,默认端口80
不同的端口可以作为选项指定-PA[portlist](TCP ACK Ping)
//提供SYN,ACK两种ping探测的原因是使通过防火墙的机会尽可能大-PU[portlist] (UDP Ping)
//发送一个空的(除非指定了–data-length)UDP报文到指定的端口
优势:可以穿越只过滤TCP的防火墙和过滤器-PE;-PP;-PM(ICMP Ping Types)
Nmap发送一个ICMP type8报文到目标IP,期待从运行的主机得到一个type0的报文,但目前许多主机和防火墙封锁这个报文;时间戳和地址掩码查询可以分别用-PP和-PM选项发送,时间戳响应或者地址掩码响应表示主机在运行-PR(APR Ping)
比基于ip的扫描更快更可靠。如果nmap发现目标主机就在它所在的局域网上,它会进行ARP扫描,即使指定了不同的Ping类型。如果真的不想要ARP扫描,指定–send-ip-Pn 还会返回端口信息
nmap -Pn 192.168.3.1/24-sn : 只进行主机发现,不进行端口扫描
-sL :nmap -sL 192.168.3.1/24 列出目标,但没有扫
–dns-servers:指定dns服务器
端口扫描
-sS(TCP SYN扫描)
默认选项;从不完成TCP连接,可以明确可靠地区分open、closed、filtered状态; 被称作半开放扫描;
SYN/ACK表示端口在监听,而RST表示没有监听者,如果数次重发后没有响应,该端口被标记为过滤,如果ICMP不可达错误,该端口也被标记为过滤-sT(TCP Coonect()扫描)
完全连接到开放的目标端口,而不是像SYN扫描进行半开放的复位。容易被发现-sU(UDP扫描)
可以和TCP扫描如SYN扫描(-sS)结合起来同时检查两种协议。
UDP扫描发送空的UDP报头到每个目标端口。
如果返回ICMP端口不可达错误(类型3,代码3),端口关闭;其他ICMP不可达错误(类型3,代码1,2,9,10,13)表明该端口是被过滤的;偶尔,某服务响应一个UDP报文,证明端口开放;如果多次重试后没有响应,证明端口开放或被过滤
UDP扫描非常慢,可以用–host-timeout跳过慢速的主机-sA(TCP ACK扫描)
用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被滤的。
当扫描未被过滤的系统时,开放和关闭的端口都返回RST,ACK报文不能到达,但无法确定究竟是开放还是关闭;不响应或发送特定ICMP错误信息的端口,标记为被过滤的
下图第一次关闭防火墙,第二次开启防火墙:
-sI(僵尸扫描)
进行真正的TCP端口盲扫描(没有报文从你真实的IP地址发送到目标)
nmap -p445 192.168.3.33 --script ipidseq.nse
或nmap 192.168.3.1-100 --script ipidseq//探测某个主机能不能作为僵尸机
nmap 192.168.3.33 -sI 192.168.3.33 -p1-1000//33是僵尸机-sN/sF/sX
指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来
协助探测对方的TCP端口状态。
使用 --top-ports < number >
扫描开放概率最高的number个端口(默认情况下,nmap会扫描最有可能的1000个TCP端口)
使用 --port-ratio < ratio > 根据端口使用频率来扫描
nmap --port-ratio 0.2 192.168.3.51

服务及版本探测
- -sv(版本探测)
(1) --allports 不为版本探测排除任何端口(默认情况下,nmap版本探测会跳过某些端口)
(2) --version-trace 跟踪版本扫描活动
(3)–version-intensity : 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
操作系统探测
-O 也可以使用-A来同时启用操作系统检测和版本检测
脚本:
--script=smb-os-discovery.nse【比-O准】
nmap脚本扫描
获取banner信息
--script banner.nse获取whois信息
--script whois-domain/ip 目标
【whois信息网站:www.iana.org/whois】扫描HTTP代理
--script http-open-proxy -p8080 <target>指定不同的USER AGENT来绕过某些防火墙
--script http-enum --script-args http。Useragent=”Mozilla 5” <target>列举目录列表
--script http-enum -p80 <target>探测WAF
--script=http-waf-detect.nseSMTP协议
--script smtp-enum-users.nse --script-args=smtp-enum-users.methods={VRFY}
//找到一台开放25端口的主机,枚举用户,列出具体的用户信息
--script smtp-open-relay.nse
//探测中继是否开启SMP协议
--script=smb-os-discovery.nse//操作系统
--script=smb-vuln-*.nse --script-args=unsafe=1//探测漏洞
nmap绕过欺骗防火墙IDS
-f(报文分段);- -mtu(使用指定的偏移量大小)
-f要求扫描时使用小的IP包分段。将TCP头分段在几个包中,使得包过滤器,IDS及其他攻击的检测更加困难
- -mtu要是8的倍数-D 添加多个地址,对源地址进行混淆,同时发起迷惑防火墙
nmap 192.168.3.51 -D 192.168.3.3,192.168.3.61-S 伪装源地址进行扫描
nmap -S 192.168.3.88 192.168.3.51 -e eth0//用88去扫描51-g/–source-port < portnum > 指定源端口
nmap -g 5000 192.168.3.51使用- -proxies <url1,[url2]…> 添加代理,只能是http或SOCKS4
nmap --proxies “SOCKS4://username:password@ip:port” 192.168.3.51使用- -data 传送数据,16进制
nmap 192.168.3.51 -p3306 --data FFFFFFFFFF
使用- -sprrf-mac 设置mac地址
nmap 192.168.3.51 -p80 --spoof-mac XXXXXX
其他选项
- -n 不用域名解析 告诉nmap不对它发现活动IP地址进行反向域名解析,因为DNS比较慢
- -R 为所有目标解析域名
- -iR 随机选择目标 选项0意味着永无休止的扫描(nmap -iR 100 -p80 --open)
- –exclude <[host1],[host2],[…]> 排除主机/网
(nmap 192.168.3.1/24 --exclude 192.168.3.1-30) - Excludefile 排除文件列表中的
- -A 综合扫描
- -p 只扫描指定端口
例如-p1-1900;-p U:53,111,T:21-25,80(指定TCP/UDP端口类型) - -F快速扫描
- -r 按随机顺序扫描端口
- -T<0-5>: Set timing template (higher is faster) 如果确定目标没有防火墙可以用5
- –scan-delay
- -v 具体打印正常扫描的信息
- –min-rate :每秒发的包不少于
–max-rate : 每秒发的包不多于
雪碧可乐_2020/7/14_12:07
雪碧可乐_2020/7/17_10:37