Endüstriyel kontrol sistemlerini ve OT ortamlarını uzaktan saldırılara karşı korumak, özellikle Rockwell Automation'ın yaygın olarak kullanılan Micrologix 1400 Kontrolörünü hedef alan CVE-2017-14469 ve şimdi CVE-2021-22659 gibi güvenlik açıkları nedeniyle her zamankinden daha kritiktir. OPSWAT Burs Programı öğrencileri bu güvenlik açığını kontrollü bir ortamda test ederek güvenlik ihtiyacını vurguladılar.
Bu blogda, öğrencilerin saldırganların sistemlerin çökmesine neden olmak için güvenlik açığından nasıl yararlanabileceklerini ve PLC işlemlerini bozmak için uygun girdi doğrulama eksikliğinden nasıl yararlanılabileceğini nasıl gösterdiklerini keşfediyoruz.
PLC nedir? Rockwell Automation Micrologix 1400 Açıklaması
PLC (Programlanabilir Mantık Denetleyicisi), makineleri ve diğer endüstriyel işlemleri kontrol ederek süreçleri otomatikleştirmek için tasarlanmış endüstriyel bir bilgisayardır. Zorlu ortamlarda çalışır ve sensör girişine dayalı olarak belirli görevleri yerine getirmek üzere programlanır. Rockwell Automation'ın MicroLogix 1400 Kontrolörü, küçük ve orta ölçekli uygulamalarda yaygın olarak kullanılan kompakt ve modüler bir PLC'dir. Maliyet etkinliği ve esnekliği ile bilinen bu ürün, çeşitli iletişim protokollerini destekler ve cihazlarla arayüz oluşturmak için dijital ve analog I/O seçenekleri sunar.
Programlama tipik olarak Rockwell Automation'ın yazılımı kullanılarak merdiven mantığı aracılığıyla yapılır ve kullanıcıların kontrol dizileri oluşturmasına olanak tanır. MicroLogix 1400 çok yönlüdür, makine kontrolü ve proses otomasyonu gibi görevler için uygundur. Modülerliği, kullanıcıların sistemi belirli uygulama gereksinimlerine göre genişletmesine ve özelleştirmesine olanak tanır.
CVE-2021-22659'a Giriş
Ocak 2021'de Rockwell Automation, Hindistan Veermata Jijabai Teknoloji Enstitüsü (VJTI) COE-CNDS'den Parul Sindhwad ve Dr. Faruk Kazi'den MicroLogix™ 1400 kontrol cihazındaki bir güvenlik açığı ile ilgili bir rapor aldı. Sürüm 21.6 ve önceki sürümlerde, uzaktan kimliği doğrulanmamış bir saldırganın özel olarak hazırlanmış bir Modbus paketi göndermesine olanak tanıyan ve saldırganın kayıt defterindeki rastgele değerleri almasını veya değiştirmesini sağlayan bir güvenlik açığı tespit ettiler. Başarılı bir şekilde istismar edilirse, bu bir arabellek taşmasına yol açarak hizmet reddi durumuna neden olabilir. HATA LED'i KIRMIZI renkte yanıp söner ve iletişim kesilebilir. Hizmet reddi durumundan kurtarma, hatanın kullanıcı tarafından temizlenmesini gerektirir.
NVD bu güvenlik açığını Yüksek önem derecesi olarak değerlendirmiştir.
Saldırı Aşamaları
Savunmasız MicroLogix 1400 PLC'ye ağ erişimi olan uzak, kimliği doğrulanmamış bir saldırgan, kayıttaki değerleri değiştirmek için özel olarak hazırlanmış bir paket gönderebilir. Bu durum potansiyel olarak cihaz için bir hizmet reddi durumuna neden olarak sistemin bozulmasına ve çalışmama süresine yol açabilir. Böyle bir olay, kuruluşun üretim operasyonlarını ve diğer iş faaliyetlerini önemli ölçüde kesintiye uğratabilir.
Modbus Protokolü
Modicon tarafından 1979 yılında geliştirilen Modbus protokolü, akıllı cihazlar arasında istemci-sunucu iletişimi kurmak için tasarlanmış bir mesajlaşma yapısıdır. Başlangıçta Modicon'un PLC'leri ile kullanılmak üzere tasarlanmış, o zamandan beri endüstriyel elektronik cihazlar arasındaki iletişim için standart bir iletişim protokolü haline gelmiştir.
Ethernet (Modbus TCP) ve seri hatlar (Modbus RTU ve Modbus ASCII) için Modbus protokolleri vardır. Modbus RTU (Uzak Terminal Birimi), verileri seri iletişim yoluyla doğrudan ikili biçimde iletir ve Modbus TCP (İletim Kontrol Protokolü), Modbus protokol verilerini TCP/IP ağları üzerinden iletim için TCP paketlerine yerleştirir.
Modbus Mesaj Yapısı
Modbus, istemcinin bir Modbus cihazına bir istek ilettiği ve cihazın daha sonra bir yanıt verdiği bir istek-yanıt protokolüdür.
Birincilden ikincile gönderilen bir Modbus mesajı ikincilin adresini, "komutu " (örn. "kayıt oku" veya "kayıt yaz"), verileri ve bir kontrol toplamını (LRC veya CRC) içerir.
Veri adresleri, verileri okurken veya değiştirirken Modbus sorgu mesajlarında kullanılır. Modbus dört Veri Tipi tanımlar: Bobin, Giriş Durumu, Giriş Kaydı ve Tutma Kaydı. Bunlardan ikisi Bobinler ve Ayrık Girişler olarak adlandırılan açma-kapama (1 bit) değerlerini depolar ve ikisi de Kayıtlar olarak adlandırılan 16 bitlik kelimeler olarak sayısal değerleri depolar. Her biri ya salt okunur ya da okuma/yazma özelliğine sahiptir.
Veri Tipi | Erişim | Tanım |
Bobin | Okuma-yazma | Tek bit çıkışlar. |
Ayrık Giriş | Salt okunur | Tek bit girişler. |
Giriş Kaydı | Salt okunur | 16 bit giriş kayıtları. |
Holding Kaydı | Okuma-yazma | 16 bit çıkış kayıtları. |
Modbus fonksiyon kodlarının üç kategorisi vardır:
- Genel Fonksiyon Kodları - Kullanıcı tanımlı kodlar hariç 1'den 127'ye kadar.
- Kullanıcı Tanımlı Fonksiyon Kodları - 65 ila 72 ve 100 ila 110 arasında iki aralıkta.
- Ayrılmış Fonksiyon Kodları - Bazı şirketler tarafından eski ürünler için kullanılır ve genel kullanıma açık değildir.
Fonksiyon tipi | İşlev adı | Fonksiyon kodu | ||
Veri Erişimi | Bit erişimi | Fiziksel Ayrık Girişler | Ayrık Girişleri Okuma | 2 |
Dahili Bitler veya Fiziksel Bobinler | Bobinleri Okuyun Tek Bobin Yaz Çoklu Bobin Yazma | 1 5 15 | ||
16 bit erişim | Fiziksel Giriş Kayıtları | Giriş Kayıtlarını Okuma | 4 | |
Dahili Kayıtlar veya Fiziksel Çıkış Kayıtları | Çoklu Tutma Kayıtlarını Okuma Tek Tutma Kaydı Yaz Birden Fazla Tutma Kaydı Yazma Çoklu Kayıtları Okuma/Yazma Maske Yazma Kaydı Okuma FIFO Kuyruğu | 3 6 16 23 22 24 | ||
Dosya Kayıt Erişimi | Dosya Kaydını Oku Dosya Kaydı Yaz | 20 21 | ||
Teşhis | İstisna Durumunu Oku Teşhis Com Olay Sayacını Al Com Olay Günlüğünü Al Slave Kimliğini Bildir Cihaz Tanımlamasını Oku | 7 8 11 12 17 43 | ||
Diğer | Kapsüllenmiş Arayüz Aktarımı | 43 |
İşlev türü: Veri Erişimi Alt tip: Bit erişimi Kategori: Fiziksel Ayrık Girişler Fonksiyon adı: Ayrık Girişleri Oku Fonksiyon kodu: 2 |
İşlev türü: Veri Erişimi Alt tip: Bit erişimi Kategori: Dahili Bitler veya Fiziksel Bobinler Fonksiyon adı: Bobinleri Oku Fonksiyon kodu: 1 |
İşlev türü: Veri Erişimi Alt tip: Bit erişimi Kategori: Dahili Bitler veya Fiziksel Bobinler Fonksiyon adı: Tek Bobin Yaz Fonksiyon kodu: 5 |
İşlev türü: Veri Erişimi Alt tip: Bit erişimi Kategori: Dahili Bitler veya Fiziksel Bobinler Fonksiyon adı: Birden Fazla Bobin Yaz Fonksiyon kodu: 15 |
İşlev türü: Veri Erişimi Alt tip: 16 bit erişim Kategori: Fiziksel Giriş Kayıtları İşlev adı: Giriş Kayıtlarını Oku Fonksiyon kodu: 4 |
İşlev türü: Veri Erişimi Alt tip: 16 bit erişim Kategori: Dahili Kayıtlar veya Fiziksel Çıkış Kayıtları Fonksiyon adı: Çoklu Tutma Kayıtlarını Oku Fonksiyon kodu: 3 |
İşlev türü: Veri Erişimi Alt tip: 16 bit erişim Kategori: Dahili Kayıtlar veya Fiziksel Çıkış Kayıtları Fonksiyon adı: Write Single Holding Register Fonksiyon kodu: 6 |
İşlev türü: Veri Erişimi Alt tip: 16 bit erişim Kategori: Dahili Kayıtlar veya Fiziksel Çıkış Kayıtları Fonksiyon adı: Çoklu Tutma Kayıtlarını Yaz Fonksiyon kodu: 16 |
İşlev türü: Veri Erişimi Alt tip: 16 bit erişim Kategori: Dahili Kayıtlar veya Fiziksel Çıkış Kayıtları Fonksiyon adı: Çoklu Kayıtları Oku/Yaz Fonksiyon kodu: 23 |
İşlev türü: Veri Erişimi Alt tip: 16 bit erişim Kategori: Dahili Kayıtlar veya Fiziksel Çıkış Kayıtları Fonksiyon adı: Maske Yazma Kaydı Fonksiyon kodu: 22 |
İşlev türü: Veri Erişimi Alt tip: 16 bit erişim Kategori: Dahili Kayıtlar veya Fiziksel Çıkış Kayıtları Fonksiyon adı: FIFO Kuyruğunu Oku Fonksiyon kodu: 24 |
İşlev türü: Veri Erişimi Alt tür: Dosya Kaydı Erişimi Fonksiyon adı: Dosya Kaydını Oku Fonksiyon kodu: 20 |
İşlev türü: Veri Erişimi Alt tür: Dosya Kaydı Erişimi Fonksiyon adı: Dosya Kaydı Yaz Fonksiyon kodu: 21 |
Fonksiyon tipi: Teşhis Fonksiyon adı: İstisna Durumunu Oku Fonksiyon kodu: 7 |
Fonksiyon tipi: Diyagnostik Fonksiyon adı: Diyagnostik Fonksiyon kodu: 8 |
İşlev türü: Teşhis Fonksiyon adı: Com Olay Sayacını Al Fonksiyon kodu: 11 |
İşlev türü: Teşhis Fonksiyon adı: Com Olay Günlüğünü Al Fonksiyon kodu: 12 |
Fonksiyon tipi: Teşhis Fonksiyon adı: Slave ID'yi bildir Fonksiyon kodu: 17 |
Fonksiyon tipi: Teşhis Fonksiyon adı: Cihaz Tanımlamasını Oku Fonksiyon kodu: 43 |
İşlev türü: Diğer İşlev adı: Encapsulated Interface Transport İşlev kodu: 43 |
İstismar
Güvenlik Açığı Analizi
OPSWAT Yüksek Lisans Bursiyerlerimiz, analiz yoluyla Modbus TCP iletişimi sırasında protokolün iletilen paketler için kimlik doğrulama ve şifrelemeden yoksun olduğunu keşfetti. Ayrıca, MicroLogix 1400 PLC'de girdi doğrulaması düzgün bir şekilde uygulanmamaktadır. Sonuç olarak, uzaktaki bir saldırgan Modbus TCP paketini paket koklama yoluyla analiz edebilir ve Modbus TCP protokolü aracılığıyla kimlik doğrulaması olmadan PLC'ye herhangi bir istek gönderebilir. MicroLogix 1400 PLC cihazının giriş doğrulama eksikliği nedeniyle, uzaktan kimliği doğrulanmış bir saldırgan rastgele değerlere sahip çok sayıda paket gönderebilir ve bu da PLC'nin çökmesine neden olabilir.
Kayıt Üzerine Yazma
Başlangıçta, PLC'deki kayıtları okumak veya yazmak için kullanılan Modbus TCP paketlerini yakalamaya çalıştık. Bunu başarmak için, MicroLogix 1400 PLC'deki kayıtların okunmasını ve yazılmasını kolaylaştıran Modbus Poll adlı bir uygulama tarafından oluşturulan paketleri inceledik.
Ağ arayüzünden gelen tüm paketleri yakalamak için Wireshark kullanarak, tek bir kayıt yazmak için Modbus TCP paketini tanımlayabiliriz:
Koklanan paketlerin yapısına dayanarak, hedef PLC'de bir kaydın yazılmasını talep eden TCP paketleri göndermek için basit bir Python betiği geliştirdik. Bu senaryoda PLC'nin IP adresi 192.168.93.89'dur.
Kötü niyetli kimliği doğrulanmamış paketimizi aldıktan sonra PLC'nin kaydı değiştirildi.

