NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包(win下也能用)。
语法: nmap(选项)(IP)
常用选项:
1 -O:激活操作探测; 2 -P0:值进行扫描,不ping主机; 3 -PT:是同TCP的ping; 4 -sV:探测服务版本信息; 5 -sP:ping扫描,仅发现目标主机是否存活; 6 -ps:发送同步(SYN)报文; 7 -PU:发送udp ping; 8 -PE:强制执行直接的ICMPping; 9 -PB:默认模式,可以使用ICMPping和TCPping; 10 -6:使用IPv6地址; 11 -v:得到更多选项信息; 12 -d:增加调试信息地输出; 13 -oN:以人们可阅读的格式输出; 14 -oX:以xml格式向指定文件输出信息; 15 -oM:以机器可阅读的格式输出; 16 -A:使用所有高级扫描选项; 17 --resume:继续上次执行完的扫描; 18 -P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围; 19 -e:在多网络接口Linux系统中,指定扫描使用的网络接口; 20 -g:将指定的端口作为源端口进行扫描; 21 --ttl:指定发送的扫描报文的生存期; 22 --packet-trace:显示扫描过程中收发报文统计;
1.Nmap工具默认扫描前1000个端口,即1-1000。如果用户想扫描1000以上端口的话,需要使用-p选项来指定。
2.当用户同时指定扫描的目标太多时,可以使用简化符号来获取扫描结果。其中,目标地址之间使用逗号(,)分割。例如,同时扫描以上三台主机,则可以使用如下命令:
nmap 192.168.1.1,101,105
3.当用户有大量主机需要扫描时,可以将这些主机的IP地址(或主机名)写入到一个文本文件中。然后,使用Nmap工具进行扫描。这样避免在命令行中手工输入目标。
nmap -iL [IP地址列表文件]
例,nmap -iL IPlist.txt
4.Nmap工具提供了一个-iR选项,可以用来选择随机的互联网主机来扫描。Nmap工具将会随机的生成指定数量的目标进行扫描。
nmap -iR [主机数量]
例,nmap -iR 2
5.Nmap扫描IP地址范围扫描。
nmap [IP地址范围] IP地址范围之间使用短连字符(-)。
例,nmap 192.168.1.1-100
例,nmap 192.168.1-100.*
6.Nmap也可以使用CIDR(无类别域间路由,Classless Inter-Domain Routing)格式来扫描整个子网。CIDR将多个IP网络结合在一起,使用一种无类别的域际路由选择算法,可以减少由核心路由器运载的路由选择信息的数量。
nmap [CIDR格式的网络地址]
例,nmap 192.168.1.1/24
7.当用户指定一个扫描范围时(如局域网),在该范围内可能会包括自己的主机,或者是自己搭建的一些服务等。这时,用户为了安全及节约时间,可能不希望扫描这些主机。此时,用户就可以使用--exclude命令将这些主机排除。
nmap [目标] --exclude [目标]
例,nmap 192.168.1.1/24 --exclude 192.168.1.101 #排除单个目标
例,nmap 192.168.1.1/24 --exclude 192.168.1.100-103 #排除多个目标
例,nmap 192.168.1.0/24 --excludefile IPlist.txt #排除列表中的目标
8.对目标主机实施全面扫描,扫描结果中包括各种类型的信息。
nmap -A [目标]
例,nmap -A 192.168.1.105
*********************************************************************************************************************
TARGET SPECIFICATION目标说明:
-iL <inputfilename>:指定包含多个主机IP地址的文件
-iR <num hosts>:随机选择IP地址,需要输入相应的主机数
--exclude <host1[,host2][,host3],...>:将IP段中某些IP排除、不进行扫描
--excludefile <exclude_file>:排除扫描文件中的主机IP
HOST DISCOVERY主机发现:
-sL:简单列出扫描的目标
-sn:不做端口扫描,只进行主机发现
-Pn:扫描之前不需要用ping命令,有些防火墙禁止ping命令。可以使用此选项进行扫描
-PS/PA/PU/PY[portlist]:使用TCP、SYN/ACK、UDP或SCTP去发现端口
-PE/PP/PM:使用ICMP响应(echo)、时间戳或子网掩码请求来发现探测
-PO[protocol list]:使用IP协议的ping
-n:不做DNS解析
-R:总是做DNS反向解析
--dns-servers <serv1[,serv2],...>:指定自定义的DNS服务器
--system-dns:使用操作系统的DNS
--traceroute:追踪每台主机的跳转路径
SCAN TECHNIQUES扫描技术:
-sT: TCP connect()扫描,这种方式会在目标主机的日志中记录大批连接请求和错误信息。
-sS:半开放扫描(隐蔽式扫描),很少有系统能把它记入系统日志。不过,需要Root权限。
-sA 这项高级的扫描方法通常用来穿过防火墙的规则集。
-sP:ping扫描,Nmap在扫描端口时,默认都会使用ping扫描,只有主机存活,Nmap才会继续扫描。
-sU:UDP扫描,但UDP扫描是不可靠的
-sN/sF/sX:使用TCP Null、FIN、Xmas(包含FIN、Push、Urgent)扫描
--scanflags <flags>:自定义TCP扫描的flags
-sI <zombie host[:probeport]>:僵尸机扫描
-sY/sZ:使用SCTP协议的INIT/COOKIE-ECHO扫描
-sO:进行IP协议扫描
-b <FTP relay host>:指定FTP中继主机进行FTP反弹扫描
PORT SPECIFICATION AND SCAN ORDER端口说明和扫描规则:
-p <port ranges>:只扫描指定的端口
--exclude-ports <port ranges>:排除指定的端口、不对其进行扫描
-F:快速模式,扫描比默认端口数量更少的端口
-r:有序地扫描端口而不是随机地扫描
--top-ports <number>:扫描排名指定的数字前几位的最常用的端口
--port-ratio <ratio>:扫描比输入的比例更常用的端口
SERVICE/VERSION DETECTION服务、版本探测:
-sV:探测开启的端口来获取服务、版本信息
--version-intensity <level>:设置探测服务、版本信息的强度
--version-light:强度为2的探测强度
--version-all:强度为9的探测强度
--version-trace:将扫描的具体过程显示出来
SCRIPT SCAN脚本扫描:
-sC:等同于--script=default
--script=<Lua scripts>:指定使用Lua脚本进行扫描
--script-args=<n1=v1,[n2=v2,...]>:指定脚本的参数
--script-args-file=filename:指定提供脚本参数的文件
--script-trace:显示全部发送和收到的数据
--script-updatedb:更新脚本的数据库
--script-help=<Lua scripts>:显示脚本的相关信息
OS DETECTION系统探测:
-O:进行系统探测
--osscan-limit:限制系统探测的目标,如只探测Linux系统
--osscan-guess:更侵略性地猜测系统
TIMING AND PERFORMANCE定时和性能:
-T<0-5>:设置时序模块,越高越快
--min-hostgroup/max-hostgroup <size>:指定最小、最大的并行主机扫描组大小
--min-parallelism/max-parallelism <numprobes>:指定最小、最大并行探测数量
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>:指定最小、最大的扫描往返时间
--max-retries <tries>:指定最大的重发扫描包的次数
--host-timeout <time>:指定超时时间
--scan-delay/--max-scan-delay <time>:指定每次探测延迟多长时间,即两次探测之间间隔多少时间
--min-rate <number>:最小的发包速率
--max-rate <number>:最大的发包速率
FIREWALL/IDS EVASION AND SPOOFING防火墙、IDS绕过和欺骗:
-f; --mtu <val>:设置MTU最大传输单元
-D <decoy1,decoy2[,ME],...>:伪造多个IP地址和源地址一同发送包,从而隐藏在众多的IP地址中而不易被发现
-S <IP_Address>:伪造源地址
-e <iface>:使用指定的接口
-g/--source-port <portnum>:使用指定的源端口
--proxies <url1,[url2],...>:指定代理服务器进行扫描
--data <hex string>:在发送包的数据字段中追加自定义的十六进制字符串
--data-string <string>:在发送包的数据字段中追加自定义的ASCII字符串
--data-length <num>:在发送包的数据字段中追加随机的数据
--ip-options <options>:使用指定的IP选项发送包
--ttl <val>:设置TTL值
--spoof-mac <mac address/prefix/vendor name>:伪造源Mac地址
--badsum:发送伪造TCP/UDP/SCTP校验和Checksum的数据包
OUTPUT输出:
-oN/-oX/-oS/-oG <file>:分别输出正常、XML、s|<rIpt kIddi3、grepable格式的扫描结果到指定的文件
-oA <basename>:一次性以三种格式输出
-v:增加的详细程度(使用VV更详细)
-d:提高调试水平(使用DD更高)
--reason:显示端口处于特定状态的原因
--open:仅显示打开(或可能打开)端口
--packet-trace:显示发送和接收的所有数据包
--iflist:输出主机接口和路由(为了调试)
--append-output:附加到指定的输出文件,而不是乱码
--resume <filename>:从指定的文件中恢复终止的扫描
--stylesheet <path/URL>:将指定路径的URL的XSL样式表转换为XML输出为HTML格式
--webxml:获取更多便捷的XML参考样式
--no-stylesheet:防止将XSL样式表的W /XML输出
MISC杂项:
-6:扫描IPv6的地址
-A:一次扫描包含系统探测、版本探测、脚本扫描和跟踪扫描
--datadir <dirname>:指定自定义的nmap数据文件位置
--send-eth/--send-ip:使用原始以太网帧或IP数据包发送
--privileged:假设用户有全部权限
--unprivileged:假设用户缺少原始套接字权限
-V:输出版本号
-h:输出帮助信息