Home Grown Red Team: od stacji roboczej do kontrolera domeny z Havoc C2 i Microsoft EDR

Witamy spowrotem! W tym wpisie na blogu ponownie zmierzymy się z Microsoft Defender For Endpoint EDR, aby sprawdzić, czy możemy przejść z kontekstu o niskiej integralności do administratora domeny i uzyskać zdalne wykonanie kodu na kontrolerze domeny!
W ciągu ostatnich kilku miesięcy zagłębiałem się w różne techniki, aby zobaczyć, co możemy zrobić z narzędziami open source w stosunku do jednego z najpopularniejszych EDR.
W tym blogu omówię kilka typowych koncepcji uzyskiwania dostępu do kontrolera domeny, ale z różnymi technikami, które znalazłem.
Obejmują one:
- Obejście UAC z niestandardowym plikiem binarnym UACME
- Ruch poprzeczny z CrackMapExec i SharpWMI.exe
- Sesja przechodzi do Przymierza
- DCSync z Przymierzem
Spustoszenie C2
Omówiłem już, jak uruchomić Havoc. Jeśli go nie znasz, możesz sprawdzić mój post Pobieranie systemu w systemie Windows 11 za pomocą Havoc C2 .

Z moim C2 w górę, zamierzam wygenerować trochę kodu powłoki i uruchomić go za pomocą mojego własnego narzędzia kodu powłoki, Harriet.

Teraz, gdy mam plik binarny FUD, mogę go przenieść na pierwszą stację roboczą w moim środowisku AD.

Zgodnie z moimi poprzednimi postami mamy tutaj bardzo małe środowisko AD. Ze względu na czas i miejsce na blogu, zaczniemy od znanego DA w średnim kontekście.
Przenoszę mój implant do Win11-Blue.blueteam.local i odzyskuję nasz początkowy sygnał nawigacyjny.


Sprawdźmy EDR i zobaczmy, czy początkowa egzekucja się udała.

Wszyscy cisza! Dobra! Możemy iść dalej. Wykonanie prostej komendy „whoami” pokazuje nam, że Danny jest w grupie DA.

Uruchomienie SharpUp mówi nam, że możemy wykonać obejście UAC, aby uzyskać uprawnienia administratora.

Niestandardowy plik binarny UACME
W poprzednim poście użyłem metody ComputerDefaults, aby uzyskać administratora, ale jest ona obecnie przechwytywana przez usługę Defender For Endpoint. Chcemy uzyskać DA bez alertów, więc zrobimy coś skandalicznego: zrzucimy coś na dysk!
Na moim komputerze programistycznym Windows 11 sklonowałem projekt UACME.

klon git https://github.com/hfiref0x/UACME.git
Ładujemy plik sln i mamy załadowany nasz projekt.

Po skompilowaniu plik binarny UACME nosi nazwę Akagi, więc zaczniemy dostosowywać pliki znalezione w tej sekcji eksploratora rozwiązań.

Rozwijając projekt, widzimy kilka sekcji na pliki nagłówkowe, zasoby itp.
Możemy rozpocząć nasz proces od szybkiego wyszukiwania i zastępowania typowych ciągów znalezionych w projekcie.

Niektóre inne struny, które możemy wymienić, znajdują się poniżej:
Akagi
UACME
ZAK
ŁADUNEK
Jeśli teraz spróbujemy zbudować rozwiązanie, zakończy się to niepowodzeniem.

Nie może znaleźć pliku ikony, ponieważ nie zmieniliśmy jego nazwy. Musimy więc zmienić jego nazwę w folderze Akagi.

Gdy zmienimy nazwę ikony, zbuduje się pomyślnie.

Teraz, jeśli spojrzymy na szczegóły skompilowanego pliku binarnego, zobaczymy, że istnieją pewne wymowne właściwości.

Robimy szybkie wyszukiwanie APT 92 w naszym projekcie, znajdujemy plik Resources.rc z tymi opisami.

Przeglądając pliki źródłowe, widzimy folder metod.

