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.
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.
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.
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.
Krok 5. Automatyczne uruchomienie payload na komputerze
Po automatycznym odebraniu maila przez aplikację Outook na stacji użytkownika wykona się polecenie z pliku tekstowego.
Dzieje się tak, ponieważ system Windows przeczytał i zaindeksował załącznik w mailu.
Grzegorz udowadnia to poprzez uruchomione w tle narzędzie DebugView.
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.