Od pojedynczego serwera dostępnego z Internetu do przejęcia kontroli nad krytycznymi systemami. Raport Operation Highland ujawnia kulisy wieloletniej operacji, w ramach której atakujący krok po kroku rozszerzali swoją obecność w infrastrukturze ofiary. Efektem było przejęcie systemów, które zgodnie z założeniami miały pozostawać odseparowane od sieci publicznej, oraz mechanizmów uwierzytelniania odpowiedzialnych za kontrolę dostępu do nich.

Velvet Ant

O grupie powiązanej z Chinami, operującej pod nazwą Velvet Ant pisaliśmy już w 2024 roku przy okazji ujawnienia luki w oprogramowaniu Cisco NX-OS. Grupa specjalizuje się w długotrwałych operacjach szpiegowskich, których celem jest utrzymanie dostępu do zaatakowanych środowisk przez możliwie długi czas oraz pozyskiwanie cennych informacji.

Podobny schemat działania został opisany w najnowszym raporcie firmy Sygnia. Badacze ujawnili szczegóły wieloletniej operacji nazwanej Operation Highland, której najstarsze ślady sięgają 2016 roku. Atakujący nie tylko uzyskali dostęp do infrastruktury organizacji, ale również przejęli kontrolę nad jej elementami krytycznymi. Ten wieloletni, wieloetapowy atak pozwolił Velvet Ant na uzyskanie dostępu do systemów nieposiadających bezpośredniego połączenia z Internetem.

Schemat ataku

Pierwszym etapem operacji było uzyskanie dostępu do jednego z systemów wystawionych do Internetu. Następnie atakujący wykorzystali przejętą część infrastruktury do przemieszczania się pomiędzy kolejnymi segmentami sieci i stopniowego rozszerzania swoich uprawnień. Z czasem uzyskali dostęp do kolejnych serwerów pośredniczących, co ostatecznie pozwoliło im na dotarcie do krytycznych zasobów organizacji, w tym systemów bez bezpośredniego połączenia z Internetem.

Jednym z kluczowych elementów operacji było przejęcie kontroli nad mechanizmami uwierzytelniania wykorzystywanymi w systemach Linux. Velvet Ant modyfikował komponenty PAM (Pluggable Authentication Modules), odpowiedzialne za uwierzytelnianie użytkowników oraz elementy OpenSSH wykorzystywane do zdalnego logowania. Dzięki temu atakujący mogli przechwytywać dane uwierzytelniające, utrzymywać dostęp do systemów oraz skutecznie ukrywać swoją aktywność.

Przyjrzyjmy się teraz poszczególnym etapom operacji.

Etap 1: Uzyskanie dostępu

Operacja rozpoczęła się od przejęcia jednego z serwerów dostępnych z Internetu. Po uzyskaniu dostępu atakujący zainstalowali na nim narzędzia pozwalające na zdalne wykonywanie poleceń oraz utrzymanie stałej komunikacji z kontrolowaną przez siebie infrastrukturą.

Jednym z wykorzystanych narzędzi był zmodyfikowany GS-Netcat – program umożliwiający utworzenie zaszyfrowanego kanału komunikacji pomiędzy przejętym serwerem a serwerem kontrolowanym przez atakujących. Dzięki niemu operatorzy Velvet Ant mogli zdalnie wykonywać polecenia i zarządzać przejętym systemem bez konieczności bezpośredniego logowania się do niego.

Aby utrudnić wykrycie aktywności, narzędzie zostało ukryte pod nazwą auditdb, przypominającą komponent systemowy, i umieszczone w katalogu /usr/sbin, który w systemach Linux przeznaczony jest do przechowywania narzędzi administracyjnych oraz plików binarnych. Proces maskował swoją obecność na liście uruchomionych procesów, podszywając się pod jeden z wątków jądra systemu Linux.

Rysunek 1: Fragment pliku jednostki systemd wykorzystywanego do utrzymania dostępu. Usługa podszywająca się pod komponent Chrome uruchamia narzędzie „auditdb” znajdujące się w katalogu /usr/sbin. Źródło: sygnia.co

Grupa zadbała również o utrzymanie dostępu po ponownym uruchomieniu serwera. W zależności od wykorzystywanej wersji systemu Linux dodawano własne wpisy do mechanizmów odpowiedzialnych za automatyczne uruchamianie usług podczas startu systemu, dzięki czemu złośliwe oprogramowanie było uruchamiane po każdym restarcie.

Równolegle do GS-Netcat, który zapewniał zdalny dostęp, Velvet Ant wdrożył również własny mechanizm tunelowania ruchu sieciowego, oparty o serwer SOCKS5 Proxy. Jego zadaniem było przekazywanie ruchu pomiędzy przejętymi systemami a kolejnymi hostami znajdującymi się wewnątrz organizacji.

