MS Outlook as C2 client via IFilter

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, że jedną z podobnych (Follina) pokazywaliśmy tutaj.

Na wstępie warto wspomnieć, że nowy wektor ataku przedstawił na swoim Twitterze Grzegorz Tworek. Zamieścił też krótkie demo pokazujące, jak za pomocą zarejestrowanej dodatkowej biblioteki „iFilter” w Windows można przeprowadzić atak z wykorzystaniem oprogramowania 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.

atak z wykorzystaniem Outlooka i biblioteki iFilters
Ź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 za pomocą 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 właściwoś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ą właściwoś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ć, że 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, lecz 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ę, że musi rozpoznawać pliki o rozszerzeniu „*.filtertest”. Ciekawe 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.

Wgrywanie biblioteki IFilter
Ź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”, za pomocą 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.

Tworzenie pliku tekstowy o nazwie „command1.filtertest”.
Ź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, że 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.

Wysyłanie pliku do użytkownika
Ź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.

Wykonanie polecenia 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.

Potwierdzenie w narzędziu 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.

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.

Podziel się z innymi tym artykułem!