在Docker中安装Nessus
在本文中,我们将了解如何在Kali Linux 环境下将Docker Nessus 漏洞扫描器安装到 Docker 容器中。此外,我们还将介绍如何将 Nessus 与 Hydra 集成,以便为 Nessus 提供登录暴力破解功能。
准备工作:
1、Kali Linux
2、Centos7
3、Nessus(破解版也行,如果有条件请支持正版)
首先第一步,我们必须确保在我们的 Kali Linux 上安装了 Docker。
01在 Kali Linux 上安装 Docker
由于 Docker 没有预装在 Kali Linux 上,我们必须自己安装它。我们将使用 Docker 引擎社区 (docker-ce) 版本。
关于如何在 Kali Linux 上安装 Docker 的官方说明不存在,但不要担心。使用 Debian 的说明(链接)并假设我们拥有最新的 Debian 版本('buster'),我们总是取得成功。
安装步骤可以概括为以下命令
echo 'deb https://download.docker.com/linux/debian buster stable' >> /etc/apt/sources.list
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
apt-get update
apt-get remove docker docker-engine docker.io
apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
apt-get -y install docker-ce
service docker start
docker run hello-world
现在我们在 Kali Linux上安装了 Docker,我们可以继续在其中安装 Nessus。
02将 Nessus 安装到 Docker
作为 Nessus 容器的基础系统,我们将使用 Centos 7 Linux 发行版。我们将使用 Centos 7,因为它具有我们需要的所有依赖项。即我们要安装Hydra工具并将 Nessus 与其集成。这将在漏洞扫描期间提供 Nessus 登录暴力破解功能。Nessus 将能够使用提供的词表对各种网络服务执行登录攻击。
请注意,在 Centos 8 中,Hydra 软件包不可用。因此,我们必须坚持使用 Centos 7。但是,这可能会在未来发生变化,在这种情况下,下面的步骤应该也适用于 Centos 8。
01获取Nessus安装包(.rpm)
首先,我们需要从官方页面下载最新的 Nessus 包。在撰写本文时,最新版本为10.4.1。(因演示时没有及时更新版本,故用8.9.0版本作为演示)
02创建一个Dockerfile
接下来我们必须创建一个 Dockerfile。Dockerfile 包含用于构建 Docker 映像的一组指令。让我们创建以下文件,确保将其命名为"Dockerfile":
FROM centos:7
ARG rpmfile
COPY $rpmfile /tmp/nessus.rpm
RUN set -x \
&& yum update -y \
\
&& yum -y install net-tools lsof tzdata \
&& yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
&& yum -y install hydra \
\
# Import Tanable's GPG key
&& rpm --import https://static.tenable.com/marketing/RPM-GPG-KEY-Tenable \
\
# Install the rpm
&& rpm -ivh /tmp/nessus.rpm \
\
# Cleanup
&& rm /tmp/nessus.rpm \
&& yum clean all \
&& rm -rf /var/cache/yum \
&& rm -rf /opt/nessus/var/nessus/{uuid,*.db*,master.key}
EXPOSE 8834
CMD ["/opt/nessus/sbin/nessus-service"]
现在这是我们应该在我们的计算机上看到的:
03构建 Nessus Docker 镜像
一切准备就绪后,我们可以使用以下命令构建 Nessus Docker 映像:
docker build -t centos7/nessus --build-arg rpmfile=Nessus-8.9.0-es7.x86_64.rpm .
构建过程通常需要几分钟。构建过程完成后,我们应该看到类似这样的东西:
04启动Nessus Docker容器
我们已经成功构建了 Nessus Docker 镜像,现在我们可以使用该镜像启动一个新的 Docker 容器。请注意,我们将为容器分配一个自定义 MAC 地址。如果需要,这将允许我们稍后备份容器并将其移动到另一个系统。例如,当我们想在没有互联网访问的情况下使用 Nessus 时,这非常有用。
好的,让我们使用以下命令启动它:
docker run -d --name nessus -p 8834:8834 --mac-address 00:0c:16:12:34:56 centos7/nessus /opt/nessus/sbin/nessus-service
#端口号随意
现在容器应该正在运行,我们可以打开https://你的地址:8834/并激活Nessus。
05最后检查
在插件激活和随后的编译之后,我们可以登录并开始使用它。为确保与Hydra的集成成功,我们应该在"Brute Force"子菜单下的扫描配置窗口中看到 Hydra 可用,如下所示:
如果一切顺利,我们现在有一个与 Hydra 集成的完全 dockerized Nessus 扫描仪。
现在让我们来看看一些常见的维护任务。
06重启后启动 Nessus Docker 容器
如果一不小心遇到了问题重新启动了机器,现在需要重新启动 Nessus docker 容器。只需像这样提出来,就不用担心扫描的结果消失,会发现所有扫描结果都在
现在可以返回https://你的地址:8834/并再次使用它。
# 启动Docker守护进程
service docker start
# 获取 Nessus 的容器 ID
docker ps -a
# 启动:
docker start 你的ID
07停止 Nessus Docker 容器
一般来说不需要停止 Nessus docker 我们通常让它一直运行。但是,如果需要停止它(例如重新启动它),可以使用"docker stop"或"docker kill"的任何其他 docker 容器一样执行此操作。例:
# 获取 Nessus 容器的ID
docker ps
# 停止:
docker stop 你的容器ID
现在容器应该停止了。然后,可以使用"docker start"再次启动它,如前所示。
08Nessus Docker 容器中的 Spawn shell
有时想检查并"登录"正在运行的 docker 容器。我们可以使用 Nessus 容器完美地做到这一点。要在其中生成一个 shell,只需运行:
# 获取Nessus容器ID
docker ps
# 在容器中执行交互式 shell
docker exec -i -t 你的容器ID/bin/bash
现在可以检查 Nessus docker 容器内是否一切正常。退出 shell 后,Nessus 仍在运行。
09将 Nessus Docker 容器移动到另一台机器上
假设客户不允许使用自己的计算机进行相关测试。并且没有随身携带笔记本电脑,而且也没有互联网。基本上需要在没有 Internet 访问的情况下使用 Nessus。应该怎么办?其实只需导出 Nessus 容器并将其复制到 USB 闪存驱动器上。然后将 USB 闪存驱动器带到客户端并在那里导入它就可以了。
以下是步骤:
01导出容器
要导出正在运行的 Nessus docker 容器,请使用以下命令。请注意,我们还将压缩它:
# g获取你的 Nessus容器ID
docker ps
#导出并压缩
docker export 3802b0b61d8b | gzip > nessus_docker.gz
然后,将"nessus_docker.gz"文件传输到允许的 USB上,并将其带到客户端。
02导入容器并启动
现在,在客户端只需将文件复制到提供的机器上,并安装好 Docker。然后就可以导入它并使用以下命令启动它:
# 解压并导入
zcat nessus_docker.gz | docker import - centos7/nessus
# 启动
docker run -d --name nessus -p 8834:8834 --mac-address 00:0c:16:12:34:56 centos7/nessus /opt/nessus/sbin/nessus-service
现在已经启动成功了,可以使用相同的 MAC 地址我们可以毫无问题地在另一个系统上使用 Nessus。PS:如果是正常购买Nessus不能同时并行使用两个 Nessus工具,如果是破解版请忽略。