SCADA (Supervisory Control And Data Acquisition)



scada



Uzaktan Kontrol ve gözlem sistemi olan bilgisayarlardan, haberleşme cihazlarından, algılayıcılardan veya diğer cihazlardan oluşturulmuş denetlenebilen ve kontrol edilen bir sistemin genel adıdır.

SCADA sistemi, hidroelektrik, nükleer güç üretimi, doğalgaz üretim ve işleme tesislerinde, gaz, yağ, kimyasal madde ve su boru hatlarında pompaların, valflerin ve akış ölçüm ekipmanlarının işletilmesinde, kilometrelerce uzunluktaki elektrik aktarım hatlarındaki açma kapama düğmelerinin kontrolü ve hatlardaki ani yük değişimlerinin dengelenmesi gibi çok farklı alanlarda kullanılabilmektedir.

SCADA sistemleri hem donanım hem de yazılımdan oluşur. Tipik donanım, bir kontrol merkezine yerleştirilen bir MTU, iletişim ekipmanı (örneğin, radyo, telefon hattı, kablo veya uydu) ve aktüatörleri veya monitörleri kontrol eden bir RTU veya PLC' den oluşan bir veya daha fazla coğrafi olarak dağıtılmış alan alanını içeri. MTU, RTU veya PLC yerel işlemi kontrol ederken, bilgileri RTU giriş ve çıkışlarından saklar ve işler. İletişim donanımı, bilgi ve verilerin MTU ve RTU lar veya PLC'ler arasında ileri geri aktarılmasına izin verir. Yazılım, sisteme ne zaman izleneceğini, hangi parametre aralıklarının kabul edilebilir olduğunu ve parametrelerin kabul edilebilir değerler dışında değiştiğinde hangi yanıtı başlatacağını söylemek için programlanmıştır.

Büyük endüstriyel sistemleri uzaktan izleme ve kontrol etme kabiliyetine sahip olma, şirketlerin ve endüstrilerin daha fazla hizmet sunabilmek için yeteneklerini genişletmelerine izin verirken, aynı zamanda teknolojilerin işletilmesinden ve mühendisliğinden sorumlu personelin erişebileceği verileri erişilebilir kılar.

Süreçler için gözetleyici denetim ve veri toplama işlemlerini yapan sistemler için kullanılan SCADA sistemleri, fabrikadaki süreçlerin (hammadde, üretim ve mamul madde takibi vb.) denetiminde kullanılan çeşitli araçlarla (RTU, PLC vb.) birlikte fabrikanın üretim kontrolü ve takibine yönelik bir alt yapı oluştururlar. Bu altyapının imkan verdiği ölçüde üretim kaynakları planlaması (MRPII) ve işletme kaynakları planlama (ERP) sistemleriyle gerekli bağlaşımlar kurularak ideal bir yapıya erişilebilir.

SCADA sistemlerine yönelik literatürde bilinen siber saldırılar analiz edilmiştir. Ayrıca EKS’de kullanılan endüstriyel haberleşme protokollerinin istatistikleri çıkarılarak bunlar içerisinde en sık kullanılan protokolün Modbus TCP olduğu tespit edilmiştir. Ayrıca, Modbus TCP protokolünde kaynak IP adresi kontrolünün yapılmadığı ve bunun da istimar edilebilecek bir güvenlik riski oluşturduğu gözlenmiştir. SCADA sistemlerini oluşturan bileşenlerin ve bu sistemlerin haberleşmesinde kullanılan endüstriyel protokollerin zafiyetleri açıklanarak Modbus TCP protokolünün güvenliğinin iyileştirilmesi hedeflenmiştir.


SİMGELER VE KISALTMALAR

Bu çalışmada kullanılmış simgeler ve kısaltmalar, açıklamaları ile birlikte aşağıda sunulmuştur.

