Selam millet, bugün biraz terletecek bir konudan, endüstriyel kontrol sistemlerinin (ICS/OT) o hafif tozlu ama ölümcül derecede kritik dünyasından bahsedeceğiz. Kahveler hazırsa, önce kendi 'yüz kızartıcı' anımla başlayayım.
Mesleğe yeni başladığım yıllardı. Kendimi 'hacker' zannediyorum, elimde Nmap, içimde bitmek bilmeyen bir merak. Bir 'testCompany' fabrikasında sızma testi yapıyoruz. IT tarafını bitirdik, dediler ki 'Şu üretim bandının bağlı olduğu ağa da bir bak bakalım.' Ben de her zamanki gibi klavyeye asıldım. 'Ne olacak canım, bir servis taraması alt tarafı' diyerek o meşhur nmap -sV -T4 10.x.x.x komutunu yapıştırdım. Beş dakika geçmedi, telsizlerden bir cızırtı koptu: 'Bant 3 durdu! Acil durum!'.
O an başımdan aşağı kaynar sular döküldü. Meğer o tarama yaptığım eski nesil bir PLC (Programmable Logic Controller), gönderdiğim beklenmedik paket trafiğini kaldıramayıp 'Ben gidiyorum' diyerek kendini kilitmiş. Üretim durdu, mühendisler koşturuyor, ben ekran başında terliyorum. İşte o gün anladım ki: OT dünyasında 'Availability' (Erişilebilirlik) sadece bir kelime değil, bir kutsal kâseymiş. Ve biz IT güvenliği kafasıyla o kâseyi az kalsın kırıyorduk.
IT ve OT Arasındaki O Uçurum
Arkadaşlar, ofis ağında bir yazıcıyı çökertirseniz en fazla IT departmanına bilet açarlar. Ama bir enerji santralinde veya fabrikada yanlış bir paket gönderirseniz, fiziksel bir patlamaya, çevre felaketine veya bir şehrin karanlığa gömülmesine neden olabilirsiniz.
IT dünyasında CIA (Confidentiality, Integrity, Availability) üçlüsünde gizlilik en baştadır. OT dünyasında ise bu sıralama tam tersidir: Availability (Erişilebilirlik) her şeydir, sonra Integrity (Bütünlük) gelir, Confidentiality (Gizlilik) ise çoğu zaman 'olsa iyi olur' kategorisindedir. PLC'ler genellikle şifresiz konuşur, çünkü şifreleme demek gecikme (latency) demektir. Milisaniyelerin önemli olduğu bir üretim bandında kimse RSA el sıkışmasını beklemek istemez.
Protokollerin Sessiz Çığlığı: Modbus TCP
Endüstriyel sistemlerin en popüler dili nedir derseniz, cevabım kesinlikle Modbus olur. 1979'da çıkmış bu protokol, bugün hala devasa tesislerin kalbinde atıyor. Güvenlik mi? Hak getire. Modbus'ta kimlik doğrulama diye bir kavram yok. 'Yaz' dersin yazar, 'Oku' dersin okur.
Bir saldırganın (veya dikkatsiz bir Red Teamer'ın) bu protokolü nasıl manipüle edebileceğini anlamak için şu basitleştirilmiş Python örneğine bakalım. Tabii ki tamamen zararsızlaştırılmış bir senaryoda:
# Tamamen egitim amacli, mock bir Modbus istegi
# Gercek hayatta bu tur scriptleri dikkatli kullanin!
from pymodbus.client import ModbusTcpClient
def read_factory_status(ip_address):
# Standart Modbus portu 502'dir
client = ModbusTcpClient(ip_address, port=502)
if client.connect():
print(f"[+] {ip_address} adresine baglanildi.")
# Holding Registers (Tutma Kayitlari) okuyalim
# Bu registerlar sicaklik, basinc gibi degerleri tutuyor olabilir
result = client.read_holding_registers(address=0, count=10, slave=1)
if not result.isError():
print(f"[*] Register Degerleri: {result.registers}")
else:
print("[-] Veri okunamadi!")
client.close()
else:
print("[-] Baglanti basarisiz!")
# Ornek kullanim (Lokalhost/Zararsiz)
# read_factory_status('127.0.0.1')
Buradaki temel sıkıntı şu: Eğer ben read_holding_registers yerine write_register metodunu kullanırsam ve o register bir vananın basınç eşiğini kontrol ediyorsa, fiziksel dünyada geri dönüşü olmayan bir süreci başlatmış olurum. Bu yüzden OT sızma testlerinde asla 'blind' (körlemesine) işlem yapmıyoruz.
Purdue Modeli: Kaleyi Korumak
Sistemleri savunurken en büyük dostumuz Purdue Modeli'dir. Bu model, ağı katmanlara ayırır. En altta (Level 0) fiziksel cihazlar, sensörler vardır. En üstte ise (Level 4-5) kurumsal IT ağı bulunur.
Saldırganlar genellikle Level 5'ten (yani bir çalışanın oltalama e-postasına tıklamasıyla) içeri sızıp, katmanlar arasındaki zayıf noktaları (genellikle kötü yapılandırılmış firewall'lar) kullanarak Level 2-3'teki SCADA sistemlerine ulaşmaya çalışırlar.
Savunma Taktikleri (Hardening):
- Ağ Segmentasyonu: IT ağı ile OT ağı arasına 'Demilitarized Zone' (DMZ) koymak şart. Doğrudan IT ağından PLC'ye ping atılabiliyorsa, orada büyük bir sıkıntı var demektir.
- Unidirectional Gateways (Tek Yönlü Geçitler): Verinin OT'den IT'ye akmasına izin veren ama tersine (komut akışına) fiziksel olarak engel olan donanımlar kullanın.
- Anomali Tespiti: OT ağında trafik stabildir. Her gün saat 08:00'de X cihazı Y cihazına 10 paket gönderiyorsa ve bir gün bu sayı 1000'e çıkarsa, orada bir gariplik vardır. IDS/IPS çözümleri burada hayat kurtarır.
Sahadan Gerçek Bir Tavsiye
Bir gün bir denetimde, çok kritik bir HMI (Human-Machine Interface) panelinin üzerinde yapışkanlı bir not bulmuştum. Notta kullanıcı adı ve şifre yazıyordu: admin / 1234. İşletme müdürüne bunu sorduğumda, 'Sedat bey, acil bir durumda operatör şifre hatırlamakla vakit mi kaybetsin?' demişti.
Bu bakış açısı, güvenliğin en büyük düşmanıdır. Evet, hız ve erişilebilirlik önemli ama '1234' şifresi olan bir panel, Shodan gibi arama motorları üzerinden dünyaya açılmışsa, o fabrikaya girmek için hacker olmaya bile gerek kalmaz.
Netice itibariyle (pardon, bu kalıbı kullanmayacaktım), diyeceğim o ki; endüstriyel güvenlik sadece yazılım güncellemekle veya firewall kurmakla olmaz. Bu, mühendislik ile siber güvenliğin el sıkışması gereken bir disiplin. Eğer yolunuz bir gün bir fabrikanın server odasına düşerse, o klavyeye dokunmadan önce iki kez düşünün. Çünkü orada 'Undo' (Geri Al) tuşu bazen çalışmayabilir.
Kendinize iyi bakın, güvenli kalın, sistemleri ama en çok da fiziksel dünyayı koruyun!
