Az ipari vezérlőrendszerek és OT-környezetek védelme a távoli támadások ellen kritikusabb, mint valaha, különösen az olyan sebezhetőségek miatt, mint a CVE-2017-14469 és most a CVE-2021-22659, amelyek a Rockwell Automation széles körben használt Micrologix 1400 vezérlőjét célozzák. Az OPSWAT ösztöndíjprogram hallgatói ellenőrzött környezetben tesztelték ezt a sebezhetőséget, rávilágítva a biztonság szükségességére.
Ebben a blogban azt vizsgáljuk meg, hogyan mutatták be a diákok, hogyan használhatják ki a támadók a sebezhetőséget a rendszerek összeomlásához, és hogyan lehet a megfelelő bemeneti érvényesítés hiányát kihasználni a PLC működésének megzavarására.
Mi az a PLC? A Rockwell Automation Micrologix 1400 magyarázata
A PLC (programozható logikai vezérlő) egy ipari számítógép, amelyet arra terveztek, hogy automatizáljon folyamatokat a gépek és egyéb ipari műveletek vezérlésével. Kemény környezetben is működik, és úgy van programozva, hogy az érzékelő bemenete alapján meghatározott feladatokat hajtson végre. A Rockwell Automation MicroLogix 1400 vezérlője egy kompakt és moduláris PLC, amelyet általában kis és közepes méretű alkalmazásokban használnak. Költséghatékonyságáról és rugalmasságáról ismert, különböző kommunikációs protokollokat támogat, és digitális és analóg I/O lehetőségeket kínál az eszközökhöz való kapcsolódáshoz.
A programozás jellemzően a Rockwell Automation szoftverével történik, létra logikán keresztül, amely lehetővé teszi a felhasználók számára, hogy vezérlési szekvenciákat hozzanak létre. A MicroLogix 1400 sokoldalú, alkalmas például gépvezérlési és folyamatautomatizálási feladatokra. Moduláris felépítése lehetővé teszi a felhasználók számára, hogy a rendszert az adott alkalmazási követelmények alapján bővítsék és testre szabják.
Bevezetés a CVE-2021-22659-be
2021 januárjában a Rockwell Automation jelentést kapott Parul Sindhwadtól és Dr. Faruk Kazitól, az indiai Veermata Jijabai Technológiai Intézet (VJTI) COE-CNDS-től a MicroLogix™ 1400 vezérlőben található sebezhetőségről. A 21.6-os és korábbi verziókban olyan biztonsági hibát azonosítottak, amely lehetővé teszi egy távoli, nem hitelesített támadó számára, hogy speciálisan kialakított Modbus csomagot küldjön, amely lehetővé teszi a támadó számára, hogy lekérje vagy módosítsa a véletlenszerű értékeket a regiszterben. Sikeres kihasználás esetén ez puffer túlcsorduláshoz vezethet, ami szolgáltatásmegtagadási állapotot eredményezhet. A FAULT LED pirosan villog, és a kommunikáció megszakadhat. A szolgáltatásmegtagadási állapotból való helyreállításhoz a felhasználónak kell törölnie a hibát.
Az NVD ezt a biztonsági sebezhetőséget magas súlyosságúnak értékelte.
Támadó fázisok
Egy távoli, nem hitelesített támadó, aki hálózati hozzáféréssel rendelkezik a sebezhető MicroLogix 1400 PLC-hez, speciálisan kialakított csomagot küldhet a regiszter értékeinek módosítására. Ez potenciálisan szolgáltatásmegtagadási állapotot idézhet elő az eszközön, ami a rendszer sérüléséhez és leálláshoz vezethet. Egy ilyen incidens jelentősen megzavarhatja a gyártási műveleteket és a szervezet egyéb üzleti tevékenységeit.
Modbus protokoll
A Modicon által 1979-ben kifejlesztett Modbus protokoll egy üzenetküldő struktúra, amelyet az intelligens eszközök közötti kliens-szerver kommunikáció létrehozására terveztek. Eredetileg a Modicon PLC-kkel való használatra tervezték, de azóta az ipari elektronikus eszközök közötti kommunikáció szabványos kommunikációs protokolljává vált.
Léteznek Modbus protokollok Ethernet (Modbus TCP) és soros vonalakhoz (Modbus RTU és Modbus ASCII). A Modbus RTU (Remote Terminal Unit) közvetlenül bináris formában továbbítja az adatokat soros kommunikáción keresztül, a Modbus TCP (Transmission Control Protocol) pedig a Modbus protokoll adatait TCP csomagokba ágyazza a TCP/IP hálózatokon történő továbbításhoz.
Modbus üzenetszerkezet
A Modbus egy kérés-válasz protokoll, amelyben az ügyfél kérést küld a Modbus eszköznek, és az eszköz ezt követően választ ad.
Az elsődlegesről a másodlagosnak küldött Modbus üzenet tartalmazza a másodlagos címét, a "parancsot" (pl. "regiszter olvasása" vagy "regiszter írása"), az adatokat és egy ellenőrző összeget (LRC vagy CRC).
Az adatcímeket a Modbus lekérdezési üzenetekben használják az adatok olvasásakor vagy módosításakor. A Modbus négy adattípust határoz meg: Bemeneti állapot, bemeneti regiszter és várakozási regiszter. Ezek közül kettő a tekercseknek és a diszkrét bemeneteknek nevezett on-off (1 bites) értékeket tárolja, kettő pedig a regisztereknek nevezett 16 bites szavakként tárolja a numerikus értékeket. Mindegyik csak olvasható vagy írható/olvasható.
Adattípus | Hozzáférés | Leírás |
Tekercs | Írható-olvasható | Egybites kimenetek. |
Diszkrét bemenet | Csak olvasható | Egybites bemenetek. |
Bemeneti regiszter | Csak olvasható | 16 bites bemeneti regiszterek. |
Holding nyilvántartás | Írható-olvasható | 16 bites kimeneti regiszterek. |
A Modbus funkciókódoknak három kategóriája van:
- Nyilvános funkciókódok - 1-től 127-ig, kivéve a felhasználó által meghatározott kódokat.
- Felhasználó által meghatározott funkciókódok - két tartományban, 65-től 72-ig és 100-tól 110-ig.
- Fenntartott funkciókódok - Egyes vállalatok használják a régi termékekhez, és nem állnak rendelkezésre nyilvános használatra.
Funkció típusa | Funkció neve | Funkció kód | ||
Adathozzáférés | Bit hozzáférés | Fizikai diszkrét bemenetek | Diszkrét bemenetek olvasása | 2 |
Belső bitek vagy fizikai tekercsek | Tekercsek olvasása Egyetlen tekercs írása Több tekercs írása | 1 5 15 | ||
16 bites hozzáférés | Fizikai bemeneti regiszterek | Bemeneti regiszterek olvasása | 4 | |
Belső regiszterek vagy fizikai kimeneti regiszterek | Több holdingregiszter olvasása Egyetlen holding regiszter írása Többszörös holding regiszterek írása Több regiszter olvasása/írása Maszk írási regiszter Olvasási FIFO sor | 3 6 16 23 22 24 | ||
Fájlrekord hozzáférés | Fájlrekord olvasása Fájl rekord írása | 20 21 | ||
Diagnosztika | Kivétel állapotának olvasása Diagnosztikai Com eseményszámláló lekérése Com eseménynapló lekérése Slave azonosító jelentése Eszközazonosítás olvasása | 7 8 11 12 17 43 | ||
Egyéb | Kapszulázott interfész szállítás | 43 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: Bit hozzáférés Kategória: Fizikai diszkrét bemenetek Funkció neve: Funkciókód: Diszkrét bemenetek olvasása: 2 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: Bit hozzáférés Kategória: Kategória: Belső bitek vagy fizikai tekercsek Funkció neve: Funkció kódja: Read Coils (tekercsek olvasása): 1 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: Bites hozzáférés Kategória: Funkció neve:Egyetlen tekercs írása Funkciókód: : 5 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: Bites hozzáférés Kategória: Funkció neve: Több tekercs írása Funkció kódja: 15 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: 16 bites hozzáférés Kategória: Fizikai bemeneti regiszterek Funkció neve: Funkció kódja: Bemeneti regiszterek olvasása: 4 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: 16 bites hozzáférés Kategória: Kategória: Belső regiszterek vagy fizikai kimeneti regiszterek Funkció neve: Funkció kódja: Többszörös Holding regiszterek olvasása: 3 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: 16 bites hozzáférés Kategória: Kategória: Belső regiszterek vagy fizikai kimeneti regiszterek Funkció neve: Write Single Holding Register Funkció kódja: : 6 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: 16 bites hozzáférés Kategória: Kategória: Belső regiszterek vagy fizikai kimeneti regiszterek Funkció neve: Write Multiple Holding Registers Funkció kódja: : 16 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: 16 bites hozzáférés Kategória: Kategória: Belső regiszterek vagy fizikai kimeneti regiszterek Funkció neve: Funkció kódja: Több regiszter olvasása/írása: 23 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: 16 bites hozzáférés Kategória: Funkcióneve: Mask Write Register Funkció kódja: : 22 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: 16 bites hozzáférés Kategória: Kategória: Belső regiszterek vagy fizikai kimeneti regiszterek Funkció neve: Funkció kódja: FIFO Queue olvasása: 24 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: Fájlrekord-hozzáférés Funkció neve: Fájlrekord olvasása Funkciókód: Fájlrekord olvasása: 20 |
Funkció típusa: Al-típus: Data Access Al-tí pus: Data Access Al-típus: Data Access Al-típus: Data Access: Fájlrekord-hozzáférés Funkció neve: Fájlrekord írása Funkciókód: 21 |
Funkció típusa: Funkció neve: Diagnosztika: Funkció kódja: Read Exception Status: 7 |
Funkció típusa: Funkció neve: Diagnosztika Funkció kódja: 8 |
Funkció típusa: Funkció kódja:D iagnosztika Funkció neve: Get Com Event Counter : 11 |
Funkció típusa: Funkció kódja:D iagnosztika Funkció neve: Com eseménynapló lekérdezése : 12 |
Funkció típusa: Funkció neve: Di agnosztika: Funkciókód: Report Slave ID : 17 |
Funkció tí pusa: Funkció neve: Diagno sztika: Funkció kódja: Read Device Identification: Read Device Ident ification Funkció kódja: Read Device Identification 43 |
Funkció típusa: Funkció kódja: Egyéb Funkció neve: Encapsulated Interface Transport : 43 |
Kihasználás
Sebezhetőségi elemzés
Az OPSWAT diplomás ösztöndíjasai az elemzés során felfedezték, hogy a Modbus TCP kommunikáció során a protokollból hiányzik a hitelesítés és a titkosítás a továbbított csomagok esetében. Ezenkívül a MicroLogix 1400 PLC-ben a bemeneti érvényesítés nem megfelelően van végrehajtva. Következésképpen egy távoli támadó elemezheti a Modbus TCP csomagot a csomagok szimatolásával, és a Modbus TCP protokollon keresztül hitelesítés nélkül bármilyen kérést küldhet a PLC-nek. A MicroLogix 1400 PLC eszköz bemeneti érvényesítésének hiánya miatt egy távoli hitelesített támadó nagyszámú csomagot küldhet véletlenszerű értékekkel, ami a PLC összeomlását okozhatja.
Regiszter felülírása
Kezdetben a PLC regisztereinek olvasásához vagy írásához használt Modbus TCP csomagok rögzítésére tettünk kísérletet. Ehhez megvizsgáltuk a Modbus Poll nevű alkalmazás által generált csomagokat, amely megkönnyíti a MicroLogix 1400 PLC regisztereinek olvasását és írását.
A Wireshark segítségével a hálózati interfész összes csomagjának rögzítésével azonosítani tudtuk a Modbus TCP csomagot egyetlen regiszter írásához:
A szippantott csomagok szerkezete alapján egy egyszerű Python szkriptet fejlesztettünk ki, amely TCP csomagokat küld a cél-PLC egy regiszterének írását kérve. Ebben a forgatókönyvben a PLC IP-címe 192.168.93.89.
A PLC regisztere a rosszindulatú, nem hitelesített csomagunk fogadása után megváltozott.

