İçeriğe geç
Sedat Özdemir
Yazılar

ics-security

Fabrika Ayarlarına Dönmek: Paslı Boruların ve Korunmasız PLC'lerin Arasında Bir Gün

Endüstriyel sistemlerin o "izole" dünyasına sızıyoruz. PLC'ler neden ağlar, Shodan neden ağlatır ve Modbus neden şifre sevmez? Hepsi içeride.

Sedat Özdemir
· 5 dk okuma

Hiç "tamamen izole" olduğu iddia edilen o devasa fabrikanın aslında 10 yıllık, şifresiz bir VNC ekranıyla internete el salladığını fark edip soğuk terler döktün mü? Eğer dökmediysen, henüz gerçek bir endüstriyel ağ (OT - Operational Technology) sızma testi yapmamışsın demektir dostum.

Genelde biz Red Team tayfası olarak Windows domain'lerinde koşturmaya, Kerberoasting yapmaya veya EDR bypass kasmaya alışkınız. Ama işin içine o paslı boruların arkasındaki, üzerinde "Siemens", "Schneider" veya "Rockwell" yazan kutular girdiğinde oyunun kuralları dramatik bir şekilde değişiyor. Burada "move fast and break things" felsefesi seni sadece kovulmaya değil, koca bir şehrin elektriğinin kesilmesine veya bir fabrikanın fiziksel olarak havaya uçmasına kadar götürebilir.

Hava Boşluğu (Air-Gap) Şehir Efsanesidir

Sana bir sır vereyim: Gerçekten izole edilmiş bir endüstriyel ağ, unicorn'lar kadar nadirdir. Bir sızma testine gittiğimizde (hadi buna testCompany diyelim), "Sedat Bey, bizim üretim bandı dış dünyaya kapalı, sadece içeriden erişiliyor" dedikleri an, cebimdeki telefonun Wi-Fi listesini kontrol etmeye başlarım. Genelde o "izole" ağın bir yerlerinde, bakım yapmak için oraya bir 4G modem takmış yorgun bir bakım mühendisi veya verileri buluta aktarmak isteyen "yenilikçi" bir IoT gateway mutlaka vardır.

IT dünyasında bir sunucu çökerse "reboot" ederiz, en kötü snapshot'tan döneriz. OT dünyasında bir PLC (Programmable Logic Controller) çökerse, fiziksel bir süreç durur. Sıvı demir donar, basınç artar, valfler kilitlenir. Bu yüzden, endüstriyel bir ağda nmap -T4 -A çalıştırmak, porselen dükkanına fil sokmakla aynı şeydir. O eski püskü PLC'lerin TCP stack'leri o kadar zayıf ki, yoğun bir port taraması bile cihazın "kernel panic" yaşamasına sebep olabilir.

Modbus: Güvenliğin Unutulduğu Protokol

Endüstriyel dünyada en çok karşılaşacağın protokollerden biri Modbus. 1979 yılında tasarlanmış. Evet, yanlış duymadın; Walkman'lerin çıktığı yıl. O zamanlar "siber güvenlik" diye bir terim olmadığı için, protokolün içine ne bir kimlik doğrulama ne de bir şifreleme koymuşlar.

Eğer Modbus (genelde 502 portu) kullanan bir cihaza erişimin varsa, o cihazın kralı sensindir. Hiçbir kullanıcı adı veya şifre sormadan sana "Holding Register" denilen hafıza alanlarını okuma ve yazma izni verir.

Hadi biraz ellerimizi kirletelim. Diyelim ki içerideki bir ağda bir PLC buldun. Python ve pymodbus kütüphanesi senin en iyi dostun olacak. Aşağıdaki basit script ile bir cihazın register'larını nasıl okuyabileceğine bir bak:

from pymodbus.client import ModbusTcpClient

# Hedef PLC'nin IP adresi
plc_ip = '192.168.50.10' 
client = ModbusTcpClient(plc_ip, port=502)

if client.connect():
    print(f"[+] Bağlantı başarılı: {plc_ip}")
    
    # 0. register'dan başlayarak 10 tane oku
    # Bu register'lar sıcaklık, basınç veya motor hızı olabilir
    result = client.read_holding_registers(0, 10)
    
    if not result.isError():
        print(f"[*] Register Değerleri: {result.registers}")
    else:
        print("[-] Okuma hatası!")
        
    client.close()
else:
    print("[-] Bağlantı kurulamadı!")

Eğer bu register'lardan biri bir pompanın devir sayısını kontrol ediyorsa ve sen oraya client.write_register(0, 5000) gibi bir komut gönderirsen, fiziksel dünyada bir şeylerin çok hızlı dönmeye (ve muhtemelen bozulmaya) başladığını duyabilirsin. İşte endüstriyel güvenliğin "korkunç" yanı bu.

