Thread Starter
#0
⚠️ KRİTİK ALTYAPI VE ULUSAL GÜVENLİK UYARISI:
Bu doküman, SCADA Güvenlik Mimarları, PLC Otomasyon Mühendisleri ve Zararlı Yazılım Analistleri için; endüstriyel iletişim protokollerindeki (S7Comm/S7CommPlus) şifreleme ve doğrulama eksikliklerini analiz etmek amacıyla EĞİTİM ve TARİHSEL ARAŞTIRMA AMAÇLI hazırlanmıştır.
Bir fabrikanın, santralin veya üretim tesisinin PLC (Programmable Logic Controller) trafiğine müdahale etmek, fiziksel ekipmanların patlamasına ve insan hayatının tehlikeye girmesine yol açabilir. Bu tür eylemler Uluslararası Terör Suçu sayılır. Yazar ve Platform, bu teknik bilginin kötüye kullanımından sorumlu değildir.
1. Giriş: S7 Protokolü Neden "Kırılgan"?
Dünyadaki fabrikaların büyük bir kısmı Siemens S7-300 ve S7-400 serisi PLC'ler ile yönetilir. Bu cihazlar kendi aralarında ve SCADA ekranlarıyla (HMI) konuşurken S7Comm (S7 Communication) protokolünü kullanır.S7Comm (eski versiyonları), TCP Port 102 üzerinde çalışır ve ISO-on-TCP (RFC 1006) standardına dayanır.
Zafiyet: Bu protokol, tasarlandığı dönemde (90'lar) "Güvenlik" değil "Hız" ön plandaydı.
- Şifreleme Yoktur: Ağdaki paketler açık metin (Cleartext) olarak gider.
- Kimlik Doğrulama Yoktur (Replay Attack): PLC, komutun yetkili mühendisten mi yoksa bir hacker'dan mı geldiğini ayırt edemez.
- Bütünlük Kontrolü Yoktur: Yolda değişen veriyi fark edemez.
2. Saldırı Mimarisi: HMI ve PLC Arasına Girmek
Normal senaryoda, kontrol odasındaki Operatör (HMI Ekranı), PLC'ye "Hız kaç?" diye sorar. PLC "1000 RPM" der.Man-in-the-Middle (MitM) Senaryosu:Saldırgan, ARP Spoofing teknikleri kullanarak ağ trafiğini kendi üzerinden geçirir. Artık HMI ve PLC doğrudan konuşmaz; hepsi saldırgan üzerinden konuşur.
- PLC -> Saldırgan: "Hız şu an 1400 RPM (Tehlikeli Seviye)."
- Saldırgan (Değiştirir) -> HMI: "Hız şu an 1000 RPM (Her şey normal)."
3. Teknik Derinlik: S7 Paketi Manipülasyonu
Bir S7Comm paketi üç ana bölümden oluşur:- Header (Başlık): Protokol ID (0x32), Mesaj Tipi (Job/Ack).
- Parameter (Parametre): Ne yapılacak? (Read Var / Write Var).
- Data (Veri): Hangi bellek adresi? (DB1.DBD0).
Python (Scapy) ile Kavramsal Saldırı:Saldırgan, PLC'ye giden Write Var paketini yakalar. Paketin içindeki Byte 30-34 arasındaki değer (Hız Set Değeri), Hex olarak değiştirilir ve Checksum (varsa) yeniden hesaplanıp PLC'ye gönderilir.
CODE
12345678910111213141516# Kavramsal MitM Logic (Scapy pseudo-code)
def packet_callback(packet):
if TCP in packet and packet[TCP].dport == 102:
# S7Comm payload'ını analiz et
payload = packet[Raw].load
# Eğer operatör PLC'ye "STOP" komutu gönderiyorsa (0x29)
if b'\x29' in payload:
# Paketi düşür (DROP). Operatör stop butonuna basar ama sistem durmaz.
return
# Eğer PLC'den HMI'ya hız verisi gidiyorsa
if is_speed_data(payload):
# Gerçek hızı (1400) sahte hızla (1000) değiştir
new_payload = replace_speed(payload, 1000)
send_packet(new_payload)4. Stuxnet Senaryosu: Frekans ve Rezonans Felaketi
Stuxnet'in dehası, kodun karmaşıklığında değil, fizik bilgisindeydi.Uranyum zenginleştiren IR-1 santrifüjleri çok hassas alüminyum tüplerdir. Belirli bir rezonans frekansında çalışırlar.
Saldırı Döngüsü:
- Kayıt (Replay): Virüs önce sistemi 13 gün boyunca izledi. Normal çalışma verilerini kaydetti.
- Yüksek Hız: Frekans konvertörlerine (VFD - Variable Frequency Drive) komut göndererek motor hızını 1064 Hz'den 1410 Hz'e çıkardı. Santrifüjler titremeye başladı.
- Düşük Hız: Ardından hızı aniden 2 Hz'e düşürdü. Ani frenleme etkisi yarattı.
- Kör Operatör: Tüm bu sırada, operatörlerin ekranında önceden kaydedilmiş normal çalışma verilerini (1064 Hz) oynattı.
5. Donanım Hedefi: VFD (Değişken Frekanslı Sürücü)
PLC, motoru doğrudan sürmez. PLC, Profibus veya Profinet üzerinden VFD'ye (Örn: Siemens Micromaster veya Sinamics) komut verir.Saldırganın hedefi, PLC'nin hafızasındaki (Memory Map) VFD kontrol word'leridir.
- Control Word: Start/Stop/Reset.
- Reference Word: Hız (Frekans).
6. Blue Team: Nasıl Korunuruz?
Bu tür bir saldırıyı standart IT araçlarıyla tespit edemezsiniz.- Deep Packet Inspection (DPI) for SCADA: Güvenlik duvarları, sadece Port 102'nin açık olup olmadığına bakmamalı; paketin içeriğine bakmalıdır. "HMI, PLC'ye neden normalin dışında bir hız değeri yazıyor?" sorusunu sorabilen IPS sistemleri (Nozomi, Dragos, Claroty) kullanılmalıdır.
- S7Comm Plus (v12/v15+): Siemens, bu açıkları kapatmak için yeni protokoller geliştirdi. Bu protokollerde "Anti-Replay" ve "Integrity Check" mekanizmaları vardır. Eski PLC'ler (Legacy) yenileriyle değiştirilmelidir.
- Bağımsız Güvenlik Sistemi (SIS): PLC hacklenebilir. Bu yüzden, türbinin hızını ölçen ve PLC'den tamamen bağımsız çalışan, hızı aştığında elektriği fiziksel röle ile kesen bir "Safety Instrumented System" (SIS) kurulmalıdır. Bu sistemin yazılımı ve ağı tamamen ayrı olmalıdır.