A Micro Logix 1400-ban a legtöbb matematikai utasítás három paramétert használ: Forrás A, Forrás B és Cél
Az A és B forrás értékei két 16 bites regiszterből származhatnak, amelyek neve N13:3 és N13:4. Továbbá, ezekben a 16 bites regiszterekben, mint például az N13:3 és N13:4, az értékek a -32,768 és +32,767 közötti tartományban vannak korlátozva. Ha az N13:3 és az N13:4 értékei nagyok, a megfeleltetési utasítás eredménye meghaladhatja az adattípus maximális tartományát, ami a PLC összeomlását okozhatja. Következésképpen a PLC összeomlásának előidézéséhez nagy véletlen értékeket kell írni az összes regiszterbe, beleértve az N13:3-at és az N13:4-et is. Ennek eléréséhez a Python szkriptünket a következőképpen módosítottuk:
Szimulálja a támadást
Egy valós támadás szimulálása érdekében az OPSWAT diplomás ösztöndíjasai megpróbáltak összeomlást előidézni az OPSWAT CIP Laboratóriumában található MicroLogix 1400 PLC-ben, feltételezve, hogy a támadó és a PLC ugyanazon a hálózaton van, és képes kommunikálni egymással.
Az OPSWAT Labs MicroLogix 1400 PLC normál működési állapotában, amikor a PLC REMOTE RUN üzemmódban van, minden regiszterérték érvényes, és az adattípusuknak megfelelő tartományba esik, ami azt jelzi, hogy a felhasználói program megfelelően működik.
A Python szkriptünk végrehajtásakor számos Modbus TCP csomagot küldünk a PLC-nek, amelyek nagy, véletlenszerű értékek írását kérik az összes regiszterbe hitelesítés nélkül:
A rosszindulatú csomagkérések fogadása után az összes regiszter értékei, beleértve az N13:3 és N13:4 regisztereket is, 16,990 értékre kerülnek. Az N13:3 és N13:4 regisztereken végzett ADD művelet eredménye meghaladja a 16 bites regiszterek érvényes tartományát. Ez a probléma egész szám túlcsordulást okoz, ami hibához vezet és megszakítja a PLC működését, amit a FAULTED állapot jelez.
OPSWAT diplomás ösztöndíjasaink a CVE-2021-22659 kihasználásával sikeresen megzavarták a MicroLogix 1400 PLC-t.
Helyreállítás
A CVE-2021-22659-hez hasonló sebezhetőségekkel szemben az átfogó javítás kulcsfontosságú az OT és a kiberfizikai rendszerek védelme szempontjából. Az alábbiakban bemutatunk néhány kulcsfontosságú stratégiát, amelyekkel megelőzhető a támadások terjedése:
- Ismert CVE-k felderítése: A hálózatok rendszeres ellenőrzése a CVE-2021-22659-hez hasonló sebezhetőségek után.
- A rendellenes viselkedés megfigyelése: A Micrologix 1400 PLC-vel való kommunikáció szokatlan gyakoriságnövekedésének jelzése, ami egy folyamatban lévő, jogosulatlan adatátvitelre irányuló támadásra utalhat.
- Új eszközkapcsolatok azonosítása: A rendszernek észlelnie kell, ha egy új eszköz csatlakozik a PLC-hez.
- Hálózati szegmentáció: Az érintett eszközök elkülönítése segíthet megakadályozni a támadások oldalirányú terjedését, és így minimalizálni a hatást.
Az OPSWAT MetaDefender OT Security megoldja ezeket az igényeket a CVE-k észlelésével, a hálózat szokatlan viselkedésének folyamatos megfigyelésével és a nem engedélyezett kapcsolatok azonosításával. A mesterséges intelligencia segítségével megtanulja a normál forgalmi mintákat, meghatározza az alapszintű viselkedést, és házirendeket vezet be az anomáliák riasztására. Ez lehetővé teszi az azonnali, megalapozott válaszokat a potenciális fenyegetésekre.
A CVE-2021-22659-et kihasználó támadás esetén a MetaDefender OT Security integrálódik a MetaDefender Industrial Firewall , hogy a beállított szabályok alapján blokkolja a gyanús kommunikációt. A tűzfal a mesterséges intelligencia segítségével megtanulja a rendszeres forgalmi mintákat, és a jogosulatlan kapcsolatok megakadályozása érdekében házirendeket érvényesít.
Ezen észlelési, riasztási és hálózati szegmentációs képességek kombinálásával a MetaDefender OT Security ideális védelmi mechanizmussá válik az ipari környezetek számára, jelentősen csökkentve a kiberfenyegetések kockázatát és hatását az operatív technológiai környezetekben.
Fedezze fel, hogy az OPSWATmélységében védekező kiberbiztonsági platformja hogyan javíthatja és fejlesztheti ki az Ön védelmi helyzetét. Beszéljen még ma egy szakértővel egy ingyenes demóért.