Skip to content
Encyklopedia ataków | | 6 min czytania

FrostyGoop - pierwszy malware wykorzystujący Modbus TCP do sabotażu systemów ciepłowniczych

FrostyGoop - analiza malware ICS wykorzystującego Modbus TCP do ataku na ogrzewanie we Lwowie (styczeń 2024). Chronologia, mechanizm, MITRE ATT&CK ICS T0855.

FrostyGoopModbus TCPICSMITRE ATT&CKT0855T0831bezpieczeństwo OTinfrastruktura krytyczna
FrostyGoop - pierwszy malware wykorzystujący Modbus TCP do sabotażu systemów ciepłowniczych

Lwów, 22 stycznia 2024 roku. Temperatura na zewnątrz spada poniżej minus dwudziestu stopni Celsjusza. W ponad 600 budynkach mieszkalnych obsługiwanych przez miejskie przedsiębiorstwo ciepłownicze Lwiwteploenerho kaloryfery powoli stygną. Operatorzy systemu ciepłowniczego widzą na ekranach, że woda w obiegu jest gorąca - tyle że to nieprawda. Sterowniki ENCO, które zarządzają procesem grzewczym, raportują fałszywe pomiary. W rzeczywistości do budynków pompowana jest zimna woda. Mieszkańcy dzwonią na infolinię, ale nikt nie rozumie, co się dzieje - bo wszystkie wskaźniki wyglądają normalnie.

To nie była awaria techniczna. To był FrostyGoop - dziewiąty w historii malware zaprojektowany specjalnie do ataku na systemy sterowania przemysłowego. I pierwszy, który wykorzystał protokół Modbus TCP do przeprowadzenia sabotażu.

Kontekst - Modbus bez zabezpieczeń

Protokół Modbus powstał w 1979 roku. Zaprojektowano go do komunikacji między sterownikami PLC w izolowanych sieciach przemysłowych. Nie przewidziano w nim żadnych mechanizmów uwierzytelniania ani szyfrowania - każde urządzenie, które wyśle prawidłowo sformatowane polecenie na port 502, zostanie obsłużone bez pytania o tożsamość. Przez dekady to nie stanowiło problemu, bo sieci przemysłowe były fizycznie odseparowane od świata zewnętrznego. Ale z biegiem lat coraz więcej sterowników uzyskiwało łączność IP - a wraz z nią stawało się dostępnych z internetu.

FrostyGoop wykorzystał tę fundamentalną słabość. Nie potrzebował żadnego exploita na luki w oprogramowaniu. Wysyłał prawidłowe polecenia Modbus TCP - polecenia, które sterowniki wykonywały posłusznie, bo tak zostały zaprojektowane.

Chronologia ataku

DataWydarzenie
Kwiecień 2023Atakujący uzyskują dostęp do sieci przez skompromitowany router Mikrotik wystawiony do internetu
Kwiecień 2023 - styczeń 2024Atakujący ustanawiają tunel L2 i poruszają się lateralnie po słabo segmentowanej sieci
22 stycznia 2024Atak właściwy - FrostyGoop wysyła polecenia Modbus TCP do sterowników ENCO, powodując fałszywe pomiary i przerwanie ogrzewania
22-23 stycznia 2024Prawie dwudniowa przerwa w dostawie ciepła do ponad 600 budynków mieszkalnych
Kwiecień 2024Dragos identyfikuje próbki FrostyGoop i rozpoczyna analizę
Lipiec 2024Dragos publikuje raport na konferencji S4 - pierwsze publiczne ujawnienie malware

Anatomia malware - prostota jako broń

FrostyGoop to plik binarny napisany w języku Go, skompilowany dla systemu Windows. W momencie odkrycia nie był wykrywany przez żadne komercyjne oprogramowanie antywirusowe - co samo w sobie stanowiło ostrzeżenie o ograniczeniach sygnaturowych metod detekcji w środowiskach OT.

Malware działał z chirurgiczną precyzją. Jego konfiguracja zawierała adresy IP sterowników ENCO oraz sekwencje poleceń Modbus do wykonania. Atakujący nie musieli pisać skomplikowanego exploita - wystarczyło, że znali adresy urządzeń i kody funkcji Modbus.

Kluczowym elementem ataku była manipulacja firmware’em sterowników. Przed głównym uderzeniem atakujący obniżyli wersję oprogramowania na sterownikach ENCO do wersji pozbawionej funkcji monitorowania. W praktyce oznaczało to, że operatorzy stracili możliwość zdalnego wglądu w rzeczywisty stan urządzeń. Dopiero potem FrostyGoop zaczął wysyłać polecenia powodujące fałszywe odczyty temperatury - system raportował gorącą wodę, podczas gdy w rzeczywistości do budynków płynęła woda zimna.

