O całej koncepcji narzędzi LOLBIN pisaliśmy już przy okazji tego artykułu. W skrócie narzędzia te to pliki binarne podpisane przez system Windows, które przy złych intencjach mogą być wykorzystane do pobrania lub wykonania złośliwego kodu. Są to więc programy na co dzień wykorzystywane przez użytkowników systemu Windows. Mogą też posłużyć atakującym do dostarczenia malware. Nie powinno się korzystać z programów określanych jako LOLBIN w sieciach korporacyjnych, gdyż po prostu uznawane są za „podatne”.

Dziś omówimy program CyberGhost VPN, którego podatność została opisana przez autora – Nasreddine Bencherchali.

Ciekawostka – odkrywca podatności zgłosił ten problem bezpośrednio do zespołu pomocy technicznej, który przekazał sprawę dalej. Ostatecznie producent nie uznał tego za poważną lukę, więc żądna poprawka nie jest dostępna do momentu powstania tego artykułu.

Autor zaczął oczywiście od pobrania najnowszej wersji CyberGhost VPN i zainstalowania jej oraz monitorowania wszystkich działań aplikacji w tle. Na pierwszy rzut oka nic nie wyglądało podejrzanie, dopóki nie przyjrzano się strukturze katalogów i plikom binarnym w środku.

Pierwszy, który przykuł uwagę, nazywa się wprost „PeLauncher.exe” i domyślnie znajduje się w „C:\Program Files\CyberGhost 8\Applications\VPN”.

Sprawdzając plik za pomocą PEStudio, widzimy, że jest napisany w „.NET”, co oznacza, że można podejrzeć jego „źródło”. Sprawdzenie ujawnia tylko jedną klasę o nazwie „Program” z interesującą funkcją główną, która przyjmuje względną ścieżkę do pliku binarnego o nazwie „Dashboard.exe” i wykonuje ją z argumentem „!!launch” i dowolnym argumentem, który przekazujemy.

„Dashboard.exe” to plik binarny odpowiedzialny za wyświetlanie pulpitu nawigacyjnego CyberGhost VPN widocznego poniżej:

Z tą wiedzą można nadużywać „Dashboard.exe” w następujący sposób:

  • Wybrać dowolny plik binarny i zmienić jego nazwę na „Dashboard.exe”.
  • Utworzyć dwa zagnieżdżone foldery „A” i „B” i skopiować „PeLauncher.exe” do środka.
  • Skopiować fałszywy „Dashboard.exe” dwa poziomy niżej od „PeLauncher”.
  • Wykonać następujące polecenie. (Arg jest niezbędny do pominięcia sprawdzenia widocznego w źródle) – „PeLauncher.exe [ARG]”
  • Przygotowany plik binarny zostanie wykonany jako dziecko „PeLauncher”. (Zauważ, że plik binarny musi wiedzieć, jak obsłużyć „!!launch” i argument, który podamy, ponieważ są one zakodowane na stałe).

Na początek to bardzo dużo, ponieważ PeLauncher.exe jest podpisaną binarką, jak widzimy poniżej:

Argumnent „!!launch” wydaje się być równie ciekawy, więc autor zdecydował się pójść o krok dalej.

Analizując teraz plik „Dashboard.exe” dostarczony z oprogramowanie również widzimy, że jest on napisany w „.NET”. To sprawia, że życie jest nieco łatwiejsze do przeprowadzenia analizy. Szukanie wpisów po znakach „!!” dało rezultat.
Okazało się, że można użyć argumentu „!!launch”, aby uruchomić dowolny plik wykonywalny, określając go w następujący sposób:

– Dashboard.exe !!launch [Ścieżka do pliku binarnego]

Test został wykonany na programie Kalkulator:

Dodatkowo również jest podpisany i zweryfikowany:

Powyższy przykład pokazuje, że złośliwe działanie w systemie niekoniecznie musi być wiązać się z wcześniejszą kompromitacją stacji roboczej czy konta użytkownika. Program CyberGhost VPN z pewnością wykorzystywany jest przez wielu nieświadomych zagrożenia użytkowników, a użycie powyższej metody może nie spowodować podniesienia żadnego alarmu w systemach bezpieczeństwa.

Warto znać takie techniki i być świadomym istnienia plików LOLBIN. Obrazki i POC pochodzi z bloga.

Podziel się z innymi tym artykułem!