Nmap脚本引擎NSE

发布时间:2020-05-26 11:30:10 作者:JachinLi
来源:网络 阅读:2016

Nmap网络安全审计(六)

Nmap脚本引擎NSE

NSE中的脚本采用Lua语言编写。NSE设计出来是为了提供Nmap的灵活性,式版的NSE包含14个大类的脚本,总数达500多个,这些脚本的功能包括对各种网络口令强度的审计,对各种服务器安全性配置的审计,对各种服务器漏洞的审计等。

NSE脚本的运行

我们使用NSE脚本测试一台主机,我们来看一下这条指令使用的参数,-O进行操作系统检测,-sV对目标系统的服务进行检测,这里我们没有使用脚本的参数所有使用的是默认脚本,默认脚本会使用-sC参数。默认脚本一般不会对目标系统造成危害,但是其他的一些脚本可能会引起安全防御设备的报警。

nmap -sV -sC -O 192.168.126.139

Nmap脚本引擎NSE

默认分类中的脚本:

NSE中脚本的分类

NSE脚本的选择

我们可以在命令行中输入 --script 选项来进行对脚本的选择,--script 后跟脚本的名字、脚本的种类或脚本存放的路径,或一个包含多个脚本的目录...
我这里是随便用了一个,检测主机是否有常见漏洞(直接用脚本的分类名称作为参数的话,扫描的时候是调用该分类下所有脚本去扫描)

nmap -script vuln 192.168.126.139

Nmap脚本引擎NSE

可以使用http-methods方法来枚举目标web服务器上所运行的服务

nmap -p 80,443 --script http-methods www.*****.com

Nmap脚本引擎NSE
从检测的结果中可以看到,目标服务器支持的方法有GET、HEAD、POST、OPTIONS 、TRACE。

另外也可以同时使用多个分类中的脚本去扫描

nmap --script exploit,malware 192.168.126.139

Nmap脚本引擎NSE

使用指定路径来执行NSE脚本,脚本在nmap目录下,/nmap/scripts/xxx.nse

nmap --script D:/Nmap/scripts/banner.nse 192.168.126.139

Nmap脚本引擎NSE

如果你会编写扫描脚本的话,可以在创建完成后放到文件夹里,如果这个文件夹有多个脚本,你可以将路径只写到目录,这样会使用这个目录下所有脚本进行扫描,也可以将路径指定到文件里的脚本,这样是使用单个脚本进行扫描。

使用运算符来选择使用的脚本:

使用除 exploit分类以外的脚本进行扫描

nmap --script "not exploit" 192.168.126.139

使用除intrusive、dos、exploit分类以外的脚本进行扫描

nmap --script "not (intrusive or dos or exploit)"  192.168.126.139

只使用safe和vuln进行扫描

nmap --script "safe and vuln" 192.168.126.139

此外,NSE中也支持通配符 * ,对一台运行SNMP服务的计算机进行检测,使用所有与SNMP相关的脚本

nmap --script "snmp-*" 192.168.126.139

这些分类和运算符可以结合操作

nmap --script "ftp-* and not(intrusive)" 192.168.126.139

如何向NSE脚本传递参数

Nmap中使用 --script-args 来指定NSE脚本运行时的参数

nmap -p80 --script http-methods www.***.com

当执行这个脚本的时候,Nmap会向目标服务器发送数据包,Nmap的数据包中包含的默认客户端信息。
Nmap脚本引擎NSE

这种客户端一般会被安全机制拦截,我们可以使用 --script-args 修改客户端信息为Mozilla 50

nmap -p 80 --script http-methods --script-args http.useragent="Mozilla 50" www.***.com

Nmap脚本引擎NSE

Nmap脚本引擎NSE

NSE脚本调试

如果想看nmap扫描时候的具体操作,这样可能会使操作过程更加清晰,在之前我们也讲过可以使用 --script-trace来查看

nmap -p 80 --script-trace --script http-methods --script-args "http.useragent=Mozilla 50" www.***.com

Nmap脚本引擎NSE

也可以使用 -d [ 1-9 ] 切换调试模式,使用-d参数1-9,数字越大输出信息越详细

nmap -d3 --script-trace --script http-methods www.***.com

Nmap脚本引擎NSE

NSE常见脚本的应用

Nmap的基本功能只包括主机发现,端口扫描,操作系统和服务检测功能,而NSE进一步实现了大量高级功能。

信息搜集类脚本

NSE中大量脚本实现了这个功能,这些脚本使用不同的技术完成了对目标的各种信息的搜集。利用脚本 http-methods查看目标服务器所支持的HTTP方法。
基于脚本http-methods的审计目的,web服务器需要支持HTTP方法,才能正确提供HTTP服务,常见的有以下几种:

