資安

带你读《从实践中学习Metasploit 5渗透测试》之二:获取漏洞信息

点击查看第一章

第2章 获取漏洞信息

  如果要使用Metasploit实施渗透攻击,需要先获取目标主机的漏洞信息。用户可以借助一些漏洞扫描工具来获取目标主机的漏洞信息,然后根据漏洞所对应的攻击载荷实施渗透攻击。最常用的漏洞扫描工具包括Nessus和OpenVAS。用户还可以直接到官方网站获取一些设备或系统的漏洞信息。本章将介绍几种常用的获取漏洞信息的方法。

2.1 使用Nessus

  Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus可实施的漏洞扫描包括:网络设备(如防火墙、打印机)、虚拟主机(如VMware ESX、ESXi、vSphere)、操作系统(如Windows、Mac、Linux)、数据库(如Oracle、SQL Server、MySQL)、Web应用程序(如Web服务器、Web服务、OWASP漏洞)、危害检测(如病毒、恶意软件、后门)等。本节将介绍使用Nessus获取漏洞信息的方法。

2.1.1 安装并激活Nessus

  需先安装Nessus工具。安装Nessus工具后,必须要激活才可使用。下面分别介绍安装并激活Nessus的方法。
  1.获取Nessus安装包
  Nessus的官方下载地址是:

http://www.tenable.com/products/nessus/select-your-operating-system

  在浏览器中输入以上地址,将打开如图2.1所示的界面。
  官网提供了Nessus工具各种平台的安装包,如Windows、Mac OS X、Linux、FreeBSD等。用户可以根据自己的操作系统及架构,选择对应的安装包。例如,选择下载Debian x64架构的安装包。在Name列单击对应的包,即Nessus-8.1.2-debian6_amd64.deb包,显示如图2.2所示的接受许可协议界面。

image.png

image.png

  该界面显示了下载Nessus软件包的许可证协议信息。单击I Agree按钮,开始下载。
  2.安装Nessus
  【实例2-1】以Kali Linux为例,介绍在Linux下安装Nessus工具的方法。具体操作步骤如下:
  (1)从官网上下载安装包。本例中下载的安装包文件名为Nessus-8.1.2-debian6_amd64.deb。
  (2)将下载的安装包复制到Kali中,本例中复制到/root下。开始安装Nesus工具。执行命令如下:



root@daxueba:~# dpkg -i Nessus-8.1.2-debian6_amd64.deb 
  正在选中未选择的软件包 nessus。
  (正在读取数据库 ... 系统当前共安装有 327450 个文件和目录。)
  正准备解包 Nessus-8.1.2-debian6_amd64.deb  ...
  正在解包 nessus (8.1.2) ...
  正在设置 nessus (8.1.2) ...
  Unpacking Nessus Core Components...
   - You can start Nessus by typing /etc/init.d/nessusd start
   - Then go to https://daxueba:8834/ to configure your scanner
  正在处理用于 systemd (232-22) 的触发器 ...

  看到输出以上类似信息,则表示Nessus工具安装完成。接下来,用户在浏览器的地址栏中输入https://daxueba:8834/
https://IP:8834
,即可访问Nessus服务。


image.png

  3.激活Nessus
  在使用Nessus之前,必须先激活该服务才可使用。如果要激活Nessus服务,则需要到官网获取一个激活码。下面介绍获取激活码的方法。具体操作步骤如下:
  (1)在浏览器中输入地址:

http://www.nessus.org/products/nessus/nessus-plugins/obtain-an-activation-
  code

  打开如图2.3所示的界面。
  (2)单击Nessus Home Free下面的Register Now按钮,显示如图2.4所示的界面。
  (3)在该界面填写一些信息,以获取激活码。任意填写First Name和Last Name文本框在Email下的文本框填写一个合法的邮件地址,用来获取邮件。当以上信息设置完成后,单击Register按钮。接下来,将会在注册的邮箱中收到一份关于Nessus的邮件。进入邮箱打开收到的邮件,将会看到一串数字,类似XXXX-XXXX-XXXX-XXXX,即激活码。
  (4)此时,可以使用以上获取到的激活码来激活该服务了。



image.png

image.png

2.1.2 登录及配置Nessus

  在实施漏洞扫描之前,还需要进行简单的配置,如创建策略和扫描任务等。下面介绍登录及配置Nessus的方法。
  1.登录Nessus服务
  在登录Nessus服务之前,首先需要确定该服务已经启动。否则,无法连接到该服务。默认情况下,安装该服务后是没有启动的。所以,用户需要先启动该服务。执行命令如下:

root@daxueba:~# /etc/init.d/nessusd start
  Starting Nessus services:                                  [确定]

  从输出的信息中可以看到,Nessus服务已经启动。接下来,用户就可以连接该服务了。
  【实例2-2】登录Nessus服务。具体操作步骤如下。
  (1)在浏览器的地址栏中输入https://IP:8834 ,访问Nessus服务。打开如图2.5所示的界面。


image.png

image.png

  (2)在该界面显示该连接不受信任。这是因为Nessus是一个安全连接(HTTPS协议),所以需要被信任后才允许登录。单击Advanced按钮,显示如图2.6所示的界面。
  (3)该界面显示了此链接可能存在的风险。单击Add Exception…按钮,显示如图2.7所示的界面。

image.png

image.png

  (4)单击Confirm Security Exception按钮,显示如图2.8所示的界面。
  (5)该界面要求创建一个账号,用于管理Nessus服务。这是因为第一次使用,目前还没有创建任何账号。在该界面创建一个用户账号,并设置密码。然后单击Continue按钮,显示如图2.9所示的界面。

image.png

  (6)在该界面输入从邮件中的获取到的激活码。单击Continue按钮,显示如图2.10所示的界面。
  (7)下载完后,进行初始化。此过程,需要很长一段时间,用户需要耐心等待。当初始化完成后,显示如图2.11所示的界面。

image.png

  (8)输入在第(5)步骤中创建的账户和密码,单击Sign In按钮,即可登录Nessus服务。登录成功后,显示如图2.12所示界面。
  (9)看到该界面,则表示已成功登录到Nessus服务。接下来,创建对应的策略和扫描任务即可对目标实施漏洞扫描。

image.png

  2.创建策略
  策略,简单地说就是使Nessus工具使用最佳化的配置,对目标主机进行扫描。所以在实施扫描之前,创建策略也是非常重要的。Nessus工具默认提供了21个扫描策略模板。如果用户希望重新定制的话,则可以创建新的策略。下面介绍新建策略的方法。
  【实例2-3】创建策略。具体操作步骤如下:
  (1)在Nessus主界面的左侧栏中单击Policies命令,显示如图2.13所示的界面。



image.png

  (2)单击右上角的New Policy按钮,显示如图2.14所示的界面。
  (3)从该界面可以看到所有的策略模板,用户可以选择选择任意一个模板类型来创建新的策略。其中,在图标中显示有UPGRADE信息的,表示家庭版不可以使用。这里选择Advanced Scan类型。单击该图标后,显示如图2.15所示的界面。
(4)在该界面设置策略名和描述信息(可选项)。这里设置策略名为Local Vulnerability Assessment。然后单击Plugins标签,显示如图2.16所示的界面。


image.png

image.png

  (5)该界面显示了所有插件程序,从该界面可以看到默认全部是启动的。单击Disable All按钮,禁用所有启动的插件程序。然后指定需要启动的插件程序,如启动Debian Local Security Checks和Default Unix Accounts插件程序,启动后显示效果如图2.17所示。

image.png

image.png

  (6)单击Save按钮,显示如图2.18所示的界面。

image.png

  (7)从该界面可以看到新建的策略Local Vulnerability Assessment,表示该策略已创建成功。
  3.创建扫描任务
  策略创建成功后,必须要新建扫描任务才能实施漏洞扫描。下面介绍新建扫描任务的具体操作步骤。
  (1)在Nessus的主界面单击打开Scans选项卡,打开扫描任务界面,如图2.19所示。



image.png

  (2)从该界面可以看到当前没有任何扫描任务,所以需要添加扫描任务后才能扫描。单击右上角的New Scan按钮,显示如图2.20所示界面。

image.png

  (3)该界面显示了一些可创建的扫描任务模板。打开User Defined选项卡,可以看到用户手动创建的策略模板。选择Advanced Scan模板类型,显示如图2.21所示的界面。
  (4)在该界面设置扫描任务名称、描述、文件夹及扫描目标。设置完以上信息后,单击Plugins标签,设置启用不同的漏洞扫描插件。然后单击Save按钮,即可看到新建的扫描任务,如图2.22所示。

image.png

  (5)单击图标,开始对目标进行扫描。

2.1.3 实施漏洞扫描

  通过前面的步骤,创建完成扫描任务后,即可对指定的目标实施扫描。下面介绍实施漏洞扫描的方法。
  【实例2-4】实施漏洞扫描。具体操作步骤如下:
  (1)这里以2.1.2小节中创建的扫描任务为例,开始实施漏洞扫描。在图2.22中单击按钮,开始对目标进行扫描,如图2.23所示。


image.png

  (2)从该界面可以看到Last Modified列显示的图标为,表示正在对目标主机进行扫描。如果要停止扫描,则单击右侧的(停止一下)按钮。如果需暂停扫描任务,则单击按钮。扫描完成后,将显示如图2.24所示的界面。

image.png

  (3)当原来的图标变为,表示扫描完成。此时,单击扫描名称即可查看扫描结果,如图2.25所示。

image.png

  (4)该界面显示了扫描到的所有主机及主机的漏洞信息。共扫描了10台主机,扫描出的漏洞共95个、给出的补救措施共2个及扫描历史数为1。从Vulnerabilities列可以看到,以不同颜色显示了扫描结果。每种颜色表示漏洞的严重性,颜色中的数字表示漏洞个数。用户将鼠标悬浮到每个颜色上面,还可以看到该漏洞所占的百分比。在右下角以环形图显示了每种漏洞所占的比例,而且在圆形图右侧显示了每种颜色代表的漏洞安全级别。其中,颜色的安全级别依次是Critical(非常严重,红色)、High(比较严重,黄橙)、Medidum(中等的,黄色)、Low(中低的,绿色)、Info(信息,蓝色)。接下来,用户可查看并分析每台主机的漏洞信息。

2.1.4 分析并导出漏洞扫描报告

  当用户对目标主机扫描完成后,即可分析扫描结果,并从中获取到目标主机的漏洞信息。为了方便用户对扫描结果的分析,Nessus支持用户将扫描结果生成不同格式的报告。Nessus支持导出的文件格式包括Nessus、PDF、HTML、CSV和Nessus DB这5种。不管使用哪种扫描模板,导出的文件格式都是相同的。下面介绍分析并导出漏洞扫描报告的方法。
  1.分析漏洞扫描结果
  【实例2-5】分析漏洞扫描结果。具体操作步骤如下:
  (1)下面以【实例2-4】的扫描结果为例,对其扫描结果进行分析。扫描结果如图2.26所示。



image.png

  (2)该界面显示了所有目标主机的扫描结果。例如,这里分析主机192.168.0.113的漏洞扫描结果。单击主机地址192.168.0.113,显示该主机的扫描结果,如图2.27所示。

image.png

  (3)从该界面可以看到,该主机中共扫描出71个漏洞。在该漏洞列表中,显示了漏洞的严重情况(Sev)、插件名(Name)、插件族(Family)和漏洞个数(Count)。其中,Name列的值表示扫描该主机时使用的插件;Family列的值表示扫描主机使用的插件所属的族;Count值表示存在该漏洞的个数。在该界面右侧Host Details中,显示了关于该主机的详细信息。包括IP地址、DNS、MAC地址、操作系统类型及扫描所用的时间等。同样,在右下角以环形图显示了每种级别漏洞所占的百分比。用户将鼠标悬浮到每种颜色上,即可看到每种漏洞所占的百分比。在该界面通过单击插件名称,即可查看所有漏洞的详细信息。例如,查看该主机中VNC Server 'password' Password漏洞的详细信息,显示结果如图2.28所示。
  (4)该界面显示了VNC Server 'password' Password漏洞的详细信息。其中,包括该漏洞的描述信息(Description)、漏洞解决方法(Solution)及输出(Output)信息等。从描述信息中可以看到,如果远程主机正在运行着VNC服务,并且使用了弱密码是非常不安全的。Nessus能够使用password密码登录VNC服务,进而控制目标主机。解决的方法就是为VNC服务设置一个复杂的密码。另外,用户在该界面的右侧也可以看到关于漏洞的一些详细信息,通常包括Plugin Details(插件详细信息)、Risk Information(风险信息)、Vulnerability Information(漏洞信息)、Exploitable With和Reference Information(参考信息)这5部分。从Reference Information部分,可以看到该漏洞的CVE编号。当用户确定该漏洞的CVE编号后,即可在网上找到对应的攻击载荷,或者直接在Metasploit中使用search命令搜索对应的攻击模块。然后,实施渗透攻击。

image.png

  2.生成扫描报告
  为了方便用户对其他漏洞进行分析,下面绍将扫描结果生成报告的方法。
  【实例2-6】将扫描结果导出为Nessus格式的报告。具体操作步骤如下:
  (1)在扫描结果界面单击Export按钮,将弹出一个列表,如图2.29所示。



image.png

  (2)该菜单栏中显示了可以生成的扫描漏洞报告格式。这里选择导出文件格式为Nessus。所以,单击Nessus选项,弹出如图2.30所示的对话框。

image.png

  (3)在该界面选中Save File单选按钮,单击OK按钮,即生成报告文件。

image.png

2.1.5 远程调用Nessus

  在用户搭建好Nessus服务后,即可直接在Metasploit中远程调用,通过命令行方式对目标主机实施扫描。下面介绍在Metasploit中远程调用Nessus服务,并实施扫描的方法。
  【实例2-7】在Metasploit中调用Nessus对目标主机实施扫描。具体操作步骤如下:
  (1)确定Metasploit已经连接到PostgreSQL数据库服务。因为使用Nessus扫描的所有结果都将保存在数据库中,所以必须成功连接一个数据库。执行命令如下:

msf5 > db_status 
  [*] Connected to msf. Connection type: postgresql.

  从输出的信息中,可以看到已经连接到msf数据库。如果没有连接的话,使用db_connect命令连接(关于数据库的连接,在前面章节有详细介绍)。
  (2)载入Nessus桥插件。执行命令如下:

msf5 > load nessus 
  [*] Nessus Bridge for Metasploit
  [*] Type nessus_help for a command listing
  [*] Successfully loaded plugin: Nessus

  从输出的信息中,可以看到已成功加载了Nessus桥插件。此时,用户可以使用nessus_help来查看Nessus桥插件支持的所有命令。Nessus桥插件经常会有一些改进和更新,所以定期检查nessus_help的输出是非常有必要的。这样,用户就能够随时了解该插件是否又添加了新的功能。执行nessus_help命令后,会显示7部分命令。下面分别介绍每部分的命令。其中,第1部分为通用命令,具体如下:

msf5 > nessus_help 
  Command                       Help Text
  -----------------           -------------------------------------
  Generic Commands             #通用命令
  -----------------           -------------------------------------
  nessus_connect              Connect to a Nessus server
  nessus_logout                Logout from the Nessus server
  nessus_login                  Login into the connected Nesssus server with a 
                              different username and password
  nessus_save                  Save credentials of the logged in user to nessus.yml
  nessus_help                 Listing of available nessus commands
  nessus_server_properties    Nessus server properties such as feed type, 
                              version, plugin set and server UUID.
  nessus_server_status       Check the status of your Nessus Server
  nessus_admin                 Checks if user is an admin
  nessus_template_list        List scan or policy templates
  nessus_folder_list          List all configured folders on the Nessus server
  nessus_scanner_list         List all the scanners configured on the Nessus server

  该部分是一项常用命令,即对Nessus服务的基本操作,如连接、登录、退出Nessus服务等。
  第2部分为数据库命令,具体如下:

Nessus Database Commands        #Nessus数据库命令
  ------------------------        ------------------------------------
  nessus_db_scan                   Create a scan of all IP addresses in db_hosts
  nessus_db_import                Import Nessus scan to the Metasploit connected 
                                  database

  该部分是对Nessus连接的数据库的操作。例如,导入Nessus扫描报告到Metasploit连接的数据库中。
  第3部分为报告命令,具体如下:

Reports Commands                    #报告命令
  -----------------------            -------------------------------
  nessus_report_hosts               Get list of hosts from a report
  nessus_report_vulns               Get list of vulns from a report
  nessus_report_host_details         Get detailed information from a report item                                     on a host

  该部分是对Nessus扫描报告的操作。如查看扫描报告的主机、漏洞及主机详细信息等。
  第4部分为扫描命令,具体如下:

Scan Commands                   #扫描命令
  ----------------------          ---------------------------------
  nessus_scan_list              List of all current Nessus scans
  nessus_scan_new                  Create a new Nessus Scan
  nessus_scan_launch           Launch a newly created scan. New scans need to 
                                  be manually launched through this command
  nessus_scan_pause             Pause a running Nessus scan
  nessus_scan_pause_all         Pause all running Nessus scans
  nessus_scan_stop              Stop a running or paused Nessus scan
  nessus_scan_stop_all          Stop all running or paused Nessus scans
  nessus_scan_resume           Resume a pasued Nessus scan
  nessus_scan_resume_all        Resume all paused Nessus scans
  nessus_scan_details           Return detailed information of a given scan
  nessus_scan_export             Export a scan result in either Nessus, HTML, 
                                  PDF, CSV, or DB format
  nessus_scan_export_status      Check the status of an exported scan

  该部分为Nessus扫描命令,如查看扫描列表、启动、暂停、停止扫描以及查看扫描详细信息等。
  第5部分为插件命令,具体如下:

Plugin Commands                 #插件命令
  -----------------                -----------------
  nessus_plugin_list              List all plugins in a particular plugin family.
  nessus_family_list              List all the plugin families along with their 
                                  corresponding family IDs and plugin count.
  nessus_plugin_details           List details of a particular plugin

  该部分为Nessus扫描插件命令,如查看所有的插件列表、插件族及插件详细信息等。
  第6部分为用户命令,具体如下:

User Commands                   #用户命令
  -----------------               -----------------
  nessus_user_list                Show Nessus Users
  nessus_user_add               Add a new Nessus User
  nessus_user_del                Delete a Nessus User
  nessus_user_passwd            Change Nessus Users Password

  该部分为Nessus用户命令,如创建、删除及查看Nessus用户。注意,这里指的是Nessus用户,并不是系统中的用户。
  第7部分为策略命令,具体如下:

Policy Commands                 #策略命令
  -----------------               -----------------
  nessus_policy_list              List all polciies
  nessus_policy_del               Delete a policy

  该部分为Nessus策略命令,如查看或删除策略。了解以上的这些命令,有助于用户在后续进行的一系列操作。
  (3)使用nessus_connect命令登录到Nessus服务器。其语法格式如下:

nessus_connect username:password@服务器地址:8834 <ok>

  在以上语法中,username和password分别表示Nessus服务器的登录用户名和密码。本例中的Nessus服务器地址为192.168.1.105,登录名和密码为admin、123456。所以,执行命令如下:

msf5 > nessus_connect admin:[email protected]:8834
  [*] Connecting to https://192.168.1.105:8834/ as admin
  [*] User admin authenticated successfully.

  输出的信息显示:已成功登录到Nessus服务器。
  (4)接下来的操作,与图形界面的使用一样。在实施扫描之前,需要创建扫描策略和扫描任务。用户可以使用nessus_policy_list查看服务器上所有已经定义的扫描策略。执行命令如下:

msf5 > nessus_policy_list 
  Policy ID      Name                                 Policy UUID
  ---------      ----                                  -----------
  4                Local Vulnerability Assessment        ad629e16-03b6-8c1d-cef6-
                                                      ef8c9dd3c658d24bd260ef5f9e66

  
  从输出的信息中,可以看到有一个自定义的扫描策略。接着,将使用该策略来创建扫描任务。
  (5)使用nessus_scan_new命令创建扫描任务。在创建扫描任务之前,先查看该命令的使用方法。具体如下:

msf5 > nessus_scan_new -h
  [*] nessus_scan_new <UUID of Policy> <Scan name> <Description> <Targets>
  [*] Use nessus_policy_list to list all available policies with their 
  corresponding UUIDs

  从输出的信息中,可以看到需要指定策略的UUID、扫描名称、描述信息及扫描目标。这里将创建一个名称为Vuln Scan的扫描任务。执行命令如下:

nessus_scan_new ad629e16-03b6-8c1d-cef6-ef8c9dd3c658d24bd260ef5f9e66 
  "Local Scan" "Vuln Scan" 192.168.1.0/24
  [*] Creating scan from policy number ad629e16-03b6-8c1d-cef6-ef8c9dd3
  c658d24bd260ef5f9e66, called Local Scan - Vuln Scan and scanning 192.
  168.1.0/24
  [*] New scan added
  [*] Use nessus_scan_launch 9 to launch the scan
  Scan ID      Scanner ID      Policy ID          Targets                 Owner
  -------       ----------        ---------        -------                 -----
  9              1                   8                 192.168.1.0/24      admin

  输出的信息提示:已成功创建了扫描任务。
  (6)启动扫描任务。执行命令如下:

msf5 > nessus_scan_launch 9
  [+] Scan ID 9 successfully launched. The Scan UUID is 0053420a-bae4-fbe4-
  f400-dae36aa0de996727a58e15fda377

  输出的信息显示:已成功启动了刚才创建的扫描任务。在以上命令中,编号9指的是扫描任务ID。
  (7)扫描开始后,可以使用nessus_scan_list命令查看扫描运行的状态。执行命令如下:

msf5 > nessus_scan_list 
  Scan ID      Name            Owner       Started       Status          Folder
  -------         ----            -----       -------        ------         ------
  6                Scan         admin                   completed      3
  9                Vuln Scan       admin                 running        3

  输出的信息中显示:名称为Vuln Scan的扫描任务状态为running,表示正在运行。扫描结束后,其状态显示为completed(完成)。等待扫描完成后,即可查看并分析其扫描报告。
  (8)扫描结束后,可以使用“nessus_report_hosts 扫描ID”命令查看其扫描报告。执行命令如下:

 msf5 > nessus_report_hosts 9
  Host ID
Hostname
% of Critical Findings
% of High Findings
% of Medium Findings
% of Low Findings
  -------
--------
---------
---------
---------
---------
  6
192.168.1.1
0
0
2
1
  101
192.168.1.100
0
1
7
2
  103
192.168.1.102
8
3
26
5
  105
192.168.1.104
9
1
3
1
  106
192.168.1.105
52
102
174
10
  109
192.168.1.108
0
0
0
0

  从输出信息中可以看到,共扫描了6台主机,并且分别显示了每台主机中不同级别的漏洞个数。如果用户要查看其中某台主机的漏洞信息,可以使用nessus_report_host_details命令来实现。其语法格式如下所示:

nessus_report_host_details [scan ID] [host ID]

  例如,查看主机192.168.1.104的漏洞信息。则执行命令如下:

msf5 > nessus_report_host_details 9 105
  [*] Host information                                #主机详细信息
  IP Address: 192.168.1.104
  Hostname: 
  Operating System: Microsoft Windows XP
  Microsoft Windows XP Service Pack 1
  [*] Vulnerability information                        #漏洞详细信息
  PluginName              Plugin Famil               Severity
  -----------             ------------               -------------
  CommonPlatformEnumeration(CPE)                         General        0
  DCEServicesEnumeration                                 Windows        0
  DeviceType                                            General        0
  EthernetCardManufacturerDetection                    Misc        0
  ICMPTimestampRequestRemoteDateDisclosure            General        0
  MS03-039:MicrosoftRPCInterfaceBufferOverrun(824146)(uncredentialedcheck) 
  Windows         4
  MS03-043:BufferOverruninMessengerService(828035)(uncredentialedcheck)
  Windows        4
  MS04-012: Cumulative Update for Microsoft RPC/DCOM (828741) (uncredentialed 
  check)     Windows    4
  MS04-022: Microsoft Windows Task Scheduler Remote Overflow (841873) 
  (uncredentialed check)    Windows    4
  MS05-007: Vulnerability in Windows Could Allow Information Disclosure 
  (888302) (uncredentialed check)    Windows    2
  MS05-043: Vulnerability in Printer Spooler Service Could Allow Remote Code 
  Execution (896423) (uncredentialed check)    Windows    4
  MS06-035: Vulnerability in Server Service Could Allow Remote Code Execution 
  (917159) (uncredentialed check)    Windows    3
  MS06-040: Vulnerability in Server Service Could Allow Remote Code Execution 
  (921883) (uncredentialed check)    Windows    4
  MS09-001: Microsoft Windows SMB Vulnerabilities Remote Code Execution 
  (958687) (uncredentialed check)     Windows    4
  Microsoft Windows Administrator Default Password Detection (W32/Deloder Worm 
  Susceptibility)     Windows    4
  ...
  UPnPTCPHelperDetection                                    Windows        0
  VMwareVirtualMachineDetection                            General        0
  WindowsNetBIOS/SMBRemoteHostInformationDisclosure        Windows        0
  [*] Compliance information
  Plugin Name  Plugin Famil  Severity
  -----------  ------------  --------

  以上输出信息,显示了目标主机192.168.1.104的详细信息,包括主机系统信息和漏洞信息。如果用户想要查看具体的漏洞信息,可以使用nessus_report_vulns命令查看。显示结果如下:

msf5 > nessus_report_vulns 9
  PluginID    PluginName                            Plugin Family    Vulnerability Count
  -----    ---------------                   -----------     -------------
  10028      DNS Server BIND version         DNS                        1
            Directive Remote Version Detection
  10056    /docDirectoryBrowsable             CGI abuses                1
  10079    AnonymousFTPEnabled                FTP                        1
  10092    FTPServerDetection                 Service detection        1
  10107    HTTPServerTypeandVersion        Web Servers                2
  10114    ICMPTimestampRequestRemoteDate    General                    4
            Disclosure
  10150    WindowsNetBIOS/SMBRemoteHost    Windows                   3
            InformationDisclosure
  10203    rexecdServiceDetection             Service detection        1
  10205    rloginServiceDetection              Service detection        1
  10223    RPCportmapperServiceDetection    RPC                        2
  10245    rshServiceDetection                    Service detection        1
  10263    SMTPServerDetection                Service detection        1
  10267    SSHServerTypeandVersion            Service detection        2
            Information
  ...

  以上输出信息显示了该扫描任务(扫描ID为9)的所有漏洞信息。如果用户想查看具体的漏洞信息,可以使用vulns命令来实现。例如,查看主机192.168.1.104的漏洞信息。执行命令如下:

msf5 > vulns --rhosts 192.168.1.104
  [*] Time: 2017-05-07 09:14:29 UTC Vuln: host=192.168.1.104 name=MS08-067 
  Microsoft Server Service Relative Path Stack Corruption refs=URL-http:
  //www.rapid7.com/vulndb/lookup/dcerpc-ms-netapi-netpathcanonicalize-dos,
  MSB-MS08-067,OSVDB-49243,CVE-2008-4250 
  [*] Time: 2017-05-07 11:46:18 UTC Vuln: host=192.168.1.104 name=Nessus Scan 
  Information refs=NSS-19506 
  [*] Time: 2017-05-07 11:46:18 UTC Vuln: host=192.168.1.104 name=Patch Report 
  refs=NSS-66334 
  [*] Time: 2017-05-07 11:46:18 UTC Vuln: host=192.168.1.104 name=MS04-022: 
  Microsoft Windows Task Scheduler Remote Overflow (841873) (uncredentialed 
  check) refs=CVE-2004-0212,BID-10708,OSVDB-7798,MSFT-MS04-022,NSS-13852 
  [*] Time: 2017-05-07 11:46:19 UTC Vuln: host=192.168.1.104 name=MS08-067: 
  Microsoft Windows Server Service Crafted RPC Request Handling Remote Code 
  Execution (958644) (uncredentialed check) refs=CVE-2008-4250,BID-31874,
  OSVDB-49243,MSFT-MS08-067,CERT-827267,IAVA-2008-A-0081,EDB-ID-6824,EDB-
  ID-7104,EDB-ID-7132,CWE-94,MSF-MS08-067 Microsoft Server Service Relative 
  Path Stack Corruption,NSS-34477 
  [*] Time: 2017-05-07 11:46:19 UTC Vuln: host=192.168.1.104 name=MS05-027: 
  Vulnerability in SMB Could Allow Remote Code Execution (896422) 
  (uncredentialed check) refs=CVE-2005-1206,BID-13942,OSVDB-17308,MSFT-
  MS05-027,NSS-18502 
  [*] Time: 2017-05-07 11:46:19 UTC Vuln: host=192.168.1.104 name=Common 
  Platform Enumeration (CPE) refs=NSS-45590 
  [*] Time: 2017-05-07 11:46:19 UTC Vuln: host=192.168.1.104 name=Device Type 
  refs=NSS-54615 
  [*] Time: 2017-05-07 11:46:19 UTC Vuln: host=192.168.1.104 name=Microsoft 
  Windows XP Unsupported Installation Detection refs=NSS-73182

  以上输出信息显示了目标主机192.168.1.104的详细漏洞信息。

2.2 使用OpenVAS

  OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全免费的。本节介绍使用OpenVAS来获取漏洞信息的方法。

2.2.1 安装及初始化OpenVAS

  要使用OpenVAS,需要先安装。下面介绍安装及初始化OpenVAS服务的方法。
  1.获取OpenVAS的安装包
  OpenVAS安装包的下载地址:

http://www.openvas.org/download.html

  在浏览器的地址栏中输入该地址后,打开如图2.31所示的界面。

image.png

  该界面提供了3种安装OpenVAS的包,分别是Livedemo(Live模式)、Virtual Appliance(虚拟应用程序)和Source Packages(源码包)。用户可以选择下载任意一种安装包。例如,选择下载源码包,将显示如图2.32所示的界面。

image.png

  从该界面可以看到提供的源码包。
  2.安装OpenVAS服务
  下面以Kali Linux系统为例,介绍安装OpenVAS服务的方法。在Kali Linux提供的软件源中,已经提供了OpenVAS的安装包。所以,用户可以直接使用apt-get命令安装。执行命令如下:

root@kali:~# apt-get update && apt-get install openvas*  -y

  开始安装OpenVAS服务。如果在安装过程中没有报错,则表明OpenVAS服务安装成功。
  3.初始化OpenVAS服务
  安装OpenVAS服务后,还需要进行一些初始化设置才可以使用。下面介绍初始化OpenVAS的方法。
  【实例2-8】初始化OpenVAS服务。具体操作步骤如下:
  (1)运行openvas-setup脚本,下载并更新OpenVAS库。执行命令如下:



root@kali:~# openvas-setup 
  [>] Updating OpenVAS feeds
  [*] [1/3] Updating: NVT
  --2018-10-25 18:01:29-- http://dl.greenbone.net/community-nvt-feed-current.
  tar.bz2
  正在解析主机 dl.greenbone.net(dl.greenbone.net)... 89.146.224.58, 2a01:130:
  2000:127::d1
  正在连接 dl.greenbone.net (dl.greenbone.net)|89.146.224.58|:80... 已连接
  已发出 HTTP 请求,正在等待回应... 200 OK
  长度:30171500 (29M) [application/octet-stream]
  正在保存至: “/tmp/greenbone-nvt-sync.OtczofOeYK/openvas-feed-2018-10-25-
  25466.tar.bz2”
  /tmp/greenbone-nvt- 100%[===============>]  28.77M  4.63MB/s  用时 7.5s  
  2018-10-25 18:01:41 (3.83 MB/s) - 已保存 “/tmp/greenbone-nvt-sync.
  OtczofOeYK/openvas-feed-2018-10-25-25466.tar.bz2” [30171500/30171500])
  2008/
  2008/secpod_ms08-054_900045.nasl
  2008/secpod_goodtech_ssh_sftp_mul_bof_vuln_900166.nasl
  2008/secpod_pi3web_isapi_request_dos_vuln_900402.nasl
  2008/gb_twiki_xss_n_cmd_exec_vuln.nasl
  2008/secpod_firefox_location_hash_dos_vuln.nasl
  2008/ipswitch_whatsup_info_disclosure.nasl.asc
  2008/sonicwall_vpn_client_detect.nasl.asc
  2008/phpwebthings_rfi.nasl.asc
  …//省略部分内容//…
  ● openvas-manager.service - Open Vulnerability Assessment System Manager 
     Daemon
     Loaded: loaded (/lib/systemd/system/openvas-manager.service; disabled; 
     vendor preset: disabled)
     Active: active (running) since Thu 2018-10-25 18:24:30 CST; 6s ago
       Docs: man:openvasmd(8)
             http://www.openvas.org/
    Process: 26880 ExecStart=/usr/sbin/openvasmd --listen=127.0.0.1 --port=
    9390 --database=/var/lib/openvas/mgr/tasks.db (code=exited, status=0/
    SUCCESS)
   Main PID: 26882 (openvasmd)
      Tasks: 1 (limit: 2322)
     Memory: 72.2M
     CGroup: /system.slice/openvas-manager.service
             └─26882 openvasmd
  10月 25 18:24:29 daxueba systemd[1]: Starting Open Vulnerability Assessment 
  System Manager Daemon...
  10月 25 18:24:30 daxueba systemd[1]: openvas-manager.service: Can't open PID 
  file /var/run/openvasmd.pid (yet?) after start: No such file or directory
  10月 25 18:24:30 daxueba systemd[1]: Started Open Vulnerability Assessment 
  System Manager Daemon.
  [*] Opening Web UI (https://127.0.0.1:9392) in: 5... 4... 3... 2... 1... 
  [>] Checking for admin user
  [*] Creating admin user
  User created with password '9d41139b-c602-4d39-8e51-dcbe6726ba97'.
  [+] Done

  从以上输出信息中可以看到,下载并更新了所有库,同时启动了所有对应的服务。而且,从最后几行信息可以看到,创建了一个管理用户admin,其密码为9d41139b-c602- 4d39-8e51-dcbe6726ba97。由于需要下载大量的库,所以以上过程需要很长时间。

image.png

  (2)用户可以通过openvasmd命令修改密码。执行命令如下:

root@kali:~# openvasmd --user=admin --new-password=password

  执行以上命令后,将不会输出任何信息。在以上命令中,--user选项指定修改密码的用户为admin,--new-password选项指定将admin用户的密码修改为password。
  (3)使用openvas-check-setup检查OpenVAS是否安装成功。执行命令如下:

 root@kali:~# openvas-check-setup 
  openvas-check-setup 2.3.7
    Test completeness and readiness of OpenVAS-9
    Please report us any non-detected problems and
    help us to improve this check routine:
    http://lists.wald.intevation.org/mailman/listinfo/openvas-discuss
    Send us the log-file (/tmp/openvas-check-setup.log) to help analyze the 
    problem.
    Use the parameter --server to skip checks for client tools
    like GSD and OpenVAS-CLI.
  Step 1: Checking OpenVAS Scanner ... 
          OK: OpenVAS Scanner is present in version 5.1.3.
          OK: redis-server is present in version v=5.0.0.
          OK: scanner (kb_location setting) is configured properly using the 
          redis-server socket: /var/run/redis/redis.sock
          OK: redis-server is running and listening on socket: /var/run/
          redis/redis.sock.
          OK: redis-server configuration is OK and redis-server is running.
          OK: NVT collection in /var/lib/openvas/plugins contains 47902 NVTs.
          WARNING: Signature checking of NVTs is not enabled in OpenVAS Scanner.
          SUGGEST: Enable signature checking (see http://www.openvas.org/trusted-
          nvts.html).
          OK: The NVT cache in /var/cache/openvas contains 52861 files for 
          52861 NVTs.
  Step 2: Checking OpenVAS Manager ... 
          OK: OpenVAS Manager is present in version 7.0.3.
          OK: OpenVAS Manager database found in /var/lib/openvas/mgr/tasks.db.
          OK: Access rights for the OpenVAS Manager database are correct.
          OK: sqlite3 found, extended checks of the OpenVAS Manager installation 
          enabled.
          OK: OpenVAS Manager database is at revision 184.
          OK: OpenVAS Manager expects database at revision 184.
          OK: Database schema is up to date.
          OK: OpenVAS Manager database contains information about 47902 NVTs.
          OK: At least one user exists.
          OK: OpenVAS SCAP database found in /var/lib/openvas/scap-data/scap.db.
          OK: OpenVAS CERT database found in /var/lib/openvas/cert-data/cert.db.
          OK: xsltproc found.
  Step 3: Checking user configuration ... 
          WARNING: Your password policy is empty.
          SUGGEST: Edit the /etc/openvas/pwpolicy.conf file to set a password 
          policy.
  Step 4: Checking Greenbone Security Assistant (GSA) ... 
          OK: Greenbone Security Assistant is present in version 7.0.3.
          OK: Your OpenVAS certificate infrastructure passed validation.
  Step 5: Checking OpenVAS CLI ... 
          OK: OpenVAS CLI version 1.4.5.
  Step 6: Checking Greenbone Security Desktop (GSD) ... 
          SKIP: Skipping check for Greenbone Security Desktop.
  Step 7: Checking if OpenVAS services are up and running ... 
          OK: netstat found, extended checks of the OpenVAS services enabled.
          OK: OpenVAS Scanner is running and listening on a Unix domain socket.
          WARNING: OpenVAS Manager is running and listening only on the local 
          interface.
          This means that you will not be able to access the OpenVAS Manager 
          from the
          outside using GSD or OpenVAS CLI.
          SUGGEST: Ensure that OpenVAS Manager listens on all interfaces unless 
          you want
          a local service only.
          OK: Greenbone Security Assistant is listening on port 9392, which is 
          the default port.
  Step 8: Checking nmap installation ...
          WARNING: Your version of nmap is not fully supported: 7.70
          SUGGEST: You should install nmap 5.51 if you plan to use the nmap NSE 
          NVTs.
  Step 9: Checking presence of optional tools ...
         OK: pdflatex found.
         OK: PDF generation successful. The PDF report format is likely to work.
         OK: ssh-keygen found, LSC credential generation for GNU/Linux targets 
         is likely to work.
          WARNING: Could not find rpm binary, LSC credential package generation 
          for RPM and DEB based targets will not work.
          SUGGEST: Install rpm.
          WARNING: Could not find makensis binary, LSC credential package 
          generation for Microsoft Windows targets will not work.
          SUGGEST: Install nsis.
  It seems like your OpenVAS-9 installation is OK.
  If you think it is not OK, please report your observation
  and help us to improve this check routine:
  http://lists.wald.intevation.org/mailman/listinfo/openvas-discuss
  Please attach the log-file (/tmp/openvas-check-setup.log) to help us analyze the problem.

  以上过程进行了9步检查。检查完后,看到“It seems like your OpenVAS-9 installation is OK.”信息,表示OpenVAS安装成功。
  (4)下面用户可以使用netstat命令查看监听的端口,以确定OpenVAS是否启动成功。

root@kali:~# netstat -ntlp 
  tcp    0    0 127.0.0.1:9390    0.0.0.0:*      LISTEN     10617/openvasmd     
  tcp    0    0 127.0.0.1:80       0.0.0.0:*     LISTEN      10643/gsad          
  tcp   0   0 127.0.0.1:9392       0.0.0.0       LISTEN      10639/gsad

  OpenVAS服务监听了3个端口,分别是9390、80和9392。如果没有看到以上信息输出,说明该服务没有启动。此时,用户可以使用openvas-start命令启动该程序。命令如下:

root@kali:~# openvas-start
  Starting OpenVas Services

  看到以上信息,则表示OpenVAS服务成功启动。如果需要停止服务,需要执行openvas- stop命令如下:

root@kali:~# openvas-stop 
  Stopping OpenVas Services

  从输出信息中,可以看到OpenVAS服务已停止。
  现在,用户可以在浏览器中输入https://IP地址:9392/ (IP地址就是OpenVas服务所在主机的IP地址,也可以是主机名),登录OpenVAS服务器了。成功登录后,即可使用该工具进行各种漏洞扫描。

2.2.2 登录及配置OpenVAS

  当成功安装OpenVAS后,即可登录并使用该工具实施漏洞扫描。但是,成功登录OpenVAS服务后,还需要进行简单的配置才可以实施漏洞扫描。下面介绍登录及配置OpenVAS服务的方法。
  1.登录OpenVAS服务
  【实例2-9】登录OpenVAS服务。具体操作步骤如下:
  (1)在浏览器中输入https://127.0.0.1:9392 ,显示如图2.33所示的界面。



image.png

  (2)该界面显示浏览器中访问的链接不可信任。这是因为该链接使用的是https协议,必须要确定安全可靠才可访问。单击Advanced按钮,显示如图2.34所示的界面。
  (3)该界面显示了访问该链接存在的风险。如果确认访问的链接没问题,则单击Add Exception按钮添加例外,如图2.35所示。

image.png

  (4)该界面显示了要添加例外的链接信息。此时,单击Confirm Security Execption按钮,显示如图2.36所示的界面。

image.png

  (5)该界面是OpenVAS服务的登录界面,输入用户名和密码即可登录该服务。这里的用户名就是前面配置OpenVAS时,自动创建的admin用户,密码为password。输入用户名和密码后,单击Login按钮,显示如图2.37所示的界面。

image.png

  (6)看到该界面显示的内容,则表示已成功登录OpenVAS服务。

image.png

  2.创建扫描配置
  扫描配置就是用来指定扫描目标时所需要的插件。使用OpenVAS工具扫描时,需要通过一个扫描任务来实现。但是,扫描任务是由一个扫描配置和一个目标组成的。所以,在实施扫描之前,必须先创建扫描配置和扫描目标才可以。下面介绍创建扫描配置的方法。
  【实例2-10】新建扫描配置。具体操作步骤如下:
  (1)在服务器的菜单栏中依次选择Configuration|Scan Configs命令,如图2.38所示。显示如图2.39所示的界面。



image.png
image.png

  (2)从该界面可以看到,默认有8个扫描配置。在该界面单击(New Scan Config)图标,即可创建新的扫描配置,如图2.40所示。

image.png

  (3)在该界面中设置扫描的名称,这里设置为Local Vulnerabilities。对于Base选择Empty,static and fast复选框,该选项表示允许用户从零开始创建自己的配置。单击Create按钮进行创建。显示如图2.41所示的界面。

image.png
image.png
image.png


  (4)从图2-41所示界面的Family栏看到有很多的可扫描插件信息,如果想要选择某插件,只需将Select all NVTs栏中的复选框勾选上即可,设置完后,单击Save按钮,显示如图2.43所示的界面。

image.png

  (5)该界面显示了新建的扫描配置Local Vulnerabilities。从该界面可以看到,新建的扫描配置共选择了9个插件族,共4409个插件。如果用户希望编辑该扫描配置重新设置插件时,单击Actions列的image.png图标,打开扫描编辑配置界面。在该界面单击扫描配置名称,即可查看其详细信息,如图2.44所示。

image.png

  (6)从该界面可以看到的该扫描配置的详细信息,包括选择的漏洞家族、插件及配置等。
  3.创建扫描目标
  在创建好扫描配置后,就需要创建扫描目标了。扫描目标就是用来指定扫描目标主机的地址、扫描端口及使用的扫描方式。下面介绍创建扫描目标的方法。
  【实例2-11】新建扫描目标。具体操作步骤如下:
  (1)在OpenVAS服务的菜单栏中依次选择Configuration|Targets命令,显示如图2.45所示的界面。




image.png

  (2)从该界面可以看到,默认没有创建任何目标。此时,用户可以单击(New Target)图标,创建新的扫描目标,如图2.46所示。

image.png

  (3)在该界面输入Target名称及扫描的主机、端口列表、测试方法等。在指定目标时,用户可以输入一个网段、单个地址或多个地址,地址直接使用逗号分隔。用户也可以将扫描的目标地址保存在一个文件中,选择From file格式,选择目标地址的文件。然后单击Create按钮,显示如图2.47所示的界面。

image.png

  (4)从该界面可以看到新建的扫描目标,其名称为Windows XP。
  4.创建扫描任务
  将扫描配置和目标都创建完后,即可创建扫描任务了。然后,对指定的目标实施扫描。下面介绍创建扫描任务的方法。
  【实例2-12】为OpenVAS创建任务。具体操作步骤如下:
  (1)在OpenVAS服务的菜单栏中依次选择Scans |Tasks命令,显示如图2.48所示的界面。




image.png

  (2)该界面显示了OpenVAS扫描任务管理的欢迎信息。如果用户不想要查看,单击右上角的按钮关闭即可。然后,进入扫描任务界面,如图2.49所示。

image.png

  (3)从该界面可以看到,目前没有创建任何任务。在该界面单击(New Task)图标创建任务,如图2.50所示。

image.png

  (4)在该界面设置任务名称、扫描配置和扫描目标等,然后单击Create按钮,显示如图2.51所示的界面。

image.png

  (5)从该界面可以看到新建的任务Windows XP,状态为New。接下来,开始该扫描任务并对目标实施扫描。

2.2.3 实施漏洞扫描

  通过前面一系列的操作,可以开始对指定的目标实施漏洞扫描了。下面介绍实施漏洞扫描的方法。
  【实例2-13】以【实例2-12】创建的扫描任务为例,实施漏洞扫描。具体操作步骤如下:
  (1)创建的扫描任务如图2.51所示。
  (2)从该界面可以看到前面新建的任务Windows XP。此时,单击(Start)图标,开始漏洞扫描。在启动该扫描任务后,按钮图标将变为(Pause),单击该按钮可以暂停扫描。也可以单击(Stop)图标停止扫描。扫描完成后,New将变为Done,在扫描过程中显示为Requested。



image.png
image.png
image.png


  (3)扫描完成后,显示如图2.54所示界面。
  (4)从该界面的Status(状态)列,可以看到已显示为Done,表示扫描完成。接下来,对扫描结果进行分析,以从中获取到目标主机中的漏洞信息。

image.png

2.2.4 分析并导出漏洞扫描报告

  当用户对目标主机实施扫描后,即可从扫描结果中获取其目标主机的漏洞信息。同样,为了方便用户分析其扫描结果,OpenVAS也支持将漏洞信息以不同报告格式导出。下面介绍分析并导出漏洞扫描报告的方法。
  1.分析漏洞扫描结果
  【实例2-14】以上例中的扫描结果为例,对其进行分析。具体操作步骤如下:
  (1)上例中的扫描结果如图2.54所示。
  (2)从该界面可以看到目标系统中有非常严重的漏洞,安全级别为10.0(High)。此时用户可以单击状态下面的Done命令,查看漏洞扫描的详细信息,如图2.55所示。




image.png

  (3)从该界面的Severity列显示的情况,可以看到这些漏洞的严重情况。其中,10.0是安全问题最严重的漏洞。例如,查看该界面显示的第一个漏洞的详细信息,如图2.56所示。
  (4)该界面显示了目标主机上拒绝服务攻击漏洞详细信息。其中,漏洞信息包括目标主机所开放的端口、漏洞导致的结果及漏洞解决方法等。这里记下该漏洞的CVE编号非常重要。在以上References部分即可看到相关的漏洞CVE编号及可参考的链接。在这些参考网页中,可了解该漏洞的详细信息,以及具体的漏洞编号等。然后,根据该漏洞CVE编号查找对应的攻击载荷,并实施攻击。

image.png

  2.导出漏洞扫描报告
  为了方便用户进行分析,可以将漏洞信息以报告的形式导出。其中,OpenVAS支持15种文件格式的报告,如PDF、XML、CXV、HTML和TXT等。
  【实例2-15】将漏洞扫描结果以PDF格式导出。其操作步骤如下:
  (1)打开漏洞扫描列表界面,如图2.57所示。
  (2)从该界面可以看到有一个按钮,表示下载报告。这里默认选择的是Anonymous XML格式。如果用户想以其他格式导出的话,单击切换报告格式文本框中的按钮,即可选择其他格式。然后,单击(Download)按钮将此次的扫描报告导出。这里选择导出为PDF格式的报告,单击(Download)按钮,显示如图2.58所示的界面。
  (3)该界面用于设置处理该报告文件的方法。用户可以单击选中Open with单选按钮,表示直接打开。或者单击选中Save File单选按钮,指定该报告文件的保存位置。这里单击选中Save File按钮保存该报告文件,然后单击OK按钮,即可成功将该报告导出。





image.png

2.2.5 远程调用OpenVAS

  在用户搭建好OpenVAS服务后,可以直接在Metasploit中远程调用,通过命令行方式对目标主机实施扫描。下面介绍在Metasploit中远程调用OpenVAS服务,并实施扫描的方法。
  【实例2-16】在Metasploit中远程调用OpenVAS对目标主机实施扫描。具体操作步骤如下:
  (1)加载Openvas插件。执行命令如下:

msf5 > load openvas 
  [*] Welcome to OpenVAS integration by kost and averagesecurityguy.
  [*] 
  [*] OpenVAS integration requires a database connection. Once the 
  [*] database is ready, connect to the OpenVAS server using openvas_connect.
  [*] For additional commands use openvas_help.
  [*] 
  [*] Successfully loaded plugin: OpenVAS

  看到以上输出信息,表示成功加载了OpenVAS插件。接下来,用户可以使用openvas_help命令,查看OpenVAS模块支持的所有命令。执行完以上命令后,将显示7部分命令。其中,第1部分显示了帮助命令。显示如下:

msf5 > openvas_help 
  [*] openvas_help                 Display this help
  [*] openvas_debug                Enable/Disable debugging
  [*] openvas_version              Display the version of the OpenVAS server

  使用以上帮助命令可以查看帮助信息、调试信息和版本信息。
  第2部分显示了连接命令。显示如下:

[*] CONNECTION
  [*] ==========
  [*] openvas_connect              Connects to OpenVAS
  [*] openvas_disconnect          Disconnects from OpenVAS

  以上命令用来连接与断开OpenVAS服务的连接。
  第3部分显示了目标设置命令。显示如下:

[*] TARGETS
  [*] =======
  [*] openvas_target_create             Create target
  [*] openvas_target_delete             Deletes target specified by ID
  [*] openvas_target_list               Lists targets

  以上命令用来创建目标、删除目标及获取目标列表。
  第4部分显示了扫描任务设置命令。显示如下:

[*] TASKS
  [*] =====
  [*] openvas_task_create               Create task
  [*] openvas_task_delete               Delete a task and all associated reports
  [*] openvas_task_list                 Lists tasks
  [*] openvas_task_start                Starts task specified by ID
  [*] openvas_task_stop                 Stops task specified by ID
  [*] openvas_task_pause                Pauses task specified by ID
  [*] openvas_task_resume               Resumes task specified by ID
  [*] openvas_task_resume_or_start      Resumes or starts task specified by ID

  用户使用以上命令可以创建扫描、删除、列出、启动、停止扫描任务等。
  第5部分显示了扫描配置命令。显示如下:

[*] CONFIGS
  [*] =======
  [*] openvas_config_list              Lists scan configurations

  以上命令用来列出扫描配置信息。
  第6部分显示了报告格式命令。显示如下:

[*] FORMATS
  [*] =======
  [*] openvas_format_list              Lists available report formats

  以上命令用来列出有效的报告格式。
  第7部分显示了扫描报告操作命令。显示如下:

[*] REPORTS
  [*] =======
  [*] openvas_report_list             Lists available reports
  [*] openvas_report_delete          Delete a report specified by ID
  [*] openvas_report_import          Imports an OpenVAS report specified by ID
  [*] openvas_report_download       Downloads an OpenVAS report specified by ID

  用户可以使用以上命令列出、删除、导入或下载扫描报告。当了解用户以上命令后,即可进行后续的一系列操作。
  (2)使用openvas_connect命令登录到OpenVAS服务器。其语法格式如下所示:

openvas_connect username password host port <ssl-confirm>

  在以上语法中,username和password分别表示OpenVAS服务器的登录用户名和密码。本例中的OpenVAS服务器地址为192.168.1.105,登录名为admin,密码为password。执行命令如下:

msf5 > openvas_connect admin password 192.168.1.105 9390
  [*] Connecting to OpenVAS instance at 192.168.1.105:9390 with username 
  admin...
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS connection successful

  从输出的信息中,可以看到已成功登录到OpenVAS服务器。
  (3)后续操作流程与图形界面一样。在实施扫描之前,需要创建扫描目标、扫描配置和扫描任务。用户也可以使用默认的扫描配置,来实施扫描。这里将使用默认的扫描配置方式,来实施扫描。下面创建一个扫描目标,其语法格式如下所示:

openvas_target_create <name> <hosts> <comment>

  在以上语法中,参数name表示扫描目标名称;hosts表示目标主机;comment表示注释信息。下面创建一个名称为Local Machine,目标地址为192.168.1.6的扫描目标。执行命令如下:

msf5 > openvas_target_create "Local Machine" 192.168.1.6 "My Local Machine"
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [*] 2223908a-46fc-4df9-81ab-f8275f02715a
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS list of targets
  ID             Name        Hosts            Max Hosts   In Use     Comment
  --            ----        -----              ---------   ------    -------
  2223908a-    Local    192.168.1.6        1               0          My Local Machine
  46fc-4df9-    Machine
  81ab-
  f8275f02715a

  看到以上输出信息,则表示成功创建了扫描目标。从显示的结果中可以看到该扫描目标ID为2223908a-46fc-4df9-81ab-f8275f02715a。
  (4)创建扫描任务。先查看下扫描配置列表,执行命令如下:

msf5 > openvas_config_list 
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS list of configs
  ID                                               Name
  --                                                -------
  085569ce-73ed-11df-83c3-002264764cea      empty
  2d3f051c-55ba-11e3-bf43-406186ea4fc5      Host Discovery
  698f691e-7489-11df-9d8c-002264764cea      Full and fast ultimate
  708f25c4-7489-11df-8094-002264764cea      Full and very deep
  74db13d6-7489-11df-91b9-002264764cea      Full and very deep ultimate
  8715c877-47a0-438d-98a3-27c7a6ab2196      Discovery
  bbca7412-a950-11e3-9109-406186ea4fc5      System Discovery
  daba56c8-73ec-11df-a475-002264764cea      Full and fast

  从输出的信息中可以看到,共提供了8种扫描配置。从显示的信息可以看到每个扫描配置的ID和名称。其中,用于创建扫描任务的语法格式如下:

openvas_task_create <name> <comment> <config_id> <target_id>

  
  以上语法中的参数name表示指定扫描任务名称;comment用来设置注释信息;config_id用来指定扫描配置的ID;target_id用来指定目标ID。这里选择使用Full and fast扫描配置,对前面创建的目标实施扫描。执行命令如下:

msf5 > openvas_task_create "Local Scan" "Scan My Local Machine" 698f691e-
  7489-11df-9d8c-002264764cea  2223908a-46fc-4df9-81ab-f8275f02715a
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [*] 351dfd48-0b28-4dcd-aa44-9fd2644649de
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS list of tasks
  ID              Name                Comment                     Status        Progress
  --              ----                -------                     ------        --------
  351dfd48-      Local Scan        Scan My Local Machine    New             -1
  0b28-4dcd-
  aa44-9fd2644649de

  从输出的信息可以看到,成功创建了扫描任务。其中,该扫描任务的ID为351dfd48- 0b28-4dcd-aa44-9fd2644649de。
  (5)启动扫描任务。其语法格式如下:

openvas_task_start <id>

  以上语法中的参数id表示扫描任务的ID。这里将启动ID为351dfd48-0b28-4dcd- aa44-9fd2644649de的扫描任务。执行命令如下:

 msf5 > openvas_task_start 351dfd48-0b28-4dcd-aa44-9fd2644649de
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [*] <X><authenticate_response status='200' status_text='OK'><role>Admin</
  role><timezone>UTC</timezone><severity>nist</severity></authenticate_
  response><start_task_response status='202' status_text='OK, request 
  submitted'><report_id>5756db12-276f-4d54-9bc4-bb87bd05d5b5</report_id>
  </start_task_response></X>
  msf5 > openvas_task_list 
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS list of tasks
  
  ID              Name                Comment                      Status         Progress
  --              ----                -------                      ------         --------
  351dfd48-      Local Scan      Scan My Local Machine    Running      1
  0b28-4dcd-
  aa44-9fd2644649de

  看到以上输出信息,表示成功启动了扫描任务。从输出信息的Status(状态)列可以看到,值为Running,即正在实施扫描。此时,用户也可以使用openvas_task_list命令查看扫描任务的进度。执行命令如下:

msf5 > openvas_task_list 
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS list of tasks
  ID              Name                Comment                     Status         Progress
  --              ----                -------                     ------          --------
  351dfd48-      Local Scan        Scan My Local Machine    Running      98
  0b28-4dcd-
  aa44-9fd2644649de

  在以上输出信息中共包括5列,分别是ID(扫描任务ID)、Name(扫描任务名称)、Comment(扫描任务注释)、Status(状态)和Progress(进度)。从以上显示的信息可以看到,扫描任务正在运行,其进度值为98。当扫描完成后,该进度值为-1。具体如下:

msf5 > openvas_task_list 
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS list of tasks
  ID                Name                Comment                     Status        Progress
  --                ----                -------                     ------        --------
  351dfd48-      Local Scan      Scan My Local Machine      Running      -1
  0b28-4dcd-
  aa44-9fd2644649de

  看到以上输出信息,表示扫描完成了。为了方便用户对扫描结果进行分析,可以下载该扫描报告。
  (6)使用openvas_report_download命令下载扫描报告。在下载扫描报告之前,先使用openvas_report_list命令查看下扫描报告列表,以确定生成的扫描报告信息。执行命令如下:

msf5 > openvas_report_list 
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS list of reports
  
  ID                  Task Name           Start Time                Stop Time
  --                  ---------           ----------                ---------
  5756db12-276f-     Local Scan      2019-01-22T12:19:44Z
  4d54-9bc4-bb87bd05d5b5    
  c5a85e97-aedc-    Local Scan      2019-01-22T14:37:36Z
  4289-b14f-7b06cbceb9e9  
  2019-01-22T14:40:39Z

  从输出的信息可以看到,有一个扫描报告。其中,该扫描报告的ID为c5a85e97-aedc- 4289-b14f-7b06cbceb9e9。接下来,用户就可以下载该扫描报告了。下载扫描报告的语法格式如下:

openvas_report_download <report_id> <format_id> <path> <report_name>

  以上语法中参数report_id表示扫描报告的ID;format_id表示扫描报告格式的ID;path表示下载路径;report_name表示扫描报告名称。在下载扫描报告之前,需要确定这些信息。用户可以使用openvas_format_list命令查看支持的扫描报告格式。具体如下:

msf5 > openvas_format_list 
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [+] OpenVAS list of report formats
  
  ID                                       Name             Extension          Summary
  --                                       ----            ---------           -------
  5057e5cc-b825-11e4-9d0e-28d24461215b    Anonymous XML    xml     Anonymous 
  version of the raw XML report
  50c9950a-f326-11e4-800c-28d24461215b    Verinice ITG       vna     Greenbone 
  Verinice ITG Report, v1.0.1.
  5ceff8ba-1f62-11e1-ab9f-406186ea4fc5     CPE       csv     Common Product 
  Enumeration CSV table.
  6c248850-1f62-11e1-b082-406186ea4fc5    HTML               html    Single 
  page HTML report.
  77bd6c4a-1f62-11e1-abf0-406186ea4fc5    ITG                csv    German 
  "IT-Grundschutz-Kataloge" report.
  9087b18c-626c-11e3-8892-406186ea4fc5    CSV Hosts       csv     CSV host summary.
  910200ca-dc05-11e1-954f-406186ea4fc5    ARF                xml     Asset 
  Reporting Format v1.0.0.
  9ca6fe72-1f62-11e1-9e7c-406186ea4fc5     NBE                nbe    Legacy 
  OpenVAS report.
  9e5e5deb-879e-4ecc-8be6-a71cd0875cdd     Topology SVG       svg     Network 
  topology SVG image.
  a3810a62-1f62-11e1-9219-406186ea4fc5      TXT                txt     Plain text 
  report.
  a684c02c-b531-11e1-bdc2-406186ea4fc5      LaTeX              tex     LaTeX source 
  file.
  a994b278-1f62-11e1-96ac-406186ea4fc5      XML                xml Raw XML report.
  c15ad349-bd8d-457a-880a-c7056532ee15     Verinice ISM       vna     Greenbone 
  Verinice ISM Report, v3.0.0.
  c1645568-627a-11e3-a660-406186ea4fc5     CSV Results   csv CSV result list.
  c402cc3e-b531-11e1-9163-406186ea4fc5      PDF                pdf     Portable 
  Document Format report.

  从以上输出信息可以看到支持的所有扫描报告格式。在以上信息中共包括4列,分别表示ID(扫描报告格式的ID)、Name(扫描报告格式名称)、Extension(扫描报告文件扩展名)和Summary(摘要信息)。例如,这里选择下载扫描报告格式为CSV,并保存到/root/openvas目录中,报告文件名为reports.csv。执行命令如下:

msf5 > openvas_report_download c5a85e97-aedc-4289-b14f-7b06cbceb9e9 
  9087b18c-626c-11e3-8892-406186ea4fc5 /root/openvas reports.csv
  /usr/share/metasploit-framework/vendor/bundle/ruby/2.5.0/gems/openvas-
  omp-0.0.4/lib/openvas-omp.rb:201: warning: Object#timeout is deprecated, 
  use Timeout.timeout instead.
  [*] Saving report to /root/openvas/reports.csv

  从输出的信息可以看到,已成功将扫描报告下载到/root/openvas/reports.csv文件中。此时,用户使用文本编辑器即可查看已下载的扫描报告,如图2.59所示。

image.png

  (7)用户可以对该扫描报告进行分析了,以获取目标主机的漏洞信息。

2.3 手工查询漏洞

  当用户知道设备或者系统型号后,可以人工方式去官方获取漏洞信息。很多负责任的公司都会在漏洞发现后,发布更新补丁和设备固件。但大部分情况下,实际没人会天天看这些的。所以,由于维护人员的懒惰,漏洞就出来了。下面介绍手工查询漏洞的方法。
  这里以HP M251打印机为例,该打印机是内嵌系统。在其官网提供一个固件供用户更新。其网址http://support.hp.com/cn-zh/drivers/selfservice/hp-laserjet-pro-200-color-printer-m251- series/5097632/model/5097633。在该网页中有详细的漏洞说明情况,如图2.60所示。
  从该界面的修复和增强内容中,可以看到该固件修复了又称为POODLESSLv3.0漏洞的潜在漏洞问题(CVE-2014-3566)。从该漏洞描述中知道了漏洞编号,这样查攻击载荷就容易了。一般设备固件都是需要用户手动更新。所以,如果要更新该漏洞,需要从该界面下载并手动更新该固件。


image.png

  除了到官方网站查询一些固件漏洞,语言还可以到CVE的管理网站和微软漏洞官方查看各种CVE和微软的漏洞,其网址分别是:
http://cve.mitre.org/data/refs/refmap/source-MS.html 

https://technet.microsoft.com/en-us/security/bulletins


Leave a Reply

Your email address will not be published. Required fields are marked *