AGA               : Amerika Gaz Birliği
API                 : Amerikan Petrol Enstitüsü
ARP                : Adres Çözümleme Protokolü
CIP                 : Kritik Altyapı Koruma
CPNI              : Ulusal Altyapıları Koruma Merkezi
DDOS            : Dağıtık Hizmet Engelleme
DHS               : Ulusal Güvenlik Dairesi
DNP3             : Dağıtık Ağ Protokolü 3
DOS               : Hizmetin Engellemesi
EKS               : Endüstriyel Kontrol Sistemi
GRI                :  Gaz Araştırmaları Enstitüsü
HMI               : İnsan-Makina Arayüzü
IED                : Akıllı Elektronik Cihaz
IGT                : Gaz Teknolojileri Enstitüsü
ISO                : Uluslararası Standartlar Teşkilatı
MITM           : Araya Girme Saldırısı
MTU             : Merkezi Terminal Birimi
NERC           : Kuzey Amerika Elektrik Emniyeti Kuruluşu
NIST             : Amerika Ulusal Standartlar ve Teknoloji Enstitüsü
NSTB            : Ulusal SCADA Deney Düzeneği
OSI                : Açık Sistem Ara Bağlantısı
PLC               : Programlanabilir Mantıksal Denetleyici
RINSE           : Gerçek Zaman Kapsamlı Ağ Simülasyon Ortamı
RTU               : Uzak Terminal Birimi
SCADA         :  Danışmalı Kontrol ve Veri Toplama Sistemi
SQL               : Yapılandırılmış Sorgu Dili
STS                : Saldırı Tespit Sistemi





SCADA SİSTEMLER VE ALTYAPILAR


Elektrik güç sistemlerinin kullanımında enerji, bankacılık, iletişim, üretim gibi kritik altyapılarda SCADA sistemleri kullanılır. SCADA sistemleri kritik altyapı endüstrisinde yaygın olarak kullanılan ve uzaktan denetleme ve kontrol sağlayan sistemlerdir. SCADA sisteminin temel fonksiyonu, elektrik dağıtımından sorumlu olan cihazları izlemek ve denetlemektir. Ek fonksiyon olarak hata tespiti, ekipman izolasyonu ve restorasyonu, yük ve enerji yönetimi, otomatik sayaç okuma ve trafo kontrolüdür.

SCADA, gerçek zamanlı olarak yerel ve coğrafi olarak dağıtık işlemleri ölçen ve raporlayan birbirinden bağımsız sistemler topluluğudur. Kullanıcıya uzaktaki tesislere komut göndermeye ve oradan verileri çekmeye olanak sağlayan telemetri ve veri toplama kombinasyonudur.

SCADA genel olarak aşağıda bölümlerden oluşur:

Saha tarafı:

     RTU (Remote Terminal Unit) veya PLC ler
     İletişim sistemi
     Merkezi sunucular

Yazılım tarafı:

     Kullanıcı arayüzü (Grafik arayüz)
     İzleme sistemi
     Alarm Sistemi
     Veri analiz ve raporlama sistemi

SCADA sistemleri haberleşme sistemi olarak EIA standartları olan RS-232, RS-422 ve RS-485 standartlarını kullanmaktadır. Bu protokollere ek olarak daha bir çok standart protokol de kullanılmaktadır.

Kullanım alanları:

     Bir prosesin olduğu endüstriyel tesisler (Çimento, Şeker, İlaç, Boya vb. fabrikalar)
     Enerji nakil hatları
     Barajlar, Temiz – atıksu arıtma tesisleri
     Raylı sistemler
     Trafik sistemleri
     Tüneller
     Doğalgaz tesisleri
     Gıda fabrikaları
     Nükleer tesisler


SCADA kontrol sisteminin temel bileşenleri MTU (Master Terminal Unit), RTU (Remote Terminal Unit) ve haberleşme ağıdır.


control-network

Merkezi Terminal Birimi (MTU) :

Merkezi denetleyici veya merkezi terminal birimi olarak isimlendirilen MTU, yerel bir ağ (LAN) ile veya geniş alan ağı (WAN) ile bir sunucu veya bir grup bilgisayarın ana sunucuyla bağlanma formudur.
            Görevleri:
     SCADA bileşenlerinin haberleşmesini izlemek ve denetlemek
     HMI yazılımı kullanarak SCADA haberleşmesi ile ilgili bilgi ve verileri grafiksel bir arayüz ile görüntülemek.
     Saha cihazlarına komut göndermek ve almak.

Uzak Terminal Birimi (RTU):