Każdy z tych plików metod reprezentuje różne obejścia UAC, które mają być użyte w skompilowanym pliku binarnym. Jeśli przejdziemy przez każdą z tych metod, zobaczymy różne komentarze z nazwami metod. Aby ominąć Defendera i inne silniki antywirusowe, musimy usunąć te komentarze z każdego pliku metody.

Usunięcie wszystkich komentarzy z plików metod może zająć dużo czasu, ale powinniśmy to zrobić tylko raz, zanim plik binarny nie zostanie przechwycony przez AV.
A po usunięciu wszystkich komentarzy z pliku i ponownej kompilacji otrzymujemy nasz plik binarny. Uruchamiając go przeciwko AntiScan.me, widzimy, że ominęliśmy kilku dostawców antywirusowych.

Skanując go w programie Windows Defender, widzimy, że nie został wykryty.

Pobieranie administratora
Wracając do Havoc, musimy tylko przesłać plik binarny do naszego celu.

Sprawdźmy w EDR firmy Microsoft, czy już nas złapali.

Nie wygląda na to. Kontynuujmy!
Z naszym plikiem binarnym UACME na celu, musimy wykonać go za pomocą naszej metody. Powershell i polecenia powłoki mogą nas złapać, więc użyjmy WMI. Na szczęście SharpWMI pozwala nam uruchamiać polecenia w pamięci.
Ale najpierw potrzebujemy metody dla systemu Windows 11.

59 wygląda dobrze. Wywołajmy naszą metodę za pomocą SharpWMI.
dotnet inline-execute /home/user/Desktop/SharpWMI.exe action=exec nazwa_komputera=WIN11-BLUE.blueteam.local command=”C:\Users\danny\Downloads\Acaji.exe 59 C:\Users\danny\Downloads \Inj3c13.exe”
I odzyskujemy nasz sygnał administratora!

Sprawdzając ponownie nasz EDR, nie mamy żadnych detekcji.

Świetny! Teraz, gdy ustaliliśmy, że możemy uzyskać wykonanie kodu bez wyzwalania EDR, możemy użyć tej samej metody, aby przejść przez domenę do kontrolera domeny.
UWAGA: Oczywiście nie zrobiłbyś tego w rzeczywistej aplikacji. Mamy DA, więc moglibyśmy po prostu synchronizować DC, ale chcemy zobaczyć, czy możemy się poruszać bez zmiany EDR.
Ruch boczny
Tak więc na WIN11-BLUE mieliśmy możliwość wgrania naszego pliku binarnego, ale jak to zrobić, gdy nie mamy beacona na DC?
W poprzednim poście udowodniłem, że możemy to zrobić za pomocą Powershell i zaplanowanego zadania. W tym opracowaniu użyjemy innej metody. Załadujemy nasz plik binarny do celu za pomocą CrackMapExec, a następnie wywołamy go za pomocą SharpWMI.
Przygotowanie do naszego ataku
Więc dla tego POC będziemy jeszcze raz udawać, że w DC jest ściśle tajny dokument, który musimy usunąć. Pierwszą rzeczą, którą musimy zrobić, to uzyskać hasło lub skrót dla naszego użytkownika Danny'ego.
Ponieważ jesteśmy administratorami, możemy użyć kilku metod, aby uzyskać skróty, ale najłatwiejszym dla mnie jest przekazanie sesji do Covenant i użycie ich polecenia DCsync.
Tak więc w Covenant konfigurujemy nasz plik shellcode i pobieramy go do naszego lokalnego systemu.

Dla uproszczenia zmienię nazwę pliku na grunt.bin, a następnie przepuszczę go przez Harriet. Spowoduje to zaszyfrowanie go, abyśmy mogli ominąć EDR.

Teraz, gdy mamy plik binarny, możemy użyć Donut, aby przekształcić go z powrotem w kod powłoki.

Ostatnią częścią jest wstrzyknięcie go do procesu naszego pliku wykonywalnego Havoc.

