简介
也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包)是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。
功能
1、主机发现
2、端口扫描,探测所提供的网络服务
3、操作系统类型和版本侦测
4、简单的漏洞扫描及防火墙规避
扫描技术
端口的6个状态:
open:端口是开放的
closed:端口是关闭的
filtered:端口被 Firewall/IDS/IPS 屏蔽,无法确定其状态
unfiltered:端口没有被屏蔽,但是否开放需要进一步确定
open|filtered:端口是开放的或被屏蔽
closed|filtered:端口是关闭的或被屏蔽
-sS(半开放扫描——TCP SYN 扫描)
Tcp三次握手,最后一步不做的,叫半开扫描,这也是 Nmap 默认的扫描方式。该方式发送 SYN 到目标端口,如果收到 SYN/ACK 回复,那么可以判断端口是开放的,nmap 会再回复一个 TCP RST 清除连接复位;如果收到 RST 包,说明该端口是关闭的。如果没有收到回复,那么可以判断该端口被屏蔽了。因为该方式仅发送 SYN 包对目标主机的特定端口,但不建立完整的 TCP 连接,所以相对比较隐蔽,而且效率比较高,适用范围广。
-sT(全开放扫描——TCP Connent 扫描)
Tcp三次握手过程全部完成的叫全开扫描 。TCP Connect 方式使用系统网络 API Connect 向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的 TCP 连接会在目标主机上留下记录信息,不够隐蔽。所以,TCP Connect 是 TCP SYN 无法使用才考虑使用的方式。
-sA (TCP ACK 扫描)
向目标主机的端口发送 ACK 包,如果收到 RST 包,说明该端口没有被防火墙屏蔽;没有收到 RST 包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助 TCP SYN 的方式来判断目标主机防火墙的状况。
-sN/sF/sX (隐蔽扫描——TCP NULL/FIN/Xmas)
这三种扫描方式被称为秘密扫描,因为相对比较隐蔽。FIN 扫描向目标主机的端口发送的 TCP FIN 包或 Xmas tree 包或 NULL 包,如果收到对方的 RST 回复包,那么说明该端口是关闭的;没有收到 RST 包说明该端口可能是开放的或者被屏蔽了。其中 Xmas tree 包是指 flags 中 FIN URG PUSH 被置为1的 TCP 包;NULL 包是指所有的 flags 都为0的 TCP 包。
-sN (半开放扫描)探测扫描主机,只做ping扫描,不进行端口扫描。是Null扫描,是通过发送非常规的TCP通信数据包对计算机进行探测。很多情况下Null扫描与Xmas扫描恰好相反,因为Null扫描不会标记任何数据包,若目标主机的相应端口是关闭的,会响应一个RST数据包,若目标端口是开放的则不会响应任何信息。
-sU (UDP扫描)
UDP 扫描用于判断 UDP 端口的情况,向目标主机的 UDP 端口发送探测包,如果收到回复 ICMP port unreachable 就说明该端口是关闭的;如果没有收到回复,那说明该 UDP 端口可能是开放的或者屏蔽的。因此,通过反向排除法的方式来判断哪些 UDP 端口是可能处于开放状态的。
常用命令参数
-A(全面扫描)
不仅列出目标主机开放的端口号,对应的服务,还较为详细的列出了服务的版本、其支持的命令、到达目标主机的每一跳路由等信息。在进行完全扫描时,扫描机与目标主机之间存在大量的数据流量交互,扫描时长随之增加。完全扫描不仅仅是 TCP 协议上的通信交互,还有例如ICMP、HTTP、NBSS、TDS、POP 等等协议的交互,这些协议的交互是因为在完全扫描开始时首先对目标主机的开放端口进行了确认,之后再根据不同对应的不同服务进行服务版本信息探测、账户信息等信息的探测。
-sP主机IP地址#通过ping的方式探测主机存活数 -PD主机IP地址#跳过ping的方式探测,加快扫描速度 -sL主机IP地址#仅列出指定网段上的每台主机,不发送任何报文给到目标主机 -PS22,80,443主机IP地址#用SYN方式,探测目标主机开放的端口,可以用“,”分隔端口列表 -PU主机IP地址#用UDP方式,探测目标主机开放的端口,可以用“,”分隔端口列表 -sT主机IP地址#扫描开放了TCP端口的设备 -sO主机IP地址#探测目标主机支持哪些IP协议 -iL文件名#从一个文件导入IP地址,并进行扫描。#cat文件名(查看文件包含哪些IP) localhost主机IP地址#查看主机当前开放的端口 -p 1024-65535 localhost主机IP地址#查看主机端口(1024-65535)中开放的端口 -PS主机IP地址#探测目标主机开放的端口 -PS22,80,3306主机IP地址#探测所列出的目标主机端口 -A主机IP地址#探测目标主机操作系统类型
主机发现
-PN(跳过Ping扫描阶段)
在默认情况下Nmap在进行其他扫描之前,Nmap都会对目标进行一个Ping扫描。如果目标禁止了Ping,那么Nmap发出的Ping扫描就不会有反应。在接不到任何结果返回的情况下,Nmap就会直接结束整个扫描过程,如果是这样,扫描结果是不准确的。如果遇到这种情况,我们可以使用-PN参数,启用无Ping扫描,跳过Ping扫描这个过程。
-sP(仅使用Ping协议进行主机发现)
加了这个参数Nmap就会仅使用Ping协议进行扫描,只是发送一个ICMP回声请求和一个TCP报文到目标端口。虽然这样会有部分主机扫描结果不准确,但速度会非常快。
-PR(使用ARP协议进行主机发现)
ARP协议扫描只适用于局域网内,使用ARP,不仅速度快,而且结果也会更加准确。
-P0#无Ping扫描 -PS#TCP SYN Ping扫描 -PA#TCP ACK Ping扫描 -PU#UDPPing扫描 -PE;-PP;-PM#ICMP Ping Types扫描 -PR#ARP Ping扫描 -n#禁止DNS反向解析 -R#反向解析域名 --system-dns#使用系统域名解析器 -sL#扫描列表 -6#扫描IPv6地址 --traceroute#路由跟踪 -PY#SCTP INIT Ping扫描
端口探测
无参数(端口发现)
Nmap 会以默认 TCP SYN 扫描方式进行,仅判断目标端口是否开放,若开放,则列出端口对应的服务名称。map默认扫描的端口是1000个,但是实际上电脑的端口范围是0-65535个。Nmap默认扫描的1000个只是Nmap认为比较常用的1000个端口。
-p (指定端口号或端口号范围)
如果我们想要扫描目标主机的全部端口,我们可以在参数-p后面加上"*",*在计算机中往往指代全部的意思。需要注意的是,如果我们要扫描全部端口,速度必然会非常慢。
若既想扫描T CP 端口又想扫描 UDP 端口,则需要在端口号前加上 T:或 U:来分别代表 TCP 和 UDP 协议。注意,要既扫描 TCP 又扫描 UDP,则需要指定 -sU 及至少一个 TCP 扫描类型(-sS 半连接扫描,-sT 全连接扫描等),如果没有给定协议限定符,端口号会被加到所有协议列表。
-top-ports 端口数(100)(最有可能开放的100个端口)
端口数(100)表示扫描最有可能开放的那些端口(TCP和UDP分别100个端口)。
-T#时序选项 -sS#TCP SYN扫描 -ST#TCP连接扫描 -sU#UDP扫描 -SN;-SF;-sX#隐蔽扫描 -SA#TCPACK扫描 -sW#TCP窗口扫描 -sM#TCPMaimon扫描 --scanflags#自定义TCP扫描 -sI#空闲扫描 -sO#IP协议扫描 -b#FTPBounce扫描
系统识别
-sV#版本探测 --allports#全端口版本探测 --version-intensity#设置扫描强度 --version-light#轻量级扫描 --version-all#重量级扫描 --version-trace#获取详细版本信息 -sR#RPC扫描 -O#启用操作系统探测 --osscan-limit#对指定的目标进行操作系统检测 --oscan-guess;--fuzzy#推测系统识别
防火墙规避
-f#报文分段 --mtu#指定偏移大小 -D#IP欺骗 -sl#源地址欺骗 --source-port#源端口欺骗 --data-length#指定发包长度 --randomize-hosts#目标主机随机排序 --spoof-mac#MAC地址欺骗
信息收集
--script ip-geolocation-*#IP信息搜集 whois#WHOIS查询 http-email-harvest#搜集E-mail信息 hostmap-ip2hosts#IP反查 dns-brute#DNS信息搜集 membase-http-info#检索系统信息 smb-security-mode.nse#后台打印机服务漏洞 smb-check-vulns.nse#系统漏洞扫描 http-stored-xss.nse#扫描Web漏洞 snmp-win32-services#通过Snmp列举indows服务账户 dns-brute#枚举DNS服务器的主机名 http-headers/http-sitemap-generator#HTTP信息搜集 ssl-enum-ciphers#枚举SSL密钥 ssh-hostkey#SSH服务密钥信息探测
保存
-oN#标准保存 -oX#XML保存 -oS#133t保存 -oG#Grep保存 -oA#保存到所有格式 --append-output#补充保存文件 -oX#转换XML保存 -oX#忽略XML声明的XSL样式表
其它
--min-hostgroup#调整并行扫描组的大小 --min-parallelism#调整探测报文的并行度 --max-parallelism --min-rtt-timeout#调整探测报文超时 --max-rt-timeout --initial-rtt-timeout --host-timeout#放弃低速目标主机 --scan-delay#调整探测报文的时间间隔 --max-scan-delay
--send-eth#发送以太网数据包 --send-ip#网络层发送 --privileged#假定拥有所有权 --interactive#在交互模式中启动 -V#查看Nmap版本号 -d#设置调试级别 --packet-trace#跟踪发送接受的报文 --iflist#列举接口和路由 -e#指定网络接口 -oG#继续中断扫描 firewalk#探测防火墙 vmauthd-brute#VWare认证破解