SCADA mimarisinde Slave istasyonları olarak davranırlar. SCADA tarafından kontrol edilen ve izlenen ekipman veya makinalara bağlı olan saha cihazlarından oluşur. Bu cihazlar parametreleri izlemek için sensörleri ve sistemin modüllerini kontrol etmek amacıyla aktüatörü veya uyarıcıyı bünyesinde bulundurur. RTU lar,  MTU istasyonuna geri göndermek üzere sensörlerden gerçek zamanlı bilgileri gönderir ve ana istasyondan gelen bilgileri alır. RTU cihazları coğrafi olarak farklı birçok konumda konuşlandırılarak dağıtık bir şekilde gerçek zamanlı bilgileri merkezi istasyona LAN/WAN bağlantılarını kullanarak gönderir.

Programlanabilir mantıksal denetleyici (PLC):

işlemleri ve kontrol mekanizmasını uygulamak için girilen talimatları depolamak ve sıralama, zamanlama ve sayma gibi fonksiyonları uygulamak için programlanabilir hafızayı kullanabilen mikroişlemci tabanlı denetleyicilerin özel bir formudur. Mantıksal ve anahtarlama işlemlerinin uygulanması bu cihazlardaki öncelikli işlevdir ve içerisinde yazılımsal olarak çok sayıda röle, saymaç, zamanlayıcı ve veri depolama ünitesi mevcuttur.

SCADA haberleşme protokolleri

SCADA sistemleri, MTU ve bir veya daha fazla RTU’lar arasında iletişim kurmak için kullanılan açık veya özel haberleşme protokollerini kullanarak tasarlanmıştır. SCADA protokolleri alt istasyon bilgisayarlarının, RTU’ların, IED’lerin ve MTU’ların birbiriyle haberleşmesi için transmisyon özelliklerini sağlar.

En çok kullanılan SCADA haberleşme protokolleri:

     DNP3
     Modbus
     Profinet

Modbus protokolü

Modbus protokolü SCADA ya özel geliştirilmiş ve endüstriyel bir protokoldür. Modbus farklı tip ağlarda bağlı cihazlar arasındaki server/client haberleşmesi için uygulama katmanı mesajlaşma protokolüdür. Modbus iletişimi bir Master ve çoklu Slave arasındadır. Master, genellikle çalışan bir PC veya HMI cihazıdır, Slave ise genellikle bir PLC veya PID kontrolörleri veya sayaçları gibi akıllı cihazlardır. Slave ler ICS verilerini toplamak ve ICS parametrelerini değiştirmek için Master ile iletişim kurarlar. Slave ler, Master'ın sorgusuna veri bildirme yanıtını verir ve Master komutunun altındaki parametreleri değiştirir.


ModBus ‘ın üç iletişim modu vardır: ASCII, RTU ve TCP / IP. Modbus / TCP modunda, tüm ana ve Slave lerin kendi IP adresleri vardır, ISS ‘ler tarafından tanımlanabilir ve Ethernet, HUB veya Switch ile birbirine bağlanabilir. ASCII ve RTU modunda, Slave ler Slave kimliği ile tanımlanır ve seri hatlarla (RS232, RS485 veya RS422) Master ’ a bağlanır.



modbus-rtu


Resim : ModBus RTU protokolünün mesaj yapısı


modbus-tcp
Resim : ModBus TCP Mesaj yapısı


ModBus TCP Server Çalışma Döngüsü

  1. Client sorgu (MODBUS sorgusu) gönderdiğinde, TCP/IP yığın veriyi alır
  2. Sorgu bir bağlantı isteği  veya ModBus sorgusu olabilir
Sorgu bir bağlantı isteği ise;
      Erişim kontrolü kontrol edilir ve kabul edilir.
      Bağlantı nesnesini ve ModBus çerçevesi için bellekte yer tahsis edilir.
      Sorgu bir ModBus isteği ise, tüm ModBus Sorgusu okunabilir.

      3.   Alınan MBAP çerçevesi analiz edilmek için ServerTask a gönderilir. Bir hata 
