Metasploit/使用Metasploit
本章涵盖使用Metasploit 框架的各个方面。
目前,它是一组各种主题的集合。稍后可以对其进行组织以更有意义。
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 对数据库中的主机执行漏洞利用。 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