IEC 60870-5-104 - protokół telesterowania w europejskiej energetyce
IEC 60870-5-104 (port 2404) - protokół SCADA w energetyce, brak uwierzytelniania, ataki Industroyer i COSMICENERGY, rekomendacje segmentacji zgodnie z IEC 62443.
17 grudnia 2016 roku malware Industroyer wyłączył jedną piątą Kijowa z sieci elektroenergetycznej, wysyłając polecenia otwarcia wyłączników mocy do urządzeń RTU za pośrednictwem protokołu IEC 60870-5-104. Siedem lat później, w maju 2023 roku, Mandiant odkrył COSMICENERGY - malware zdolny do identycznych operacji, prawdopodobnie opracowany jako narzędzie treningowe rosyjskiej firmy cyberbezpieczeństwa. Oba programy wykorzystały tę samą fundamentalną słabość: IEC 104 nie posiada żadnego mechanizmu uwierzytelniania. Każdy host w sieci, który nawiąże połączenie TCP na porcie 2404, może wysyłać polecenia sterujące do stacji elektroenergetycznej.
Czym jest IEC 60870-5-104
IEC 60870-5-104 (w skrócie IEC 104) to międzynarodowy standard komunikacji telesterowania (telecontrol) opracowany przez Międzynarodową Komisję Elektrotechniczną (IEC). Definiuje zasady przesyłania danych między centrum dyspozycyjnym (stacja nadrzędna, controlling station) a urządzeniami terenowymi (stacja kontrolowana, controlled station) - typowo RTU, sterownikami bramkowymi i inteligentnymi urządzeniami elektronicznymi (IED) w stacjach elektroenergetycznych.
Protokół powstał jako adaptacja wcześniejszego standardu IEC 60870-5-101 (komunikacja po łączach szeregowych) do sieci TCP/IP. Zachowuje warstwę aplikacji z IEC 101, dodając transport TCP na porcie 2404. Jest dominującym protokołem SCADA w europejskim sektorze energetycznym, a także w sieciach energetycznych Bliskiego Wschodu, Azji i Ameryki Łacińskiej. Jego północnoamerykańskim odpowiednikiem jest DNP3.
Architektura protokołu
IEC 104 stosuje model klient-serwer: stacja nadrzędna (controlling station) inicjuje połączenie TCP do stacji kontrolowanej (controlled station). Po ustanowieniu połączenia obie strony wymieniają dane w formacie ASDU (Application Service Data Unit).
Struktura ramki APCI
Każda ramka IEC 104 zaczyna się od nagłówka APCI (Application Protocol Control Information):
Sygnatura 0x68 identyfikuje ramkę IEC 104. Control Fields determinują typ ramki (I/S/U) i zawierają numery sekwencyjne.
Typy ramek
Protokół definiuje trzy formaty ramek na warstwie transportowej:
| Format | Typ | Funkcja |
|---|---|---|
| I-frame (Information) | Dane aplikacji | Przesyłanie ASDU z danymi procesowymi i poleceniami |
| S-frame (Supervisory) | Nadzorcza | Potwierdzanie odbioru I-frame (flow control) |
| U-frame (Unnumbered) | Sterująca | Zarządzanie połączeniem: STARTDT, STOPDT, TESTFR |
Kluczowe typy ASDU
ASDU to podstawowa jednostka danych w IEC 104. Każda zawiera identyfikator typu (TypeID), przyczynę transmisji (Cause of Transmission, COT) i adres obiektu informacji (IOA). Najważniejsze typy:
| TypeID | Opis | Kierunek | Ryzyko |
|---|---|---|---|
| M_SP_NA_1 (1) | Single-point information (stan binarny) | Monitoring (outstation -> master) | Niskie |
| M_ME_NA_1 (9) | Measured value, normalized | Monitoring | Niskie |
| M_SP_TB_1 (30) | Single-point information z timestampem | Monitoring | Niskie |
| C_SC_NA_1 (45) | Single command (ON/OFF) | Sterowanie (master -> outstation) | Krytyczne |
| C_DC_NA_1 (46) | Double command (ON/OFF z potwierdzeniem) | Sterowanie | Krytyczne |
| C_SE_NA_1 (48) | Set-point command, normalized | Sterowanie | Krytyczne |
| C_IC_NA_1 (100) | Interrogation command | Odczyt stanu | Średnie |
| C_CS_NA_1 (103) | Clock synchronization | Synchronizacja czasu | Średnie |
Typy 45, 46 i 48 to polecenia sterujące - mogą otwierać i zamykać wyłączniki mocy, zmieniać nastawy regulatorów i przełączać tryby pracy urządzeń. To właśnie te typy ASDU wykorzystały Industroyer i COSMICENERGY.
Parametry techniczne
| Parametr | Wartość |
|---|---|
| Port | 2404/TCP |
| Transport | TCP/IP |
| Uwierzytelnianie | Brak |
| Szyfrowanie | Brak |
| Integralność | Brak (poza TCP checksum) |
| Standard | IEC 60870-5-104:2006 + Amendment 1:2016 |
| Organizacja | IEC TC 57 |
Ocena bezpieczeństwa
Brak jakichkolwiek mechanizmów bezpieczeństwa
IEC 104 nie posiada uwierzytelniania, szyfrowania ani mechanizmów integralności na poziomie aplikacji. Protokół został zaprojektowany w latach 90. z założeniem, że sieć telekomunikacyjna łącząca centrum dyspozycyjne ze stacjami jest fizycznie odizolowana i zaufana. Dziś, gdy większość komunikacji IEC 104 przechodzi przez sieci IP (często współdzielone z innymi usługami), to założenie jest fałszywe.
Konsekwencje:
- Każdy host w sieci może nawiązać połączenie TCP na porcie 2404 i wysyłać polecenia sterujące
- Komunikacja jest przesyłana tekstem jawnym - atakujący w pozycji man-in-the-middle widzi wszystkie dane procesowe i polecenia
- Brak mechanizmów integralności oznacza, że pakiety mogą być modyfikowane w locie
- Protokół nie loguje zdarzeń bezpieczeństwa - nie ma mechanizmu wykrywania nieautoryzowanych połączeń
IEC 62351 - zabezpieczenia jako nakładka
Standard IEC 62351 (Security for Power System Communication) definiuje mechanizmy bezpieczeństwa dla protokołów sektora energetycznego, w tym IEC 104. IEC 62351-3 specyfikuje użycie TLS do szyfrowania transportu, a IEC 62351-5 dodaje uwierzytelnianie komunikatów na warstwie aplikacji (Authentication Value w ASDU). W praktyce jednak adopcja IEC 62351 jest minimalna - ze względu na brak wsparcia w starszych RTU/IED, koszty wdrożenia PKI w rozproszonych sieciach energetycznych i obawy operatorów przed wpływem na niezawodność komunikacji.
Ataki wykorzystujące IEC 104
Industroyer/CrashOverride (grudzień 2016) - najbardziej zaawansowany atak na sieć energetyczną w historii. Moduł IEC 104 malware Industroyer działał jako fałszywy klient SCADA:
- Nawiązywał połączenie TCP na port 2404 do RTU w stacji “Pivnichna” w Kijowie
- Wysyłał prawidłowe sekwencje STARTDT (aktywacja transmisji danych)
- Przeprowadzał interrogation command (C_IC_NA_1, TypeID 100) - odczytywał aktualny stan wszystkich obiektów w RTU
- Wysyłał polecenia Single Command (C_SC_NA_1, TypeID 45) z wartością OFF do adresów IOA odpowiadających wyłącznikom mocy
- Cyklicznie powtarzał polecenia, utrudniając operatorom ręczne przywrócenie zasilania
Z perspektywy RTU polecenia Industroyera były nieodróżnialne od legalnych komend operatora dyspozytorni - protokół IEC 104 nie oferuje mechanizmu weryfikacji źródła komunikatu.
COSMICENERGY (2023) - malware odkryty przez Mandiant, prawdopodobnie opracowany w kontekście rosyjskich ćwiczeń red team. Komponent PIEHOP (napisany w Pythonie) łączył się z serwerem MSSQL pełniącym rolę pośrednika, a komponent LIGHTWORK (C++) wysyłał polecenia IEC 104 do RTU - konkretnie ON/OFF commands (TypeID 45) do zmiany stanu wyłączników. Analiza COSMICENERGY potwierdza, że bariera wejścia dla tworzenia narzędzi atakujących IEC 104 jest niska - wystarczy zrozumienie publicznie dostępnej specyfikacji protokołu.
Industroyer2 (kwiecień 2022) - uproszczona, ale bardziej ukierunkowana wersja Industroyera, wykryta przez CERT-UA i ESET tuż przed planowanym atakiem na ukraińską infrastrukturę energetyczną. Zawierała hardkodowane adresy IP i parametry IEC 104 specyficzne dla atakowanej stacji. Atak został powstrzymany przed fazą wykonania.
MITRE ATT&CK for ICS
| Technika | ID | Kontekst IEC 104 |
|---|---|---|
| Unauthorized Command Message | T0855 | Wysyłanie C_SC_NA_1 / C_DC_NA_1 bez autoryzacji |
| Manipulation of Control | T0831 | Otwieranie/zamykanie wyłączników mocy |
| Point & Tag Identification | T0861 | Interrogation command (C_IC_NA_1) do enumeracji IOA |
| Spoof Reporting Message | T0856 | Fałszowanie teledanych (M_SP_NA_1) do oszukania operatora |
| Monitor Process State | T0801 | Pasywne podsłuchiwanie danych procesowych |
Industroyer jest skatalogowany jako S0604, a COSMICENERGY jako S1099 w MITRE ATT&CK for ICS.
Rekomendacje segmentacji i ochrony
TIP
IEC 104 nie oferuje żadnych natywnych mechanizmów bezpieczeństwa - ochrona musi być w 100% realizowana na poziomie architektury sieciowej. W praktyce oznacza to: firewall z DPI między każdą strefą komunikacji IEC 104, szyfrowany transport (TLS/IPsec), pasywny monitoring anomalii i ścisła kontrola dostępu do portu 2404. Organizacje z sektora energetycznego muszą traktować segmentację jako fundament, a nie uzupełnienie bezpieczeństwa. Kompletny przewodnik po modelu stref i korytarzy IEC 62443 znajduje się w artykule Segmentacja sieci OT - strefy i korytarze.
Kluczowe rekomendacje
-
Szyfruj transport - TLS lub IPsec - każde połączenie IEC 104 między centrum dyspozycyjnym a stacją terenową powinno przechodzić przez szyfrowany tunel. Standard IEC 62351-3 definiuje profil TLS dla IEC 104. Jeśli urządzenia końcowe nie obsługują TLS, zastosuj bramki szyfrujące (crypto gateways) lub tunele IPsec site-to-site.
-
Filtrowanie DPI na firewallach OT - zastosuj firewalle z inspekcją głęboką pakietów rozumiejące IEC 104. Zdefiniuj reguły na poziomie TypeID: zezwalaj na polecenia sterujące (TypeID 45-48) wyłącznie z autoryzowanych adresów IP stacji nadrzędnej. Blokuj i loguj wszystkie inne próby wysyłania poleceń sterujących. Firewalle z obsługą IEC 104 DPI: Fortinet FortiGate, Palo Alto NGFW (App-ID), StormShield SNi40, RAD SecFlow.
-
Dedykowana sieć telekomunikacyjna - komunikacja IEC 104 między centrum dyspozycyjnym a stacjami powinna przechodzić przez dedykowaną sieć WAN (MPLS, SDH/SONET) lub - jeśli korzystasz z sieci publicznej - przez szyfrowany overlay (VPN). Nigdy nie eksponuj portu 2404 do internetu.
-
Monitoring pasywny - wdróż system wykrywania anomalii w ruchu IEC 104 (Dragos, Claroty, Nozomi Networks, Rhebo). System powinien alertować na: polecenia sterujące z nieznanych adresów IP, nietypowe sekwencje TypeID, połączenia z nowych źródeł, zmianę wzorców komunikacji (baseline deviation).
-
Allowlista połączeń - na firewallu zdefiniuj explicite, które pary adresów IP mogą komunikować się po IEC 104. Każda stacja kontrolowana powinna akceptować połączenia wyłącznie ze swojej stacji nadrzędnej. Redundancja (backup master) wymaga dodania drugiego autoryzowanego adresu - nie otwierania portu dla całej sieci.
-
Plan migracji do IEC 62351 - dla nowych inwestycji i modernizacji wymagaj od dostawców RTU/IED obsługi IEC 62351 (TLS + uwierzytelnianie komunikatów). Uwzględnij wymagania bezpieczeństwa IEC 104 w specyfikacjach przetargowych - nie jako opcję, lecz jako warunek konieczny.
-
Synchronizacja czasu - IEC 104 używa timestampów w teledanych (TypeID 30-40). Manipulacja zegarem RTU (przez fałszywy C_CS_NA_1 lub atak na NTP) może zaburzyć kolejność zdarzeń w systemie SCADA i utrudnić analizę incydentów. Stosuj uwierzytelnione źródło czasu (NTP z uwierzytelnianiem lub PTP z profilem IEC 61850-9-3).
Podsumowanie
IEC 60870-5-104 to fundament komunikacji SCADA w europejskiej energetyce - i jednocześnie protokół bez jakichkolwiek natywnych mechanizmów bezpieczeństwa. Industroyer, Industroyer2 i COSMICENERGY udowodniły, że brak uwierzytelniania w IEC 104 to nie teoretyczne ryzyko, lecz aktywnie eksploatowana ścieżka ataku. Ochrona wymaga wielowarstwowego podejścia: segmentacja sieci, szyfrowanie transportu, filtrowanie DPI, pasywny monitoring i docelowo migracja do IEC 62351. Dla organizacji z sektora energetycznego zabezpieczenie komunikacji IEC 104 powinno być absolutnym priorytetem programu cyberbezpieczeństwa OT.
Narzędzia open source
| Narzędzie | Język | Opis | Link |
|---|---|---|---|
| lib60870 | C | Kompletna implementacja IEC 60870-5-101/104 (master i slave) z przykladami | GitHub |
| c104 | Python | Biblioteka Pythonowa do komunikacji IEC 60870-5-104 | PyPI |
| Wireshark | C | Wbudowany dissektor IEC 104 - analiza ramek I/S/U i typow ASDU | Wireshark |
TIP
lib60870 zawiera gotowe przyklady master i slave - idealne do budowy srodowiska laboratoryjnego, w ktorym mozna testowac reguly firewalla DPI i detekcje anomalii dla polecen IEC 104 (TypeID 45-48).
Źródła:
- IEC 60870-5-104:2006 - Telecontrol equipment and systems - IEC
- IEC 62351 - Security for Power System Communication - IEC TC 57
- Industroyer - S0604 - MITRE ATT&CK for ICS
- COSMICENERGY - S1099 - MITRE ATT&CK for ICS
- COSMICENERGY: New OT Malware Possibly Related to Russian Emergency Response Exercises - Mandiant, 2023
- Industroyer2: Industroyer Reloaded - ESET, 2022
- NIST SP 800-82 Rev. 3 - Guide to OT Security - NIST, 2023
- MITRE ATT&CK for ICS - MITRE Corporation
- NERC CIP Standards - NERC