上一章简单介绍了nmap的基本使用方法以及一些参数的作用,在这一章当中,将继续介绍nmap的更多更高级的用法。
端口扫描选项
其实这一部分在上一章就应该介绍到,但是上一章忘了写,所以在这里简单补充一下。对于端口扫描配置,可以使用以下几个选项:
- 指定端口范围(-p):只扫描指定的端口范围,如-p 1024-1220,1225表示扫描1024到1220以及1224这197个端口,使用-p-选项可以完整扫描1-65535(不指定时随机选择1000个常用端口进行扫描)。
- 快速扫描(-F):仅扫描100个常用端口。
- 顺序扫描(-r):按照从小到大的顺序进行扫描。
- 按照排名指定扫描数量(--top-ports <1及以上的整数>):扫描nmap-services中排名前N的端口。
时间排程控制选项
通过-T选项可以指定时间排程控制模式,有以下几种模式:
- paranoid(0):每5分钟发送一次数据包,并且不会以并行方式同时发送发送多组数据。这种方式不会被IDS检测。
- sneaky(1):每隔15秒发送一个数据包,并且不会以并行方式同时发送多组数据。
- polite(2):每0.4秒发送一个数据包,并且不会以并行方式同时发送多组数据。
- normal(3):nmap默认扫描方式,同时向多个目标发送多个数据包。
- aggressive(4):该模式下,nmap对每个既定主机只扫描5分钟,然后扫描下一台,其等待相应时间不超过1.25秒。
- insane(5):该模式下,nmap对每个既定主机只扫描75秒,然后扫描下一台,其等待相应时间不超过0.3秒。
一般来说,使用默认扫描模式即可,除非需要进行更快速或更隐匿的扫描。
常用选项
这一节将简单介绍在nmap实际使用当中,可能会常用到的一些选项。
- 服务版本识别(-sV):使用该选项可以检测服务端软件的版本信息。
- 操作系统检测(-O):使用该选项可以检测目标主机操作系统版本。
- 禁用主机检测(-Pn):当目标主机屏蔽ping请求时,nmap可能会认为其未开机,此时需要指定该选项,否则扫描无法继续进行。
- 强力检测选项(-A):使用该选项后,nmap将会一并检测目标主机的服务版本(-sV)、操作系统版本(-O)以及使用脚本扫描(-sC)和开启traceroute(--traceroute),这种扫描方法速度较慢。
- IPv6主机扫描(-6):使用该选项可以使用IPv6地址作为目标进行扫描。需要注意的是,IPv6地址需要逐个指定。
脚本引擎
nmap自带一个脚本引擎,其脚本由Lua编写,这些脚本可以分为12个类别:
- auth:该类脚本用于使用暴力破解等技术找出目标系统上的认证信息。
- default:使用--sC或-A会启用此类脚本,此类脚本速度快、信息价值高、内容丰富且简洁、可靠、非入侵等。
- discovery:该类脚本用于探索网路。
- dos:该类脚本可能会向目标进行dos攻击。
- exploit:该类脚本利用目标系统的安全漏洞。
- external:该类脚本会泄露信息给第三方。
- fuzzer:该类脚本会对目标系统进行模糊测试。
- instrusive:该类脚本可能会使目标系统崩溃,或耗尽目标系统资源。
- malware:该类脚本会检查目标系统上是否存在恶意软件或后门。
- safe:该类脚本不会导致目标服务崩溃、不会进行dos攻击且不会利用漏洞。
- version:配合版本检测选项(-sV),对目标系统服务程序进行深入版本检测。
- vuln:该类脚本会检测目标系统上的安全漏洞。
nmap的脚本引擎有以下可用选项:
- -sC或--script=default:启用default类脚本。
- --script<filename>|<category>|<directories>:根据文件名、类别名、目录名执行相应脚本。
- --script-args <args>:该选项用于给脚本提供参数。
nmap有很多自带的脚本,保存在目录/opt/homebrew/share/nmap/scripts下可以到这个目录查找相应的脚本来使用,不过还有一个比较好用的脚本叫Nmap NSE Vulscan,该脚本可以自动从几个大型漏洞披露网站(如CVE、OSVDB等)中查找漏洞,并对目标主机进行检测。具体安装方法和下载地址可以自己到github上找一下,这里就不放了。
以上基本上就是nmap使用过程当中比较常用的功能了,其余的(比如规避检测的扫描方法等)如果后面有涉及到再进行进一步的补充吧。