编写自己的Nmap(NSE)脚本
编写自己的Nmap脚本
一、介绍
在上一篇文章Nmap脚本引擎原理中我们介绍了基本的NSE知识,这篇文章介绍如何基于Nmap框架编写简单的NSE脚本文件,下一篇文章,Nmap脚本文件分析(AMQP协议为例)会详细分析Nmap自带脚本的执行过程,以及各语句含义。
根据上一篇文章的知识,我们知道编写NSE脚本,主要是写rule函数和action,rule函数返回true时,action函数执行。
二、例子
(1)如果某个IP开放80端口则脚本扫描输出 "This IP open 80 port!"。
我们通过shodan搜索,得知92.62.34.104下开通了80端口。


脚本http_test.nse,放在Nmap安装路径的scripts文件夹下面(基于Windows,也可以放在其他下面)
portrule = function(host, port)
return port.protocol == "tcp"
and port.number ==
and port.state == "open"
end
-- The Action Section --
action = function(host, port)
return "This IP ".. host.ip .." open 80 port!"
end
输出结果:

(2)调用Nmap库函数实现Rule编写
Nmap现在已有566种NSE脚本,为了更容易实现判断,对service scripts rule进行了封装,shortport模块已封装了判断函数。
-- 导入依赖模块
local shortport = require "shortport" -- The Rule Section --
portrule = shortport.http -- The Action Section --
action = function(host, port) return "This IP ".. host.ip .." open 80 port!"
end
三、总结
几点建议:
1)我们在编写NSE时,规则可以调用shortport提供的判断函数,action里面可以新建连接;要会使用host和port这两张表,表里面包含了Nmap运行期间得知的所有信息;不会写那就照着现有的566个,模仿着写。
2)Nmap能够自动格式化输出,我们只要返回结果即可,也可以通过运行选项来测试我们写的脚本对不对,这时候要尽可能提高Nmap探测的速度,例如上面的例子可使用下面的选项探测。

3)编写NSE识别服务,跟我们自己使用Python、Perl、Java语言建立socket连接解析类似,只不过在NSE里面可以使用Nmap自带的版本探测结果,这样方便了我们操作。
4)熟悉HPing,Ftp,netstat等客户端工具,一样可以进行banner信息的提取与探测。
5)如果能够用上层语言调用Nmap执行,也能实现自动化探测,自动化数据分析操作。
四、参考文献
http://www.2cto.com/article/201410/339758.html 不知道是否是原文,参考了这篇博客。
http://www.cnblogs.com/liun1994/p/7041373.html
http://www.cnblogs.com/liun1994/p/6978285.html
编写自己的Nmap(NSE)脚本的更多相关文章
- 一些Nmap NSE脚本推荐
前言 Nmap是一款强大的开源扫描工具.同时Nmap提供了强大的脚本引擎(Nmap Scripting Engine),支持通过Lua脚本语言来扩展Nmap的功能,在Nmap的发行版中已经包含了数百个 ...
- Nmap原理02 - 编写自己的服务探测脚本
编写自己的服务探测脚本 1. 添加自己的探测脚本 nmap-service-probes文件的格式将在第二节介绍,本节通过一个例子说明如何添加自己的服务探测脚本. AMQP协议,即Advanced M ...
- NMAP执行脚本smb-check-vulns.nse出错
错误信息:NSE: failed to initialize the script engine: /usr/bin/../share/nmap/nse_main.lua:801: ‘smb-chec ...
- nmap加载nse脚本在内网渗透中的使用-下
smb-ls.nse 列举共享目录内的文件,配合smb-enum-share使用nmap -p 445 <ip> --script smb-ls --script-args 'share= ...
- nmap加载nse脚本在内网渗透中的使用-上
转载自:https://mp.weixin.qq.com/s/zEgHxJEOfaiYVZYmg7NnXA? 大多数情况下,大家都认为nmap只是一个扫描工具,而不把当成是一个渗透工具.nmap集成了 ...
- 编写Redis启停服务脚本
脚本内容如下; fi esac exit$RETVAL 下载脚本:艺搜下载 将下载下来的脚本放在/etc/init.d/目录下 更改脚本权限 chmod 777 /etc/init.d/red ...
- Python编写的Linux网络设置脚本,Debian Wheezy上测试通过
hon编写的Linux网络设置脚本,Debian Wheezy上测试通过 阿里百川梦想创业大赛,500万创投寻找最赞的APP 技术细节参见Linux网络设置高级指南 注意事项参见程序注释 ...
- python编写网络抓包分析脚本
python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...
- Loadrunner与idea编写加密的java Vusers脚本总结
Loadrunner与idea编写加密的java Vusers脚本总结 准备工作: jdk版本的选择: Loadrunner11 使用版本jdk1.6 32位(如果使用1.7的Load ...
随机推荐
- 解析PHP中常见的mongodb查询操作
详细出处参考:http://www.jb51.net/article/38839.htm<?php// 欄位字串為$querys = array("name"=>&qu ...
- 全易通人事考勤工资验厂管理系统软件创建连接SQL2000数据库的操作方法和说明
全易通人事考勤工资验厂管理系统软件创建连接SQL2000数据库的操作方法和说明.全易通人事考勤工资验厂管理系统软件,有2种数据库,一个是ACCESS,另一个是SQL.不过由于ACCESS数据库比较小, ...
- apache用户认证,ssl双向认证配置
安装环境: OS:contos 6.4 httpd:httpd-2.2.15-59.el6.centos.i686.rpm openssl:openssl-1.0.1e-57.el6.i686.rpm ...
- Hadoop化繁为简-从安装Linux到搭建集群环境
简介与环境准备 hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce.近年,随着大数据.云计算.物联网的兴起,也极大的吸引了我的兴趣,看了网上很多文章,感觉还是云里雾里,很多不必 ...
- javascript 六种数据类型(一)
js的数据类型和常见隐式转化逻辑. 一.六种数据类型 原始类型(基本类型):按值访问,可以操作保存在变量中实际的值.原始类型汇总中null和undefined比较特殊. 引用类型:引用类型的值是保存在 ...
- 1008 Elevator
Problem Description The highest building in our city has only one elevator. A request list is made u ...
- 使用命令行的方式操作hdfs
必须要用打全路径,没有相对路径的概念,或者cd的概念 打印报告: 所有的命令显示出来: 以下的操作分别是创建创建文件夹,删除文件夹,显示文件夹,可见删除文件夹只能够使用-rmr . 从本地拷贝文件到h ...
- poj1847 Tram 最短路Dijkstra
题目链接:http://poj.org/problem?id=1847 Dijkstra算法的模版应用 题意:给你N个点和起点终点,点与点有铁路,接下来的N行分别为点i的情况 第一个数字表示与该点连通 ...
- 项目自动构建工具对比(Maven、Gradle、Ant)
Java世界中主要有三大构建工具:Ant.Maven和Gradle.经过几年的发展,Ant几乎销声匿迹.Maven也日薄西山,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是 ...
- React-Router 4 的新玩意儿
上一个项目用的还是 2.6.1,转眼的功夫 4.0 都发布了,API 变化实在有点大,2.X那套东西不顶用了,老老实实重新看一遍文档,其中有几点需要注意的,拿出来说一说. 本文只讨论针对浏览器的应用, ...