Nessus漏洞插件编写

上一次用nessus,还是在2022年。

所以访问 https://localhost:8834/#/
提示:
Nessus
Installation Expired
This installation has expired. If you believe that you are seeing this screen in error, please take one of the following corrective actions:

安装过期了。图片我就不截了,比较懒。

第一步,访问https://www.tenablecloud.cn/products/nessus/nessus-essentials
注册以获取激活码,填写个人信息和电子邮箱,即可收到激活码。

登陆你填写的电子邮箱,复制激活码

第二步:
在kali linux或你安装nessus的机器运行以下linux命令:

1
sudo /opt/nessus/sbin/nessuscli fetch --register 激活码

一定要替换你的激活码

第三步:

1
sudo systemctl restart nessusd 

重启nessus服务

再次访问https://localhost:8834/#/,就不会报Installation Expired的错误了。

nessus插件导入

导入你编写的插件到Nessus需要以下几个步骤。以下是详细的指南:

1. 准备你的插件

确保你的插件文件是以.nasl结尾的Nessus Attack Scripting Language (NASL)脚本文件。

2. 将插件文件上传到Nessus服务器

你需要将你的.nasl文件上传到Nessus插件目录。通常,这个目录在以下位置:

1
/opt/nessus/lib/nessus/plugins/

你可以使用scp或其他文件传输工具将文件从本地计算机传输到Nessus服务器。例如:

1
scp my_custom_plugin.nasl user@nessus_server:/opt/nessus/lib/nessus/plugins/

3. 重新加载Nessus插件

一旦你上传了插件文件,你需要重新加载Nessus插件库,使新的插件生效。你可以通过命令行完成这一步:

1
sudo /opt/nessus/sbin/nessusd -R

4. 验证插件已加载

你可以通过检查Nessus的日志文件来验证插件是否已成功加载。日志文件通常位于:

1
/opt/nessus/var/nessus/logs/nessusd.messages

你可以使用以下命令查看日志:

1
tail -f /opt/nessus/var/nessus/logs/nessusd.messages

检查日志中是否有你插件的相关信息。如果插件加载成功,日志中应该会有类似的信息:

1
NASL: loaded plugin 'my_custom_plugin.nasl'

5. 使用自定义插件进行扫描

你可以在Nessus Web界面中配置新的扫描任务,并选择包含你的自定义插件的插件集。

登录Nessus Web界面:

  1. 打开你的浏览器,访问Nessus控制台:
    1
    https://<你的Nessus服务器IP或主机名>:8834
  2. 登录你的Nessus账户。

创建新的扫描任务:

  1. 导航到“扫描”(Scans)页面。
  2. 创建一个新的扫描任务。
  3. 在“高级扫描”(Advanced Scan)设置中,选择“插件”(Plugins)选项卡。
  4. 确认你的自定义插件已出现在插件列表中。

注意事项:

  • 确保你的插件脚本中没有语法错误。可以使用NASL脚本的语法检查工具验证脚本。
  • 在实际使用之前,建议在测试环境中测试你的插件,以确保其功能正常且不会对被扫描的系统产生意外影响。

通过这些步骤,你应该能够成功地将自定义插件导入到Nessus并进行扫描。如果遇到任何问题或需要进一步帮助,请告诉我。

如何编写nessus插件

编写Nessus插件涉及使用Nessus Attack Scripting Language (NASL),这是一种专为Nessus设计的脚本语言。下面是编写一个简单Nessus插件的步骤:

1. 安装和设置NASL编译器

确保你已经安装了Nessus并且可以访问NASL编译器。如果没有安装Nessus,你可以从Tenable的官网上下载并安装。

2. 编写插件脚本

一个Nessus插件通常包含以下几个部分:

  • 脚本头部:包含插件的信息,如插件ID、名称、描述等。
  • 脚本属性:定义插件的各种属性和依赖关系。
  • 脚本主体:实际的检查代码,使用NASL编写。

以下是一个简单的NASL插件示例:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 头部信息
include("compat.inc");

if(description)
{
script_id(1000001);
script_version("1.0");
script_cve_id("CVE-2023-XXXX");
script_bugtraq_id(12345);
script_name("Sample Plugin");
script_summary("This is a sample Nessus plugin.");

description = "
This is a sample description for the sample plugin.
";
script_description(description);

script_category(ACT_GATHER_INFO);
script_family("Sample Family");

exit(0);
}

# 脚本属性
include("global_settings.inc");
include("http_func.inc");
include("http_keepalive.inc");

# 检查逻辑
host = get_host_ip();
port = 80;

# 尝试连接到目标主机上的端口80
soc = open_sock_tcp(port);
if (!soc) exit(0);

# 发送HTTP请求并接收响应
req = http_get(port: port);
resp = http_keepalive_send_recv(port: port, data: req, soc: soc);

# 处理响应,检查某个特定字符串是否存在
if ("Sample Vulnerability" >< resp)
{
security_warning(port: port, data: "Sample Vulnerability detected.");
}

# 关闭连接
close(soc);

3. 保存和测试插件

将上面的代码保存为一个.nasl文件,例如sample_plugin.nasl

4. 上传和导入插件

将插件文件上传到Nessus插件目录,通常是:

1
/opt/nessus/lib/nessus/plugins/

你可以使用scp或其他工具将文件从本地计算机传输到Nessus服务器。例如:

1
scp sample_plugin.nasl user@nessus_server:/opt/nessus/lib/nessus/plugins/

5. 重新加载Nessus插件库

一旦上传了插件文件,需要重新加载Nessus插件库,使新的插件生效:

1
sudo /opt/nessus/sbin/nessusd -R

6. 在Nessus中验证插件

  1. 登录Nessus Web界面
    打开浏览器并访问Nessus控制台:
    1
    https://<你的Nessus服务器IP或主机名>:8834
  2. 创建扫描任务
    导航到“扫描”(Scans)页面,创建一个新的扫描任务,并选择包含你自定义插件的插件集。

7. 调试和优化

如果插件没有按预期工作,可以检查Nessus日志文件以获取错误信息并进行调试:

1
/opt/nessus/var/nessus/logs/nessusd.messages

通过这些步骤,你应该能够成功编写、导入并运行自定义的Nessus插件。

NASL编译器

NASL (Nessus Attack Scripting Language) 编译器是用来编写和调试Nessus插件的工具。在实际操作中,你通常会直接在Nessus环境中编写和测试NASL脚本,而不需要单独安装一个NASL编译器。Nessus自身就包含了运行NASL脚本的环境。

不过,下面是如何在Nessus环境中编写、测试和运行NASL脚本的详细步骤:

1. 安装Nessus

Nessus破解版:https://www.ddosi.org/nessus2024/

如果你还没有安装Nessus,可以从Tenable官网下载并安装。安装步骤取决于你的操作系统。

在Debian/Ubuntu上安装Nessus:

1
2
3
sudo dpkg -i Nessus-<version>-debian6_amd64.deb
sudo apt-get update
sudo apt-get install -f

在RHEL/CentOS上安装Nessus:

1
sudo rpm -ivh Nessus-<version>-es6.x86_64.rpm

安装完成后,启动Nessus服务:

1
sudo systemctl start nessusd

2. 编写NASL脚本

使用你喜欢的文本编辑器(例如vinanogedit)编写NASL脚本,并将其保存为.nasl文件。例如,保存为sample_plugin.nasl

1
nano sample_plugin.nasl

3. 测试NASL脚本

你可以使用Nessus自带的命令行工具nasl来测试NASL脚本。该工具通常位于/opt/nessus/bin/目录下。

例如,要运行你编写的脚本,可以使用以下命令:

1
sudo /opt/nessus/bin/nasl -t <target_ip> sample_plugin.nasl

其中<target_ip>是你要扫描的目标IP地址。

4. 导入和运行NASL脚本

一旦你对NASL脚本满意,可以将其上传到Nessus插件目录:

1
sudo cp sample_plugin.nasl /opt/nessus/lib/nessus/plugins/

然后重新加载Nessus插件库:

1
sudo /opt/nessus/sbin/nessusd -R

5. 在Nessus界面中验证插件

  • 登录Nessus Web界面:

    1
    https://<你的Nessus服务器IP或主机名>:8834
  • 创建新的扫描任务,并选择包含你自定义插件的插件集。

6. 检查和调试

如果插件没有按预期工作,可以检查Nessus日志文件以获取错误信息并进行调试:

1
tail -f /opt/nessus/var/nessus/logs/nessusd.messages

通过这些步骤,你应该能够编写、测试并在Nessus中运行自定义的NASL脚本。如果你遇到任何问题或需要进一步的帮助,请告诉我。

案例一:

ls /opt/nessus/lib/nessus/plugins/ | wc -l 1 ⚙
186496

查看插件的数量


根据需求搜索nasl插件
ls /opt/nessus/lib/nessus/plugins/ | grep “CVE-2019” 1 ⚙
tenable_ot_wago_CVE-2019-5171.nasl
tenable_ot_wago_CVE-2019-5172.nasl
tenable_ot_wago_CVE-2019-5173.nasl
tenable_ot_wago_CVE-2019-5174.nasl
tenable_ot_wago_CVE-2019-5175.nasl
tenable_ot_wago_CVE-2019-5176.nasl
tenable_ot_wago_CVE-2019-5177.nasl
tenable_ot_wago_CVE-2019-5178.nasl
tenable_ot_wago_CVE-2019-5179.nasl
tenable_ot_wago_CVE-2019-5180.nasl
tenable_ot_wago_CVE-2019-5181.nasl
tenable_ot_wago_CVE-2019-5182.nasl
tenable_ot_wago_CVE-2019-5184.nasl
tenable_ot_wago_CVE-2019-5185.nasl

查看其他的nasl插件是如何编写的
leafpad /opt/nessus/lib/nessus/plugins/tenable_ot_wago_CVE-2019-5185.nasl

第一步,搭建漏洞环境

不会的可以去看看vulhub和docker

第二步,更新msf

apt update; apt install metasploit-framework

使用msf或其他poc工具,确保漏洞环境和poc真实可用。

第三步,根据poc编写NASL脚本

cp test-2024-06-19.nasl /opt/nessus/lib/nessus/plugins/
复制写好的插件到nessus的插件目录

因为test-2024-06-19.nasl如何编写,这部分太长了,所以下一篇再讲

第四步,使用我们写的nessus插件进行漏洞扫描

导入新的插件
sudo /opt/nessus/sbin/nessusd -R

Processing the Nessus plugins…
[==================================================] 100%

All plugins loaded (502sec)

访问https://127.0.0.1:8834/
新建新的扫描任务