Z perspektywy systemów wewnętrznych połączenie nie pochodziło od atakującego z Internetu, lecz od wcześniej skompromitowanego hosta, znajdującego się już w sieci organizacji. Takie podejście znacząco ułatwiało przemieszczanie się pomiędzy kolejnymi segmentami infrastruktury i utrudniało identyfikację źródła aktywności.

Badacze ustalili, że narzędzie zostało napisane w języku Perl i stanowiło zmodyfikowaną wersję projektu ssspl, publicznie dostępnego w serwisie GitHub. Zadbano również o utrudnienie jego wykrycia. Proces podszywał się pod usługę Samba, wykorzystując nazwę smbd -D, która podczas analizy listy procesów mogła wyglądać całkowicie normalnie.

Etap 2: Przemieszczanie się w głąb infrastruktury

Kolejnym celem było przemieszczanie się w kierunku lepiej chronionych segmentów sieci, odseparowanych od Internetu. W tym celu Velvet Ant wykorzystał skompromitowany serwer Nginx do utworzenia ścieżki komunikacji prowadzącej w głąb infrastruktury organizacji.

Nginx, będący jednym z najpopularniejszych serwerów WWW, został skonfigurowany w taki sposób, aby przekazywać żądania kierowane pod określony adres URL do drugiego, również skompromitowanego serwera znajdującego się wewnątrz sieci. Na tym serwerze atakujący zmodyfikowali konfigurację Nginx, tak aby przekazywała otrzymane żądania do procesu FastCGI, obsługiwanego przez narzędzie fcgiwrap.

Mechanizm FastCGI uruchamiał przygotowany wcześniej przez Velvet Ant plik binarny o nazwie „uptime”. Jego zadaniem było zestawianie połączeń SSH z systemami znajdującymi się w sieci infrastruktury krytycznej oraz uruchamianie na nich skryptów umożliwiających pozyskiwanie poufnych informacji.

Rysunek 1: Konfiguracja Nginx kierująca żądania do usługi FastCGI (fcgiwrap). Mechanizm ten był wykorzystywany do uruchamiania przygotowanego przez atakujących pliku binarnego „uptime”. Źródło: sygnia.co

W efekcie Velvet Ant stworzył łańcuch komunikacji pozwalający na wykonywanie poleceń w odseparowanym segmencie sieci za pomocą zwykłych żądań HTTP, bez konieczności bezpośredniego połączenia z systemami infrastruktury krytycznej.

Etap 3: Przejęcie kontroli nad mechanizmami uwierzytelniania

Swoistym zwieńczeniem całej operacji było przejęcie kontroli nad mechanizmami uwierzytelniania wykorzystywanymi w systemach Linux. Dzięki temu Velvet Ant mógł nie tylko utrzymywać dostęp do przejętych serwerów, ale również pozyskiwać dane logowania kolejnych użytkowników i administratorów.

Modyfikacja PAM

Na zaatakowanych systemach badacze wykryli zmodyfikowane wersje biblioteki pam_unix.so, będącej częścią mechanizmu PAM (Pluggable Authentication Modules). To właśnie PAM odpowiada za weryfikację danych logowania w wielu usługach działających pod kontrolą systemu Linux.

Zmodyfikowane biblioteki pozwalały atakującym na ominięcie standardowego procesu uwierzytelniania poprzez wykorzystanie specjalnie przygotowanego hasła. W niektórych przypadkach zmodyfikowana biblioteka przechwytywała również nazwy użytkowników i hasła wpisywane podczas normalnych prób logowania, zapisując je w ukrytym pliku /usr/sbin/.ssh.log.

Rysunek 1: Fragment kodu zmodyfikowanej biblioteki pam_unix.so odpowiedzialnej za uwierzytelnianie użytkowników. W przypadku podania hasła zakodowanego przez atakujących mechanizm pomijał standardową procedurę weryfikacji poświadczeń. Źródło: sygnia.co

Przejęcie kontroli nad PAM było szczególnie niebezpieczne, ponieważ mechanizm ten znajduje się poniżej poziomu pojedynczych aplikacji. Oznacza to, że każda usługa korzystająca z PAM mogła zostać objęta działaniem złośliwej modyfikacji bez widocznych oznak kompromitacji.

Zmodyfikowany OpenSSH

Równolegle Velvet Ant modyfikował komponenty pakietu OpenSSH odpowiedzialnego za zdalne logowanie do systemów Linux. Wykryto zmodyfikowane wersje programów ssh, sshd oraz scp, wyposażone w dodatkowe funkcje.