Shodan'da Korku Seansı

Bir Red Teamer olarak keşif (recon) aşamasında Shodan'da neler bulabileceğini tahmin bile edemezsin. Bazen "Acaba dünya ne durumda?" diye şu basit aramayı yapıyorum:

port:502 "holding registers"

Karşına çıkan sonuçlar genelde birer felaket senaryosu. Şifresiz su arıtma tesisleri, bina otomasyon sistemleri, hatta bazen güneş enerjisi santralleri... İnsanlar bu cihazları "kimse bulmaz" mantığıyla internete açıyorlar. Ama Shodan her şeyi bulur.

HMI Ekranları: En Zayıf Halka

OT dünyasının en eğlenceli (ve tehlikeli) yerlerinden biri HMI (Human-Machine Interface) panelleridir. Operatörlerin fabrikayı izlediği o dokunmatik ekranlar. Çoğu zaman bu ekranlar Windows CE veya benzeri çok eski bir işletim sistemi üzerinde çalışır. Ve sıkı dur; genellikle bu cihazlar üzerinde bir VNC sunucusu aktiftir ve şifresi ya boştur ya da 123456, password, admin gibi komik değerlerdir.

Bir sızma testinde VNC ile bir HMI'a bağlandığını düşün. Karşında fabrikanın tüm şeması var. Bir düğmeye tıklayarak bir fırını kapatabilir veya bir tankı boşaltabilirsin. Burada payload yazmana bile gerek yok, sadece bir mouse tıklamasıyla "impact" yaratabiliyorsun.

Terminalden Gelen Tehdit: S7comm

Siemens dünyasına girdiğinde işler biraz daha karmaşıklaşır. S7comm protokolü Modbus'tan biraz daha zekidir ama o da uzun süre korumasız kaldı. Bir PLC'nin içindeki mantığı (logic) çekmek veya değiştirmek istiyorsan, s7scan gibi tool'lar hayat kurtarır.

Örneğin, bir PLC'nin CPU bilgisini çekmek için terminalde şöyle bir şey görebilirsin:

$ python3 s7scan.py 192.168.1.50
[+] Scanning 192.168.1.50...
[+] PLC Found!
    Module: CPU 315-2 PN/DP
    System Name: S7-300 station_1
    Copyright: Original Siemens Equipment
    Version: 3.2.6
    Order Code: 6ES7 315-2EH14-0AB0

Bu bilgiyi aldıktan sonra, o versiyona ait bilinen bir CVE (Common Vulnerabilities and Exposures) olup olmadığını aratabilirsin. Spoiler: Genelde vardır.

Peki Ne Yapacağız? (İş Arkadaşı Tavsiyesi)

Dostum, eğer bir gün yolun endüstriyel bir tesisin sızma testine düşerse şu prensipleri unutma:

  1. Asla Agresif Tarama Yapma: Nmap'in -T ayarını 2'ye, hatta 1'e çek. Gerekirse sadece belirli portlara bak. Cihazı "susturmak" istemezsin.
  2. Protokolü Öğren: Modbus nedir, EtherNet/IP ne işe yarar, Profinet neden önemlidir? Bunları bilmeden sadece "tool" koşturursan hiçbir şey anlamazsın.
  3. Lateral Movement'ın Gücü: Genelde OT ağına doğrudan giremezsin. Ama kurumsal ağdaki (IT) bir muhasebecinin bilgisayarını ele geçirip, oradan mühendislik istasyonuna (Engineering Station) zıplarsan, tüm fabrikanın anahtarı eline geçer. Çünkü mühendislik bilgisayarları PLC'lere tam yetkiyle erişebilir.
  4. Fiziksel Güvenliği Küçümseme: Bir fabrikanın bahçesindeki bir Ethernet portu veya dışarıdaki bir IP kamera, seni doğrudan iç ağa taşıyabilir.

Endüstriyel güvenlik, sadece kod parçacıklarıyla değil, fiziksel gerçeklikle uğraştığımız bir alan. Bir SQL Injection bulduğunda veri tabanından veri çekersin; bir PLC'de zafiyet bulduğunda ise o gün o fabrikada üretimin durmasına neden olabilirsin.

Sorumluluk büyük, heyecan daha da büyük. Bir sonraki kahveni yudumlarken, etrafındaki binaların asansörlerinden şehrin su şebekesine kadar her şeyin bu basit, korumasız protokollerle çalıştığını düşün. Biraz ürkütücü değil mi?

Hoş geldin endüstriyel dünyanın karanlık ve paslı dehlizlerine. Bir dahaki sefere, belki de bu sistemleri nasıl "gerçekten" koruyabileceğimizi konuşuruz. Ama şimdilik, o açık portları aramaya devam.

İlgili yazılar