ChainScript: nowy RAT w Node.js ukrywa serwer C2 w smart kontrakcie blockchain - Security Bez Tabu

ChainScript: nowy RAT w Node.js ukrywa serwer C2 w smart kontrakcie blockchain

Cybersecurity news

Wprowadzenie do problemu / definicja

ChainScript to wcześniej nieudokumentowany zdalny trojan dostępu typu RAT napisany w Node.js, który wyróżnia się nietypowym sposobem odnajdywania infrastruktury dowodzenia i kontroli. Zamiast korzystać ze stałego adresu serwera C2 zapisanym w konfiguracji, malware pobiera aktywny adres komunikacyjny ze smart kontraktu działającego w sieci blockchain.

Taki model znacząco utrudnia blokowanie infrastruktury i wydłuża żywotność kampanii. Dla zespołów bezpieczeństwa oznacza to konieczność odejścia od wyłącznego polegania na klasycznych wskaźnikach kompromitacji, takich jak pojedyncze domeny, adresy IP czy hashe plików.

W skrócie

ChainScript był rozpowszechniany w kampanii wykorzystującej technikę ClickFix, w której ofiara była nakłaniana do uruchomienia polecenia pobierającego złośliwy instalator MSI podszywający się pod legalne oprogramowanie. Po uruchomieniu próbka wdraża własne środowisko Node.js, uruchamia skrypty pośrednie w PowerShell i VBScript oraz osadza mechanizmy trwałości w profilu użytkownika.

  • malware wykorzystuje Node.js jako główne środowisko wykonawcze,
  • adres serwera C2 pobierany jest ze smart kontraktu w sieci Polygon,
  • komunikacja z operatorem odbywa się przez WebSocket,
  • operatorzy mogą dynamicznie zmieniać backend bez aktualizacji samej próbki.

Kontekst / historia

Nowoczesne kampanie malware coraz częściej odchodzą od sztywno zdefiniowanej infrastruktury sieciowej na rzecz elastycznych metod ukrywania parametrów operacyjnych. Jednym z takich podejść jest EtherHiding, czyli używanie zasobów opartych o blockchain do publikowania danych potrzebnych złośliwemu oprogramowaniu.

W przypadku ChainScript technika ta została wykorzystana w praktycznym scenariuszu operacyjnym. Smart kontrakt pełni rolę publicznie dostępnego resolvera, z którego agent pobiera aktualny adres panelu operatorskiego. To rozdzielenie kodu malware od faktycznej infrastruktury C2 utrudnia szybką neutralizację kampanii i daje atakującym większą elastyczność.

Zagrożenie wpisuje się również w szerszy trend nadużywania JavaScriptu i Node.js w łańcuchach infekcji. Atakujący chętnie korzystają z natywnych mechanizmów systemu Windows, działają w kontekście użytkownika i minimalizują konieczność uzyskiwania uprawnień administracyjnych.

Analiza techniczna

Łańcuch infekcji rozpoczyna się od socjotechniki typu ClickFix. Ofiara otrzymuje instrukcję uruchomienia polecenia inicjującego proces msiexec.exe, który pobiera i uruchamia złośliwy pakiet MSI. Instalator podszywa się pod znane aplikacje, co ma zmniejszyć czujność użytkownika.

Po instalacji malware rozmieszcza swoje komponenty w katalogach nazwanych w sposób przypominający legalne elementy środowiska Microsoft. Następnie ukryty skrypt PowerShell uruchamia plik VBScript, a ten startuje dołączone środowisko Node.js. Całość działa w obrębie profilu użytkownika, dzięki czemu próbka może osiągnąć uruchomienie i trwałość bez potrzeby eskalacji uprawnień.

Główny komponent operacyjny odpowiada za konfigurację, zbieranie informacji o systemie, wyszukiwanie serwera C2, utrzymywanie komunikacji oraz wykonywanie poleceń. Najciekawszym elementem jest jednak mechanizm odpytywania smart kontraktu w sieci Polygon, z którego malware pobiera aktualny adres serwera WebSocket.

Odebrana wartość jest weryfikowana pod kątem prefiksu ws:// lub wss://, następnie tymczasowo buforowana i używana jako bieżący punkt komunikacyjny z infrastrukturą operatora. W praktyce oznacza to, że przestępcy mogą przenieść backend na nowy host i zmienić wyłącznie dane zwracane przez kontrakt, bez konieczności rekompilacji czy ponownej dystrybucji złośliwego kodu.

