Użycie Outlooka jako klienta C2 do uruchamiania poleceń na uprawnieniach "Local System" w Windows. Wystarczy wysłać odpowiednią wiadomość e mail!

kapitanhack.pl 2 lat temu

Dzisiaj mamy dla Was infosecową bombę – opisujemy nowy, nietypowy wektor ataku na organizacje, wykorzystujący aplikację kliencką Microsoft Outlook, która posłuży do wykonywania dowolnych poleceń po stronie komputera z Windows. Wystarczy wysłać do użytkownika odpowiednią wiadomość e-mail ze złośliwym załącznikiem (zwykłym plikiem tekstowym), a w tle systemu operacyjnego zostaną z niego automatycznie przeczytane i uruchomione komendy!

UWAGA! W opisywanym ataku użytkownik nie musi wykonywać żadnych aktywności, ponieważ podczas automatycznego odbierania poczty przez aplikację Outlook system operacyjny Windows uruchomi polecenia z załącznika w tle. Co ważne, polecenia zostaną uruchomione na najwyższych uprawnieniach w systemie – czyli jako „NT AUTHORITY\LOCAL SYSTEM”.

Microsoft Outlook jako klient serwera C2. Jak to możliwe?

Jak wykorzystać Microsoft Outlook do uruchamiania dowolnych poleceń na komputerze? Z pewnością wielu z Was łapie się w tym momencie za głowę i zadaje sobie pytanie – jak to możliwe? Odpowiedź jest prosta – przy pewnych warunkach (opisujemy je poniżej) jest to możliwe i w dodatku pokochacie lub znienawidzicie tę metodę. Nadmienimy, iż jedną z podobnych (Follina) pokazywaliśmy tutaj.

Na wstępie warto wspomnieć, iż nowy wektor ataku przedstawił na swoim Twitterze Grzegorz Tworek. Zamieścił też krótkie demo pokazujące, jak dzięki zarejestrowanej dodatkowej biblioteki „iFilter” w Windows można przeprowadzić atak z wykorzystaniem systemu Outlook na komputerze, przesyłając na niego maila z załącznikiem zawierającym linie kodu, które automatycznie uruchomią się po dotarciu na skrzynkę odbiorczą adresata.

Źródło: Twitter (@0gtweet)

Jak się okazuje, winowajcą jest tutaj pewna usługa – Windows Search, indeksująca na dysku wszystkie pliki, które potrafi rozpoznać i przeczytać lub takie, jakie jej wskażemy dzięki specjalnej biblioteki.

W ostatniej części powyższego zdania zawarte jest całe sedno ataku. Chodzi tutaj o mechanizm (API) w Windows zwany iFilter.

iFilter – co to takiego?

iFilter to udokumentowane przez Microsoft proste API napisane w C (filter.h), które skanuje dokumenty w poszukiwaniu tekstu i adekwatności (zwanych także atrybutami). Wyodrębnia z nich fragmenty tekstu, odfiltrowując osadzone formatowanie i zachowując informacje o położeniu tekstu. Wyodrębnia również fragmenty wartości, które są adekwatnościami całego dokumentu lub jego dobrze zdefiniowanych części. IFilter zapewnia podstawę do tworzenia aplikacji wyższego poziomu, takich jak indeksery dokumentów i przeglądarki niezależne od aplikacji.

Dzięki iFilter, wpisując dowolne słowo w wyszukiwarce Windows, otrzymujemy w wyniku dokumenty, maile lub inne dane, które wcześniej zostały odnalezione i zindeksowane. Warto dodać, iż system operacyjny Windows jest dostarczany z kilkoma standardowymi iFilterami (filtrami indeksującymi). iFiltry te umożliwiają szybkie wyszukiwanie pełnotekstowe w plikach Microsoft Office, dokumentach tekstowych, plikach HTML i innych.

Biblioteki dla iFilters oferują także inni producenci oprogramowania, między innymi Adobe, Corel czy Foxit. Dzięki nim Windows wie, jak ma je indeksować.

Grzegorz wpadł na pomysł, aby napisać własny iFilter i zainstalować go w systemie Windows. Stworzył w ten sposób backdoor, który oczekuje pojawienia się określonego typu pliku. W momencie gdy ten się pojawi, Windows automatycznie przeczyta go i uruchomi z niego kod. Najprostszym sposobem na przesłanie takiego pliku na komputer użytkownika jest poczta, ale musi on mieć zainstalowany ów dodatkowy iFilter.

