书名诸神之眼NMAP 学习笔记

编辑器安装

  1. halcyon编辑器安装
    官方https://halcyon-ide.org/
    linux安装
1
2
3
4
5
6
7
8
9
10
11
12
# install dependencies 
apt-get install default-jre
apt-get install ant

# clone from git
cd /opt
git clone https://github.com/s4n7h0/Halcyon.git

# compile the source
cd Halcyon/
ant
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

加粗样式
2. 创建
1.添加
在这里插入图片描述

2.创建,名字,类型
在这里插入图片描述
2.2是选择的类型
上面照片1是选择的类型,下面这个是所有的类型在这里插入图片描述
3. 结果
在这里插入图片描述

编写简单的NSE脚本

  1. 首先添加description字段,这里只是一段介绍性的文字,用于说明脚本的目的和用法,没有严格的要求,
    description字段:这部分内容介绍该NSE的功能,在Nmap中可以使用–script-help选项来阅读其中的内容。
    在这里插入图片描述
  2. author字段是脚本作者的名字
    在这里插入图片描述
  3. 如果没有特殊原因的话,license字段的内容无须修改。 liceNSE = “Same as Nmap–See https://Nmap.org/book/man-legal.html"
    在这里插入图片描述
  4. categories字段:这部分内容给出了该NSE所在的分类
    在这里插入图片描述
    /usr/share/nmap/scripts文件里有一个script.db文件
    在这里插入图片描述

在这里插入图片描述
5. 目前一共有4种规则
1、Prerule()规则,这个规则的执行要早于Nmap的扫描,因此这类脚本不会调用Nmap扫描得到的任何结果。执行的顺序是先脚本,后Nmap扫描
2、Hostrule()规则,这个规则是在Nmap已经完成了主机发现之后执行的,根据主机发现的结果来触发该类脚本。执行的顺序是先Nmap主机发现,后脚本
3、Portrule()规则,这个规则与hostrule()规则相类似,不过是在执行了端口扫描或版本侦测时才会触发的脚本,这个规则的执行与端口的状态联系紧密。执行的顺序是先Nmap端口扫描,后脚本
4、Postrule()规则,这个规则是在Nmap已经完成所有的扫描之后才执行,一般用来处理扫描结果。执行的顺序是当所有的扫描都结束以后才会执行脚本
在这里插入图片描述
这个host是主机, port 是端口
6. rule字段
描述脚本执行的规则,也就是确定触发脚本执行的条件。这个规则是一个Lua函数,返回值只有true和false两种。只有当rule字段返回true时,action中的函数才会执行
在这里插入图片描述

  1. action字段:脚本执行的具体内容。当脚本通过rule字段的检查被触发执行时,就会调用action字段定义的函数
    在这里插入图片描述
  2. 编写一个脚本、
    文件名是my-http-detect.nse
    类型是default
    在这里插入图片描述
    代码是
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    local shortport = require "shortport"

    description = [[]]

    author = "root"

    license = "Same as Nmap--See http://nmap.org/book/man-legal.html"

    categories = {"default"}





    portrule = function( host, port )
    return port.protocol == "tcp" and port.number == 80 and port.service == "http" and port.state == "open"
    end




    action = function(host, port)


    return " This is a WebServer"


    end

1.代码解释
port.protocol == "tcp" and port.number == 80 and port.service == "http" and port.state == "open"
action = function(host, port)
return " This is a WebServer"
这样当目标服务器上开放的80端口运行着HTTP服务的时候,就可以执行action部分。编写当portrule返回值成功的时候执行的代码

2.导入到nmap脚本数据库
my-http-detect.nse移动到/usr/share/nmap/scripts/文件下面
复制进去要更新一下nmap脚本的数据库
命令

1
nmap --script-updatedb

3.使用
导入成功后就可以使用了
命令

1
nmap  --script my-http-detect [目标]

结果在这里插入图片描述

NSE脚本实例应用:垃圾邮件木马的检测

下面是目标主机的端口进行检测。查看是否有异常的端口开放了SMTP服务。输出这个异常的端口

  1. 应为是这个脚本是通过对目标主机端口扫描的结果分析得到的
    所以选择的是execution
    在这里插入图片描述
  2. 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
local shortport = require "shortport"

description = [[]]

author = "root"

license = "Same as Nmap--See http://nmap.org/book/man-legal.html"

categories = {"external"}



portrule = function( host, port )
return port.service == "smtp" and
port.number ~= 25 and port.number ~= 465 and port.number ~= 587
and port.protocol == "tcp"
and port.state == "open"
end



action = function(host, port)


return
"Mail server on unusual port: possible malware"



end

代码介绍
1.port.service == "smtp"
要对这个检测得到的port表中的所有内容进行检测,首先查看是否有SMTP服务
2.port.number ~= 25port.number ~= 465 port.number ~= 587 port.protocol == "tcp" port.state == "open"
测该服务是否在不正常的端口上运行,SMTP正常应该运行在25、465或者587端口上,结果如果不符合上面的规则,就输出
return "Mail server on unusual port: possible malware"

叫代码文件移动到/usr/share/nmap/scripts/文件下面
复制进去要更新一下nmap脚本的数据库
命令

1
nmap --script-updatedb

开始扫描

1
nmap  --script 脚本名 [目标]

扫描结果
在这里插入图片描述