namp使用教程
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。我们一般用命令行形式的脚本,下载:Nmap: the Network Mapper - Free Security Scanner
命令
主机发现
主机发现有时候也叫做ping扫描,但它远远超越用世人皆知的ping工具 发送简单的ICMP回声请求报文。用户完全可以通过使用列表扫描(-sL
)或者 通过关闭ping (-P0
)跳过ping的步骤,也可以使用多个端口把TCP SYN/ACK,UDP和ICMP 任意组合起来玩一玩。这些探测的目的是获得响应以显示某个IP地址是否是活动的(正在被某主机或者网络设备使用)。
常规扫描
简单的在命令后加ip地址,可以进行常规扫描,查看主机是否存活以及开放的端口。
nmap ip
列表扫描
列表扫描是主机发现的退化形式,它仅仅列出指定网络上的每台主机, 不发送任何报文到目标主机。
nmap -sL -v ip
Ping 扫描
类似于Ping命令,仅执行Ping扫描,可以快速发现主机是否存活。
nmap -sn ip
免Ping扫描
穿透防火墙,避免被防火墙发现
nmap -P0 ip
TCP SYN Ping 扫描
通常情况下,Nmap默认Ping扫描是使用TCP ACK和ICMP Echo请求对目标进行是否存活的响应,当目标主机的防火墙阻止这些请求时,可以使用TCP Syn Ping扫描。
nmap -PS -v ip
TCP ACK Ping 扫描
使用 -PA
选项可以进行 TCP ACK Ping 扫描,它与 TCP Syn Ping 是非常类似的,唯一的区别是设置TCP的标志位是ACK而不是SYN,使用这种方式扫描可以探测组织SYN包或ICMP Echo请求的主机。
nmap -PA -v ip
UDP Ping 扫描
-PU
选项是发送一个空的UDP报文到指定端口,如果目标主机响应则返回一个ICMP端口不可达错误,如果目标主机不是存活状态则会返回各种ICMP报错信息。
nmap -PU -v ip
ICMP Ping Types 扫描
ICMP Echo 方式扫描
nmap -PE -v ip
使用ICMP时间戳Ping扫描
nmap -PP -v ip
使用ICMP地址掩码Ping扫描
nmap -PM -v ip
ARP Ping 扫描
这个选项通常用在扫描局域网时,在本地局域网中防火墙不会禁止ARP请求,这就使它的扫描更加高效。
nmap -PR ip
禁止方向域名解析
告诉Nmap永不对它发现的活动IP地址进行反向域名解析
nmap -n -sL -v ip
方向域名解析
告诉Nmap永远对目标IP地址作反向域名解析
nmap -R -sL -v ip
使用系统域名解析系统
Nmap通过直接发送查询到您的主机上配置的域名服务器来解析域名。为了提高性能,许多请求 (一般几十个 ) 并发执行
nmap --system-dns ip
路由跟踪
nmap --traceroute -v 域名
SCTP INIT Ping 扫描
nmap -PY -v ip
端口扫描
扫描端口开放状态,端口分成六个状态: open
(开放的), closed
(关闭的),filtered
(被过滤的), unfiltered
(未被过滤的), open|filtered(开放或者被过滤的)
,或者 closed|filtered(关闭或者被过滤的)
。
扫描指定端口
nmap -p port(80) ip
nmap -p 80-100 ip
nmap -p T:80,U:445 ip
快速扫描
nmap -F ip
不要按随机顺序扫描端口
nmap -r ip
时序扫描
nmap -T(0-5) ip
扫描最有用的前100个端口
nmap --top-ports 100 ip (扫描最有用的前100个端口)
TCP SYN 扫描 (高效的扫描方式)
它常常被称为半开放扫描, 因为它不打开一个完全的TCP连接。它发送一个SYN报文, 就像您真的要打开一个连接,然后等待响应。
nmap -sS -v ip
TCP 连接扫描
当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描。
nmap -sT -v ip
UDP 连接扫描
UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误, 该端口是closed
(关闭的)。 其它ICMP不可到达错误表明该端口是filtered
(被过滤的)。
nmap -sU -p 80-100 ip
隐蔽扫描
如果扫描系统遵循该RFC,当端口关闭时,任何不包含SYN,RST,或者ACK位的报文会导致 一个RST返回,而当端口开放时,应该没有任何响应。
nmap -sN ip(NULL扫描)
nmap -sF ip(FIN扫描)
nmap -sX ip(Xmas扫描)
TCP ACK 扫描
它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。
nmap -sA ip
TCP 窗口扫描
通过检查返回的RST报文的TCP窗口域做到这一点。 在某些系统上,开放端口用正数表示窗口大小(甚至对于RST报文) 而关闭端口的窗口大小为0。因此,当收到RST时,窗口扫描不总是把端口标记为 unfiltered
, 而是根据TCP窗口值是正数还是0,分别把端口标记为open
或者 closed
nmap -sW -v -F ip
TCP Maimon 扫描
和Null,FIN,以及Xmas扫描完全一样,除了探测报文是FIN/ACK。
nmap -sM -T4 ip
自定义 扫描
--scanflags
选项允许您通过指定任意TCP标志位来设计您自己的扫描。--scanflags
选项可以是一个数字标记值如9 (PSH和FIN),可以设置 TCP扫描类型(如-sA
或者-sF
),如–scanflags URGACKPSHRSTSYNFIN
nmap -sT --scanflags SYNURG ip
空闲 扫描( 隐藏IP )
这种高级的扫描方法允许对目标进行真正的TCP端口盲扫描
nmap -sI www.0day.co:80 ip
IP协议 扫描
IP 协议扫描可以让您确定目标机支持哪些IP协议 (TCP,ICMP,IGMP,等等)。
nmap -sO -T4 ip
FTP弹跳扫描
nmap -b <ftp relay host> (FTP弹跳扫描)
服务和版本探测
把Nmap指向一个远程机器,它可能告诉你端口25/tcp,80/tcp,和53/udp是开放的。使用包含大约2,200个著名的服务的 nmap-services
数据库, Nmap可以报告那些端口可能分别对应于一个邮件服务器 (SMTP),web服务器(HTTP),和域名服务器(DNS)。
版本探测
打开版本探测
nmap -sV ip
nmap -sV -A ip
全端口版本探测
指定--allports
扫描所有端口
nmap -sV --allports ip
设置扫描强度
被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文 一般没什么用。数值越高, 服务越有可能被正确识别。
nmap -sV --version-intensity (0-9) ip
轻量级扫描
--version-intensity 2
的方便的别名。轻量级模式使版本扫描快许多
nmap -sV --version-light ip
重量级扫描
--version-intensity 9
的别名, 保证对每个端口尝试每个探测报文。
nmap -sV --version-all ip
获取详细版本信息
Nmap打印出详细的关于正在进行的扫描的调试信息
nmap -sV --version-trace ip
RPC扫描
它对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图 确定它们是否RPC端口,如果是, 是什么程序和版本号。
nmap -sS -sR ip
操作系统探测
Nmap发送一系列TCP和UDP报文到远程主机,检查响应中的每一个比特。 在进行一打测试如TCP ISN采样,TCP选项支持和排序,IPID采样,和初始窗口大小检查之后, Nmap把结果和数据库nmap-os-fingerprints
中超过 1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。
启用操作系统检测
也可以使用-A
来同时启用操作系统检测和版本检测。
nmap -O ip
对指定的目标进行操作系统监测
nmap -O --osscan-limit ip
推测系统并识别
当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配
nmap -O --osscan-guess/ --fuzzy ip
时间和性能
调整并行扫描组的大小
--max-hostgroup
选项用于说明使用最大的组,Nmap不 会超出这个大小。--min-hostgroup
选项说明最小的组,Nmap 会保持组大于这个值
nmap --min-hostgroup 30 ip
nmap --max-hostgroup 1024 ip
调整探测报文的并行度
这些选项控制用于主机组的探测报文数量,可用于端口扫描和主机发现。
nmap --min-parallelism 100 ip
nmap --max-parallelism 100 ip
调整探测报文超时
Nmap使用一个运行超时值来确定等待探测报文响应的时间,随后会放弃或重新发送探测报文。
nmap --initial-rtt-timeout 100ms ip
nmap --max-rtt-timeout 100ms ip
nmap --min-rtt-timeout 100ms ip
放弃缓慢的目标主机
--host-timeout
选项来说明等待的时间(毫秒)
nmap --host-timeout 1800000ms ip
调整报文适合时间间隔
这个选项用于Nmap控制针对一个主机发送探测报文的等待时间(毫秒)
nmap --scan-delay ls ip
nmap --max-scan-delay ls ip
设置时间模板
往往选择合适参数的时间超过了所需优化的扫描时间,Nmap提供了一些简单的方法,使用6个时间模板,使用时采用-T
选项及数字(0 - 5) 或名称。模板名称有paranoid (0)、sneaky (1)、polite (2)、normal(3)、 aggressive (4)和insane (5)。前两种模式用于IDS躲避,Polite模式降低了扫描 速度以使用更少的带宽和目标主机资源。默认模式为Normal,因此-T3
实际上是未做任何优化。Aggressive模式假设用户具有合适及可靠的网络从而加速 扫描。Insane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。
nmap -T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
ip
防火墙/IDS躲避和哄骗
报文分段
-f
选项要求扫描时(包挺ping扫描)使用小的IP包分段。其思路是将TCP头分段在几个包中,使得包过滤器、IDS以及其它工具的检测更加困难。
nmap -f -v ip
指定偏移大小
使用--mtu
选项可以自定义偏移的大小,使用时不需要-f
,偏移量必须 是8的倍数。
nmap --mtu 16 ip
IP欺骗
为使诱饵扫描起作用,需要使远程主机认为是诱饵在扫描目标网络。 IDS可能会报个某个IP的5-10个端口扫描,但并不知道哪个IP在扫描以及 哪些不是诱饵。
nmap -D RND:11 ip
nmap -D ip1,ip2,ip3 ip1
源地址欺骗
这个标志的另一个用处是哄骗性的扫描,使得目标认为是另一个地址在进行扫描。
nmap -sI 欺骗ip:80 ip
使用指定的接口
nmap -e interface ip
源端口欺骗
Nmap提供了-g
和--source-port
选项(它们是 等价的)
nmap --source-port 902 ip
指定发包长度
这个选项告诉Nmap在发送的报文上附加指定数量的随机字节
nmap --data-length 30 ip
设置IP time-to-live域
设置IPv4报文的time-to-live域为指定的值。
nmap --ttl <value>
目标主机随机排序
告诉Nmap在扫描主机前对每个组中的主机随机排列,最多可达 8096个主机。
nmap --randomize-hosts ip
MAX地址欺骗
要求Nmap在发送原以太网帧时使用指定的MAC地址,这个选项隐含了 --send-eth
选项,以保证Nmap真正发送以太网包。
nmap -sT -Pn --spoof-mac 0 ip
输出
Nmap提供5种不同的输出格式。默认的方式是interactive output
, 发送给标准输出(stdout)。
标准保存
nmap -F -oN d:/xxx.txt ip
XML保存
nmap -F -oX d:/xxx.xml ip
133t 保存
nmap -F -oS d:/xxx.txt ip
Grep 保存
nmap -F -oG d:/xxx.txt ip
保存到所有格式
nmap -F -oA d:/xxx ip
补充保存文件
在输出文件中添加
nmap -F -append-output -oN d:/xxx.txt ip
转换 XML 保存
常见的调用方式是--stylesheet https://nmap.org/data/nmap.xsl
nmap -F -oX xxx.xml --stylesheet https://nmap.org/data/nmap.xsl ip
忽略 XML 声明的 XSL 样式表
nmap -oX d:/xxx.xml --no-stylesheet ip
继续中断的扫描
nmap --resume <filename>
优化
-v (提高输出信息的详细度)
-d [level] (提高或设置调试级别)
--packet-trace (跟踪发送和接收的报文)
--iflist (列举接口和路由)
其他
扫描IPV6地址
nmap -6 IPv6
激烈扫描模式
全面扫描
nmap -A ip
说明用户Nmap数据文件位置
nmap --datadir <directoryname>
使用原以太网帧发送
nmap --send-eth
在原IP层发送
nmap --send-ip
假定用户具有全部权限
nmap --privileged
打印版本信息
nmap -V/--version
打印帮助摘要面
nmap -h/--help