这个世界好比一座大熔炉,烧炼出一批又一批品质不同而且和原先的品质也不相同的灵魂
本篇作为渗透神器系列第三篇,将介绍一款经典的端口扫描工具–nmap。目前市面上成熟的端口扫描器有很多,比如massscan(全网扫描器),zenmap(nmap的GUI版)等,但我个人还是钟爱nmap,原因很简单,因为它很强大,并且支持扩展。Nmap最新几个版本中,加入了nmap script Engine(NSE)功能,支持扩展脚本,即可以在nmap中加载自定义的nse脚本,以达到扫描的目的。目前官方的nse脚本已达500多个,nse脚本地址https://nmap.org/nsedoc/,或者查看github库。
本篇将会介绍如何编写以及使用nse脚本,以便能最大程度地发挥出nmap的强大功能(扩展功能),当然本文后本段也会简单介绍下nmap工具的基本使用方法以及参数设置。
NSE
nse全称是nmap脚本引擎,脚本后缀名为.nse,脚本用Lua语言编写,遵循特定的规则。nse脚本存放在nmap安装目录下的scripts目录下,目前官方提供的大概有500多个,功能涵盖了常用的漏洞检测、端口检测、基线检测等。
nse script exploit
在scripts目录下新建一个文件,如:hello.nse,写入以下内容:
以上代码运行后,会检测目标ip是否开放了80端口,若开放则返回helloworld。
nse脚本遵循nmap api规范,其包含三部分内容,其中–开头的行为注释内容。
The Head Section
该部分包含一些元数据,主要描述脚本的功能,作者,影响力,类别及其他。
The Rule Section
该部分定义脚本的一些规则,至少包含下面列表中的一个函数:
- portrule
- hostrule
- prerule
- postrule
The Action Section
该部分定义脚本逻辑,即满足条件后执行的内容,比如上面例子为输出helloworld。
调用内置库
NSE脚本可以调用内置库,比如http库、shortport库、nmap库等。
导入方式:
更多nse-api参考:https://nmap.org/book/nse-api.html
更多lua语法参考:http://www.runoob.com/lua/lua-tutorial.html
nse script usage
当在scripts下面编写完hello.nse脚本后,如何加载使用呢?
方法一:
方法二:
其他参数:
nse example
对目标机器进行扫描,同时对smb的用户进行枚举。
对目标机器所开启的smb共享进行枚举。
对目标机器的用户名和密码进行暴力猜测。
对目标机器测试心脏滴血漏洞。
再举几个硬件设备的例子:
nmap introduce
以上内容为nmap nse扩展脚本的基础知识,其中涉及到nse脚本编写的语法规则等,本篇暂不做详细介绍,可参考官方文档。以下内容为nmap基础使用,包含命令行参数等内容。
nmap parameter
nmap参数:
nmap output
输出结果:
nmap status
nmap端口状态:
nmap常用命令
以下命令部分收集于网络,部分来自个人总结。
轻量级扫描:
批量扫描:
批量扫描:
nmap api
nmap支持很多语言的扩展,本文简单介绍下python中如何使用nmap。
python-nmap
安装:pip install python-nmap
作用:利用python调用nmap接口,实现端口扫描。
使用:
更多使用方法,参考:http://xael.org/pages/python-nmap-en.html
传送门
【渗透神器系列】Metasploit
【渗透神器系列】DNS信息查询
【渗透神器系列】nc
【渗透神器系列】Fiddler
【渗透神器系列】搜索引擎
【渗透神器系列】WireShark