介绍
Metasploit由著名黑客H.D.moore开发,后被Rapid7收购,继续开源。
特点:1.简单易用,可安装在Windows、Linux、Macos等不同操作系统中2.漏洞库全面3.开源免费4.模块化设计:
1.Auxiliaries(辅助信息收集模块)
用于信息收集,能够执行漏洞扫描、数据嗅探、指纹识别等
2.Exploit(漏洞利用模块)
漏洞利用指渗透测试人员利用一个或者多个系统、应用或者服务中的安全漏洞进行攻击的行为,流行的渗透攻击技术包括缓冲区溢出、web应用程序攻击以及利用配置错误等,其中包括攻击者或者测试人员针对系统中的漏洞设计的各种POC验证程序,用于破坏系统安全性的攻击代码。每个漏洞都有对应的漏洞利用程序。Metasploit有超过 1700 个漏洞利用程序。
3.Payload(攻击载荷模块)
成功在目标系统上实施漏洞利用后,通过攻击载荷模块在目标系统上运行任意命令或者执行特定代码,同时,攻击载荷模块也能在目标操作系统上执行一些简单的命令,如添加用户账号、密码等。Metasploit有超过 500个有效攻击载荷。
4.Post(后期渗透模块)
在取得目标操作系统远程控制权的基础上,后期渗透模块能够进行一系列攻击动作,如获取敏感信息,实施跳板攻击,提权等。
5.Encoders(编码工具模块)
编码器模块,主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统,免杀功能,以防止相关代码、命令或工具被杀毒软件、防火墙、IDS及类似的安全软件检测出来。
6.evasion:躲避模块,用来生成免杀payload
7 nops:这里主要放着调整shellcode 前置nop指令长度的工具(不理解没关系)
安装
在Windows上安装Metasploit非常简单,直接从官方下载(http://www.metasploit.com/download).安装文件进行安装即可。
在安装的时候要关闭杀毒软件或者将安装目录添加到排除项。否则的话会导致杀毒软件和metasploit冲突,导致安装失败。
在控制面版——区域和语言选项——选择英文(美国)——高级选项卡中选择英文(美国)。因为在安装的时候,会进行检测,如果属于非英文地区会导致安装失败。
如果安装有杀毒软件,会经常提示在metasploit的安装目录下检测到病毒或木马。
添加环境变量将metasploit的bin目录添加到系统变量的Path里面,安装高版本的已经自动加进去了
windows打开方式:cmd里面直接输入msfconsole
或者双击bat文件C:\metasploit-framework\bin\msfconsole.bat
警告错误warning: Win32API is deprecated after Ruby 1.9.1; use fiddle directly instead”以及无法加载“reverse_ssh.rb”模块,具体如下,但是不影响我们使用,Windows上面装metasploit-framework有点报错很正常。
linux下安装Metasploit
在一般的linux中,默认是不安装MSF的。以下是在非kali的Linux下安装MSF步骤
centos安装
使用 wget 或 curl 命令下载 Metasploit 安装程序。
- curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
复制代码
提供安装程序脚本执行位。
然后执行安装程序在 CentOS 8/CentOS 7 上安装 Metasploit Framework。
首先安装ruby环境,因为MSF是用ruby语言编写的。
sudo yum install ruby
sudo yum install -y postgresql-server postgresql
postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
su #切换到root用户
su postgres
#切换到数据库用户
createuser msf -P -S -R -D #创建用户 会提示输入密码
createdb -O msf msf #创建数据库 createdb -O msf msftest
查看数据库列表\l,查看用户列表\du,切换数据库\c DatabaseName查看表\d 退出数据库\q
使用psql msf -U msf -d msf -h localhost -W登录测试,可能由于防火墙等配置无法访问iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
卸载msfyum remove metasploit-framework
/opt/metasploit-framework/embedded/framework/config,编辑数据库配置文件database.yml
改数据库名字账号密码,就是刚刚创建的账号密码
ubuntu安装
先安装一些必备包,包括curl、postgresql和postgresql-contrib
sudo apt install curl postgresql postgresql-contrib
运行以下命令下载 Metasploit 安装程序脚本并将其另存为 msfinstall:
$ curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
sudo ./msfinstall
Metasploit 需要一个数据库来存储渗透测试的结果和结果,例如目标主机数据、漏洞利用、系统日志、收集的数据和其他信息。为此,我们安装了 Postgresql(在步骤 1 中)。现在,我们需要通过以下命令启动其服务:
sudo systemctl start postgresql
通过以下命令创建并初始化数据库:
msfdb init
然后它会询问您是否要初始化网络服务。如果要初始化,请键入“yes”并按Enter。否则,请键入“no”。如果您已初始化 Web 服务,系统将要求您提供 Web 服务帐户用户名和密码。您可以输入任何用户名和密码,也可以通过按Enter键接受默认输入。
要验证 Metasploit 是否已连接到数据库,请在 msfconsole 中运行以下命令:
db_status
更新:apt update command”或“msfupdate”
卸载
sudo apt remove metasploit-framework
你可能会遇到这个情况:please run msfdb as a non-root user,命令行模式下root用户登不了postgres,但是可以用 postgres用户登陆
登陆 su - postgres
进入shell 执行 psql
新建用户 CREATE USER XXX WITH PASSWORD 'XXXX';
新建数据库 CREATE DATABASE XXXXX;
vim /opt/metasploit-framework/embedded/framework/config/database.yml
或/usr/share/metasploit-framework/config/database.yml
修改一下内容:
database: msf_dev
username: msf_dev
password: msf_dev
初始化msf的db进入msfconsole,输入db_connect可以看到很多连接方式
Examples:
db_connect user@metasploit3
db_connect user:pass@192.168.0.2/metasploit3
db_connect user:pass@192.168.0.2:1500/metasploit3
db_connect -y [path/to/database.yml]
连接postgres db_connect xxx:xxxx@127.0.0.1:3000/xxx
输入 db_status 查看连接状态
使用
本实验使用kali Linux自带的metasploit,kali以前的更新方式msfupdate现在已经弃用,用apt update; apt install metasploit-framework
kali的连接pgsql就非常简单了,首先确保pgsql服务已经启动,systemctl status postgresql
然后msfinit初始化
然后直接启动msf,查看就连接上了
kali下面msf的核心模块都放在/usr/share/metasploit-framework/modules/这个目录下
exploits:/usr/share/metasploit-framework/modules/exploits目录下全是攻击时的利用代码
plugins:这个模块需要用load加载,主要提供数据库连接插件 和 各种要用到的插件。
tools:包含一些有用的脚本和零散的工具。
scripts:目录里面存放都是meterpreter利用的脚本。
db:数据放在这个目录里
data:存放使用到的文件,比如密码字典、meterpreter、passivex、vnc、dlls等工具和一些用户接口代码,msfweb和一些其他模块用到的数据文件
lib:库文件都保存在这个目录里
paylodas:三种payload
singles:all-in-one,各种功能都有的payload,占用空间比较大
stagers:目标计算机内存有限时,先传输一个较小的payload用于建立连接
stages:利用stager建议的连接,下载后续payload
渗透步骤
- search xxx #搜索某个漏洞
- use xxx #使用某个漏洞利用模块
- show options #查看配置选项
- set payload #配置攻击载荷
- exploit #执行渗透攻击
- set #设置选项参数
- session: 操作msf session会话命令
- session -i id: 使用该session
- session -l: 列出所有session id
- 如果需要退出删除session会话可以使用session -k 会话号,同样使用-K可以删除全部session会话
- sessions -v #以详细模式列出会话
- sessions -u #在许多平台上将shell升级到meterpreter会话
- set ExitOnSession false #可以在接收到session后继续监听端口,保持侦听
- 后台持续监听
- 1.msf6 exploit(multi/handler) >exploit -j -z
- 使用exploit -j -z 可以在后台持续监听,-j为后台任务,-z为持续监听
- 2.
- msf6 > handler -H 192.168.1.1 -P 1122 -p windows/meterpreter/reverse_tcp
- show options #显示可选选项
- auxiliary #显示所有辅助模块
- exploits #显示所有漏洞利用模块
- payloads #显示所有有效载荷
- targets #显示所有可用目标
- advanced #显示更多高级选项
- encoders #显示可用编码器列表
-
- unset [Module Options] #清除Module Options
- set/unset – 设置/禁用模块中的某个参数
- setg/unsetg – 设置/禁用适用于所有模块的全局参数
- jobs: 查看msf后台监听选项
- jobs -K: 删除全部监听
- jobs -k 监听id: 删除指定监听
- 其他命令: cd, pwd, ls等等就等同于终端命令大部分都可以直接使用
- Ctrl+z 把会话放到后台
- Ctrl+c 结束会话
复制代码
1.创建工作区
默认工作区是default,输入workspace查看
输入workspace -h查看帮助
workspace List workspaces
workspace [name] Switch workspace
-a, --add Add a workspace.
-d, --delete Delete a workspace.
-D, --delete-all Delete all workspaces.
-h, --help Help banner.
-l, --list List workspaces.
-r, --rename Rename a workspace.
-S, --search Search for a workspace.
-v, --list-verbose List workspaces verbosely.列出详细工作区
2.使用db_import导入外部工具数据,运行db_import查看支持的文件类型
msf6 > db_import
Usage: db_import [file2...]
Filenames can be globs like *.xml, or **/*.xml which will search recursively
Currently supported file types include:
Acunetix
Amap Log
Amap Log -m
Appscan
Burp Session XML
Burp Issue XML
CI
Foundstone
FusionVM XML
Group Policy Preferences Credentials
IP Address List
IP360 ASPL
IP360 XML v3
Libpcap Packet Capture
Masscan XML
Metasploit PWDump Export
Metasploit XML
Metasploit Zip Export
Microsoft Baseline Security Analyzer
NeXpose Simple XML
NeXpose XML Report
Nessus NBE Report
Nessus XML (v1)
Nessus XML (v2)
NetSparker XML
Nikto XML
Nmap XML
OpenVAS Report
OpenVAS XML (optional arguments -cert -dfn)
Outpost24 XML
Qualys Asset XML
Qualys Scan XML
Retina XML
Spiceworks CSV Export
Wapiti XML
1.导入nmap扫描结果,先完成扫描,将结果保存为XML文档
nmap -Pn -A -oX report 192.168.x.x
2.执行db_impo