跳转到内容

Metasploit/使用Metasploit

来自维基教科书,开放世界中的开放书籍


使用 Metasploit

[编辑 | 编辑源代码]

本章涵盖使用Metasploit 框架的各个方面。

目前,它是一组各种主题的集合。稍后可以对其进行组织以更有意义。

使用 MSF 数据库

[编辑 | 编辑源代码]

MSF 允许将扫描/利用结果存储到数据库中以进行持久存储。该框架支持使用相当多的数据库后端。这些包括

  • Postgres
  • MySQL
  • SQLite (版本 2 和 3)

注意:除了 SQLite(将数据库存储为文件外),您需要在开始使用框架中的数据库之前启动 Postgres 或 MySQL 的数据库服务器。

注意:在使用框架与 postgres 时,需要编辑 /etc/postgresql/x.x/main/pg_hba.conf。将默认的“ident”方法替换为“trust”,如下所示

注意:在使用 postgres 之前,您必须运行$ gem install postgres。这需要与 postgresql-dev 一起提供的头文件。

注意:为了获得最佳效果,请使用 msfconsole 从框架与数据库交互。

数据库存储在 MSF 中非常有用。自动利用中最有趣/热门的主题(请根据 H.D. 的博客写一篇关于该主题的优秀文章)与数据库集成一起使用。MSF 可以使用 nmap 扫描主机并将它们的状态存储在数据库中,然后自动尝试利用 MSF 中存在针对这些漏洞的漏洞。辅助模块(例如扫描仪)也可以利用数据库来存储不同的状态信息。您甚至可以编写自己的快速扫描仪并让它将信息存储在底层数据库中。

数据库模式

[编辑 | 编辑源代码]

MSF 为其使用创建了一个数据库。该数据库包含以下表格

  • hosts
  • creds
  • refs
  • services
  • vulns
  • vulns_refs
  • clients
  • events
  • loots
  • report_templates
  • reports
  • tasks
  • users
  • workspaces

您可以在 RDBMS 中轻松查看此数据库的结构。

注意:文件夹 framework_base_folder/data/sql/ 包含用于为给定 RDBMS 创建数据库表的 SQL 文件。

加载数据库模块

[编辑 | 编辑源代码]

在开始使用 MSF 的数据库之前,应加载相应的数据库模块。对于 msfconsole,这可以通过使用load db_* 命令来加载。以下是使用 MSF 的 MySQL 示例会话。

root # /etc/rc.d/rc.mysqld start     # start mysql database server
Starting mysqld daemon with databases from /var/lib/mysql
root # msfconsole                    # start MSF console interface

                     888                           888        d8b888
                     888                           888        Y8P888
                     888                           888           888
