Industroyer (CrashOverride) - pierwszy malware zaprojektowany do ataku na sieci energetyczne
Industroyer (CrashOverride) - analiza ataku na ukraińską sieć energetyczną z grudnia 2016: techniki MITRE ATT&CK S0604, moduły IEC 104/61850/OPC DA, grupa Sandworm i wnioski dla sektora energetycznego.
Kijów, 17 grudnia 2016 roku, kilka minut przed północą. Temperatura na zewnątrz spada poniżej minus dziesięciu stopni. Miliony ludzi śpią w swoich mieszkaniach, gdy nagle - bez ostrzeżenia, bez burzy, bez żadnej widocznej przyczyny - gaśnie światło. Jedna piąta stolicy Ukrainy traci zasilanie. W dyspozytorni stacji elektroenergetycznej “Pivnichna” (Północna) należącej do Ukrenergo operatorzy patrzą bezradnie na ekrany systemów SCADA, które przestały reagować na polecenia. Wyłączniki mocy otwierają się i zamykają w sekwencjach, których nikt nie zlecił. Stacja 330 kV obsługująca północny Kijów wyłącza się z sieci.
To nie był zwykły blackout. To był Industroyer - pierwszy w historii malware zaprojektowany specjalnie po to, by atakować sieci elektroenergetyczne.
Kontekst - Ukraina jako poligon cybernetyczny
Żeby zrozumieć znaczenie Industroyera, trzeba cofnąć się o rok wcześniej. 23 grudnia 2015 roku hakerzy z grupy Sandworm przeprowadzili pierwszy udokumentowany cyberatak na infrastrukturę energetyczną - uderzając w trzy ukraińskie zakłady energetyczne w obwodach iwanofrankowskim, kijowskim i czerkaskim. Użyli wtedy malware BlackEnergy do uzyskania dostępu, a samo wyłączenie prądu wykonali ręcznie - operatorzy atakujących przejęli sesje VNC i klikali w interfejsy SCADA, otwierając wyłączniki jeden po drugim. Prądu nie miało 230 000 osób przez kilka godzin.
Ale atak z 2015 roku miał fundamentalną słabość - wymagał człowieka po drugiej stronie klawiatury. Każdy wyłącznik trzeba było otworzyć ręcznie. To ograniczało skalę i szybkość.
Industroyer wyeliminował ten problem. Był w pełni zautomatyzowany.
Anatomia ataku - 17 grudnia 2016
Chronologia zdarzeń odtworzona przez badaczy ESET, Dragos i CERT-UA wygląda następująco:
Faza 1 - Infiltracja (lato-jesień 2016) Sandworm uzyskał dostęp do sieci korporacyjnej Ukrenergo prawdopodobnie przez spear-phishing. Przez kilka miesięcy poruszał się lateralnie, mapując architekturę sieci IT i OT, identyfikując hosty z dostępem do systemów sterowania.
Faza 2 - Przygotowanie (listopad-grudzień 2016) Atakujący zainstalowali backdoor na stacjach roboczych w sieci OT. Industroyer został skonfigurowany z precyzyjnymi adresami IP i portami urządzeń w stacji “Pivnichna” - co oznacza, że atakujący dokładnie wiedzieli, jakie urządzenia atakują.
Faza 3 - Uderzenie (17 grudnia 2016, ok. 23:00 UTC+2) O wyznaczonej godzinie Industroyer automatycznie uruchomił swoje moduły “payload”. Każdy z nich komunikował się z urządzeniami stacji przy użyciu natywnych protokołów przemysłowych - wysyłając polecenia otwarcia wyłączników mocy. System SCADA stracił kontrolę nad stacją.
Faza 4 - Zacieranie śladów Po wykonaniu głównego ataku uruchomił się moduł wipera, który nadpisywał pliki systemowe i usuwał rejestry zdarzeń. Dodatkowo moduł DoS atakował zabezpieczenia SIPROTEC - przekładniki ochronne Siemensa - próbując uniemożliwić bezpieczne przywrócenie zasilania.
Przerwa w dostawie prądu trwała około godziny. Operatorzy Ukrenergo przywrócili zasilanie ręcznie - przełączając się na tryb sterowania lokalnego. Ale badacze z Dragos Security ustalili coś niepokojącego: prawdziwym celem ataku nie było krótkotrwałe wyłączenie prądu. Atakujący próbowali spowodować fizyczne uszkodzenie stacji - tak aby ponowne włączenie zasilania wywołało przeciążenie i trwałe zniszczenie transformatorów.
Architektura malware - cztery protokoły, jeden cel
Industroyer wyróżniał się modułową architekturą. Jego główny komponent (backdoor) komunikował się z serwerem C2 przez sieć Tor, zapewniając anonimowość operatorom. Kluczowe jednak były cztery moduły payload - każdy zaprojektowany do komunikacji z urządzeniami ICS przy użyciu innego protokołu przemysłowego:
Moduł IEC 60870-5-104
Protokół IEC 104 to jeden z najpowszechniej stosowanych standardów komunikacji w europejskich sieciach elektroenergetycznych - służy do przesyłania telekomend między centrum dyspozycyjnym a stacjami. Moduł Industroyera działał jako fałszywy klient SCADA - łączył się bezpośrednio z RTU (Remote Terminal Unit) i wysyłał prawidłowe polecenia otwarcia wyłączników. Z perspektywy urządzenia końcowego polecenia te były nieodróżnialne od legalnych komend operatora.
Moduł IEC 60870-5-101
Wersja szeregowa (serial) protokołu IEC 104, stosowana w starszych instalacjach. Moduł skanował porty COM na zainfekowanej stacji roboczej i wysyłał polecenia sterujące przez łącza szeregowe RS-232/RS-485. To oznaczało, że Industroyer mógł atakować nawet urządzenia niepodłączone do sieci Ethernet.
Moduł IEC 61850
Standard IEC 61850 to nowoczesny protokół komunikacji w stacjach elektroenergetycznych, oparty na modelu danych MMS (Manufacturing Message Specification). Moduł Industroyera potrafił odkrywać urządzenia w sieci stacji, odczytywać ich konfigurację i wysyłać polecenia sterujące do IED (Intelligent Electronic Devices).
Moduł OPC DA
OPC Data Access to klasyczny interfejs komunikacji między systemami SCADA a urządzeniami polowymi w środowiskach Windows. Moduł OPC DA Industroyera skanował sieć w poszukiwaniu serwerów OPC, enumerował ich strukturę (grupy, tagi), a następnie modyfikował wartości - zmieniając stany wyłączników.
Ta czwórkowa architektura sprawiała, że Industroyer mógł zaatakować praktycznie każdą stację elektroenergetyczną w Europie - niezależnie od tego, jakiego protokołu używała. To był malware “na miarę” - framework, który można skonfigurować pod konkretny cel.
MITRE ATT&CK - mapowanie technik (S0604)
Industroyer jest katalogowany w bazie MITRE ATT&CK jako S0604. Poniżej kluczowe techniki ICS powiązane z tym malware:
| Technika | ID | Opis w kontekście Industroyera |
|---|---|---|
| Unauthorized Command Message | T0855 | Wysyłanie prawidłowych poleceń ICS (otwarcie/zamknięcie wyłączników) bez autoryzacji operatora |
| Manipulation of Control | T0831 | Zmiana stanów urządzeń sterujących w stacji elektroenergetycznej |
| Block Command Message | T0803 | Blokowanie legalnych poleceń operatorów - utrata kontroli nad stacją |
| Denial of Service | T0814 | Atak DoS na przekaźniki SIPROTEC, uniemożliwienie funkcji ochronnych |
| Remote System Discovery | T0846 | Skanowanie sieci OT w celu identyfikacji RTU, IED i serwerów OPC |
| Standard Application Layer Protocol | T0869 | Wykorzystanie natywnych protokołów ICS (IEC 104, IEC 61850, OPC DA) |
| Data Destruction | T0809 | Moduł wipera usuwający dane i logi po ataku |
| Masquerading | T0849 | Backdoor ukryty jako legalna usługa systemowa Windows |
| Automated Collection | T0802 | Automatyczne zbieranie informacji o konfiguracji urządzeń ICS |
Pełna lista technik, wraz z mapowaniem na taktyki (Initial Access, Execution, Discovery, Collection, Inhibit Response Function, Impair Process Control, Impact), dostępna jest na stronie MITRE ATT&CK S0604.
Więcej o frameworku MITRE ATT&CK i jego zastosowaniu w analizie zagrożeń OT - w naszym przewodniku po MITRE ATT&CK.
Sandworm - kto stoi za Industroyerem
Industroyer jest przypisywany grupie Sandworm Team (znana również jako Voodoo Bear, IRIDIUM, Telebots, Unit 74455). To jednostka rosyjskiego wywiadu wojskowego GRU (Główny Zarząd Wywiadowczy Sztabu Generalnego), operująca w ramach Centrum Specjalnych Technologii (GTsST).
W październiku 2020 roku Departament Sprawiedliwości USA postawił zarzuty sześciu oficerom GRU z Jednostki 74455 za serię cyberataków, w tym:
- Atak na ukraińską sieć energetyczną w 2015 roku (BlackEnergy)
- Atak na ukraińską sieć energetyczną w 2016 roku (Industroyer)
- Atak NotPetya w 2017 roku (10 mld USD szkód globalnie)
- Atak na Zimowe Igrzyska Olimpijskie w Pjongczangu 2018
Sandworm jest jednym z najbardziej aktywnych i destrukcyjnych aktorów APT na świecie. Ich portfolio obejmuje ataki na infrastrukturę krytyczną, niszczenie danych na skalę globalną i operacje dezinformacyjne.
Industroyer2 - powrót w 2022 roku
8 kwietnia 2022 roku - sześć tygodni po rosyjskiej inwazji na Ukrainę - Sandworm podjął kolejną próbę ataku na ukraińską sieć energetyczną. Tym razem użył wariantu nazwanego Industroyer2 (S1072 w bazie MITRE ATT&CK).
W odróżnieniu od oryginału, Industroyer2 był uproszczony - zawierał wyłącznie moduł IEC 60870-5-104, skompilowany jako pojedynczy plik wykonywalny z zakodowanymi na stałe adresami IP celów. Malware został zaplanowany do uruchomienia 8 kwietnia o godzinie 16:10 UTC przez zaplanowane zadanie Windows.
Tym razem atak został powstrzymany. CERT-UA we współpracy z ESET wykrył i zneutralizował malware zanim zdążył wykonać swoje zadanie. Oprócz Industroyera2 atakujący wdrożyli również wipery CaddyWiper, ORCSHRED, SOLOSHRED i AWFULSHRED - niszczące dane na systemach Windows, Linux i Solaris.
Fakt, że Sandworm dysponował zaktualizowanym kodem źródłowym Industroyera sześć lat po pierwotnym ataku, potwierdza ciągłość rozwoju tego narzędzia.
Wnioski dla sektora energetycznego
Industroyer zmienił krajobraz zagrożeń dla infrastruktury energetycznej. Oto kluczowe lekcje:
1. Protokoły ICS nie mają wbudowanego uwierzytelniania
Protokoły IEC 104, IEC 61850 i OPC DA zostały zaprojektowane w czasach, gdy sieci OT były fizycznie izolowane. Nie przewidują uwierzytelniania nadawcy poleceń - każdy host, który uzyska dostęp do sieci, może wysyłać prawidłowe komendy. To nie jest luka w implementacji - to cecha architektury protokołu.
TIP
Wdrożyć segmentację sieci OT z dedykowanymi strefami i korytarzami zgodnie z IEC 62443. Monitorować ruch sieciowy pod kątem anomalii - np. polecenia sterujące wysyłane z hostów, które normalnie nie komunikują się z RTU.
2. Automatyzacja ataku zmienia skalę zagrożenia
Przejście od ręcznego ataku (BlackEnergy 2015) do w pełni zautomatyzowanego frameworka (Industroyer 2016) oznacza, że ten sam atak może być powtórzony na dziesiątkach stacji jednocześnie - bez proporcjonalnego zwiększenia zespołu operatorów po stronie atakującego.
TIP
Wdrożyć systemy wykrywania anomalii w sieci OT (np. IDS dedykowane protokołom przemysłowym). Prowadzić regularne ćwiczenia incident response obejmujące scenariusze utraty kontroli SCADA.
3. Zabezpieczenia ochronne (protection relays) to cel sam w sobie
Atak DoS na przekaźniki SIPROTEC nie był przypadkowy. Wyłączenie zabezpieczeń ochronnych przed ponownym włączeniem zasilania mogło doprowadzić do fizycznego uszkodzenia transformatorów - co oznaczałoby tygodnie lub miesiące napraw zamiast godzin.
TIP
Zapewnić, że urządzenia ochronne (protection relays) są w osobnym segmencie sieciowym, z dedykowanym monitoringiem. Aktualizować firmware - Siemens wydał łatki na podatności SIPROTEC wykorzystane przez Industroyera.
4. Manualne procedury przywracania muszą istnieć
Operatorzy Ukrenergo przywrócili zasilanie w ciągu godziny - dzięki temu, że potrafili przełączyć się na sterowanie lokalne i ręcznie zamknąć wyłączniki. W wielu nowoczesnych stacjach, w pełni zależnych od systemów cyfrowych, taka możliwość może nie istnieć.
TIP
Regularnie testować procedury przywracania w trybie manualnym. Upewnić się, że operatorzy potrafią obsługiwać stację bez systemu SCADA.
Podsumowanie
Industroyer to punkt przełomowy w historii cyberbezpieczeństwa przemysłowego. Pokazał, że zautomatyzowany atak na infrastrukturę energetyczną nie jest scenariuszem z filmu - to rzeczywistość. Jego modułowa architektura, obsługa czterech protokołów przemysłowych i powiązanie z państwowym aktorem (Sandworm/GRU) uczyniły go wzorcowym przypadkiem do analizy zagrożeń ICS.
Sześć lat później Industroyer2 potwierdził, że to narzędzie jest nadal rozwijane i gotowe do użycia. Jedynym powodem, dla którego atak z 2022 roku się nie powiódł, była skuteczna współpraca CERT-UA i ESET - nie brak zdolności atakującego.
Dla organizacji działających w sektorze energetycznym lekcja jest jednoznaczna: ochrona systemów OT nie jest opcjonalnym dodatkiem - to warunek ciągłości działania.
Źródła
- MITRE ATT&CK - Industroyer S0604
- MITRE ATT&CK - 2016 Ukraine Electric Power Attack C0025
- ESET - Win32/Industroyer: A new threat for industrial control systems (whitepaper)
- Dragos - CRASHOVERRIDE: Analyzing the Malware that Attacks Power Grids
- CISA - CrashOverride Malware Alert
- ESET - Industroyer2: Industroyer reloaded (2022)
- Wikipedia - 2016 Kyiv cyberattack
- Wikipedia - Industroyer