高级主机发现类脚本

  1. 脚本broadcast-ping.NSE

    审计目的:发现本地网络中的活跃主机
    审计方法:这个脚本向整个本地网络中所有IP地址发送广播包,以自己所在网络为目标
    审计命令:

    nmap --script broadcast-ping

    审计结果:
    Nmap脚本引擎NSE

  2. 脚本 targets-sniffer

    审计目的:发现本地网络中的活跃主机
    审计方法:这个脚本会对你的本地网络进行嗅探,然后发现网络中的所有主机,以自己所在网络为目标
    审计命令:

    nmap -sL --script=target-sniffer -e xxx

    审计结果:
    Nmap脚本引擎NSE
    可以使用-e监听网卡设备

密码审计类脚本

网络上提供的服务一般都具有一定的认证措施,目前应用最为广泛的认证措施还是用户名和密码。这种认证措施的优势在于简单易行,而缺点在于很多用户意识不到密码强度的重要性,一般会选择一些比较简单容易记住的密码,而这些密码很容易被猜出来,因此网络的管理者需要一个有效的工具来对自己网络中各种服务的密码强度进行审计。

  1. 脚本mysql-brute.NSE

    审计目的:发现网络中弱口令的MySQL数据库

    审计方法:脚本mysql-brute.NSE的审计方法很简单,在Nmap中有两个数据文件,是一些常见的用户名和密码,这个脚本将这两个文件进行组合然后尝试登陆。

    审计命令:

    nmap -p 3306 -packet-trace --script mysql-brute 192.168.126.141

    这里是没有破解出密码,破解的成功率取决于字典的大小哈,自己感兴趣的可以试试,github上也有爆破字典可以使用的。
    Nmap脚本引擎NSE

2.脚本smtp-brute.NSE

smtp-brute.NSE脚本用来检测目标邮件服务器SMTP服务的密码是否合规。

审计目的:邮件服务器中经常会存储一些非常重要的信息,而对用户进行认证的方式就是用户和密码,这里存在一些简单的账户名和密码,他们很容易成为被GJ的对象,因此需要先对服务器进行弱口令检查。.

审计方法:对密码审计的方法采用穷解的方式。这个脚本可以对SMTP密码的穷解,它支持LOGIN、PLAIN、CRAM-MD5、DIGEST-MD5、NTLM四种登录方式。默认情况下,smtp-brute.NSE会使用/NSElib/data/username.lst文件中的内容作为用户名,/NSElib/data/passwords.lst 文件中的内容作为密码。

审计命令:

nmap -p 25 --script smtp-brute 192.168.0.1

审计结果:我这里没有搭建smtp就不做演示了,有条件的可以自己试试

漏洞扫描类脚本

NSE脚本扩充漏洞扫描的功能,利用这些脚本,就可以使用Nmap对目标进行扫描。

1.脚本 http-slowloris.NSE

slowloris是一种GJ方法,原理是以极低的速度向服务器发送http请求。由于web server对于并发的连接数都有一个上限值,如果恶意连接不释放,那么web server的所有连接都会被恶意连接占用,导致拒绝服务。

审计方法:使用http-slowloris脚本,向目标发送连接,并保持这个连接,构造了一个畸形的http请求,是一个不完整的http请求。
 审计命令:
nmap -p 80 --script http-slowloris --max-parallelism 300 www.xxx.com

审计结果:这里不做实验,不要随意对网站进行测试
审计拓展:我们可以通过调整http-slowloris.send_interval参数来改变扫描的过程。这个参数可以指定发送http header datas的间隔,默认为100,我们来修改一下

nmap -p 80 --script http-slowloris --script-args http-slowloris.send_interval=200 --max-parallelism 300

http-slowloris.timeklimit参数指定Dos持续运行时间,默认为30分钟,我们修改为10分钟

nmap -p 80 --script http-slowloris --script-args http-slowloris.timelimit=10m www.***.com

http-slowloris.runforever参数对指定目标一直发动DoSGJ。默认值为false

nmap -p 80 --script http-slowloris --script-args http-slowloris.runforever www.***.com

Nmap中还有一个http-slowloris-check.NSE的脚本,这个脚本不会发起DoS GJ,而是检测目标是否具备抵抗DOS GJ的能力。

nmap -p 80 --script http-slowloris-check www.***.com
推荐阅读:
  1. Nmap参数整合
  2. Nmap整理收集

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nmap脚本 nse脚本 nmap高级扫描

上一篇:安装及配置mysql的详细步骤介绍

下一篇:十分钟搞定pandas(持续更新中)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》