Nmap脚本引擎的是Nmap Scripting Engine,简称NSE。NSE基于Lua编程语言,可以用来自动进行各种渗透操作。目前,脚本库中包括600个常用的Lua脚本,还可以编写自己的脚本。
脚本构成
- 脚本存放位置 默认在安装目录的Script目录下
- Linux默认 /usr/ share/nmap/scripts
- windows默认 C:\Program Files (x86)\Nmap\scripts
- 脚本类型 Nmap将这些脚本按功能进行了分类。使用脚本时,用户可以指定单个脚本,也可以指定脚本分类,使用分类中的所有脚本实施扫描。
- auth:负责处理认证证书(绕开认证)的脚本,如xll-access、ftp-anon和oracle-enum-users。
- broadcast:在局域网内探查更多的服务开启状况,如DHCP、DNS和SQL Server等服务。通过使用newtargets脚本参数,可以将脚本发现的主机自动添加到Nmap扫描队列中。
- brute:用来暴力破解远程服务器的认证信息,如http-brute和snmp-brute等。
- default:使用-sC或-A选项扫描时默认的脚本,提供基本脚本扫描能力。用户也可以使用--script=default选项指定使用default类脚本。
- discovery:对网络进行扫描,以获取更多的信息,如SMB枚举和SNMP查询等。
- dos:用于进行拒绝服务攻击。
- exploit:利用已知的漏洞入侵系统。
- external:利用第三方的数据库或资源发送数据,如进行whois解析。
- fuzzer:模糊测试的脚本,发送异常的包到目标主机,探测目标主机的潜在漏洞
- intrusive:入侵性脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽。
- malware:探测目标主机是否感染了病毒、开启了后门等信息。
- safe:与intrusive相反,属于安全性脚本。
- version:负责增强服务与版本扫描(Version Detection)功能的脚本。
- vuln:负责检查目标主机是否有常见的漏洞(Vulnerability),如是否有MS08_067。
- 更新脚本库 nmap --script-updatedb
- 查看帮助 --script-help =<Lua scripts>
使用脚本
- 指定脚本 nmap --script=<Lua scripts> <target>
- --script=<Lua scripts>用于指定使用的脚本文件或脚本分类。如果指定多个脚本,脚本之间使用逗号分隔
- 指定参数 每个脚本都有对应的参数,可以指定脚本参数。如果不指定参数,将使用默认值。
- -script-args=<n1=v1,[n2=v2,...]>:设置脚本参数。
- -script-args-file=filename:指定NSE脚本参数文件列表。
- 跟踪执行 使用--script-trace选项跟踪执行过程
- -sC选项,可以指定执行default类脚本
辅助脚本
- 列出所有认证信息 creds-summary
- Nmap可能会检测服务的默认认证信息(如用户名和密码),或者对认证信息实施暴力破解。这些认证信息都会被Nmap收集起来。用户可以使用creds-summary脚本列出这些信息
- 设置反向索引显示 reverse-index
- 进行单元测试 unittest
- 获取服务标志 banner