Micro Logix 1400'de çoğu matematik talimatı üç parametre kullanır: Kaynak A, Kaynak B ve Hedef
Kaynak A ve Kaynak B için değerler N13:3 ve N13:4 adlı iki 16 bitlik kayıttan gelebilir. Ayrıca, N13:3 ve N13:4 gibi bu 16 bitlik kayıtlardaki değerler -32,768 ila +32,767 aralığında sınırlandırılmıştır. N13:3 ve N13:4 değerleri büyükse, eşleştirme komutunun sonucu veri tipinin maksimum aralığını aşarak PLC'nin çökmesine neden olabilir. Sonuç olarak, PLC'de bir çökmeye neden olmak için, N13:3 ve N13:4 dahil olmak üzere tüm kayıtlara büyük rastgele değerler yazmak gerekir. Bunu başarmak için Python betiğimizi aşağıdaki gibi değiştirdik:
Saldırıyı Simüle Edin
Gerçek dünyadan bir saldırıyı simüle etmek için, OPSWAT Mezun Bursiyerlerimiz, hem saldırganın hem de PLC'nin aynı ağ üzerinde olduğu ve birbirleriyle iletişim kurabildiği varsayımı altında, OPSWAT CIP Laboratuvarlarında bulunan MicroLogix 1400 PLC'de bir çökmeye neden olmaya çalıştılar.
OPSWAT Laboratuvarlarındaki MicroLogix 1400 PLC'nin normal çalışma durumunda, PLC UZAKTAN ÇALIŞTIRMA modundayken, tüm kayıt değerleri geçerlidir ve veri türleri için belirlenen aralıkta yer alır, bu da kullanıcı programının doğru çalıştığını gösterir.
Python betiğimizin çalıştırılmasının ardından, PLC'ye çok sayıda Modbus TCP paketi gönderilecek ve kimlik doğrulaması olmadan tüm kayıtlara büyük rastgele değerlerin yazılması istenecektir:
Bu kötü niyetli paket istekleri alındıktan sonra, N13:3 ve N13:4 dahil olmak üzere tüm kayıtların değerleri 16,990'a ayarlanır. N13:3 ve N13:4 kayıtlarındaki ADD işleminin sonucu 16 bitlik bir kaydın geçerli aralığını aşar. Bu sorun bir tamsayı taşmasına neden olarak bir hataya yol açar ve PLC'nin çalışmasını FAULTED (ARIZALI) durumuyla gösterildiği gibi kesintiye uğratır.
OPSWAT Mezun Arkadaşlarımız CVE-2021-22659'dan yararlanarak MicroLogix 1400 PLC'yi başarılı bir şekilde çökerttiler.
İyileştirme
CVE-2021-22659 gibi güvenlik açıkları karşısında, OT ve siber-fiziksel sistemlerin korunması için kapsamlı iyileştirme çok önemlidir. Aşağıda, saldırıların yayılmasını önlemek için kullanılabilecek bazı temel stratejiler verilmiştir:
- Bilinen CVE'leri tespit etme: CVE-2021-22659 gibi güvenlik açıkları için ağları düzenli olarak taramak.
- Anormal davranışlar için izleme: Micrologix 1400 PLC'ye iletişim sıklığındaki olağandışı artışların işaretlenmesi, bu da devam eden bir yetkisiz veri aktarımı saldırısına işaret edebilir.
- Yeni cihaz bağlantılarını tanımlama: Sistem, PLC'ye yeni bir cihaz bağlandığında bunu algılamalıdır.
- Ağ segmentasyonu: Etkilenen cihazların izole edilmesi, saldırıların yanal olarak yayılmasını önlemeye yardımcı olabilir ve böylece etkiyi en aza indirir.
OPSWAT'ın MetaDefender OT Security , CVE'leri tespit ederek, olağandışı davranışlar için ağı sürekli izleyerek ve yetkisiz bağlantıları belirleyerek bu ihtiyaçları karşılar. Yapay zeka kullanarak normal trafik modellerini öğrenir, temel davranışları belirler ve anormallikleri uyarmak için politikalar uygular. Bu, potansiyel tehditlere anında ve bilinçli yanıtlar verilmesini sağlar.
CVE-2021-22659'dan yararlanan bir saldırı durumunda MetaDefender OT Security , belirlenen kurallara göre şüpheli iletişimleri engellemek için MetaDefender Industrial Firewall ile entegre olur. Güvenlik duvarı, düzenli trafik modellerini öğrenmek ve yetkisiz bağlantıları önlemek için politikaları uygulamak için yapay zeka kullanır.
Bu algılama, uyarı ve ağ segmentasyonu özelliklerini bir araya getiren MetaDefender OT Security , endüstriyel ortamlar için ideal bir savunma mekanizması haline gelerek operasyonel teknoloji ortamlarındaki siber tehditlerin riskini ve etkisini önemli ölçüde azaltır.
OPSWAT'ın derinlemesine savunma siber güvenlik platformunun duruşunuzu nasıl geliştirebileceğini ve olgunlaştırabileceğini keşfedin. Ücretsiz demo için bugün bir uzmanla konuşun.