SCADA açılımı Supervisory Control And Data Acquisition yani “Merkezi Denetleme Kontrol ve Veri Toplama” sistemidir. Kritik sistemlerin ve tesislerin merkezi olarak izlenmesine olanak veren sistemdir.
SCADA Sistemlerinin Başlıca Özellikleri
- Grafik Arayüz
- İzleme Sistemi
- Alarm Sistemi
- Veri Toplama, Analiz ve Raporlama Sistemleridir.
SCADA üç temel bölümden oluşur;
- Uzak Uç Birim (Remote Terminal Unit (RTU) )
- İletişim Sistemi
- Kontrol Merkezi Sistemi (Ana Kontrol Merkezi AKM – Master Terminal Unit MTU)
İletişim Protokolleri
RS232 / RS422 / RS485 / Modbus protokolleri, bir Modbus cihazını bir veya daha fazla genel seri cihaz (örneğin, yazıcılar, barkod tarayıcılar ve benzeri) ile birçok cihaz bilgisayarlara veya birbirlerine bağlanabilmeye izin verir.
SCADA’nın Kullanım Alanları
- Nükleer Tesisler
- Elektrik Tesisleri
- Su Toplama-Arıtma-Dağıtım Tesisleri
- Trafik Kontrol Sistemleri
- Otomotiv Endüstrisi
- Doğalgaz Tesisleri
- Kısaca aklımıza gelebilecek endüstriyel otomasyon sistemlerinde kullanılmaktadır.
SCADA Sistemleri hakkında genel bilgileri verdikten sonra gelelim SCADA Network ve Güvenliğine :
Yukarıda gördüğünüz örnek bir SCADA Network topolojisidir. Uzakdaki PLC istasyonlarından sensörlerden toplanan verileri toplayarak merkezi olarak denetlenmesini sağlamaktadır.
Yukarıda Modbus protokolunun SCADA içinde kullanım örneği görülmektedir. MODBUS protokolü seri port ve internet protokollerini kullanarak haberleşme yapar. ( MODBUS RTU, MODBUS ASCII,MODBUS PLUS, MODBUS TCP/IP )
SCADA Sistemlerinde Güvenlik Riskleri
- SCADA Yazılımlarında bulunan zafiyetler
- SCADA Network Protokol ve Cihazlarında bulunan zafiyetler
- Dışa açık SCADA Kontrol ve Yönetim Panellerinde Ön tanımlı parola kullanımı
- Kullanılan işletim sistemlerinde bulunan zafiyetler
yukarıda ki adımlar SCADA sistemlerinde güvenlik açısından büyük risk oluşturmaktadır.
SCADA Sistemlerinde güvenlik için kontrol edilebilecek noktalar
- Cihazlar fabrika varsayılan kimlik bilgileri kullanıyor mu?
- SCADA Network Protokol ve Cihazları güncel mi?
- PLC’lere erişim yalnızca yetkili makineler için beyaz listeye alınmış mı? Her yerden erişilebilir olmamalıdır.
- SCADA ağı şebekenin geri kalanından ayrı mı? Eğer değilse, kurumsal iş istasyonlarından PLC’lere ulaşmayı deneyin.
- SCADA kontrol merkezine fiziksel erişim sınırlı mı?
- Denetleyici makineden internete erişebilir misin?
- SCADA ağında çalışan açık metin hizmetleri var mı?
- Kurum sıkı bir parola politikası izliyor mu?
- Denetleyici makineleri, iş istasyonları ve sunucular güncel mi? (Eski sürüm zafiyerleri MS08-067,MS17-010 vb.)
- Anti-virüs yazılımı çalıştırıyorlar mı? ve uygulama beyaz listesine zorla uygulanıyor mu?
Örnek SCADA Sızma Testi Uygulamaları :
SCADA Network’unde bulunabilecek bir Windows XP işletim sistemi üzerine ABB MicroSCADA Pro SYS600 9.3 yazılımı ve Modbus slave simulator yazılımı olan Modbus Pal 1.6b yazılımları kurulmuştur. Bu makina üzerinden örnek bir kaç senaryo incelenecektir.
İlk olarak yazılımlara geçmeden önce kullanılan işletim sisteminin güncel olması ve zafiyetlerden etkilenmemesi gereklidir. Yukarıda gördüğünüz gibi kullanılan Windows XP makina MS08-067 zafiyetinden etkilenmektedir ve sisteme metasploitin exploit/windows/smb/ms08_067_netapi exploiti ile sızılmıştır.
Yukarıda ki resimde ABB MicroSCADA Pro SYS600 9.3 ve Modbus TCP/IP protokolünü kullanan Modbus Pal 1.6b modbus slave simulator uygulamalası görülmektedir.
Modbus TCP port 502 üzerinden çalışmaktadır. Modbus TCP/IP açık metinli bir protokoldür. Ortadaki adam saldırılarına açıktır. (MitM)
nmap –script modbus-discover.nse –script-args=’modbus-discover.aggressive=true’ –scan-delay=1 -p 502 <host>
Yukarıda ki Nmap Script Engine (NSE) ile Modbus protokol kullanımını tespit edebilirsiniz.
Metasploitin auxiliary/scanner/scada/modbusclient modülü Modbus protokolünü kullanarak bir PLC’ye veri okuma ve yazma imkanı verir. Aşağıda metasploite girilen DATA_ADRESS 0 yukarıda ki resimde gördüğünüz 1. değere,DATA_ADRESS 2 yazıldığında ise 3. değeri okuyup getirdiği görülmektedir.
Modbus protokolü üzerinde Data adreslerinde ki değerleri okuyabildiğimiz gibi yazma işlemide gerçekleştirilebilmektedir. auxiliary/scanner/scada/modbusclient modülüne set ACTION WRITE_REGISTER komutunu girdikten sonra istenilen DATA_ADRESS belirtildikten sonra yazılmak istenen değer DATA değişkeninde belirtilerek işlem gerçekleştirilebilir.
DATA_ADRESS olarak 0 girilip DATA olarak 57 verisi girildiği için Modbus Pal 1.6b modbus slave simulator yazılımında yazan ilk değer 0 dan 57 ye değişmiştir.
Bunun haricinde Nmap’in scada için olan NSE’lerine buradan ulaşabilirsiniz.
ABB MicroSCADA uygulamasında wserver.exe uzaktan kod yürütme zafiyetinden etkilenmektedir.
ABB MicroSCADA’daki uzaktan Stack tabanlı Buffer Overflow güvenlik açığı bulunmaktadır. Zafiyet , komut çalıştırmayı sağlayan wserver.exe bileşenindeki kimliği doğrulanmamış EXECUTE işlemlerinin işlenmesinden kaynaklanmaktadır. Wserver.exe bileşeni varsayılan olarak devre dışıdır, ancak bir proje SCIL işlevini WORKSTATION_CALL kullandığında gereklidir. Scada Network ile haberleşmesi için açıldığında güvenlik zafiyeti oluşturmaktadır.
Metasploit ile exploit/windows/scada/abb_wserver_exec exploiti kullanılarak yazılım üzerinden sisteme sızılabilir.
ABB MicroSCADA Pro SYS600 9.3 yazılımında bulunan zafiyet ile sisteme sızılmıştır. Kurulu olan SCADA yazılımlarının en güncel versiyonda çalışıp ve üzerinde zafiyet bulunmadığından emin olmalısınız.
İşletim sistemi zafiyetleri, Modbusprotokol zafiyetleri ve SCADA yazılım zafiyetlerinin basit birer uygulamasını tamamlamış olduk. Farklı SCADA yazılımlarında benzer ve ya farklı zafiyetler bulunabilir. Bunun dışında da oldukça basit görülen fakat en az bunlar kadar kritik olan ön tanımlı kullanıcı adı ve parola kullanımı/kurulumu yapılmış yazılımlardır.
Yukarıda ki resimde bulunan WAGO yazılımı SCADA yazılımlarının web tabanlı yönetim panelidir. Bu web tabanlı yönetim panelleri internete açık bir şekilde bırakılmamalıdır. Dışarıdan erişilmesi gerekiyorsa IP kısıtlaması veya VPN kullanılmalıdır. WAGO üzerinden tüm servis, port ve sistem hakkındaki tüm bilgilere erişilip hatta sistemi yeniden başlatılabilir.
Yukarıda ki resimde WAGO web tabanlı yönetim panelinin varsayılan parolaları görülmektedir. Bunlar herkese açık bir şekilde bulunmaktadır. Hem dışa açık hemde ön tanımlı kullanıcı adı ve parola kullanımı oldukça kötü sonuçlara neden olabilir. SCADA yazılım ve sistemlerinin ön tanımlı kullanıcı adı ve parolalarına buradan ulaşabilirsiniz.
Testlerimiz sırasında karşılaştığımız WAGO yazılımında Takım Liderim Canberk BOLAT tarafından bulunan command injection zafiyetini incelemek isteyenler burada ki teknik detaylara göz atabilir.
SCADA sistemlerini test ederken kullanabileceğiniz bir çok aracın listesine buradan ulaşabilirsiniz.
Güvenli günler dilerim.
Kaynaklar :
- http://www.elektrikrehberiniz.com/elektronik/modbus-nedir-10834
- http://www.elektrikport.com/teknik-kutuphane/modbus-nedir/17063
- http://www.elektrikport.com/teknik-kutuphane/scada-nedir-elektrikport-akademi/8051
Teşekkür :
Blog yazısında bulunan hatayı bildirerek düzeltmeye katkı sağlayan Semih Demirci‘ye teşekkür ederim.
Leave a Reply