88888b.d88b.  .d88b. 888888 8888b. .d8888b 88888b. 888 .d88b. 888888888
888 "888 "88bd8P  Y8b888       "88b88K     888 "88b888d88""88b888888
888  888  88888888888888   .d888888"Y8888b.888  888888888  888888888
888  888  888Y8b.    Y88b. 888  888     X88888 d88P888Y88..88P888Y88b.
888  888  888 "Y8888  "Y888"Y888888 88888P'88888P" 888 "Y88P" 888 "Y888
                                           888
                                           888
                                           888


       =[ msf v3.1-dev
+ -- --=[ 191 exploits - 104 payloads
+ -- --=[ 17 encoders - 5 nops
       =[ 35 aux

msf > load db_mysql                 # Load mysql database plugin
[*] Successfully loaded plugin: db_mysql
msf > help                          # New set of commands are available now
MySQL Database Commands
=======================

    Command        Description
    -------        -----------
    db_connect     Connect to an existing database ( user:pass@host:port/db )
    db_create      Create a brand new database ( user:pass@host:port/db )
    db_destroy     Drop an existing database ( user:pass@host:port/db )
    db_disconnect  Disconnect from the current database instance

创建数据库

[编辑 | 编辑源代码]

您第一次要使用 MSF 的数据库时,需要创建它。创建数据库后,您只需在将来的会话中连接到它即可使用它。db_create 命令允许您创建一个新数据库。让我们创建一个名为metasploit 的数据库

# Connect and user root with password mydbpass and create a database named metasploit
msf > db_create root:mydbpass@localhost/metasploit
[*] Database creation complete (check for errors)

创建数据库后,它将自动可用于该会话。对于后续会话,您可以连接到 db。

使用现有数据库

[编辑 | 编辑源代码]

如果您之前已创建过数据库,则在将来的会话中,您只需使用db_connect 命令即可使用它。

root # msfconsole                    # start MSF console interface

                     888                           888        d8b888
                     888                           888        Y8P888
                     888                           888           888
88888b.d88b.  .d88b. 888888 8888b. .d8888b 88888b. 888 .d88b. 888888888
888 "888 "88bd8P  Y8b888       "88b88K     888 "88b888d88""88b888888
888  888  88888888888888   .d888888"Y8888b.888  888888888  888888888
888  888  888Y8b.    Y88b. 888  888     X88888 d88P888Y88..88P888Y88b.
888  888  888 "Y8888  "Y888"Y888888 88888P'88888P" 888 "Y88P" 888 "Y888
                                           888
                                           888
                                           888


       =[ msf v3.1-dev
+ -- --=[ 191 exploits - 104 payloads
+ -- --=[ 17 encoders - 5 nops
       =[ 35 aux

msf > load db_mysql                                  # Load mysql database plugin
[*] Successfully loaded plugin: db_mysql
msf > db_connect root:mydbpass@localhost/metasploit  # Connect to the metasploit db
msf > help                 # Upon connecting to a database, we get another new set of commands
Database Backend Commands
=========================

    Command               Description
    -------               -----------
    db_add_host           Add one or more hosts to the database
    db_add_port           Add a port to host
    db_autopwn            Automatically exploit everything
    db_hosts              List all hosts in the database
    db_import_nessus_nbe  Import a Nessus scan result file (NBE)
    db_import_nmap_xml    Import a Nmap scan results file (-oX)
    db_nmap               Executes nmap and records the output automatically
    db_services           List all services in the database
    db_vulns              List all vulnerabilities in the database
msf > db_hosts
[*] Host: localhost

断开数据库连接

[编辑 | 编辑源代码]

如果您在会话中觉得不再需要使用数据库,则只需在“MSF>”提示符下发出db_disconnect 命令即可断开数据库连接。


删除数据库

[编辑 | 编辑源代码]

当您只想删除具有所有数据的数据库(也许您已经备份了数据,现在正在释放磁盘空间)时,您可以使用db_destroy 命令来完成此操作。

msf > db_destroy root:mydbpass@localhost/metasploit  # Drops the metasploit database
Database "metasploit" dropped

数据库后端命令

[编辑 | 编辑源代码]

当 MSF 连接到数据库时,另一组称为数据库后端命令 的命令可用。这些命令允许您对主机执行端口扫描,检查活动主机、它们正在运行的服务以及这些服务所具有的漏洞。

   Command               Description                                         
   -------               -----------                                         
   db_add_host           Add one or more hosts to the database               
   db_add_note           Add a note to host                                  
   db_add_port           Add a port to host                                  
   db_autopwn            Automatically exploit everything                    
   db_hosts              List all hosts in the database                      
   db_import_nessus_nbe  Import a Nessus scan result file (NBE)              
   db_import_nmap_xml    Import a Nmap scan results file (-oX)               
   db_nmap               Executes nmap and records the output automatically  
   db_notes              List all notes in the database                      
   db_services           List all services in the database                   
   db_vulns              List all vulnerabilities in the database

最重要的一个,也是最常使用的,是db_nmap,它将运行具有指定命令的 nmap 并在数据库中记录发现结果。

msf> db_nmap -sS -P0 192.168.1.1
...

要列出扫描中找到的主机...

msf> db_hosts
[*] Time: Wed Mar 05 15:18:48 -0500 2008 Host: 192.168.1.1

要列出主机扫描中发现的可能的漏洞...

msf> db_vulns
...

db_autopwn

[编辑 | 编辑源代码]

您可以使用另一个数据库后端命令db_autopwn 对数据库中的主机执行漏洞利用。 H.D. Moore 在该功能添加到框架时写了关于它的内容——更多信息。

msf > db_autopwn
[*] Usage: db_autopwn [options]
       -h         Display this help text
       -t         Show all matching exploit modules
       -x         Select modules based on vulnerability references
       -p         Select modules based on open ports
       -e         Launch exploits against all matched targets
       -s         Only obtain a single shell per target system (NON-FUNCTIONAL)
       -r         Use a reverse connect shell
       -b         Use a bind shell on a random port
       -I [range] Only exploit hosts inside this range
       -X [range] Always exclude hosts inside this range
华夏公益教科书