Opis ataku z wykorzystaniem iFilter oraz Outlooka

UWAGA W celu przeprowadzenia ataku należy zarejestrować w Windows dodatkową bibliotekę iFilter. Aby było to możliwe, musimy posiadać uprawnienia administracyjne do systemu.

Poniżej prezentujemy wektor ataku na system Windows z wykorzystaniem specjalnej biblioteki iFilter oraz Microsoft Outlook do przesłania ładunku (pliku tekstowego z komendami do uruchomienia).

Krok 1. Tworzymy specjalną bibliotekę iFilter

Stworzona przez Grzegorza biblioteka nosi nazwę „MalFilter.dll”. W swoim kodzie zawiera informację, iż musi rozpoznawać pliki o rozszerzeniu „*.filtertest”. interesujące przykłady na to, jak utworzyć taką bibliotekę, znajdziecie tutaj.

Krok 2. Wgrywamy bibliotekę iFilter na komputer użytkownika i instalujemy ją w systemie.

Poleceniem „regsvr32.exe MalFilter.dll” wgrywamy do systemu bibliotekę. Wykonujemy to na uprawnieniach administratora systemu. Od tej pory system monitoruje pojawiające się pliki o rozszerzeniu *.filtertest.

Źródło: Twitter (@0gtweet)

Krok 3. Tworzymy plik tekstowy z payload do uruchomienia zewnętrznego polecenia

Tworzymy plik tekstowy o nazwie „command1.filtertest”. Rozszerzenie pliku jest tak naprawdę dowolne, ponieważ zdefiniuje je i rozpozna wgrana wcześniej do systemu biblioteka iFilter.

W pliku tekstowym zamieszczamy polecenie „net.exe”, dzięki którego z linii wiersza poleceń Windows (cmd.exe) będziemy chcieli utworzyć w systemie użytkownika „hacker”. Przykład takiego polecenia zamieszczamy poniżej.

Źródło: Twitter (@0gtweet)

Krok 3. Przesyłamy plik pocztą do wskazanego użytkownika

Załączamy utworzony plik do wiadomości e-mail i przesyłamy do użytkownika. Pamiętajmy, iż na jego komputerze musi być zainstalowany powyższy iFilter, ponieważ bez niego system nie będzie mógł rozpoznać pliku, a w szczególności zaindeksować jago treści.

Źródło: Twitter (@0gtweet)

Krok 5. Automatyczne uruchomienie payload na komputerze

Po automatycznym odebraniu maila przez aplikację Outook na stacji użytkownika wykona się polecenie z pliku tekstowego.

Źródło: Twitter (@0gtweet)

Dzieje się tak, ponieważ system Windows przeczytał i zaindeksował załącznik w mailu.

Grzegorz udowadnia to poprzez uruchomione w tle narzędzie DebugView.

Źródło: Twitter (@0gtweet)

W zaznaczonych na powyższym ekranie na czerwono linijkach widzimy, jak w tle systemu operacyjnego ma miejsce proces „SearchFilterHost.exe” (na uprawnieniach Local System) i dodatkowo uruchamiane jest polecenie (linijka z pliku tekstowego).

Demo opisanego ataku możecie zobaczyć na poniższym nagraniu, którego autorem jest Grzegorz.

It waited on my backlog for months, even if I smelled some C2 potential within iFilters.
And now I can confirm it, and I LOVE it!
It's enough to send an email with attachment to a victim, to execute commands as LOCALSYSTEM. pic.twitter.com/D4ACPefwsy

— Grzegorz Tworek (@0gtweet) November 2, 2022

Jak sobie radzić z problemem?

W przypadku opisywanego ataku istotną kwestią jest zainstalowana w systemie specjalna biblioteka iFilter, która umożliwia utworzenie w nim backdoora i uruchomienie dowolnego polecenia z pliku podczas procesu jego indeksowania. Z pewnością wyszukanie niestandardowych iFiltrów będzie wyzwaniem, ale możemy spróbować napisać własne polecenie sprawdzające konkretne wpisy w rejestrze systemowym. Na przykład iFilter dla PDF znajduje się w lokalizacji: „HKEY_CLASSES_ROOT\.pdf\PersistentHandler”. Można też użyć narzędzia FiltReg.

Idź do oryginalnego materiału