Zmodyfikowane komponenty przechwytywały dane uwierzytelniające wykorzystywane podczas logowania oraz zapisywały je w zaszyfrowanej formie na zaatakowanych systemach. Dodatkowo część wariantów rejestrowała polecenia wpisywane przez użytkowników w trakcie sesji SSH, umożliwiając atakującym obserwowanie działań administratorów niemal w czasie rzeczywistym.

Badacze odkryli również mechanizm pozwalający operatorom Velvet Ant na wyłączenie własnego systemu rejestrowania aktywności podczas pracy na przejętych hostach. Dzięki temu mogli korzystać ze zmodyfikowanych narzędzi bez pozostawiania śladów.

W niektórych wariantach zmodyfikowany program scp posiadał również możliwość wyłączenia mechanizmów SELinux po uruchomieniu z uprawnieniami root. Pozwalało to na ominięcie części zabezpieczeń systemu i zwiększało swobodę działania atakujących na przejętych serwerach.

Dodatkowa warstwa utrzymania dostępu

Oprócz modyfikacji PAM i OpenSSH grupa dodawała własne klucze publiczne do plików authorized_keys na przejętych serwerach. Dzięki temu operatorzy Velvet Ant mogli logować się do systemów bez używania haseł, wykorzystując odpowiadające im klucze prywatne. Stanowiło to dodatkowy mechanizm utrzymania dostępu, działający niezależnie od pozostałych modyfikacji.

Odzyskanie kontroli

Przywrócenie środowiska do stanu sprzed ataku nie było wcale takie proste. Problem nie polegał wyłącznie na usunięciu złośliwych plików czy wyłączeniu pozostawionych przez atakujących mechanizmów utrzymania dostępu.

Velvet Ant przejął kontrolę nad krytycznymi elementami odpowiedzialnymi za uwierzytelnianie użytkowników. Oznaczało to, że każda nieprawidłowo przeprowadzona próba przywrócenia oryginalnych komponentów mogła doprowadzić do utraty dostępu do systemów lub zakłócenia działania infrastruktury krytycznej.

Z tego powodu przed rozpoczęciem właściwych działań naprawczych przygotowano kontrolowane środowisko testowe, w którym sprawdzano cały proces przywracania systemów. Dopiero po jego zweryfikowaniu wdrożono opracowane procedury w środowisku produkcyjnym.

Jak się chronić

Operation Highland pokazuje, że komponenty odpowiedzialne za uwierzytelnianie powinny być traktowane jako jedne z najważniejszych elementów infrastruktury. W środowiskach Linux dotyczy to przede wszystkim mechanizmu PAM oraz komponentów OpenSSH, natomiast w środowiskach Windows podobną rolę pełni między innymi proces LSASS, odpowiedzialny za obsługę uwierzytelniania użytkowników.

Kompromitacja takich elementów może pozwolić atakującym nie tylko na utrzymanie dostępu do systemów, ale również na przechwytywanie danych uwierzytelniających oraz ukrywanie swojej aktywności przez długi czas. Dlatego szczególną uwagę warto poświęcić monitorowaniu integralności kluczowych plików i procesów odpowiedzialnych za logowanie użytkowników.

Raport zwraca również uwagę na znaczenie rozwiązań EDR, monitorowania aktywności administratorów, kontroli integralności kluczowych plików systemowych oraz stosowania uwierzytelniania wieloskładnikowego wszędzie tam, gdzie jest to możliwe.

Podsumowanie

Operation Highland pokazuje, że skuteczny atak nie zawsze wymaga wykorzystywania zaawansowanych podatności czy nieznanego wcześniej malware. W tym przypadku kluczową rolę odegrało połączenie kilku technik pozwalających na stopniowe przemieszczanie się pomiędzy segmentami sieci, przejmowanie kolejnych systemów oraz ukrywanie swojej aktywności w legalnych komponentach systemu Linux.

Najbardziej niepokojącym elementem całej operacji było przejęcie kontroli nad mechanizmami uwierzytelniania. Modyfikacja PAM, OpenSSH oraz wykorzystanie własnych kluczy SSH sprawiły, że Velvet Ant dysponował wieloma niezależnymi sposobami utrzymania dostępu do środowiska.

Przypadek ten pokazuje również, z jaką cierpliwością działają grupy prowadzące zaawansowane operacje szpiegowskie. Według ustaleń badaczy najstarsze ślady aktywności Velvet Ant sięgały 2016 roku. W połączeniu z technikami ukrywania obecności pozwoliło to atakującym przez wiele lat pozostawać wewnątrz infrastruktury organizacji i stopniowo rozszerzać zakres przejętej kontroli.