Po zestawieniu połączenia ChainScript zapewnia funkcje typowe dla pełnoprawnego RAT-a.

  • interaktywna powłoka,
  • odczyt i zapis plików,
  • wykonywanie zrzutów ekranu,
  • dostarczanie dodatkowych ładunków,
  • uruchamianie dowolnego kodu JavaScript,
  • mechanizm aktualizacji,
  • funkcja usuwania śladów.

Zidentyfikowano także rozpoznanie środowiska pod kątem portfeli kryptowalutowych, choć bez wyspecjalizowanego modułu do bezpośredniej kradzieży kluczy czy seed phrase.

Konsekwencje / ryzyko

Najpoważniejsze ryzyko związane z ChainScript wynika z połączenia rozbudowanych możliwości operatorskich z infrastrukturą odporniejszą na proste blokowanie. Nawet jeśli obrońcy zidentyfikują i zablokują aktualny serwer WebSocket, operator może szybko wskazać nowy adres za pomocą zmiany danych w smart kontrakcie.

Dla organizacji rodzi to kilka praktycznych problemów. Czas przydatności tradycyjnych IOC jest krótszy niż w klasycznych kampaniach, wykrywanie oparte wyłącznie na reputacji domen i adresów IP może być niewystarczające, a obecność procesów Node.js nie zawsze jest traktowana jako podejrzana w środowiskach, gdzie tego typu narzędzia są legalnie używane.

Ryzyko operacyjne należy uznać za wysokie, ponieważ malware daje możliwość pełnej kontroli nad stacją roboczą użytkownika. Taki dostęp może zostać wykorzystany do kradzieży danych, dostarczenia kolejnych ładunków, ruchu bocznego, sabotażu lub przygotowania gruntu pod ransomware.

Rekomendacje

W odpowiedzi na zagrożenie organizacje powinny położyć większy nacisk na analizę zachowań procesów i relacji między nimi, a nie tylko na statyczne wskaźniki sieciowe. Szczególnie ważne jest monitorowanie nietypowych sekwencji uruchomień, takich jak msiexec.exe inicjujący skrypty pośrednie, wscript.exe lub cscript.exe uruchamiające komponenty pomocnicze oraz node.exe wykonujący kod z niestandardowych ścieżek w profilu użytkownika.

  • wdrożyć reguły detekcyjne dla procesów Node.js uruchamianych poza standardowymi ścieżkami deweloperskimi,
  • monitorować wykonywanie kodu JavaScript z katalogów tymczasowych i przestrzeni użytkownika,
  • analizować połączenia do publicznych punktów RPC blockchain oraz późniejsze sesje WebSocket,
  • ograniczać uruchamianie nieautoryzowanych instalatorów MSI i skryptów,
  • stosować kontrolę aplikacji oraz egzekwować polityki ograniczające wykonywanie kodu z profilu użytkownika,
  • monitorować użycie PowerShell i VBScript,
  • szkolić użytkowników pod kątem technik ClickFix i podobnych scenariuszy socjotechnicznych.

Pomocne będzie również zmapowanie legalnych zastosowań Node.js w organizacji. Pozwala to szybciej odróżnić aktywność deweloperską od anomalii mogących świadczyć o infekcji.

Podsumowanie

ChainScript pokazuje, że współczesne malware rozwija się nie tylko pod względem funkcji końcowych, ale również sposobów ukrywania i utrzymywania infrastruktury C2. Wykorzystanie smart kontraktu blockchain jako mechanizmu rozwiązywania aktywnego adresu serwera dowodzenia znacząco utrudnia blokowanie kampanii i wymusza większy nacisk na telemetrię procesową oraz analizę zachowań.

To przykład zagrożenia, w którym tradycyjne IOC pozostają użyteczne, ale nie mogą być jedynym filarem obrony. Skuteczniejsza strategia wymaga łączenia monitoringu procesów, skryptów, połączeń do usług blockchain, ruchu WebSocket oraz nietypowych instalacji MSI uruchamianych w kontekście użytkownika.

Źródła

  1. https://securityaffairs.com/199471/malware/chainscript-the-rat-that-hides-its-command-server-inside-a-blockchain-contract.html
  2. https://blackpointcyber.com/blog/chainscript-a-node-js-rat-hiding-its-command-server-in-a-smart-contract/
  3. https://attack.mitre.org/techniques/T1059/
  4. https://attack.mitre.org/techniques/T1105/
  5. https://attack.mitre.org/techniques/T1071/001/