带你读《从实践中学习Metasploit 5渗透测试》之一:环境配置-阿里云开发者社区

开发者社区> 华章出版社> 正文

带你读《从实践中学习Metasploit 5渗透测试》之一:环境配置

简介: 本书基于Metasploit的5.0版,首先系统地讲解了各个平台下的环境构建方式;然后按照渗透测试流程,依次讲解了Metasploit在漏洞获取、项目准备和实施攻击环节的使用方式。 接着借鉴了专业渗透测试规范,专门介绍了如何使用Metasploit的工作区进行渗透测试项目的管理和信息维护;最后基于Windows、Linux和Android系统讲解典型模块的应用方式。

信息安全技术大讲堂
点击查看第二章
从实践中学习Metasploit 5渗透测试

image.png

大学霸IT达人 编著

第1章 环 境 配 置

  如果要使用Metasploit实施渗透攻击,需要在系统中安装该工具,并且配置对应的攻击靶机。在Kali Linux中,默认已经安装了Metasploit。但是在其他操作系统中,都没有安装该工具。所以,为了方便用户后面的操作,本章将介绍Metasploit工具的环境配置方法。

1.1 Metasploit概述

  Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。而且它还提供了许多个接口,其最受欢迎的是由Rapid 7和Strategic Cyber LLC公司维护的。由Rapid 7和Strategic Cyber LLC公司维护的接口包括Metasploit Framework Edition、Metasploit Community Edition、Metasploit Express、Metasploit Pro、Armitage和Cobalt strike。其中,Metasploit Framework(命令行接口)和Armitage(图形界面接口)是较常用的两种,并且是免费的。本书将选择使用Metasploit Framework(命令行接口,即MSFCONSOLE)接口来实施渗透攻击。

1.2 安 装 要 求

  为了能够顺利地安装Metasploit工具,需要先了解该工具对系统硬件、架构等的需求。由于Metasploit是一款漏洞扫描并实施攻击的工具,所以可能会被系统的杀毒软件或防火墙等拦截。本节将介绍Metasploit工具的安装要求。
  1.系统需求

  • 2GHz及以上的处理器;
  • 4GB可用内存(建议8GB);
  • 1GB以上的可用磁盘空间(建议50GB)。

  2.支持的平台(64位架构)

  • Red Hat Enterprise Linux Server 5.10及以上;
  • Red Hat Enterprise Linux Server 6.5及以上;
  • Red Hat Enterprise Linux Server 7.1及以上;
  • Ubuntu Linux 10.04 LTS;
  • Ubuntu Linux 12.04 LTS;
  • Ubuntu Linux 14.04 LTS(建议);
  • Ubuntu Linux 16.04 LTS;
  • Kali Linux;
  • Windows Server 2008 R2;
  • Windows Server 2012 R2;
  • Windows 7 SP1+;
  • Windows 8.1;
  • Windows 10。

  3.禁用杀毒软件
  当系统中运行有杀毒软件时,将会检测到Metasploit Framework为恶意软件,并且可能导致它的安装和运行出现问题。Metasploit Framework利用了与杀毒软件检测到的相同漏洞,因此,当安装Metasploit Framework时,杀毒软件将会阻止安装,并且提醒用户可能存在影响系统的安全风险。
  如果想要安装Metasploit Framework,在安装之前禁用所有杀毒软件。如果不能禁用杀毒软件的话,则需要设置杀毒软件不对Metasploit进行扫描。
  4.禁用防火墙
  本地防火墙(包括Windows防火墙)会干扰渗透攻击和攻击载荷的操作。如果安装Metasploit Framework时开启防火墙的话,防火墙将探测到Metasploit Framework为恶意软件,中断其下载。
  因此,在安装和运行Metasploit Framework之前,需要禁用本地防火墙。如果必须在安装有防火墙的计算机上操作,那么应该从外部网络下载Metasploit Framework。
  5.获取管理员权限
  为了能够成功地在系统上安装Metasploit Framework,必须有该系统的管理员权限。

1.3 安装Metasploit Framework

  在用户准备好Metasploit的安装需求后,就可以开始安装Metasploit Framework了。该工具可以安装在Windows、Linux及Mac OS X系统中。本节将介绍在各种操作系统下安装Metasploit Framework的步骤。

1.3.1 获取安装包

  Metasploit Framework的下载地址为https://www.rapid7.com/products/metasploit/download/ editions/ 。在浏览器中输入该地址后,将显示如图1.1所示的页面。

image.png

  可以看到,该页面中提供了3个版本,分别是专业版(Pro,免费试用14天)、社区版(Community)和Framework。本例中将选择下载Framework。在该页面单击Framework下面的Free Download按钮,将跳转到GitHub网站,这里提供了各种操作系统平台的安装和下载方法,如图1.2所示。

image.png

image.png

  从图1.2中可以看到页面中分别提供了Linux、Mac OS X和Windows安装包。而且,所提供的Linux安装包包括.deb和.rpm格式。其中,.deb包提供了i386、amd64、armhf和arm64这4个版本;.rpm包只提供了64-bit x86。

1.3.2 在Windows系统中安装Metasploit

  【实例1-1】在Windows下安装Metasploit Framework。具体操作步骤如下:
  (1)双击运行已下载的安装包,将打开如图1.3所示对话框。
  (2)该对话框为安装Metasploit-framework的欢迎界面,单击Next按钮,进入用户许可协议对话框,如图1.4所示。

image.png

  (3)该对话框提示用户是否接受许可协议。这里勾选I accept the terms in the License Agreement复选框,然后单击Next按钮,进入安装位置对话框,如图1.5所示。
  (4)该对话框用来设置Metasploit Framework的安装位置,默认将安装在C盘。如果希望安装到其他位置,可以单击Browse按钮,修改安装位置。然后,单击Next按钮,进入准备安装对话框,如图1.6所示。
  (5)该对话框提示将开始安装,如果确定之前的配置无误,单击Install按钮将开始安装,如图1.7所示。如果需要进行修改,可以单击Back按钮。安装完成后,显示如图1.8所示对话框。表示Metasploit Framework已经安装成功了。单击Finish按钮,退出安装向导界面。

image.png

  现在,就可以启动Metasploit Framework了。启动方法如下:
  (1)进入Metasploit Framework安装位置。本例中的安装位置是C盘,此时在C盘下面可以看到一个名为metasploit-framework的文件夹。
  (2)依次打开metasploit-framework|bin目录,如图1.9所示。
  (3)双击msfconsole.bat可执行文件,即可启动Metasploit Framework。成功启动后,如图1.10所示。
  (4)看到窗口中显示的msf5 >提示符,则表示已成功启动了Metasploit。接下来就可以使用该框架提供的模块及攻击载荷实施渗透了。

image.png

image.png

1.3.3 在Linux系统中安装Metasploit

  在Linux下,提供了两种安装Metasploit Framework工具的方法。一种方法是GitHub托管网站提供的快速安装,另一种是使用二进制包(.rpm或.deb)手动安装。下面分别介绍这两种方法。
  1.快速安装
  【实例1-2】在Linux下快速安装Metasploit Framework。执行命令如下:

[root@RHEL ~]# curl https://raw.githubusercontent.com/rapid7/metasploit-
  omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.
  erb > msfinstall && chmod 755 msfinstall && ./msfinstall

  执行完以上命令后,开始下载Metasploit Framework安装包,然后安装Metasploit Framework。安装成功后,显示Complete(完成)提示信息如下:

Installed:
    metasploit-framework.x86_64 0:5.0.2+20190118142505~1rapid7-1.el6
  Complete!

  看到以上提示信息,则表示成功安装了Metasploit。接下来,在终端执行msfconsole命令,即可启动该工具。
  使用以上方法安装成功后,Metasploit将被安装在/opt/metasploit-framework目录中。其中,所有可执行的命令在/opt/metasploit-framework/bin目录下。所以,启动Metasploit需要进入该目录下,执行对应的脚本文件。启动如下:

[root@RHEL ~]# cd /opt/metasploit-framework/bin/
  [root@RHEL bin]# ./msfconsole
  msf5 >

  看到msf5 >提示符则表示已成功启动了Metasploit。
  2.手动安装
  使用手动安装方法也非常简单,只需要执行一条命令即可。首先从GitHub网站提供的下载链接中获取安装包,然后使用rpm命令安装。执行命令如下:

[root@RHEL ~]# rpm -ivh metasploit-framework-5.0.2+20190118142505~1rapid7-
  1.el6.x86_64.rpm 
   warning: metasploit-framework-5.0.2+20190118142505~1rapid7-1.el6.x86_64.
   rpm : Header V4 RSA/SHA256 Signature, key ID 2007b954: NOKEY
  Preparing...                  ################################ [100%]
     1:metasploit-framework   ################################ [100%]
  Run msfconsole to get started

  看到以上输出信息,表示已成功安装了Metasploit Framework。接下来,便可以在终端执行msfconsole命令启动该工具了。

1.3.4 在OS X系统中安装Metasploit

  在OS X下,用户也可以使用1.3.3节中的快速方法来安装Metasploit Framework。如果用户不喜欢使用命令行方式操作,也可以使用图形界面的方式来安装。下面介绍如何在OS X下使用图形界面的方式来安装Metasploit Framework。
  【实例1-3】在OS X下使用图形界面的方式安装Metasploit Framework。具体操作步骤如下:
  (1)双击下载的安装包,打开如图1.11所示对话框。
  (2)该对话框是安装Metasploit Framework的欢迎界面,单击“继续”按钮,进入软件许可协议对话框,如图1.12所示。

image.png


  (3)在其中可以看到安装Metasploit的许可协议信息,单击“继续”按钮,弹出是否同意许可协议的对话框,如图1.13所示。
  (4)单击“同意”按钮,表示接受许可协议,进入安装Metasploit对话框,如图1.14所示。
  (5)单击“安装”按钮,开始安装Metasploit工具。安装完成后,如图1.15所示。
  (6)单击“关闭”按钮,退出Metasploit的安装界面。接下来,就可以启动Metasploit工具了。
  在OS X下,Metasploit默认被安装在/opt/metasploit-framework目录下。如果要启动Metasploit,进入/opt/metasploit-framework/bin目录下,运行msfconsole可执行文件,即可启动该工具。启动命令如下:
localhost:~ root# cd /opt/metasploit-framework/bin
localhost:~ root# ./msfconsole
msf5 >

image.png

1.4 安装及连接PostgreSQL数据库服务

  PostgreSQL是一个免费的对象-关系数据库服务,用来存储一些数据记录。Metasploit启动后,会选择连接PostgreSQL数据库服务,然后就可以完整地利用MSF数据库查询exploit和记录了。在Kali Linux系统中,启动Metasploit后,将自动连接到PostgreSQL服务的Postgres数据库。但是,在其他系统中,需要手动连接该数据库。本节将介绍安装及连接PostgreSQL数据库服务的方法。

1.4.1 安装PostgreSQL数据库服务

  在大部分系统中,默认并不会安装PostgreSQL数据库服务。所以,如果要使用该数据库,需要先在系统中进行安装。PostgreSQL数据库服务的下载地址为http://www.postgresql.org/ download/ 。
  在浏览器中输入该地址后,将打开如图1.16所示的页面。

image.png

  在该页面中可选择下载各种平台的安装包。在大部分Linux发行版中都自带了PostgreSQL的二进制包,所以用户可以直接安装。下面将演示在Windows中安装PostgreSQL数据库的方法。
  【实例1-4】在Windows 7中安装PostgreSQL数据库。具体操作步骤如下:
  (1)双击下载的安装包,将打开如图1.17所示对话框。
  (2)该界面是安装PostgreSQL数据库的欢迎界面。单击Next按钮,进入安装位置对话框,如图1.18所示。

image.png

image.png

  (3)选择PostgreSQL数据库的安装位置。本例中将使用默认路径,然后单击Next按钮,进入选择组件安装对话框,如图1.19所示。
  (4)在其中选择将要安装的组件,这里使用默认设置,选择所有组件。然后单击Next按钮,进入数据目录对话框,如图1.20所示。

image.png

  (5)该对话框用来设置PostgreSQL数据库的数据存放目录,本例使用默认的位置。然后单击Next按钮,进入用户密码设置对话框,如图1.21所示。
  (6)在其中为数据库超级用户postgres设置密码。一定要记住这个密码,在连接数据库时需要输入该密码。然后,单击Next按钮,进入数据库端口监听对话框,如图1.22所示。
  (7)在其中设置数据库监听的端口,这里使用默认端口。然后,单击Next按钮,进入高级选项设置对话框,如图1.23所示。
  (8)在其中可以设置数据库存储区域的运行时环境(字符编码格式),这里选择默认设置,即Default locale选项。然后,单击Next按钮,进入预安装摘要信息对话框,如图1.24所示。
  (9)在其中显示了数据库将要安装的位置文件信息。单击Next按钮,进入PostgreSQL数据库安装对话框,如图1.25所示。

image.png


  (10)该对话框表示目前已经配置好PostgreSQL了,可以开始安装该数据库了。此时,单击Next按钮,开始安装该数据库。安装完成后,如图1.26所示。
  (11)从中可以看到,默认将要启动Stack Builder来下载并安装额外的工具、应用程序和驱动程序,以进一步完善PostgreSQL的安装。但是,该操作必须在联网状态下执行。本例中安装PostgreSQL数据库只是为了简单地与Metasploit连接,并保存一些数据。所以,这里不启动StackBuilder,即取消复选框的勾选。然后,单击Finish按钮完成数据库的安装。

image.png

1.4.2 初始化PostgreSQL数据库

  为了便于存储数据,Metasploit会使用特定的用户名来访问PostgresSQL数据库,并将数据保存在自有的数据库中。所以,在启动Metasploit之前,需要先初始化数据库。在初始化过程中,Metasploit会在PostgreSQL中建立一个专用账户msf,并创建对应的数据库。操作过程如下:
  1.启动PostgreSQL数据库服务
  为了方便渗透测试人员操作,Metasploit提供了专门的数据库服务管理命令。下面依次讲解数据库服务的启动和关闭方法。
  (1)启动PostgreSQL数据库服务,执行的命令如下:

root@daxueba:~# msfdb start
  [+] Starting database

  输出信息表示数据库服务已经成功启动了。
  (2)当不使用Metasploit时,为了节省系统资源,可以停止PostgreSQL数据库服务,执行的命令如下:

root@daxueba:~# msfdb stop
  [+] Stopping database

  输出信息表示数据库已经成功禁止了。
  成功启动PostgreSQL数据库服务,PostgeSQL会监听5432端口。查看该端口是否被监听,执行命令如下:

root@daxueba:~# ss -ant
  State    Recv-Q   Send-Q        Local Address:Port        Peer Address:Port    
  LISTEN   0         128               127.0.0.1:5432             0.0.0.0:-       
  LISTEN   0         128               127.0.0.1:5433             0.0.0.0:-       
  LISTEN   0         128                 0.0.0.0:44797            0.0.0.0:-       
  LISTEN   0         128                 0.0.0.0:41959            0.0.0.0:-       
  LISTEN   0         128                     [::]:39031               [::]:-       
  LISTEN   0         128                     [::1]:5432               [::]:-       
  LISTEN   0         128                     [::1]:5433               [::]:-       
  LISTEN   0         128                     [::]:44235               [::]:- 

  从Local Address:Port列中可以看到,127.0.0.1:5432表示5432端口已经被监听。
  2.初始化数据库
  初始化数据库,执行命令如下:

root@daxueba:~# msfdb init

  输出信息如下:

[+] Starting database
  [+] Creating database user 'msf'
  为新角色输入的口令: 
  再输入一遍: 
  [+] Creating databases 'msf'                        #创建msf数据库
  [+] Creating databases 'msf_test'                    #创建msf_test数据库
  [+] Creating configuration file '/usr/share/metasploit-framework/config/
  database.yml'                                        #创建配置文件
  [+] Creating initial database schema

  输出信息表示成功创建了Metasploit的专用数据库msf和msf_test,并且创建了配置文件database.yml。输出信息的第3行和第4行表示为创建的数据库名自动生成密码,它将自动保存到配置文件中。最后一行信息表示创建了初始化数据库模式。
  查看配置文件database.yml中的信息,可以看到msf和msf_test数据库的相关信息,如密码和端口号等。执行命令如下:

root@daxueba:~# cat /usr/share/metasploit-framework/config/database.yml

  输出信息如下:

development:
    adapter: postgresql
    database: msf                                                #数据库名
    username: msf                                                #用户名
    password: eX2wVC53WcKaSdAKDHs+/ZumzfRCV3Xi3bnVe7t1bRw=    #密码
    host: localhost                                            #主机名
    port: 5432                                                    #端口号
    pool: 5                                                    #连接池连接数
    timeout: 5                                                    #连接的超时时间
  
  production:
    adapter: postgresql
    database: msf
    username: msf
    password: eX2wVC53WcKaSdAKDHs+/ZumzfRCV3Xi3bnVe7t1bRw=
    host: localhost
    port: 5432
    pool: 5
    timeout: 5
  
  test:
    adapter: postgresql
    database: msf_test
    username: msf
    password: eX2wVC53WcKaSdAKDHs+/ZumzfRCV3Xi3bnVe7t1bRw=
    host: localhost
    port: 5432
    pool: 5
    timeout: 5

  如果用户不再保留Metasploit的数据库,可以将其删除并停止数据库服务。命令如下:

root@daxueba:~# msfdb delete

  输出信息如下:

[i] Database already started
  [+] Dropping databases 'msf'                            #删除数据库msf
  [+] Dropping databases 'msf_test'                        #删除数据库msf_test
  [+] Dropping database user 'msf'
  [+] Deleting configuration file /usr/share/metasploit-framework/config/
  database.yml                                                #删除配置文件
  [+] Stopping database                                    #停止数据库

  输出信息表示成功删除了数据库msf和msf_test,最后一行信息表示此时数据库服务被停止。
  3.重置数据库
  如果数据库已经初始化过,就不能再使用msfdb init命令进行初始化了,否则将显示如下信息:

root@daxueba:~# msfdb init

  输出信息如下:

[i] Database already started
  [i] The database appears to be already configured, skipping initialization

  输出信息表示数据库已经配置好了,自动跳过初始化过程。
  如果需要再次初始化数据库,就需要执行以下命令:

root@daxueba:~# msfdb reinit

  输出信息如下:

 [i] Database already started                            #删除原有的数据库
  [+] Dropping databases 'msf'
  [+] Dropping databases 'msf_test'
  [+] Dropping database user 'msf'
  [+] Deleting configuration file /usr/share/metasploit-framework/config/
  database.yml
  [+] Stopping database                                    #停用数据库
  [+] Starting database                                    #启用数据库
  [+] Creating database user 'msf'                        #创建数据库

  为新角色输入的口令:
  再输入一遍:

[+] Creating databases 'msf'
  [+] Creating databases 'msf_test'
  [+] Creating configuration file '/usr/share/metasploit-framework/config/
  database.yml'
  [+] Creating initial database schema

  输出信息表示,先删除了原有的数据库然后停用。之后再启用数据库创建新的数据库。
  4.查看数据库状态
  为了快速了解到此时数据库的状态,可以使用msfdb status命令检查服务状态。如果使用msfdb stop命令停用了数据库,查看服务状态时将显示如下信息:

root@daxueba:~# msfdb status

  输出信息如下:

● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; 
       vendor preset: disabled)
     Active: inactive (dead)
  
  4月 03 14:41:01 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
  4月 03 14:41:06 daxueba systemd[1]: Starting PostgreSQL RDBMS...
  4月 03 14:41:06 daxueba systemd[1]: Started PostgreSQL RDBMS.
  4月 03 14:44:13 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
  4月 03 14:44:17 daxueba systemd[1]: Starting PostgreSQL RDBMS...
  4月 03 14:44:17 daxueba systemd[1]: Started PostgreSQL RDBMS.
  4月 03 14:47:44 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
  4月 03 14:48:46 daxueba systemd[1]: Starting PostgreSQL RDBMS...
  4月 03 14:48:46 daxueba systemd[1]: Started PostgreSQL RDBMS.
  4月 03 14:49:22 daxueba systemd[1]: Stopped PostgreSQL RDBMS.   #停用了数据库
  [i] No network service running
  [+] Detected configuration file (/usr/share/metasploit-framework/config/
  database.yml)

  输出信息的倒数第二行表示,此时没有运行的网络服务,最后一行信息表示检测到配置文件,说明初始化数据库时创建数据库生成的配置文件没有被删除。
  如果使用msfdb delete命令删除创建的数据库,查看服务状态时将显示如下信息:

root@daxueba:~# msfdb status

  输出信息如下:

● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; disabled;
     vendor preset: disabled)
     Active: inactive (dead)
  
  4月 03 14:44:13 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
  4月 03 14:44:17 daxueba systemd[1]: Starting PostgreSQL RDBMS...
  4月 03 14:44:17 daxueba systemd[1]: Started PostgreSQL RDBMS.
  4月 03 14:47:44 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
  4月 03 14:48:46 daxueba systemd[1]: Starting PostgreSQL RDBMS...
  4月 03 14:48:46 daxueba systemd[1]: Started PostgreSQL RDBMS.
  4月 03 14:49:22 daxueba systemd[1]: Stopped PostgreSQL RDBMS.
  4月 03 14:56:25 daxueba systemd[1]: Starting PostgreSQL RDBMS...
  4月 03 14:56:25 daxueba systemd[1]: Started PostgreSQL RDBMS.
  4月 03 14:57:38 daxueba systemd[1]: Stopped PostgreSQL RDBMS. #停用了数据库
  [i] No network service running
  [i] No configuration file found

  输出信息最后两行表示既没有运行的网络服务,也没有检查到配置文件。
  如果只使用msfdb start命令启用数据库,而没有使用msfdb init命令初始化数据库,查看服务状态时将显示如下信息:

root@daxueba:~# msfdb status

  输出信息如下:

 ● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; disabled;
     vendor preset: disabled)
     Active: active (exited) since Tue 2018-04-03 15:33:03 CST; 2s ago
    Process: 6845 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 6845 (code=exited, status=0/SUCCESS)
  
  4月 03 15:33:03 daxueba systemd[1]: Starting PostgreSQL RDBMS...
  4月 03 15:33:03 daxueba systemd[1]:Started PostgreSQL RDBMS.  #启用了数据库
  
  COMMAND      PID   USER     FD  TYPE DEVICE     SIZE/OFF  NODE      NAME
  postgres  6811  postgres 3u  IPv6 117845 0t0   TCP   localhost:5432 (LISTEN)
  postgres  6811  postgres 6u  IPv4 117846  0t0   TCP   localhost:5432 (LISTEN)
  
  UID        PID       PPID    C     STIME     TTY    STAT    TIME     CMD
  postgres 6811  1  0  15:32  ?  S  0:00  /usr/lib/postgresql/9.6/bin/postgres -D /
  
  [i] No configuration file found

  输出信息可以看到此时的数据库是启用的,最后一行信息表示没有发现配置文件,说明此时没有进行初始化数据库。
  初始化数据库以后,再次查看服务状态,最后一行信息如下:

[+] Detected configuration file (/usr/share/metasploit-framework/config/
   database.yml)

  5.直接启动Metasploit
  初始化数据库以后就可以启动数据库,并运行Metasploit了。执行命令如下:

root@daxueba:~# msfdb run
  [i] Database already started
                                                    
                   _---------.
               .' #######   ;."
    .---,.    ;@             @@`;   .---,..
  ." @@@@@'.,'@@            @@@@@',.'@@@@ ".
  '-.@@@@@@@@@@@@@          @@@@@@@@@@@@@ @;
     `.@@@@@@@@@@@@        @@@@@@@@@@@@@@ .'
       "--'.@@@  -.@        @ ,'-   .'--"
            ".@' ; @       @ `.  ;'
              |@@@@ @@@     @    .
               ' @@@ @@   @@    ,
                `.@@@@    @@   .
                  ',@@     @   ;           _____________
                   (   3 C    )     /|___ / Metasploit! \
                   ;@'. __*__,."    \|--- \_____________/
                    '(.,...."/
         =[ metasploit v5.0.1-dev                           ]
  + -- --=[ 1851 exploits - 1046 auxiliary - 321 post       ]
  + -- --=[ 541 payloads - 44 encoders - 10 nops            ]
  + -- --=[ 2 evasion                                       ]
  + -- --=[ *- This is Metasploit 5 development branch *-   ]
  msf5 >

1.4.3 连接PostgreSQL数据库

  除了使用msfdb命令,也可以在Metasploit中直接连接数据库。操作过程如下:
  1.查看数据库状态
  在连接数据库之前,需要先了解当前的数据库处于什么状态,可以使用Metasploit子命令db_status来查看数据库状态。
  (1)启动Metasploit,执行命令如下:

root@daxueba:~# msfconsole
  msf5 >

  (2)查看数据库状态,执行命令如下:

msf5 > db_status
  [*] postgresql selected, no connection

  输出信息显示,Metasploit默认选择的是PostgreSQL数据库服务,但是还没有连接到任何数据库。
  2.连接数据库
  此时,就可以使用Metasploit子命令db_connect连接到现有的数据库了。其语法格式有以下两种:
  第一种:

db_connect <user:pass>@<host:port>/<database>

  其中,user表示用户名,pass表示密码,host表示PostgreSQL服务所在的主机IP,port表示监听的端口号,database表示数据库名。
  第二种:

db_connect -y [path/to/database.yml]

  其中,-y表示指定配置文件,path/to/database.yml表示配置文件。
  通过配置文件可以看到数据库的相关信息如下:

production:
    adapter: postgresql
    database: msf
    username: msf
    password: 8CpuBLruzRZ/UrWU5lHeK3142yAmeCh3JQhxXlVM4oQ=
    host: localhost
    port: 5432
    pool: 5
    timeout: 5

  根据数据库信息,使用db_connect命令连接数据库,执行命令如下:

msf5 > db_connect msf:8CpuBLruzRZ/UrWU5lHeK3142yAmeCh3JQhxXlVM4oQ=@127.
  0.0.1:5432/msf
  Connected to Postgres data service: 127.0.0.1/msf

  从输出的信息可以看到,已连接到Postgres数据库服务。
  (3)再次查看数据库状态,执行命令如下:

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

  输出信息表示Metasploit已经成功地连接上了PostgreSQL的msf数据库。
  3.断开数据库连接
  当用户不再需要与当前的数据库连接时,可以使用数据库命令db_disconnect断开连接。
  (1)断开与当前数据库的连接,直接执行命令如下:

msf5 > db_disconnect
  Successfully disconnected from the data service: local_db_service.

  从输出的信息可以看到,已经成功断开了与本地数据库服务的连接。
  (2)查看数据库状态,执行命令如下:

msf5 > db_status
  [*] postgresql selected, no connection

  输出信息表示已成功地断开了连接。

1.4.4 手动创建Metasploit专有用户/数据库

  在1.4.2节中进行数据库初始化时,会默认创建msf和msf_test数据库,并且保存在配置文件database.yml中。如果用户不想查找该文件或该文件丢失了,还可以手动创建数据库账户。
  (1)启动PostgreSQL数据库服务,执行命令如下:

root@daxueba:~# msfdb start
  [+] Starting database

  (2)切换到postgre账户,执行命令如下:

root@daxueba:~# su postgres
  postgres@daxueba:/root$

  输出信息表示成功切换为postgre账户。
  (3)创建数据库账户。例如,创建名为msf2的数据库账户。执行命令如下:

postgres@daxueba:/root$ createuser msf2 -P
   为新角色输入的口令:                                #需要手动输出密码
  再输入一遍:                                    #再次输出密码

  
  输出信息时需要输入数据库账户msf2的密码,这里使用的密码为123456。
  (4)创建数据库,执行命令如下:

postgres@daxueba:/root$ createdb --owner=msf2 msf6

  其中,owner参数指定数据库所有者,这里为msf2;msf6表示数据库名。
  (5)启动Metasploit,执行命令如下:

root@daxueba:~# msfconsole
  msf5 >

  (6)建立连接,执行命令如下:

msf5 > db_connect msf2:123456@127.0.0.1/msf6
  Connected to Postgres data service: 127.0.0.1/msf6

  输出信息表示已经连接到数据库msf6。

1.5 Metasploit用户接口

  Metasploit框架为其基础功能提供了多个用户接口,包括终端、命令行和图像界面等。在最新的版本中,命令行接口已被废弃,其功能都被整合到了MSF终端接口中。除了这些接口,功能程序则提供了对Metasploit框架中内部功能的直接访问。本节将介绍Metasploit的用户接口。

1.5.1 图形界面接口——Armitage

  Armitage组件是Metasploit框架中一个完全交互式的图形化用户接口,由Raphael Mudge所开发。Armitage工具包含Metasploit控制台,通过使用其标签特性,用户可以看到多个Metasploit控制台或多个Meterpreter会话。但是,本书不会深入介绍Armitage接口的使用,而是只讲解和分析Metasploit的输入和输出。用户只要了解了Metasploit框架的实际工作原理,那么这个图形界面工具的使用就很容易了。下面将简单介绍Armitage接口的使用。
  【实例1-5】在Kali Linux中使用Armitage。其中,该工具已经默认安装在Kali Linux中,所以可以直接使用。具体操作步骤如下:
  (1)启动Postgresql数据库服务。在使用Armitage工具前,必须启动Postgresql数据库服务,并且还需要初始化数据库。否则,将无法运行Armitage工具。因为Armitage需要连接到PostgreSQL服务,才可以启动。执行命令如下:

root@Kali:~# service postgresql start            #启动PostgreSQL数据库服务
  root@Kali:~# msfdb init                            #初始化数据库
  Creating database user 'msf'
  为新角色输入的口令: 
  再输入一遍: 
  Creating databases 'msf' and 'msf_test'
  Creating configuration file in /usr/share/metasploit-framework/config/
  database.yml
  Creating initial database schema

  从以上输出信息中,可以看到已经自动创建了msf和msf_test数据库。如果没有初始化数据库,启动Armitage工具后将弹出如图1.27所示的消息框。

image.png

  (2)启动Armitage工具。在Kali桌面依次选择“应用程序”|“漏洞利用工具集”|armitage命令,如图1.28所示。或者在终端运行armitage命令启动Armitage工具,命令如下:

root@kali:~# armitage

  (3)Armitage工具启动后,显示界面如图1.29所示。
  (4)其中显示了连接Metasploit服务的基本信息。单击Connect按钮,弹出如图1.30所示对话框。
  (5)该对话框提示是否要启动Metasploit的RPC服务。单击“是(Y)”按钮,弹出如图1.31所示对话框。
  (6)该对话框中显示了连接Metasploit的一个进度条。当成功连接到Metasploit服务后,将显示如图1.32所示对话框。
  (7)该对话框共有3个部分,这里把它们分别标记为A、B和C。

  • A:显示的是预配置模块。用户可以在模块列表中使用空格键搜索Metasploit提供的模块。
  • B:显示活跃的目标系统,用户可以利用目标系统进行漏洞攻击。
  • C:显示多个Metasploit标签。这样,就可以运行多个Meterpreter命令或控制台会话,并且同时显示。

image.png

image.png

  例如,对目标主机实施Nmap Ping扫描,则依次选择Hosts|Nmap Scan|Ping Scan命令,即可对目标主机进行Ping扫描,如图1.33所示。

image.png

1.5.2 终端接口——Msfconsole

  MSF终端(Msfconsole)是目前Metasploit框架最为流行的用户接口,而且MSF终端是Metasploit框架中最灵活、功能最丰富及支持最好的工具之一。MSF终端提供了一站式的接口,能设置Metasploit框架中几乎每一个选项和配置。用户可以使用MSF终端做任何事情,包括发起一次渗透攻击、装载辅助模块、实施查点、创建监听器,或是对整个网络进行自动化渗透攻击等。

1.6 配置虚拟靶机

  虚拟靶机是指通过软件模拟的具有完整硬件系统功能,并且运行在一个完全隔离环境中的完整计算机系统。当用户成功安装及配置Metasploit后,即可使用该工具实施渗透攻击了。但是,如果要练习渗透攻击,则需要有对应的攻击靶机。为了使用户不因没有太多的物理机来练习渗透而烦恼,本节将介绍配置虚拟靶机的方法。

1.6.1 创建虚拟靶机

  目前,最流行的虚拟机软件有Virtual PC、VirtualBox和VMware Workstation。笔者认为VMware Workstation虚拟机简洁、更容易操作,所以推荐用户使用这款虚拟机软件。下面介绍在VMware Workstation虚拟机软件中创建虚拟靶机的方法。
  其中,VMware Workstation的下载地址是:

http://www.vmware.com/cn/products/workstation/workstation-evaluation。

  下载完成后,双击该软件包即可将VMware安装到当前计算机中。由于VMware的安装简单,直接单击“下一步”按钮就可以,所以这里不介绍该软件的安装过程了。接下来,将演示在VMware上创建虚拟靶机的方法。
  【实例1-6】在VMware中创建虚拟靶机。下面将以Kali Linux系统为例,介绍创建虚拟靶机的方法。具体操作步骤如下:
  (1)启动VMware虚拟机。成功启动后,显示如图1.34所示的页面。

image.png

  (2)用户可以在该页面单击“创建新的虚拟机”图标,创建虚拟靶机;也可以在菜单栏中依次选择“文件”|“新建虚拟机(N)”命令来创建新的虚拟机。单击“创建新的虚拟机”图标后,将进入使用新建虚拟机向导对话框,如图1.35所示。
  (3)这是新建虚拟机的欢迎界面,在其中可以选择新建虚拟机的类型。这里提供了两种方式,分别是“典型(推荐)(T)”和“自定义(高级)(C)”。这两种方式的区别就是,第一种方式的操作比较简单,第二种方式需要手动设置一些信息,如硬件兼容性、处理器和内存等。如果是新手的话,推荐使用“典型(推荐)(T)”方式。而且,关于虚拟机的高级(处理器、内存等)设置,在创建完虚拟机后也可以进行。所以,本例中选择“典型”类型,然后单击“下一步”按钮,进入如图1.36所示对话框。

image.png

  (4)选择安装客户机的来源,即插入安装镜像文件的方法。从对话框中可以看到,默认提供了3种方式。这里选择“稍后安装操作系统(S)”方式,然后单击“下一步”按钮,进入如图1.37所示对话框。
  (5)在该对话框用于选择要安装的操作系统和版本。本例中创建的是Kali Linux(基于Debian)操作系统,所以这里选择Linux操作系统,版本为“Debian 9.x 64位”。然后单击“下一步”按钮,进入如图1.38所示的界面。
  (6)在该对话框中需要为虚拟机创建一个名称,并设置虚拟机的安装位置。设置完成后,单击“下一步”按钮,进入如图1.39所示对话框。
  (7)在其中设置磁盘的容量。对于渗透测试的用户,通常在进行密码暴力破解时,会有一个很大的密码字典。如果密码字典过大的话,占用的空间也大。所以,在有足够大的磁盘时,建议设置的磁盘容量大一点,以避免造成磁盘容量不足。本例中设置为80GB。设置完后,单击“下一步”按钮,进入如图1.40所示对话框。

image.png

  (8)该对话框中显示了新创建的虚拟机的详细信息,单击“完成”按钮,将打开如图1.41所示的窗口。
  (9)其中显示了新创建的Kali Linux虚拟机。接下来就可以在该虚拟机中安装Kali Linux操作系统了。单击“编辑虚拟机设置”,将弹出如图1.42所示对话框。
  (10)为了使用户的虚拟机效率提高,建议设置内存(大于等于2GB)和处理器(2个处理器)。从图1.42的左侧栏中可以看到,用户可以手动设置内存、处理器、硬盘、网络适配器等。单击左侧的选项卡,然后在右侧修改其值。例如,设置该虚拟机的内存,可以直接修改右侧“此虚拟机的内存”文本框中的值,也可以通过鼠标拖动滑块来调整其内存大小。本例中要设置使用ISO镜像文件,所以选择CD/DVD(IDE)选项,然后单击“确定”按钮,进入如图1.43所示对话框。

image.png

image.png

image.png

  (11)在该对话框的右边部分,可以看到在“连接”选项组中有“使用物理驱动器”选项,当物理机中插入了安装镜像光盘时,使用该选项加载镜像光盘;如果没有物理驱动器,则需要使用第二种方式“使用ISO镜像文件(M)”。这里选择“使用ISO镜像文件(M)”单选按钮,然后选择kali安装镜像文件,如图1.44所示。

image.png

  (12)单击“确定”按钮保存设置,将返回图1.41所示对话框。然后,单击“开启此虚拟机”,显示如图1.45所示的安装界面。

image.png

  (13)此时,即可开始安装该操作系统了。由于操作系统的安装不是本书的重点,所以这里不再赘述。

image.png

1.6.2 使用第三方虚拟靶机

  有一些第三方网站提供了可直接使用的虚拟靶机,用户下载后即可直接在VMware虚拟机中使用。下面介绍如何使用第三方创建的几种虚拟靶机。
  1.使用WordPress虚拟靶机
  WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。为了方便用户练习渗透测试WordPress应用程序,Turnkey Linux提供了一个非常好的资源。下面介绍使用WordPress虚拟靶机的方法。
  【实例1-7】以Turnkey Linux系统为例,介绍使用WordPress虚拟靶机的方法。具体操作步骤如下:
  (1)获取WordPress应用程序。其中,WordPress应用程序的下载地址为http://www. turnkeylinux.org。在浏览器中打开该网址后,将打开如图1.46所示的页面。

image.png

  (2)在该页面中列出了许多程序,可以通过向下滚动鼠标进行查看。由于篇幅的原因,图1.46只截取了一小部分内容。在该页面中,用户可以尝试使用各种软件查找漏洞,并通过攻击这些应用程序来测试用户的技术水平。本例选择测试WordPress,向下滚动鼠标可以看到Instant search(及时搜索)对话框,如图1.47所示。

image.png

  (3)在该对话框中输入WordPress,按Enter键,进入如图1.48所示的页面。

image.png

  (4)在该页面可以看到WordPress程序已经找到,此时单击WordPress-Blog Publishing Platform链接进入下载页面,如图1.49所示。

image.png

  (5)在该页面中选择下载ISO映像文件。单击336MB ISO链接,显示如图1.50所示的界面。

image.png

  (6)从中可以看到正在下载Turnkey WordPress系统。如果没有开始下载的话,单击direct link链接即可开始下载。下载的软件包名为turnkey-wordpress-15.1-stretch-amd64.iso。
  (7)将前面下载的ISO文件导入光驱中,即可启动此虚拟机,如图1.51所示。

image.png

  (8)选择Install to hard disk选项,按Enter键,进入如图1.52所示的界面。

image.png

  (9)在该界面中需选择分区的方法。系统提供了3种方法,分别是使用整个磁盘、使用整个磁盘并设置LVM和手动分区。这里选择第一种,然后单击OK按钮,进入如图1.53所示的界面。

image.png

  (10)该界面显示了磁盘的分区表信息,此时提示是否要写入数据。单击Yes按钮,进入如图1.54所示的界面。

image.png

  (11)该界面显示了复制数据的磁盘的进度。复制完后,显示界面如图1.55所示。

image.png

  (12)该界面提示是否安装GRUB引导加载程序的主引导记录。单击Yes按钮,进入如图1.56所示的界面。

image.png

  (13)该界面显示WordPress Turnkey Linux已经安装完成,询问是否现在重新启动系统。单击Yes按钮,进入如图1.57所示的界面。
  (14)在其中为Root用户设置一个密码。输入密码后,单击OK按钮,进入如图1.58所示的界面。

image.png

  (15)此时要求再次为Root用户输入相同的密码,单击OK按钮,进入如图1.59所示的界面。
  (16)为MySQL服务的root用户设置一个密码,设置完后单击OK按钮,进入如图1.60所示的界面。
  (17)再次为MySQL服务的root用户输入相同的密码,然后单击OK按钮,进入如图1.61所示的界面。

image.png

  (18)此时要求为Wordpress的用户admin设置一个密码,输入密码后,单击OK按钮,进入如图1.62所示的界面。

image.png

  (19)再次为Wordpress用户admin输入相同的密码,然后单击OK按钮,进入如图1.63所示的界面。
  (20)该界面提示为Wordpress用户admin设置一个邮件地址,这里使用默认的admin@example.com。然后单击Apply按钮,进入如图1.64所示的界面。

image.png

  (21)该界面显示了初始化Hub服务信息,单击Skip按钮,进入如图1.65所示的界面。
  (22)该界面提示是否确定要跳过设置邮件地址。单击Skip按钮,进入如图1.66所示的界面。
  (23)该界面提示是否现在安装安全更新,单击Install按钮,开始更新该系统。如果不希望更新的话,则单击Skip按钮。系统安装完成后,显示如图1.67所示的界面。

image.png

  (24)该界面显示了WordPress应用服务的相信信息,如Web地址、Web shell地址和端口、Webmin地址、Adminer地址和端口、SSH/SFTP地址和端口等。此时,表明WordPress Turnkey Linux就可以使用了。
  2.使用Metasploitable虚拟靶机
  Metasploitable是一款基于Ubuntu Linux的操作系统。该系统是一个虚拟机系统,从http://sourceforge.net/projects/metasploitable/files/Metasploitable2/ 网站下载解压之后可以直接使用,无须安装。由于基于Ubuntu,所以Metasploitable使用起来十分容易。Metasploitable的作用就是作为攻击用的靶机,所以它存在大量未打补丁的漏洞,并且开放了无数高危端口。下面将介绍如何使用Metasploitable虚拟靶机。
  【实例1-8】安装Metasploitable 2操作系统。具体操作步骤如下:
  (1)下载Metasploitables 2,其文件名为Metasploitable-Linux-2.0.0.zip。
  (2)将下载的文件解压到本地磁盘。
  (3)打开VMwareWorstation,并依次选择“文件”|“打开”命令,打开如图1.68所示对话框。

image.png

  (4)在其中找到Metasploitable 2系统所在的位置,并选择Metasploitable.vmx文件。单击“打开”按钮,将打开如图1.69所示的页面。

image.png

  (5)看到该页面,表示打开了已安装好的虚拟机。单击“开启此虚拟机”按钮或按钮,启动Metasploitable操作系统。成功启动该操作系统后,将显示如图1.70所示的页面。

image.png

  (6)看到该项界面,表示已成功启动Metasploitable操作系统。但是,用户需要登录该系统后才可以进行操作。该操作系统默认的用户名和密码都是msfadmin。登录成功后,将显示如图1.71所示的页面。

image.png

  (7)从显示的信息中可以看到,当前系统是工作在第一个虚拟伪终端tty1,并且登录系统的用户是一个普通用户。如果需要root用户权限时,可以使用sudo命令来实现。
  3.使用OVA虚拟靶机
  某些第三方提供的虚拟靶机是OVA格式的文件,如Xplico服务的虚拟机。下面以Xplico虚拟靶机为例,介绍其在VMware中的使用方法。
  【实例1-9】在VMware中使用OVA虚拟靶机。具体操作步骤如下:
  (1)下载VirtualBox Image的Xplico,下载完成后包名称为Xplico-1.1.0-ubuntu-13.10-i386.ova。
  (2)将下载好的OVA文件导入VMware虚拟机中。启动VMware虚拟机,显示如图1.72所示的界面。

image.png

  (3)单击“打开虚拟机”或者在菜单栏中依次选择“文件(F)”|“打开(O)...”命令,打开如图1.73所示对话框。

image.png

  (4)在其中选择下载好的.ova文件,单击“打开”按钮,弹出如图1.74所示对话框。
  (5)在其中设置导入虚拟机的名称及虚拟机的保存路径。本例中使用默认的名称和路径,单击“导入”按钮,进入如图1.75所示对话框。

image.png

  (6)对话框中显示导入失败,这只是一个警告信息,提示导入的文件“不能通过OVF规格一致性验证”。这是因为VirtualBox和VMware不是完全兼容。单击“重试”按钮,即可成功导入。导入成功后,显示如图1.76所示的页面。

image.png

  (7)单击“开启此虚拟机”,即可启动该虚拟机,如图1.77所示。
  (8)此时输入用户名和密码即可登录该系统。其中,默认的用户名是ubuntu、密码是reverse。登录成功后,显示界面如图1.78所示。

image.png

1.6.3 虚拟机网络

  如果要使用虚拟靶机,则需要为该虚拟机分配一个IP地址。在虚拟机的网络连接中,有3种模式可以用来连接网络,分别是桥接模式、NAT模式和仅主机模式。在设置虚拟机的网络之前,首先介绍下这3种模式的区别。

  • 桥接模式:在该模式中,虚拟机就是一个单独的机子,没有什么其他限制的。虚拟机和主机是通过虚拟VMnet0连接到外界的。有单独的IP,可以随意和互连的每一个主机进行联系。
  • NAT模式:在该模式下,虚拟系统需要借助NAT(网络地址转换)功能,通过宿主主机所在的网络来访问公网。也就是说,使用NAT模式,虚拟系统可把物理主机作为路由器访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息,是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改。因此,该局域网中的其他真实主机和虚拟系统无法进行通信。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,用户不需要进行其他的配置,只要宿主主机能访问互联网即可。
  • 仅主机模式:在这种模式下,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。虚拟机系统和宿主主机系统是可以相互通信的,相当于这两台主机直接通过双绞线互连。

  1.设置虚拟机所使用的网络类型
  当用户了解虚拟机的网络模式后,即可对虚拟靶机进行网络设置了。具体操作步骤如下:
  (1)在VMware的菜单栏中,依次选择“虚拟机”|“设置”命令,打开虚拟机设置界面,如图1.79所示。

image.png

  (2)在左边区域选择“网络适配器”选项,右边区域将显示网络连接设置,如图1.80所示。
  (3)在“网络连接”选项区域中,可以看到虚拟机提供了3种网络连接类型。用户可以根据自己的环境选择对应的网络类型。

image.png

image.png

  2.查看及设置网络类型的参数
  通常情况下,对于攻击靶机来说,渗透测试者无法确定该主机所在的网络。所以,在实施渗透之前,用户需要确定主机的网络,才可以对网络中的靶机进行扫描,判断靶机的IP地址及存在的漏洞等。下面将介绍如何查看及设置网络类型的参数。
  【实例1-10】查看虚拟网络类型的参数。具体操作步骤如下:
  (1)单击Windows左下角的(开始程序)按钮,在弹出的菜单栏中依次选择“所有程序”|VMware|“虚拟机网络编辑器(以管理员身份运行)”命令,打开“虚拟网络编辑器”对话框,如图1.81所示。

image.png

image.png

  (2)在其中可以看到虚拟机3种网络的地址范围。例如,VMnet0(桥接模式)的网络地址段为192.168.86.0;VMnet1(仅主机模式)的网络地址段为192.168.118.0;VMnet8(NAT模式)的网络地址段为192.168.30.0。
  从虚拟网络编辑器的界面,可以看到每种网络类型都对应有设置界面。如果要连接到互联网,通常是使用桥接或NAT模式。对于桥接模式来说,通常情况下是当物理机上有多块网卡时,用户可以手动选择将桥接到哪块网卡,默认是自动选择。这里主要介绍一下NAT模式的设置。具体操作步骤如下:
  (1)在“虚拟网络编辑器”对话框中选择NAT模式,将会看到有一个“NAT设置(S)...”按钮,如图1.83所示。
  (2)在其中可以对该模式的子网IP、掩码和DHCP进行设置。如果要进行高级设置,单击“NAT设置”按钮,进入“NAT设置”对话框,如图1.84所示。
  (3)在其中可以设置该网络的网关、端口转发及一些高级配置选项。当使用这种模式时,在某些时候设置端口转发是非常有必要的。因为使用NAT模式后,将会组成一个单独的网络,是无法与物理主机进行通信的。这时候可以通过设置端口转发来解决这个问题。设置完成后,单击“添加”按钮,打开“映射传入端口”对话框,如图1.85所示。

image.png

image.png

  (4)在该对话框中可设置端口转发。例如,将主机80端口的所有数据,映射到虚拟机192.168.30.138的4444端口,设置效果如图1.85所示。设置完成后,单击“确定”按钮,返回“NAT设置”对话框中,如图1.86所示。
  (5)从中可以看到刚才添加的端口转发地址。此时,连续单击两次“确定”按钮,使配置生效,并退出虚拟网络编辑器界面。

1.7 配置Msfconsole环境

  在使用Metasploit实施渗透攻击时,往往需要同时进行几个任务,执行许多的命令,产生大量的输出信息。为了能够区分这些任务,以及方便后期分析所有输入或输出信息,在实施攻击之前需要适当配置Msfconsole环境。本节讲解如何对Msfconsole环境进行配置。

1.7.1 设置提示内容

  启动Metasploit后,会看到提示内容“msf5>”,这是默认设置。其中,“msf5”为提示信息;“>”为提示符号。Metasploit提供了设置提示的功能。用户可以根据任务需要,对该内容进行修改。例如,在提示内容中显示任务名,以明确当前工作等。
  1.设置提示信息
  设置提示信息需要使用set Prompt命令。该命令的语法格式如下:

set Prompt value

  其中,value为要显示的提示信息,可以是自定义的字符串。
  【实例1-11】将提示信息设置为指定字符串My-msf,执行命令如下:

msf5 > set Prompt My-msf
  Prompt => My-msf
  My-msf >

  最后一行显示My-msf >,表示提示信息由msf5变为了My-msf。
  2.使用格式修饰符
  提示信息不仅可以使用自定义的字符串,还可以使用格式修饰符引入新的信息。Metasploit支持多个格式修饰符,如表1.1所示。

image.png

  【实例1-12】使用格式修饰符设置提示信息。
  (1)在提示信息中显示当前主机的IP地址,执行命令如下:

msf5 > set Prompt %L
  Prompt => %L
  192.168.59.135 >

  最后一行的192.168.59.135为本地的IP地址。
  (2)在提示信息中显示主机名,执行命令如下:

msf5 > set Prompt %H
  Prompt => %H
  daxueba >

  提示信息中的daxueba为主机名信息。
  3.设置时间格式
  当使用格式修饰符%T显示时间戳时,还可以通过set PromptTimeFormat命令设置时间格式。其语法格式如下:

set PromptTimeFormat value

  其中,value为要显示的时间格式。取值可以为%Y、%m、%d、%H、%M、%S中的一个或多个。其中,%Y表示年份,%m表示月份,%d表示天数,%H表示小时,%M表示分钟,%S表示秒数。如果不进行设置,时间的默认显示格式为%Y-%m-%d %H:%M:%S。
  【实例1-13】指定时间格式在提示信息中的显示时间。
  (1)指定时间格式,以“月-日 时:分”格式进行设置,执行命令如下:

msf5 > set PromptTimeFormat %m-%d %H:%M
  PromptTimeFormat => %m-%d %H:%M

  (2)在提示信息中显示时间。执行命令如下:

msf5 > set Prompt %T
  Prompt => %T
  04-11 14:47 >

  最后一行表示当前时间为4月11日14小时47分。
  4.设置提示符
  用户也可以自定义提示符。设置提示符需要使用set PromptChar命令。该命令的语法格式如下:

set PromptChar value

  其中,value为要显示的提示符。
  【实例1-14】自定义提示符,将提示符设置为@。执行命令如下:

msf5 > set PromptChar @
  PromptChar => @
  msf5 @

  最后一行中,提示符由原来的>变为了@。

1.7.2 启用计时功能

  使用模块进行渗透攻击时,往往会持续很长时间。为了了解每一步操作发生的时间,需要具备计时功能。用户可以使用TimestampOutput选项启用该功能。其命令格式如下:

set TimestampOutput value

  其中,value值可以为true和false。如果为true,表示启用计时功能;否则,不启用。默认为false。
  【实例1-15】启用计时功能。
  (1)启用计时功能。执行命令如下:

msf5 > set TimestampOutput true
  TimestampOutput => true

  输出信息表示成功启用了计时功能。
  (2)模块运行后,将会看到相关的时间,如图1.87所示。其中,方框中为显示的时间,可以看到时间是2019年4月10日19点39分25秒时,已成功登录。


image.png

1.7.3 使用日志

  日志可以记录用户输入和输出的信息,便于后期分析。Metasploit提供了两种日志记录方式,一种是记录控制台的输入和输出信息,另一种是记录会话信息。
  1.控制台日志
  控制台日志用来记录Msfconsole发生的输入和输出信息。当用户要完成某项操作时,可能需要执行多个步骤。如果要将每一个步骤及输出信息记录下来,就可以使用控制台日志进行记录。默认情况下,该功能处于关闭状态,需要用户通过set ConsoleLogging命令将其开启。开启后,Metasploit会将信息默认保存在/root/.msf4/logs/console.log文件中。该命令的语法格式如下:

set ConsoleLogging value

  其中,value值可以为true和false。如果为true,表示启用控制台日志记录功能;否则,不启用。默认为false。
  【实例1-16】记录控制台的多个输入/输出信息。
  (1)开启记录控制台的输入和输出功能。执行命令如下:

msf5 > set ConsoleLogging true
  Console logging is now enabled.
  ConsoleLogging => true

  输出信息表示已经成功开启了控制台记录功能。
  (2)执行一条命令,如查看选项,具体如下:

msf5 > show options
  
  Global Options:
  ===============
  
     Option            Current Setting        Description
     ------            ---------------        -----------
     ConsoleLogging    true                  Log all console input and output
     LogLevel              0                       Verbosity of logs (default 0, max 3)
     MinimumRank           0                      The minimum rank of exploits that 
                                              will run
     without                                 explicit confirmation
     Prompt                msf5                    The prompt string
     PromptChar            >                      The prompt character
     PromptTimeFormat    %Y-%m-%d %H:%M:%S    Format for timestamp
     escapes in prompts
     SessionLogging        false                  Log all input and output for 
                                              sessions
     TimestampOutput   false                Prefix all console output with a 
                                              timestamp

  (3)扫描网络中存在的主机。执行命令如下:

msf5 > db_nmap -sP 192.168.59.0/24
  [*] Nmap: Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-10 16:18 CST
  [*] Nmap: Nmap scan report for localhost (192.168.59.1)
  [*] Nmap: Host is up (0.00022s latency).
  [*] Nmap: MAC Address: 00:50:56:C0:00:08 (VMware)
  [*] Nmap: Nmap scan report for localhost (192.168.59.2)
  [*] Nmap: Host is up (0.00024s latency).
  [*] Nmap: MAC Address: 00:50:56:EA:F3:A1 (VMware)
  [*] Nmap: Nmap scan report for localhost (192.168.59.131)
  [*] Nmap: Host is up (0.00042s latency).
  [*] Nmap: MAC Address: 00:0C:29:DB:7E:4A (VMware)
  [*] Nmap: Nmap scan report for localhost (192.168.59.254)
  [*] Nmap: Host is up (0.00030s latency).
  [*] Nmap: MAC Address: 00:50:56:F7:C0:8E (VMware)
  [*] Nmap: Nmap scan report for localhost (192.168.59.135)
  [*] Nmap: Host is up.
  [*] Nmap: Nmap done: 256 IP addresses (5 hosts up) scanned in 2.09 seconds

  步骤(2)和(3)的输入和输出信息都将被记录到控制台日志文件console.log中。
  (4)查看控制台日志文件console.log中记录的信息,如图1.88所示。图中显示了被记录的所有控制台输入和输出信息,方框中为输入信息,下面信息为对应的输出信息。

image.png

  2.会话日志
  会话日志是用来记录成功攻击所建立会话的输出信息。该信息默认保存在/root/.msf4/logs/session文件夹中。启动Metasploit后,默认没有开启该功能,需要使用set SessionLogging命令开启。其语法格式如下:

set SessionLogging value

  其中,value值可以为true和false。如果为true,表示启用会话日志功能;否则,不启用。默认为false。下面开启会话日志功能,执行命令如下:

msf5 > set SessionLogging true

  3.日志详细级别
  为了能够记录更详细的日志信息,用户可以使用set LogLevel命令设置日志详细级别。该命令的语法格式如下:

set SessionLogging value

  其中,value值可以为0、1、2、3。值越高,级别也越高,显示的日志信息越详细。默认级值为0。例如,设置日志详细级别为2,执行命令如下:

msf5 > set LogLevel 2

1.7.4 设置模块默认级别

  模块级别表示模块的可利用程度。Metasploit根据模块使用容易程度和对目标系统的潜在影响程度,对模块进行了分级。每个级别对应一个数值。数值越大,级别越高、可利用的程度越高,反之越低。用户可以根据排序级别,搜索可利用程度高或低的相关模块。模块级别顺序如表1.2所示。

image.png

  在搜索模块时,Rank列会显示每个模块的级别,如图1.89所示。

image.png

  在Metasploit中,如果模块没有设置级别,则默认级别为0。但是这些模块并不一定很难利用。对于这类模块,可以使用MinimumRank选项修改默认级别。例如,设置级别值为300,命令如下:

set MinimumRank 300

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接