Nmap介绍
Nmap作为一款优秀的端口扫描器,被所有渗透测试人员当作工作中必不可少的辅助工具,它不仅支持多种扫描方式,还支持添加漏洞测试脚本,在强大的lua脚本支持下,使得nmap更加如虎添翼,官方的nmap自带有非常多的脚本,这些不是今天的主角,今天的主角是如何编写属于自己的脚本,为namp的强大添砖加瓦。
理解nse脚本的结构
任何脚本插件都有自己的编写规则,都有一定的模板,所以nmap的脚本也不例外,想要编写脚本,必须去了解其编写规则,以及执行流程,下面我们就一起学习学习。大家可以先去看一下freebuf上的一个文章,点击下方原文连接查看。
脚本模版
我们需要做的就是修改Rule以及功能函数的内容即可。所以我们要理解rule的四种触发条件才能完成我们想要完成的功能脚本。
Rule的四种条件类型:
Prerule
Prerule()用于在Nmap没有执行扫描之前触发脚本执行,这类脚本脚本并不需要用到任何Nmap扫描的结果;
测试代码:
扫描结果如下:
Hostrule
Hostrule()用在Nmap执行完毕主机发现后触发的脚本,根据主机发现的结果来触发该类脚本
测试代码:
扫描结果:
Portrule
Portrule用于Nmap执行端口扫描或版本侦测时触发的脚本,例如检测到80端口,获取网页的title
测试代码:
扫描结果:
Postrule
Postrule用于Nmap执行完毕所有扫描后,通常用于扫描结果的数据提取和整理。
测试代码:
扫描结果:
其他基础
以上内容大概介绍了nmap在不同阶段触发脚本的情况,剩下就需要有一定的lua脚本编写基础,以及熟悉nmap自带的所有库文件,这样才能快速的编写适合自己的脚本。
参考资料:
https://nmap.org/nsedoc/
nmap自带脚本
总结
平时我们在渗透测试中,遇到特定的条件,需要批量扫描的时候,自己实现一个符合自己条件的nse脚本,让我们可以在渗透测试中事半功倍,nmap自带了很多的脚本,基本覆盖了大多数的情况,在写自己的脚本的时候可以参考别人写好的,让我们能够更快的开发出符合条件的脚本。