MITRE ATT&CK - mapowanie technik

TaktykaIDOpis w kontekście FrostyGoop
Impair Process ControlT0855 (Unauthorized Command Message)Wysyłanie nieautoryzowanych poleceń Modbus TCP do sterowników ENCO
Impair Process ControlT0831 (Manipulation of Control)Zmiana parametrów pracy systemu ciepłowniczego - fałszywe odczyty temperatury
Inhibit Response FunctionT0857 (System Firmware)Degradacja firmware’u sterowników do wersji bez monitoringu
Initial AccessT0886 (Remote Services)Dostęp przez skompromitowany router Mikrotik wystawiony do internetu
Lateral MovementT0867 (Lateral Tool Transfer)Tunel L2 umożliwiający poruszanie się po sieci wewnętrznej

Znaczenie - dlaczego FrostyGoop zmienia reguły gry

FrostyGoop to dziewiąty znany malware celujący w systemy ICS - po Stuxnecie, Havexie, BlackEnergy, Industroyerze, Tritonie, Industroyerze2, COSMICENERGY i PIPEDREAM. Ale wyróżnia go jedna cecha: wykorzystanie protokołu Modbus TCP jako wektora ataku.

Modbus jest jednym z najpowszechniej stosowanych protokołów w automatyce przemysłowej. Według danych Dragos, ponad 46 000 urządzeń z otwartym portem 502 jest dostępnych z internetu. FrostyGoop pokazał, że atakujący nie potrzebują zaawansowanych zero-day’ów ani wyrafinowanych łańcuchów exploitów. Wystarczy znajomość dokumentacji Modbus - która jest publicznie dostępna - i adres IP sterownika.

Jak się chronić

TIP

Nigdy nie wystawiaj urządzeń Modbus TCP bezpośrednio do internetu. Każdy sterownik powinien znajdować się za zaporą sieciową z inspekcją głęboką pakietów (DPI) zdolną do filtrowania ruchu Modbus. Więcej o zasadach segmentacji sieci OT opisujemy w artykule o segmentacji sieci OT.

TIP

Monitoruj ruch Modbus TCP pod kątem anomalii - nieznane adresy źródłowe, nietypowe kody funkcji, polecenia zapisu do rejestrów konfiguracyjnych. Pasywne systemy wykrywania anomalii (np. Nozomi Networks, Dragos Platform) potrafią identyfikować takie zdarzenia bez ingerencji w proces.

TIP

Aktualizuj firmware sterowników i wdrażaj mechanizmy weryfikacji integralności oprogramowania. Atak na Lwów pokazał, że degradacja firmware’u była kluczowym krokiem przygotowawczym - pozwoliła oślepić operatorów przed właściwym uderzeniem.

TIP

Przeprowadź inwentaryzację zasobów ICS - nie możesz chronić urządzeń, o których istnieniu nie wiesz. Szczególną uwagę zwróć na urządzenia z otwartym portem 502 i zweryfikuj, czy są dostępne wyłącznie z autoryzowanych segmentów sieci.

TIP

Zabezpiecz urządzenia brzegowe (routery, firewalle) w sieci OT. W przypadku Lwowa początkowy dostęp uzyskano przez skompromitowany router Mikrotik. Regularne aktualizacje i zmiana domyślnych haseł to absolutne minimum. Temat bezpiecznego zdalnego dostępu do systemów ICS omawiamy w artykule o zdalnym dostępie ICS.

Podsumowanie

FrostyGoop to ostrzeżenie dla każdej organizacji eksploatującej systemy sterowania z protokołem Modbus TCP. Atak na Lwów pokazał, że nie trzeba zaawansowanego malware’u, by pozbawić setki tysięcy ludzi ogrzewania w środku zimy. Wystarczy znajomość publicznie dostępnej dokumentacji protokołu i dostęp do sieci, w której sterowniki nie są chronione segmentacją ani monitoringiem.

Dla operatorów infrastruktury ciepłowniczej, wodociągowej i energetycznej w Polsce - gdzie Modbus TCP jest powszechnie stosowany - ten incydent powinien być sygnałem do natychmiastowej weryfikacji ekspozycji urządzeń ICS na sieci zewnętrzne.


Źródła

Omówimy zakres, metodykę i harmonogram.