NMAP
1.主机发现相关参数
-iL
#把不连续的ip存成一个文件做成一个ip地址列表文件,iL后面跟该地址列表文件
#如:nmap -iL iplist.txt
-iR
#随机选择目标,不用指定扫谁,nmap会帮你随机的指定目标去扫谁,后面要跟要扫目标的数量,
#如:nmap -iR 10 -p22,即随机扫10个目标
--exclude
#如果选了一个iP地址段,但有些ip又不想扫,可以使用该参数把不想扫的ip剔除掉
#如: nmap 192.168.1.0/24 --exclude 192.168.1.1-100,即不扫描192.168.1-100的地址
-excludefile
#可以把不想扫描的ip地址放在一个文件中,使用该参数接文件名,排除掉文件中的ip
#如: nmap 192.168.1.0/24 --excludefile iplist.txt
-sL
#不做扫描,只是把要扫的目标地址段列出来让你看看这些是否真正是你要扫描的对象,可以理解为这个参数是一个子网掩码计算的功能
#如:nmap -sL 192.168.1.0/28
-sn
#不做端口扫描
-Pn
#nmap默认如果服务器不给我回包,该ip就不存活,因此会错失一些信息,该参数即不管服务器给不给我回包,nmap都要把所有该扫的都扫完。
-PS/PA/PU/PY
#在做主机扫描的时候,用SYN发现、ACK发现、UDP发现、SCTP发现
-PE/PP/PM
#ICMP的echo、时间戳探测、查对方子网掩码;一般查不到什么结果
-PO
#使用ip协议扫描,即ip协议的ping
-n/-R
#不做DNS的解析/做反向解析
--dns-servers
#让nmap做DNS解析的时候,用一个指定DNS服务器,而不用操作系统配置的DNS服务器
#如:nmap --dns-servers 8.8.8.8 www.sina.com
--system-dns
#使用操作系统默认的DNS,nmap默认使用该参数
--traceroute
#进行路由追踪
#如:nmap www.baidu.com --traceroute
2.端口发现参数
-sS
#使用TCP的SYNnmap默认使用该参数
-sT
#TCP扫描,进行完整的三次握手扫描
-sA
#发一个ACK的数据包扫描
-sW
#TCP协议里面的窗口扫描
-sM
#TCP的Maimon扫描,发送的ACK+FIN
--------------------------------------------------
-sU
#使用UDP协议扫描
#nmap -sU 192.168.1.134 -p53
-sN
#TCP的flags为空
-sF
#只有一个FIN
-sX
#FIN+PSH+URG
-scanflags
#自己可以自定义TCP的flags
-sI
#僵尸扫描
-sY/sZ
#为SCTP协议准备的参数
-sO
#ip扫描
-b
#专门针对ftp中继的场景
3.指定要扫的端口
-p
#指定端口,不区分-p后端的端口是TCP还有UDP,那么nmap会TCP、UDP都扫描
#指定TCP,T:端口。eg:nmap 192.168.1.3 -p U:53,111,137
#指定UDP,U:端口。eg:nmap 192.168.1.3 -p T:25,80,139,8080
--exclude-ports
#指定端口列表
-F
#快速模式
#nmap扫描ip不加端口,默认情况下它会扫描常用的1000个端口,加该参数,nmap只会扫一部分端口,不会把1000个端口都扫完
-r
#连续的扫描端口,默认情况下nmap扫1000个端口会随机无顺序的扫
--top-ports
#只扫默认的1000个端口中排前十的端口
--port-ratio
#扫描更常见的端口
4.探测端口上跑的服务
-sV
#默认情况下,利用nmap里面集成的大量的特征库去探测,探测的结果和特征库进行匹配,但是默认情况下,也不是进行了nmap所有特征库匹配,因为效率会降低,若是服务扫描结果不准确,猜测可能是这可能是那,可以使用下面参数
--version-intensity
#扫描深入程度,0-9,9是把进行完整的端口上服务的发现
#如:nmap -p21 192.168.1.137 -sV --version-intensity 9
--version-light
#即--version-intensity 等于2的情况
--version-all
#即--version-intensity 等于9的情况
--version-trace
#把扫描的具体过程也进行一个跟踪
5.脚本扫描
-sC
#-sC即--script=default,使用脚本扫描,也可使用下面方法
--script=脚本文件名称
--script-trace
#对脚本进行追踪,看他发的什么东西
--script-updatedb
#更新脚本
#nmap --script-updatedb
--script-help=脚本文件名称
#了解脚本的使用方法
#nmap --script-help=脚本名;脚本存放在/usr/share/nmap/script
6.检测操作系统类型
-O
#检测操作系统类型
--osscan-limit
#限制OS检测,限制他只检测linux或windows
7.时间和性能相关
nmap默认扫描速度挺快的,但是太快的扫描容易引起目标系统的察觉。所以这时候,我们可以通过一些性能、时间参数的设定让我们的扫描每发一个访问都间隔一段时间。
--min-hostgroup/max-hostgroup
#最少一次扫多少个主机/最大一次扫多少个主机
--min-parallelism/max-parallelism
#指定并行的探测数量,并行的最小/最大
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout
#指定发一个包,并接收返回结果来回时间,最小时间/最大时间
--max-retries
#只对目标端口发送一个探测包,有可能网络质量不好包丢失了,nmap就认为这个端口是关闭的,这个结果是不准确的,此时可以使用该参数定义探测的次数
--host-timeout
#设置目标主机超时时间
--scan-delay
#扫描延迟时间,每次发探测之间要延迟一段时间,这样目标系统不会太轻易的发现我
#如:nmap 192.168.1.134 --scan-delay 10s
--min-rate
#最小速率,即每秒发包数量最小为多少
--max-rate
#最大速率,即每秒发包数量最大为多少
8.防火墙/IDS躲避和欺骗
-f
#设置mtu,即最大的传输单元
-D
#伪造源地址,不是发包的时候伪造源地址,而是发包的时候增加一些噪声ip
#nmap -D 192.168.1.11,192.168.1.12,192.168.1.132 192.168.1.134,其中1.132是我的ip,1.134是目标ip,这样迷惑目标ip,他分不清那些是真实的,那些是虚假的访问
-S
#伪造源地址,这种扫描有明显的弊端,无法得到回包
#nmap -S 192.168.1.11 -e th0 192.168.1.134,-e:指定使用哪个网卡接口去发这些包
-e
#指定使用哪个网卡去发包
-g
#指定源端口
#nmap -g10000 192.168.1.134,即我所有的包都是通过10000这个源端口进行发包
--proxies
#指定代理服务器,使用代理链来掩护我们真实的地址
--data
#后面跟16进制的字符串,即我发送的包除了正常的探测之外,还有在数据字段中加入我指定的一堆东西
#如:nmap -p22 192.168.1.134 --data=FFFFFFFFFF
--data-string
#后面跟ASCII码
--data-length
#对数据长度做限制
--ip-option
#ip选项,可以加ip包头的option字段,option字段中就可以有原路由等信息
--ttl
#设定ttl值
--spoof-mac
#欺骗mac地址
--badsum
#每一个数据包的TCP包头中都会有一个差错校验checksum,nmap可以故意发一些错误的checksum值
9.杂项
-6
#可以扫描ipv6的地址
-A
#一段扫描参数的组合:-O+-vS+--script+--traceroute