Der Eintrittspfad führte über ein privates APN, also ein dediziertes zellulares Datennetz, das vom Verteilnetzbetreiber für den Zugriff auf entfernte Anlagen verwaltet wurde. Eine Konfiguration, die beliebigen Geräten innerhalb dieses APN die direkte Kommunikation untereinander erlaubte, ermöglichte dem Angreifer laut CERT Polska den Sprung von einem kompromittierten Windpark-Netz zu einem Controller im Heizkraftwerk. Windpark und Kraftwerk sind getrennte Anlagen; keine von beiden betreibt das Netz, das sie verband.

Einen einzelnen Softwarefehler als Ursache konnten die Ermittler nicht benennen. Der Bericht ordnet den Einbruch keiner CVE zu. Auch ob eine Schwachstelle im Teltonika-Router ausgenutzt wurde, ließ sich nicht feststellen, weshalb es laut CERT keinen einzelnen Patch gibt, der das Problem beheben würde. Der über das APN erreichbare WAGO-Controller nutzte noch Standard-Anmeldedaten für den Administrator, zugleich erlaubte das private APN Verkehr von Client zu Client. CERT empfiehlt daher zunächst eine Prüfung der APN-Konfiguration und die Aktivierung von Client-Isolation.

Nach den Erhebungen von CERT Polska ist es in polnischen Organisationen mit privaten APNs verbreitet, dass jedes Gerät im Netz jedes andere erreichen kann. Ähnliche Konfigurationen seien vermutlich auch in anderen Ländern weit verbreitet. Der SSH-Dienst des Routers, die Web-Oberfläche des Controllers und das freizügige APN arbeiteten dem Bericht zufolge jeweils wie vorgesehen konfiguriert.

Der Angriffsweg begann in einem Windpark. Dort diente ein FortiGate-Gerät zugleich als Firewall und VPN-Konzentrator. Das VPN war aus dem Internet erreichbar und ließ Konten ohne Mehrfaktor-Authentifizierung zu. Der Angreifer verfügte auf dem Gerät über Administratorrechte und nutzte diese nach Einschätzung von CERT wahrscheinlich, um VPN-Zugangsdaten zu erlangen, mit denen sich alle Netzsegmente erreichen ließen.

Für die Kommunikation zur Fernwirkeinheit des Umspannwerks verlangte der Verteilnetzbetreiber die serielle Nutzung des Protokolls DNP3.0; diese Vorgabe wurde eingehalten. Für die Verwaltungsoberfläche des Mobilfunkrouters gab es jedoch keine entsprechende Vorgabe. Diese lag auf einer zweiten Schnittstelle, einem Ethernet-Port zu einem VLAN hinter der kompromittierten Firewall. Der Windpark erfüllte damit zwar die DNP3.0-Anforderung, bot aber dennoch den Weg ins Zielnetz.

Beim Router handelte es sich um einen Teltonika RUTX50, dessen Standardpasswort bei der Inbetriebnahme geändert worden war. Die Ermittler fanden wiederholte erfolgreiche SSH-Anmeldungen, konnten aber nicht klären, wie der Angreifer an das Passwort gelangte. The Hacker News prüfte nach eigenen Angaben bis zum 11. August veröffentlichte Schwachstellen in der Firmware des Routers und fand keine, mit der ein nicht authentifizierter Angreifer an das Passwort gelangen könnte. Die beiden in CISA’s Teltonika-Hinweis von 2023 genannten Schwachstellen CVE-2023-32349 und CVE-2023-32350 setzen beide bereits bestehende Rechte auf dem Gerät voraus; die Modem-Schwachstellen des RUTX50 verursachen nur einen Denial-of-Service. Eine unveröffentlichte Schwachstelle schließt der Bericht nicht aus.

Anhand von Protokollen des Mobilfunkbetreibers geht CERT davon aus, dass der Angreifer sehr wahrscheinlich SSH-Tunneling über den Router nutzte, um das private APN zu erreichen. Ab dem 18. Dezember scannte er das APN und fand einen WAGO PFC200-Controller, dessen Web-Administration mit Standard-Administratorzugang offenstand. Spätere SSH-Aktivität deutet laut CERT darauf hin, dass der Dienst wahrscheinlich über diese Oberfläche aktiviert wurde. Die Korrelation von Zeitstempeln spricht dafür, dass der Angreifer höchstwahrscheinlich durch den WAGO-Controller in das OT-Netz des Kraftwerks tunnelte.

Am 25. Dezember verband sich der Angreifer erfolgreich über das S7-Protokoll mit drei Siemens-SPSen. CERT bewertet diese Aktivität mit hoher Wahrscheinlichkeit als Aufklärung für die späteren destruktiven Schritte. Am 29. Dezember lief die Aktivität im Netz des Kraftwerks von etwa 5:30 Uhr bis etwa 10:10 Uhr; die Wiederherstellung begann gegen 7:30 Uhr.

Nach Angaben des Anlagenpersonals wurden Siemens-S7-300-, S7-1200- und S7-1500-Controller in den STOP-Modus versetzt und mit einem Passwort geschützt. Dadurch wurden die Turbine und die Prozesswasseraufbereitung abgeschaltet und die Kraft-Wärme-Kopplung unterbrochen. Zusätzlich wurden sieben serielle Geräteserver von Moxa und drei Switches auf Werkseinstellungen zurückgesetzt, mit geänderten Passwörtern versehen und auf unerreichbare IP-Adressen wie 127.0.0.1 gesetzt. CERT sieht im zeitlichen Ablauf mit hoher Sicherheit Anzeichen dafür, dass diese Schritte automatisiert waren. Malware war dafür nach dem Bericht nicht erforderlich und wird dort auch nicht beschrieben.

Jeder destruktive Schritt nutzte eine vom jeweiligen Gerät unterstützte Funktion über die im Werk eingesetzten Protokolle. Anschließend beschädigte der Angreifer auch den Zugangsweg: Die Partitionstabelle des WAGO-Controllers wurde beschädigt, sodass das Gerät nicht mehr startete und keine verwertbaren Protokolle lieferte. Rund 30 Minuten nach der letzten beobachteten Aktivität im Kraftwerk setzte der Angreifer den Teltonika-Router auf Werkseinstellungen zurück, änderte das Administratorpasswort und vergab die unerreichbare Adresse 127.0.0.1; danach wurde auch die FortiGate zurückgesetzt, wodurch deren Protokolle verloren gingen. Laut CERT behielten RutOS-Versionen vor 7.07 ihre Ereignisdatenbank auch nach einem Werksreset, weshalb die SSH-Anmeldedaten erhalten blieben.