TCP 3-Way Handshake Nasıl İstismar Edilir?

TCP 3-Way Handshake Nedir?

İnternette yaptığımız her bağlantının arkasında görünmeyen bir el sıkışma mekanizması vardır. Bu mekanizma TCP'nin temelidir: 3-Way Handshake.

Bir önce ki konumuzda detay olarak bu mekanizmadan bahsetmiştik ama yine de kısaca bu yazı özelinde de özetleyelim;

Client → SYN → Server → SYN-ACK → Client → ACK → Bağlantı Kuruldu. Yani ESTABLISHED duruma geçer.

Şimdi özetle TCP protokolünün nasıl çalıştığını güvenilir bağlantının nasıl kurulduğunu görmüş olduk.

Peki, nasıl istismar edilebilir.

Kritik nokta Half-Open Connection

Saldırının başladığı yer burasıdır. Server, SYN aldıktan sonra bağlantıyı tam kurmadan önce hafızada bir yer ayırır. Eğer client son ACK paketini göndermezse, bağlantı bir süre bellekte bekler timeout olana kadar kaynak tüketir.

Şimdi aşağıda bu bahsettiğimiz saldırının detaylarını inceleyelim.

SYN Flood

Syn Flood, TCP'nin handshake mekanizmasını kötüye kullanan bir DoS saldırısıdır.

DoS terimini duymuşsunuzdur eğer bu alan ile ilginiz olmasa bile, Denial of Service veya DDoS (Distributed Denial of Service) olarak da duymuş olabilirsiniz. İkisinin arasındaki fark ise DoS (Tek kaynaktan saldırı) DDoS (Birden fazla bilgisayardan (botnet) saldırı)

Mantık şu;

  • Saldırgan binlerce SYN paketi gönderir.
  • Server her biri için bağlantı kaydı açar.
  • Saldırgan ACK göndermez.
  • Serverın backlog queue'su dolar.
  • Gerçek kullanıcılar bağlanamaz.

Teknik olarak neden çalışır dersek; Server tarafında bir yapı vardır.

TCP Backlog Queue

Bu; yarı açık bağlantıları tutar, boyutu sınırlıdır.

Bu dolduğunda ise; Yeni SYN paketleri reddedilir ve hizmet kesintisi oluşur.

IP Spoofing ile Güçlendirme

Profesyonel saldırılarda genellikle;

  • Sahte IP adresleri kullanılır.
  • Sunucu ACK bekler ama cevap asla gelmez.
  • Timeout süresi boyunca kaynaklar kilitlenir.

Bu durum saldırının tespitini de zorlaştırır.

Peki o zaman gerçek hayatta bir SOC analisti veya güvenlik uzmanı neleri inceler bir bakalım.

  • Çok sayıda SYN paketi,
  • Çok az sayıda ACK paketi,
  • Çok sayıda SYN_RECEIVED state,
  • CPU ve RAM artışı,
  • Netstat çıktısında anormal half-open bağlantılar,

netstat (network statistics), bilgisayardaki ağ bağlantılarını ve portları gösteren bir komuttur.

Linux üzerinde kontrol örneği ;

netstat -ant | grep SYN_RECV

Eğer anormal derecede fazlaysa, şüphe başlar.

Peki bu olabiliyor da önlenemez mi ?

Bu kısımda iş artık savunmaya geçiyor.

En etkili savunmalardan biri "SYN Cookies" dir.

Mantık;

  • Server bağlantı için hafıza ayırmaz.
  • ACK gelene kadar state tutmaz.
  • ACK gelirse bağlantıyı oluşturur.

Linux'ta ;

net.ipv4.tcp_syncookies = 1

Firewall Rate Limiting; belirli IP'den gelen SYN sayısı sınırlandırılır. Anormal trafik bloklanır.

IDS / IPS Sistemleri; Anormal SYN oranlarını tespit eder ve otomatik engelleme yapabilir.

Peki, bir penetration tester neleri sormalı ?

  • Sunucu backlog limiti nedir?
  • SYN cookies aktif mi?
  • Rate limit var mı?
  • IDS alarmları tetikleniyor mu?

Buradaki amaç sistemi çökertmek değil, zafiyeti kanıtlamak ve raporlamaktır.

SYN Flood eski bir saldırı çeşidi gibi görünsede; yanlış yapılandırılmış sistemlerde hala çalışır. IoT cihazlarında sık görülür. Cloud yapılandırmalarında yanlış firewall ayarları cidd risk oluşturabilir.

Her protokol bir tasarımdır.

Her tasarım yanlış yapılandırılırsa bir saldırı yüzeyi oluşturur.

Hoşça kalın.