0x01
Halcyon是一个开源的专门设计用于开发Nmap脚本的IDE。通过Halcyon你可以开发从侦察到利用的各类Nmap高级扫描脚本
安装过程如下
安装依赖
apt-get install default-jre
apt-get install ant
从git上clone
接下来开始编译
命令:
java -cp /opt/Halcyon/src/lib/autocomplete.jar:/opt/Halcyon/src/lib/rsyntaxtextarea.jar:/opt/Halcyon/dist/Halcyon_IDE_v2.0.1.jar halcyon.ide.HalcyonIDE
启动后会出现如下界面
提示还没有配置,点击des
点击auto config自动配置
点击apply
要求我们重启后生效
在此输入上面的命令即可启动
新建一个项目
会弹出如下对话框,要求填写脚本分类、存储位置等
点击script name右边的文件夹,打开后选择保存在kali中nmap脚本的默认路径下,命名为demo.nes
点击save,其他选项如图所示,然后点击create
可以看到已经生成了一个nse脚本的模板文件
。
0x02
稍微介绍下Halcyon的布局
左侧分别是是namp脚本,
nse需要的数据,比如爆破时的字典、指纹等等
以及nmap的库文件
0x03
Halcyon对于编写nmap脚本而言功能非常强大
比如使用project->code generator功能可以快速生成对应的功能代码,以socket为例
生成的代码如下
接下来我们编写个简单的nmap脚本实现对web服务器的检测功能。
我们就做这么一个简单的功能:
如果发现目标开放了80端口,并在这个端口上运行http服务,则输出”this is a webserver”
description字段没有什么好修改的
我们直接来到关键部分,因为我们这个脚本的功能是评估目标是否为web服务器要根据端口状态及端口上的服务来判断,需要要用到portrule规则。
需要修改return为
return port.protocol == “tcp” and port.number == 80 and port.service == “http” and port.state == “open”
这样当目标服务器上开放的80端口运行着http服务时,就命中了规则,接着去执行action部分
所以我们再来编写action部分的代码
然后ctrl+s保存,再点击file->update script DB
接着测试一下
可以看到在扫描出80端口开放之后就打印出了this is a webserver
。