oluşursa Exception çerçevesi oluşturulur, aksi takdirde yanıt oluşturulur.
       4.  Yanıt ağ üzerinden gönderilir. Bağlantı nesnesindeki işlem ağ üzerinden alınan 
verilerle yapılır.

       
ModBus TCP Client Çalışma Döngüsü

  1. Sorgu kullanıcı uygulamasından gelir.
  2. Client ın görevi ModBus sorgusunu alır,  Sorgu alındığında sorguya karşılık gelen yanıtla ilişkilendirir.
  3. MODBUS sorgusu, TCP_Management öğesine gönderilir.
  4. Server ile bağlantı kurulmuşsa, mesaj ağ üzerinden gönderilebilir. Aksi takdirde, mesaj ağ üzerinden gönderilmeden önce bir bağlantı açılır.
  5. Ağdan bir yanıt alındığında, veri TCP/IP yığınına yazılır. Bağlantı kurulmuşsa, MBAP okunur. Client  ModBus onayını alır.
  6. Yanıt kullanıcı uygulamasına yazılır ve işlem kaynağı serbest bırakılır.


Modbus protokolünün temel fonksiyonları:

     Okuma için kontrol sargısı komutları ve tekli veya grup sargı ayarlamaları
     Girdi gruplarının giriş durumlarını okumak için girdi kontrol komutları
     Bekleyen yazmaçları okumak ve ayarlamak için yazmaç kontrol komutları
     Hata bulma testi ve fonksiyon raporu
     Program fonksiyonları
     Sorgulama kontrol fonksiyonları
     Sıfırlama


SCADA Sistemi Güvenlik Açıkları

Modbus iletişimi bir Master (veya istemci olarak adlandırılır) ve çoklu Slave (veya sunucu olarak adlandırılır) arasındadır. Master, genellikle çalışan bir PC veya HMI cihazıdır, Slave ise genellikle bir PLC veya PID kontrolörleri veya sayaçları gibi akıllı cihazlardır. Slave ’ler, Master ’ın sorgusuna veri bildirme yanıtını verir ve Master komutunun altındaki parametreleri değiştirir.


Modbus açıklıkları ve saldırıları:

Modbus sistemlerine ve ağlarına yönelik saldırılar bu protokolün özelliklerine, uygulamalarına ve altyapısına göre istismar edilir. Modbus Seri Protokolüne yapılan saldırılar Master ve Slave cihazlarına ve seri haberleşme ağına yönelik gerçekleşirken, Modbus TCP ye yapılan saldırılar IP ağına, Master ve Slave cihazlarına gerçekleştirilir. Bu saldırılarda mesajın içeriğine erişilmesinden dolayı taşınan bilginin gizliliğinin ifşa olmasına sebep olabilir.


SCADA Sızma Testi


Modbus protokolü açık metin olarak iletişim kurar; ve hiçbir kimlik doğrulama yoktur. Bu, bir saldırganın Modbus HMI ’ye (insan makine arayüzü) veya Modbus cihazlarına doğrudan ağ bağlantısı kurduktan sonra Modbus tabanlı ICS'yi kolayca kontrol edebilmesi anlamına gelir.


Lab ortamının hazırlanması:

ModBus Client Modbus Master ve Saldırgan olarak lab ortamı hazırlandı Aşağıda Resim 1 de  gösterilmiştir.



lab-ortamı
Resim 1 : Lab ortamı



Slave Master iletişimi için simulasyon arçları olarak ModbusPal.jar ve QModMaster uygulamaları kullanılmıştır.

ModbusPal.jar uygulaması ile Slave ler oluşturulabilir ve uzaktaki bir Modbus Master uygulamsının ModbusPal uygulamasındaki  oluşturulan sanal Slave ‘e erişimine izin vermektedir. Aşağıda Slave oluşturulmuş ve Bu slave için Holding Register ‘lar ve Coil ler tanımlanmıştır. Gerekli ayarlamalar yapıldıktan sonra Run komutu vererek Slave hazır hale getirilir. Aşağıda Resim 2 de bu yapı gösterilmektedir.


modbuspal
Resim 2: ModbusPal.jar uygulaması


Master Uygulaması olarak kullanılan QModMaster  ile ModbusPal.jar uygulaması üzerindeki slave ile bağlantı kurulmuş ve okunan değerler aşağıdaki Resim 3 te gösterilmiştir.


