为Nmap舔砖加瓦

安全工具 2017-11-12

Nmap作为一款优秀的端口扫描器,被所有渗透测试人员当作工作中必不可少的辅助工具,它不仅支持多种扫描方式,还支持添加漏洞测试脚本,在强大的lua脚本支持下,使得nmap更加如虎添翼,官方的nmap自带有非常多的脚本,这些不是今天的主角,今天的主角是如何编写属于自己的脚本,为namp的强大添砖加瓦。

理解nse脚本的结构

任何脚本插件都有自己的编写规则,都有一定的模板,所以nmap的脚本也不例外,想要编写脚本,必须去了解其编写规则,以及执行流程,下面我们就一起学习学习。大家可以先去看一下freebuf上的一个文章,点击下方原文连接查看。

脚本模版

1.jpg

我们需要做的就是修改Rule以及功能函数的内容即可。所以我们要理解rule的四种触发条件才能完成我们想要完成的功能脚本。

Rule的四种条件类型:

Prerule

Prerule()用于在Nmap没有执行扫描之前触发脚本执行,这类脚本脚本并不需要用到任何Nmap扫描的结果;

测试代码:

2.png

扫描结果如下:

3.jpg

Hostrule

Hostrule()用在Nmap执行完毕主机发现后触发的脚本,根据主机发现的结果来触发该类脚本

测试代码:

4.png

扫描结果:

5.jpg

Portrule

Portrule用于Nmap执行端口扫描或版本侦测时触发的脚本,例如检测到80端口,获取网页的title

测试代码:

6.jpg

扫描结果:

7.jpg

Postrule

Postrule用于Nmap执行完毕所有扫描后,通常用于扫描结果的数据提取和整理。

测试代码:

8.png

扫描结果:

9.jpg

其他基础

以上内容大概介绍了nmap在不同阶段触发脚本的情况,剩下就需要有一定的lua脚本编写基础,以及熟悉nmap自带的所有库文件,这样才能快速的编写适合自己的脚本。

参考资料:

https://nmap.org/nsedoc/

nmap自带脚本

总结

平时我们在渗透测试中,遇到特定的条件,需要批量扫描的时候,自己实现一个符合自己条件的nse脚本,让我们可以在渗透测试中事半功倍,nmap自带了很多的脚本,基本覆盖了大多数的情况,在写自己的脚本的时候可以参考别人写好的,让我们能够更快的开发出符合条件的脚本。


本文由 myh0st 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论