Po pomyślnym wstrzyknięciu kodu powłoki przechodzimy do Covenant i sprawdzamy nowego pomruka.

Rzućmy okiem na EDR.

Nic tu nie widać! Możemy iść dalej!
Wracając do Covenant, możemy użyć komendy DCsync i zdobyć hash Danny'ego. A po kilku sekundach Danny i domena są już własnością.

W porządku, spoko. Pokazaliśmy więc, że możemy uzyskać hash prokuratora okręgowego. Ale co z nim zrobić, gdy już go masz? Pamiętaj, że celem naszej egzekucji nie było uzyskanie kontroli nad domeną, ale zdobycie tajnego dokumentu na DC.
Przechodzenie do kontrolera domeny
Mamy plik wykonywalny FUD, który musimy przesłać do DC. W tym celu użyjemy CrackMapExec. Oto więc nasze polecenie.
crackmapexec smb 192.168.1.9 -u danny -H 83c4be1a3fd33a182dafc8bd3bf53d00 -d blueteam.local — plik put /home/kali/Desktop/Inj3c13.exe \\WINDOWS\\TEMP\\25N0v3.exe
Używamy modułu SMB i mamy adres IP do kontrolera domeny. Następnie używamy nazwy użytkownika danny i wprowadzamy jego skrót NTLM. Mamy domenę, a następnie używamy polecenia „-put-file” ze ścieżką do naszego pliku wykonywalnego FUD, a następnie katalogu, do którego chcemy upuścić plik na DC.
Spróbujmy.

I tak po prostu, nasz plik wykonywalny jest na DC! Teraz musimy to nazwać. Możemy użyć SharpWMI.exe, aby zrobić to w pamięci, tak jak zrobiliśmy to z WIN11-BLUE.
A teraz mamy latarnię o wysokiej integralności na DC!

Znajdźmy łup!
Po krótkim wyliczeniu znajdujemy go w folderze Dokumenty Danny'ego.

Pobierzmy to.

Zanim się przyjrzymy, skontaktujmy się z EDR.

Do czego to w ogóle służy?
A oto łup!

W porządku! Więc na zakończenie tego artykułu porozmawiajmy trochę o tym, co zrobiliśmy i jak to zrobiliśmy.
Zaczęliśmy od sygnału nawigacyjnego o niskiej integralności i zwiększyliśmy nasze uprawnienia, tworząc dostosowany plik binarny UACME, który przeszedł przez Windows Defender i Windows Defender for Endpoint.
Następnie wywołaliśmy plik binarny UACME z SharpWMI.exe w pamięci, aby uzyskać bardziej ukryte podejście do Powershell lub poleceń powłoki.
Gdy nasze uprawnienia zostały zmaksymalizowane, przenieśliśmy sesję do Covenant, aby użyć polecenia DCsync w celu uzyskania skrótu NTLM prokuratora okręgowego. Następnie użyliśmy CrackMapExec do przesłania sygnału nawigacyjnego na DC i wywołaliśmy go za pomocą SharpWMI.exe.
Jak więc to środowisko zostało sfałszowane dla naszego sukcesu? Usługa WMI nie jest domyślnie włączona dla kontrolerów domeny, serwerów z systemem Windows ani stacji roboczych z systemem Windows 11.
Jednak w nowoczesnym środowisku korporacyjnym większość tych komputerów będzie miała włączoną usługę WMI, aby ułatwić administratorom systemu rozwiązywanie problemów. Rozpoczęliśmy również naszą podróż na koncie prokuratora okręgowego, ale to było tylko po to, aby ułatwić trochę pisanie.
Ważne jest również, aby zrozumieć, że nie mieliśmy żadnych innych AV zainstalowanych w systemach. Jeśli pamiętasz, BitDefender uznał nasz plik binarny UACME za szkodliwy. Bądź więc ostrożny, używając go na prawdziwym penteście.
Jeśli spodobał Ci się ten wpis i chcesz zobaczyć, co jeszcze robię, śledź mnie tutaj lub na Twitterze @assume_breach