QModMaster
Resim 3 : QModMaster uygulaması


QModMaster uygulaması ile Fonksiyon kodu 0x06 ile 3 değer olan 0 değeri hexadecimal 16 decimal 22 ile değiştirilmiş ve Wireshark paket analizi Resim 4 te gösterilmişti.



Wireshark
Resim 4 : Wireshark paket analizi


Bu aşamadan sonra Ağda dahil olan saldırgan gözünden Modbus ların tespiti Slave ler üzerindeki Register üzerindeki dataların okunması ve bu Register üzerindeki dataların değerlerinin değiştirilmesi gösterilecektir.

Pentest aşamalarında öncelikle sistemlerin tespiti ve ağın haritalanması gerçekleştirilir. Bu aşamaların ilk adımı nmap ile tüm ağı taramaktır. Modbus TCP protokolü 502 ve 503 numaralı port üzerinde çalışmaktadır. Basit bir nmap taraması, örneğin: nmap -sT <network_adresi> -p502,503 ile Ağda bulunan modbus lar tespit edilebilir. Bu çalışmada biz, tüm tespit Register okuma, Register a değer yazma, Sarmal okuma ve yazma adımlarını da içinde barındıran smod aracı ile testimizi gerçekleştireceğiz.


Smod aracı, modbus protokolünde test yapmak için ihtiyaç duyabileceğiniz her türlü tanısal ve manipüle etme özelliğe sahip modüler bir araçtır. Python ve Scapy kullanarak tam bir Modbus protokol uygulamasıdır. Bu yazılım Linux ve Mac OS X'te python 2.7.x altında çalıştırılabilir. Resim 5 bu aracın içinde barındırdığı modülleri göstermektedir.



Smod
Resim 5 : Smod aracı modülleri.


1. Adım modbus ların tespiti için modbus/scanner/discover modülünün kullanılması Aşağıda Resim 6 da gösterilmiştir. Resim 7 de bulunan modbus Protokolü gösterilmiştir.


smood-discover
Resim 6: Smod Discover modülü.


modbus-protokol
Resim 7 : Tespit edilen Modbus Protokolü.


3. Aşama da Modbus üzerinde bulunan Register değerleri readHoldingRegister modülü ile okunmuştur Resim 9.


register-değerleri
Resim 9: Register Değerlerinin okunması.


4. Aşama Register Değerlerinin değiştirilmesi writeSingleRegister modülü ile gerçekleştirilmiştir ve register 3 adresindeki 0 değeri hexadecimal 16 decimal 22 olarak slave e yazılmıştır Resim 10.



register-değerleri-1
Resim 10 : Register değerinin reğiştirilmesi.


Aşağıda Resim 11 de  son adıma(Register değerinin değiştirilmesi) ait wireshark ile saldırı anında yakalanan paket ve içeriği gösterilmiştir. 


saldırı-anı-paket
Resim 11 : Saldırı anında yakalanan paket.

SONUÇ VE DEĞERLENDİRMELER

Modbus Master, Modbus Slave ve saldırgan makinaları arasında akan Modbus TCP paketleri Wireshark aracı kullanılarak yakalanıp analiz edilmiştir. İlk etapta Modbus Master ve Modbus Slave makinaları arasında akan normal Modbus TCP paketleri yakalanmış ve daha sonrasında saldırgan makinasıyla smod aracı modülleri kullanılarak manipüle edilmiş Modbus TCP paketleri yakalanmıştır. Böylece normal Modbus TCP paketleriyle manipüle edilmiş Modbus TCP paketleri karşılaştırılarak analiz edilmiştir.

Yapılan analiz sonucunda Modbus TCP protokolünün kaynak IP kontrolünü yapmadığı, akan paketlerin şifrelenmeden açık metin şekilde gönderildiği, araya girerek iki cihaz arasında akan bütün paketlerin okunabildiği ve Smod aracı kullanılarak paketler üzerinde manipülasyon işlemlerinin gerçekleştirilebildiği analiz edilmiştir.

İçerik sahibi: Erhan YAZAN

Hiç yorum yok: