Hoşgeldin Misafir

#PTHM-Protokoller ve Sunucular 2

CW-ommah

17 Ocak 2022
904 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Allah’ın Rahmeti Ve Bereketi Üzerinize Olsun
Selamun aleyküm dostlarım. Bu makalemizde Dinleme Saldırısı (Sniffing Attack / Network Packet Capture), Ortadaki Adam Saldırısı (Man-in-the-Middle – MITM Attack), Parola Saldırısı (Password Attack / Authentication Attack), Güvenlik Açıkları (Vulnerabilities). CIA(Confidentiality, Integrity, Availability) üçlüsünede göz atacağız.
  • Gizlilik (Confidentiality): İletişim içeriklerinin yalnızca amaçlanan taraflar tarafından erişilebilir olmasını ifade eder.
  • Bütünlük (Integrity): Gönderilen verilerin hedefe ulaştığında doğru, tutarlı ve eksiksiz olmasının garanti edilmesidir.
  • Erişilebilirlik (Availability): Hizmete ihtiyaç duyulduğunda erişilebilmesini ifade eder.
Ve DAD DAD (Disclosure, Alteration, Destruction) bakacağız.
  • Disclosure (Bilginin Açığa Çıkarılması) → Gizliliğe karşı saldırı
  • Alteration (Verinin Değiştirilmesi) → Bütünlüğe karşı saldırı
  • Destruction (Verinin veya Hizmetin Yok Edilmesi) → Erişilebilirliğe karşı saldırı
1780541520734.png
Siffing Attack
Dinleme saldırısı (Sniffing Attack), hedef hakkında bilgi toplamak amacıyla bir ağ paket yakalama (network packet capture) aracının kullanılmasını ifade eder. Bir protokol verileri açık metin (cleartext) olarak iletiyorsa, alışverişi yapılan bilgiler üçüncü bir taraf tarafından yakalanıp analiz edilebilir.
Basit bir ağ trafiği yakalama işlemi bile, veriler aktarım sırasında şifrelenmemişse aşağıdaki gibi hassas bilgilerin ortaya çıkmasına neden olabilir:

  • Özel mesajların içeriği
  • Kullanıcı adları
  • Parolalar
  • Oturum bilgileri
  • Diğer gizli veriler
Örneğin, bir kullanıcı açık bir Wi-Fi ağı üzerinden şifreleme kullanmayan bir e-posta hizmetine bağlanırsa, aynı ağdaki bir saldırgan ağ paketlerini dinleyerek gönderilen kullanıcı adı ve parolayı görebilir. Bu durum gizliliğin (Confidentiality) ihlal edilmesine ve bilgilerin açığa çıkmasına (Disclosure) yol açar.
Bu nedenle günümüzde HTTP yerine HTTPS, Telnet yerine SSH ve diğer protokollerin şifreli sürümleri tercih edilmektedir. Şifreleme sayesinde ağ trafiği ele geçirilse bile verilerin içeriği okunamaz hâle gelir.

Dinleme (Sniffing) Saldırıları Hâlâ Nerelerde Geçerlidir?

TLS şifrelemesinin yaygın olarak kullanılmaya başlanmasıyla birlikte dinleme saldırılarının artık geçerliliğini yitirdiğini düşünebilirsiniz. Ancak bu saldırılar, aşağıdaki durumlarda hâlâ önemli bir tehdit oluşturmaktadır:
  • Sistemler arasındaki trafiğin şifrelenmediği kurumsal iç ağlar
  • Hâlâ açık metin kullanan eski (legacy) sistemler (eski e-posta sunucuları, gömülü cihazlar ve endüstriyel kontrol sistemleri gibi)
  • TLS desteği bulunmasına rağmen bunun zorunlu tutulmadığı yanlış yapılandırılmış hizmetler
  • İletişim için sıklıkla şifrelenmemiş protokoller kullanan Nesnelerin İnterneti (IoT) cihazları
  • Saldırganların kapsama alanı içerisinde bulunarak trafiği yakalayabildiği kablosuz ağlar
  • Şifrelemenin düşürüldüğü (downgrade) veya kaldırıldığı (encryption stripping) başarılı bir Ortadaki Adam (MITM) saldırısından sonra
Ayrıca, kurum içi sızma testleri (penetration testing) ve red team (kırmızı takım) çalışmaları sırasında dinleme saldırıları; kimlik bilgilerini toplamak ve sistemlerin birbirleriyle nasıl iletişim kurduğunu anlamak için hâlâ değerli bir teknik olarak kullanılmaktadır.

Paket Yakalama Araçları

Bir dinleme (sniffing) saldırısı, kullanıcının gerekli yetkilere sahip olması durumunda bir Ethernet (802.3) ağ kartı kullanılarak gerçekleştirilebilir. Bunun için:
  • Linux sistemlerde root (yönetici) yetkileri
  • Windows sistemlerde administrator (yönetici) ayrıcalıkları
gereklidir.
Ağ paketlerini yakalamak için kullanılabilecek birçok program bulunmaktadır. En yaygın olanları şunlardır:

Tcpdump

Tcpdump, birçok işletim sistemine uyarlanmış, ücretsiz ve açık kaynaklı bir komut satırı arayüzü (CLI) programıdır.
  • Hafif (lightweight) bir araçtır.
  • Çoğu Linux sisteminde varsayılan olarak bulunur.
  • Ağ trafiğini hızlı bir şekilde yakalamak ve analiz etmek için yaygın olarak kullanılır.

Wireshark

Wireshark, Linux, macOS ve Windows dâhil olmak üzere birçok işletim sisteminde çalışan ücretsiz ve açık kaynaklı bir grafiksel kullanıcı arayüzü (GUI) programıdır.
Şu özellikleri sunar:

  • Güçlü filtreleme seçenekleri
  • Protokol çözümleme (protocol dissection)
  • Ağ trafiğini görselleştirme
  • Paketlerin ayrıntılı analizini yapabilme
Bu nedenle hem eğitim hem de profesyonel ağ analizlerinde en yaygın kullanılan araçlardan biridir.

Tshark

TShark, Wireshark'ın komut satırı tabanlı alternatifidir ve aynı çözümleme motorunu kullanır.
Özellikle:

  • Betik (script) yazımı
  • Otomasyon işlemleri
  • Sunucu ortamlarında grafik arayüz olmadan çalışma
için oldukça kullanışlıdır.

Diğer Faydalı Araçlar

Ağ trafiği analizi sırasında bilinmesi yararlı olan diğer araçlar şunlardır:
  • tcpflow → TCP oturumlarını yeniden birleştirmek (reassemble) için kullanılır.
  • ngrep → Ağ trafiğinde belirli desenleri veya metinleri aramak için kullanılır.
  • NetworkMiner → Yakalanan trafikten dosya, resim ve diğer verileri çıkarmaya yarayan bir ağ adli bilişim aracıdır.
Bunların yanı sıra, parolaları ve tam mesaj içeriklerini yakalamaya yönelik çeşitli özel araçlar da bulunmaktadır. Ancak biraz daha fazla çaba ve yapılandırma ile bu işlemler Tcpdump ve Wireshark kullanılarak da gerçekleştirilebilir.

Pratik Örnek: POP3 Kimlik Bilgilerinin Yakalanması

POP3 kullanarak e-posta mesajlarını kontrol eden bir kullanıcıyı düşünün. Aşağıdaki örnek, kullanıcı adı ve parolayı yakalamak için Tcpdump kullanmaktadır.
Bu saldırı, ağ trafiğine erişim gerektirir. Bir saldırgan bunu; bir wiretap (hat dinleme cihazı), port mirroring yapılandırılmış bir switch, yerel ağda ARP spoofing veya aynı ağ segmentinde ele geçirilmiş bir sistem aracılığıyla gerçekleştirebilir. Alternatif olarak, başarılı bir Man-in-the-Middle (MITM) saldırısı başlatılarak trafiğe erişim sağlanabilir.
Kullanılan komut sudo tcpdump port 110 -A’dır. Paket yakalama işlemleri root yetkisi gerektirdiği için sudo öneki gereklidir. port 110 filtresi, yakalanan paketleri yalnızca POP3 sunucusuyla değiş tokuş edilenlerle sınırlar (POP3 varsayılan olarak port 110’u kullanır). -A parametresi ise yakalanan paketlerin içeriğini ASCII formatında görüntüler; böylece açık metin kimlik bilgileri çıktıda okunabilir hale gelir.
Kod:
root@CW-ommah$ sudo tcpdump port 110 -A
[...]
09:05:15.132861 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [P.], seq 1:13, ack 19, win 502, options [nop,nop,TS val 423360697 ecr 3958275530], length 12
[email protected]@[email protected].
...
......n......"............
.;....}.USER frank

09:05:15.133465 IP 10.20.30.148.pop3 > 10.20.30.1.58386: Flags [.], ack 13, win 510, options [nop,nop,TS val 3958280553 ecr 423360697], length 0
E..4..@[email protected]~
...
....n....".........?P.....
...i.;..
09:05:15.133610 IP 10.20.30.148.pop3 > 10.20.30.1.58386: Flags [P.], seq 19:43, ack 13, win 510, options [nop,nop,TS val 3958280553 ecr 423360697], length 24
E..L..@[email protected]
...
....n....".........<-.....
...i.;..+OK Password required.

09:05:15.133660 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [.], ack 43, win 502, options [nop,nop,TS val 423360698 ecr 3958280553], length 0
E..4.W@[email protected].
...
......n......".....??.....
.;.....i
09:05:22.852695 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [P.], seq 13:28, ack 43, win 502, options [nop,nop,TS val 423368417 ecr 3958280553], length 15
E..C.X@[email protected].
...
......n......".....6......
.<.....iPASS D2xc9CgD
[...]

Yukarıdaki terminal çıktısında, açıklık sağlamak için önemsiz paketler kaldırılmıştır. Kullanıcı adı ve parola ayrı paketler halinde gönderilmiştir. İlk paket açıkça USER frank bilgisini gösterirken, son paket PASS D2xc9CgD parolasını ortaya çıkarmaktadır.

Wireshark da aynı sonucu elde edebilir. Aşağıdaki Wireshark penceresinde filtre alanında pop yazmaktadır. Yalnızca POP3 trafiği görüntülendiğinde, yakalanan kullanıcı adı ve parola görülebilir.
1780542050811.png

Faydalı Tcpdump Filtreleri

Trafik yakalarken etkili filtreleme, yalnızca ilgili paketlere odaklanmanıza yardımcı olur:
# Belirli bir port üzerindeki trafiği yakala
Kod:
sudo tcpdump port 110 -A
# HTTP trafiğini yakala (POST isteklerinde kimlik bilgileri olabilir)
Kod:
sudo tcpdump port 80 -A
# FTP trafiğini yakala (kimlik bilgileri açık metin gönderilir)
Kod:
sudo tcpdump port 21 -A
# Yakalanan paketleri daha sonra analiz etmek için dosyaya yaz
Kod:
sudo tcpdump -w capture.pcap
# Bir capture dosyasını oku ve analiz et
Kod:
tcpdump -r capture.pcap -A

Önleme (Mitigation)

Açık metin (cleartext) iletişim kullanan herhangi bir protokol, bu tür saldırılara karşı savunmasızdır. Saldırının başarılı olabilmesi için gereken tek şey, iki iletişim tarafı arasında veya aynı ağ segmentinde bulunan bir sisteme erişim sağlamaktır.
Temel önlem, ağ protokolünün üzerine bir şifreleme katmanı eklemektir. Transport Layer Security (TLS); HTTP, FTP, SMTP, POP3, IMAP ve daha birçok protokole eklenmiştir. Uzaktan erişim için ise Telnet yerine güvenli alternatif olan Secure Shell (SSH) kullanılmaktadır.
Ek önlemler şunlardır:

  • Ağ segmentasyonu (Network segmentation): Ağı izole bölgelere ayırarak sistemlerin birbirinin trafiğini görmesini sınırlar.
  • Şifreli VLAN’lar ve tüneller: İç ağlarda bile hassas trafiği korur.
  • 802.1X port tabanlı kimlik doğrulama: Cihazların ağ erişimi elde etmeden önce kimlik doğrulaması yapmasını zorunlu kılar; böylece yetkisiz cihazların bağlanıp trafik dinlemesi engellenir.
  • Sıfır güven (Zero Trust) mimarisi: Ağ trafiğini her zaman potansiyel olarak tehditkâr kabul eder ve ağ sınırının içinden ya da dışından gelmesine bakılmaksızın tüm iletişimi şifreler.
  • ARP spoofing ve diğer trafik yönlendirme tekniklerinin izlenmesi: Dinleme saldırılarının tespit edilmesine yardımcı olur.
Modern en iyi uygulamalar, ağın her zaman düşmanca (hostile) olabileceğini varsayar. Bu nedenle yalnızca internet üzerinden geçen trafik değil, iç ağ trafiği de dahil olmak üzere tüm iletişimin şifrelenmesi gerekir.

Ortadaki Adam Saldırısı(MITM)-Man-in-the-Middle (MITM) attack
Bir Man-in-the-Middle (MITM) saldırısı, bir kurbanın (A), meşru bir hedefle (B) iletişim kurduğunu düşündüğü ancak aslında farkında olmadan bir saldırganla (E) iletişim kurduğu durumlarda gerçekleşir.
Aşağıdaki şekilde A, M’ye 20$ transfer etmek ister. Ancak E bu mesajı değiştirir ve orijinal değeri yeni bir değerle değiştirir. B, değiştirilmiş mesajı alır ve buna göre işlem yapar.

1780542282316.png
Bu saldırı, iki taraf her mesajın kimliğini (authenticity) ve bütünlüğünü (integrity) doğrulamadığı durumlarda gerçekleştirilmesi nispeten kolay bir saldırıdır. Bazı durumlarda kullanılan protokol, güvenli kimlik doğrulama veya bütünlük kontrolü sağlamaz. Bazı protokollerde ise bu tür saldırılara karşı savunmasız olmalarına neden olan doğuştan gelen güvenlik zafiyetleri bulunur.

MITM Saldırıları Nasıl Çalışır

Bir saldırganın iki iletişim kuran tarafın arasına konumlanabilmesi için genellikle trafiği kendi sistemi üzerinden yönlendirmesi gerekir. Yaygın kullanılan teknikler şunlardır:

ARP Spoofing, yerel ağlarda etkili bir yöntemdir. Saldırgan, kendi MAC adresini varsayılan ağ geçidi (default gateway) veya hedef sistemin IP adresiyle eşleştirmek için sahte ARP (Address Resolution Protocol) mesajları gönderir. Sonuç olarak, bu sistemlere gönderilmesi gereken trafik saldırgana yönlendirilir.

DNS Spoofing, kurbanları saldırganın kontrolündeki sunuculara yönlendirmek için sahte DNS yanıtları sağlamayı içerir. Bu durum, ele geçirilmiş DNS sunucuları, DNS önbellek zehirlenmesi (cache poisoning) veya DNS sorgularına meşru sunucudan daha hızlı yanıt verilmesi yoluyla gerçekleşebilir.

Sahte Erişim Noktaları (Rogue Access Points), saldırganlar tarafından kurulan sahte kablosuz ağlardır. Kurbanlar bu ağlara bağlandığında (çoğunlukla Airport_WiFi_Free gibi meşru ağlara benzer isimlerle), tüm trafik saldırganın sistemi üzerinden geçer.

BGP Hijacking, internet yönlendirme (routing) seviyesinde gerçekleşir. Saldırganlar, trafiği kendi altyapıları üzerinden geçirmek için sahte BGP rotaları duyurur. Bu daha gelişmiş bir saldırı türüdür ve genellikle belirli kuruluşları veya bölgeleri hedef alır.

MITM Saldırıları İçin Araçlar

MITM saldırılarının gerçekleştirilmesine yardımcı olabilecek birçok araç vardır. Bunları anlamak, saldırganların neler yapabileceğini ve karşı önlemlerin neden önemli olduğunu fark etmenize yardımcı olur:

Bettercap, Ettercap’in modern halefidir ve aktif olarak geliştirilmektedir. ARP spoofing, DNS spoofing, HTTP/HTTPS proxyleme gibi özellikleri destekler ve çeşitli saldırı senaryoları için modüler bir mimariye sahiptir.

Ettercap, yerel ağlarda MITM saldırıları için kullanılan klasik bir araçtır. Hâlâ çalışabilir durumdadır, ancak modern değerlendirmelerde genellikle Bettercap tercih edilir.

mitmproxy, trafiği incelemeye ve değiştirmeye olanak tanıyan etkileşimli bir HTTPS proxy aracıdır. Özellikle HTTP/HTTPS iletişimini analiz etmek ve manipüle etmek için kullanışlıdır.

Responder, Windows ortamları için tasarlanmıştır ve LLMNR (Link-Local Multicast Name Resolution) ile NBT-NS (NetBIOS Name Service) gibi isim çözümleme protokollerini istismar eder. Bu protokoller, Windows sistemlerinin standart DNS çözümlemesi başarısız olduğunda kullandığı yedek protokollerdir. Responder, bu yayın sorgularını dinler ve kendi IP adresiyle yanıt vererek kurbanların kimlik doğrulama bilgilerini saldırgana göndermesini sağlar. Bu, özellikle Active Directory ortamlarında yapılan iç ağ sızma testlerinde yaygın bir tekniktir.

Şifrelenmiş Trafiğe Karşı MITM

MITM saldırıları, HTTPS ve diğer şifrelenmiş protokolleri çeşitli yöntemlerle hedef alabilir:

SSL Stripping (SSL düşürme), HTTPS bağlantılarını HTTP’ye düşürür. Kurban bir web sitesine bağlanmaya çalıştığında, saldırgan isteği araya girerek yakalar, meşru sunucuyla HTTPS bağlantısı kurar ancak içeriği kurbana şifrelenmemiş HTTP üzerinden sunar. Kurban, özellikle https:// yazmadıysa, eksik kilit simgesini fark etmeyebilir.

Sahte Sertifikalar (Fake Certificates), saldırganın kendi sertifikasını sunması ve her iki tarafla ayrı ayrı şifreli bağlantılar kurmasıyla gerçekleşir. Bu durum, kurban geçersiz sertifika uyarısını kabul ederse veya saldırgan bir Sertifika Otoritesini (CA - Certificate Authority) ele geçirmişse işe yarar.


Ele geçirilmiş veya sahte CA’lar (Compromised or Rogue CAs) daha ciddi bir tehdittir. Eğer bir saldırgan güvenilir bir CA’yı kontrol ederse (veya bir CA’dan sahte sertifika almayı başarırsa), herhangi bir alan adı için geçerli görünen sertifikalar üretebilir.

MITM’e Karşı Modern Savunmalar

Modern güvenlik mekanizmaları, MITM saldırılarını on yıl öncesine kıyasla önemli ölçüde zorlaştırmıştır:

HTTPS Everywhere: Günümüzde çoğu web sitesi varsayılan olarak HTTPS kullanır. Büyük tarayıcılar HTTP sitelerini “Güvenli Değil” olarak işaretler ve bazıları karışık içeriği (mixed content) tamamen engellemeye başlamıştır.

HSTS (HTTP Strict Transport Security): Tarayıcılara belirli bir süre boyunca yalnızca HTTPS üzerinden bağlanmalarını söyler. Bir tarayıcı bir alan adı için HSTS başlığı gördükten sonra, HTTP üzerinden bağlanmayı reddeder ve böylece SSL düşürme (SSL stripping) saldırılarını engeller. Birçok büyük site ayrıca HSTS preload listesinde yer alır; bu da tarayıcıların bu sitelerin yalnızca HTTPS üzerinden erişilmesi gerektiğini önceden bilmesi anlamına gelir.

Certificate Transparency (CT): Sertifika otoritelerinin (CA’lar) tüm verdikleri sertifikaları herkese açık ve denetlenebilir loglara kaydetmesini zorunlu kılar. Bu, saldırganların fark edilmeden sahte sertifika almasını çok daha zor hale getirir. Tarayıcılar bu logları kontrol edebilir ve doğru şekilde kaydedilmemiş sertifikaları reddedebilir.

Certificate Pinning: Uygulamaların, bağlantılarında hangi sertifikaların veya açık anahtarların (public key) geçerli olduğunu açıkça belirtmesini sağlar. Bu yöntem özellikle mobil uygulamalarda yaygındır ve bir CA ele geçirilse bile saldırıları engeller. Ancak sertifika yenileme (rotation) süreçlerini daha karmaşık hale getirir.

DANE (DNS-based Authentication of Named Entities): DNSSEC kullanarak sertifika bilgilerini DNS kayıtlarında yayınlar ve tamamen CA sistemine bağlı olmayan alternatif bir güven modeli sağlar.

Bu korumalara rağmen MITM saldırıları hâlâ mümkündür; özellikle kullanıcılar sertifika uyarılarını görmezden geldiğinde, uygulamalar sertifikaları doğru doğrulamadığında, hedef açık metin (cleartext) protokol kullandığında, saldırgan güvenilir bir CA’yı ele geçirdiğinde, iç ağlar şifrelenmediğinde veya eski sistemler modern güvenlik özelliklerini desteklemediğinde.

MITM ayrıca FTP, SMTP ve POP3 gibi diğer açık metin protokollerini de etkileyebilir. Temel önlem kriptografi kullanımıdır. Çözüm; uygun kimlik doğrulama ile birlikte mesajların şifrelenmesi veya imzalanmasıdır. Public Key Infrastructure (PKI) ve güvenilir kök sertifikaların yardımıyla Transport Layer Security (TLS), doğru şekilde uygulandığında MITM saldırılarına karşı koruma sağlar.

Taşıma Katmanı Güvenliği(TLS)-Transport Layer Security(TLS)

SSL ve TLS’in Kısa Tarihçesi

SSL (Secure Sockets Layer), Dünya Çapında Ağ (World Wide Web) yeni uygulamaları görmeye başladığında ortaya çıkmıştır. Bu uygulamalar arasında çevrimiçi alışveriş ve ödeme bilgisi gönderimi gibi işlemler bulunuyordu. Netscape, SSL’i 1994 yılında tanıttı ve SSL 3.0 1996 yılında yayınlandı. Zamanla daha fazla güvenliğe ihtiyaç duyuldu ve 1999 yılında TLS 1.0 ile TLS (Transport Layer Security) protokolü tanıtıldı.
O zamandan bu yana protokol önemli ölçüde gelişmiştir:

  • SSL 2.0 ve 3.0 kullanımdan kaldırılmıştır (deprecated) ve güvensiz kabul edilir. Asla kullanılmamalıdır.
  • TLS 1.0 ve 1.1, bilinen güvenlik açıkları nedeniyle 2021 yılında kullanımdan kaldırılmıştır. Büyük tarayıcılar artık bunları desteklememektedir.
  • TLS 1.2 (2008) hâlâ yaygın olarak kullanılmaktadır ve modern şifreleme paketleri (cipher suites) ile doğru yapılandırıldığında güvenli kabul edilir.
  • TLS 1.3 (2018) güncel standarttır. Eski kriptografik algoritmaları kaldırır, el sıkışma (handshake) gecikmesini azaltır ve varsayılan olarak ileriye dönük gizlilik (forward secrecy) sağlar.
Günlük kullanımda hâlâ “SSL” terimi (örneğin “SSL sertifikası”) yaygın olarak kullanılsa da, pratikte tüm modern sistemler TLS kullanır. Birisi “SSL” dediğinde, çoğu zaman aslında TLS’i kasteder.

TLS’in Ağ Modelindeki Yeri

Şu ana kadar ele alınan yaygın protokoller veriyi açık metin (cleartext) olarak gönderir. Bu durum, ağa erişimi olan herhangi bir kişinin değiş tokuş edilen mesajları yakalamasını, kaydetmesini ve analiz etmesini mümkün kılar.
Aşağıdaki görsel ISO/OSI ağ katmanlarını göstermektedir. Bu bölümde ele alınan protokoller uygulama katmanı (application layer) üzerindedir. Şifreleme ise sunum katmanı (presentation layer) aracılığıyla eklenebilir. Sonuç olarak veri, orijinal hali yerine şifrelenmiş bir formatta (ciphertext) sunulur.

1780542853014.png

OSI modelinin kavramsal bir basitleştirme olduğunu belirtmekte fayda vardır. Pratikte TLS, tek bir OSI katmanına tam olarak oturmak yerine taşıma (transport) ve uygulama (application) katmanları arasında çalışır. Ancak bu diyagram, şifrelemenin uygulama protokolünün altında yer aldığını ve iletimden önce veriyi sardığını anlamak için faydalıdır.

TLS ile Protokollerin Yükseltilmesi

Mevcut bir açık metin (cleartext) protokol, TLS kullanılarak şifreleme desteği eklenerek yükseltilebilir. Aşağıdaki tablo, şimdiye kadar ele alınan protokolleri ve TLS ile şifreleme eklendikten sonraki varsayılan portlarını göstermektedir.
ProtokolVarsayılan PortGüvenli ProtokolTLS ile Varsayılan Port
HTTP80HTTPS443
FTP21FTPS990
SMTP25SMTPS465
POP3110POP3S995
IMAP143IMAPS993

TLS yalnızca web ve e-posta protokolleriyle sınırlı değildir. DNS de TLS kullanılarak güvence altına alınabilir. DNS over TLS (DoT), standart DNS trafiğini bir TLS bağlantısı içine sararak DNS sorgularını şifreler ve genellikle 853 numaralı portu kullanır. Buna benzer bir yaklaşım olan DNS over HTTPS (DoH) ise DNS sorgularını 443 numaralı port üzerinden HTTPS istekleri olarak gönderir. Her ikisi de DNS sorgularının dinlenmesini (eavesdropping) engeller; aksi halde bu sorgular kullanıcının hangi web sitelerini ziyaret ettiğini ortaya çıkarabilir.

Gizli TLS (Implicit TLS) ve STARTTLS
Bir protokole TLS eklemenin iki yaklaşımı vardır:

Implicit TLS (Gizli TLS)
Özel bir port kullanır (yukarıdaki tabloda gösterildiği gibi). Bağlantı en baştan itibaren şifreli olur. HTTPS için 443 numaralı porta veya IMAPS için 993 numaralı porta bağlandığınızda TLS müzakeresi (negotiation) hemen başlar.

STARTTLS
Mevcut açık metin (cleartext) bağlantısını aynı port üzerinde TLS’e yükseltmeye izin verir. İstemci standart porta bağlanır (örneğin SMTP için 25 numaralı port) ve ardından bağlantıyı TLS’e yükseltmek için STARTTLS komutunu gönderir. Bu yaklaşım e-posta protokollerinde yaygındır. SMTP için, 587 numaralı port (submission) STARTTLS ile birlikte mail istemcileri için önerilen yapılandırmadır.

Her iki yaklaşım da şifreleme sağlar. Ancak STARTTLS, doğru şekilde uygulanmadığında düşürme (downgrade) saldırılarına karşı savunmasız olabileceği için genellikle implicit TLS tercih edilir. Bir MITM saldırısı yapan bir saldırgan, STARTTLS komutunu iletişimden çıkararak bağlantının açık metin (cleartext) olarak kalmasını zorlayabilir.

HTTPS Nasıl Çalışır

HTTP durumunu ele alalım. Başlangıçta, HTTP üzerinden bir web sayfası almak için web tarayıcısının en az aşağıdaki iki adımı gerçekleştirmesi gerekir:
  • Uzak web sunucusu ile bir TCP bağlantısı kurmak.
  • Web sunucusuna GET ve POST istekleri gibi HTTP istekleri göndermek.
HTTPS, trafiği şifrelemek için ek bir adım gerektirir. Bu yeni adım, TCP bağlantısı kurulduktan sonra ve HTTP istekleri gönderilmeden önce gerçekleşir. Sonuç olarak HTTPS en az aşağıdaki üç adımı gerektirir:
  • TCP bağlantısı kurmak.
  • TLS bağlantısı kurmak.
  • Web sunucusuna HTTP istekleri göndermek.

TLS El Sıkışması (TLS Handshake)

Bir TLS bağlantısı kurmak için istemcinin sunucu ile bir el sıkışma (handshake) gerçekleştirmesi gerekir. El sıkışma süreci TLS sürümlerine göre farklılık gösterir. Aşağıda TLS 1.2 el sıkışma sürecinin basitleştirilmiş bir özeti verilmiştir:
1780543100846.png

TLS El Sıkışması (Handshake)

ClientHello: İstemci, desteklediği TLS sürümleri, şifreleme paketleri (cipher suites) ve bir rastgele değer (random value) dâhil olmak üzere yeteneklerini belirten bir mesaj gönderir.

ServerHello: Sunucu, seçilen bağlantı parametreleriyle birlikte yanıt verir; ayrıca sunucunun kimliğini doğrulamak için bir Sertifika Otoritesi (Certificate Authority) tarafından imzalanmış dijital bir dosya olan sertifikasını ve kendi rastgele değerini gönderir.

Anahtar Değişimi (Key Exchange): İstemci ve sunucu, paylaşılan gizli anahtarı (shared secret key) oluşturmak için gerekli bilgileri değiş tokuş eder. Tam süreç seçilen şifreleme paketine (cipher suite) bağlıdır.

Finished: Her iki taraf da el sıkışmanın başarıyla tamamlandığını doğrular ve şifreli iletişime geçer.

TLS 1.3 İyileştirmeleri

TLS 1.3, önceki sürümlere göre önemli iyileştirmeler içerir:
  • Daha hızlı el sıkışma: TLS 1.3, bağlantı kurmak için TLS 1.2’deki iki gidiş-dönüşe (2-RTT) kıyasla yalnızca bir gidiş-dönüş (1-RTT) gerektirir. Ayrıca geri dönen istemciler için 0-RTT yeniden başlatma (resumption) desteği vardır, ancak bunun bazı güvenlik ödünleri bulunur.
  • Varsayılan olarak ileriye dönük gizlilik (forward secrecy): TLS 1.3’teki tüm şifreleme paketleri ileriye dönük gizlilik sağlar. Yani sunucunun özel anahtarı gelecekte ele geçirilse bile, geçmişte kaydedilmiş oturumlar çözülemez.
  • Basitleştirilmiş şifreleme paketleri: Eski ve güvensiz algoritmalar kaldırılmıştır. Zayıf yapılandırmalara yol açabilecek seçenekler artık yoktur.
  • Şifrelenmiş el sıkışma: El sıkışma sürecinin daha büyük bir kısmı şifrelenmiştir, bu da dış gözlemcilerin daha az bilgi görmesini sağlar.
Önemli nokta şudur: İstemci ve sunucu, iletişim kanalını izleyen üçüncü bir tarafın keşfedemeyeceği şekilde güvenli bir gizli anahtar üzerinde anlaşır. Bundan sonraki tüm iletişim bu anahtar kullanılarak şifrelenir. Sonuç olarak, TLS el sıkışması tamamlandıktan sonra HTTP istekleri ve değiş tokuş edilen veriler iletişimi izleyen kişiler tarafından erişilemez hale gelir.

Sertifikalar ve Güven (Certificates and Trust)

TLS’in etkili olabilmesi için, özellikle web üzerinde HTTPS kullanarak gezinirken, sistem Sertifika Otoriteleri (Certificate Authorities - CA) tarafından imzalanmış ve sistem tarafından güvenilen açık (public) sertifikalara dayanır.
Örneğin HTTPS üzerinden TurkHacks sitesine eriştiğinizde, tarayıcınız TurkHacks web sunucusunun güvenilir bir sertifika otoritesi tarafından imzalanmış bir sertifika sunmasını bekler. Bu, doğru sunucuyla iletişim kurduğunuzu ve bir Ortadaki Adam (MITM) saldırısının kolayca gerçekleşemeyeceğini garanti eder.

1780543318320.png
Yukarıdaki şekilde şu bilgiler görülebilir:
  • Sertifika kime verilmiş? Bu, sertifikayı kullanacak olan şirketin adıdır.
  • Sertifikayı kim vermiş? Bu, sertifikayı düzenleyen sertifika otoritesidir (certificate authority).
  • Geçerlilik süresi: Süresi dolmuş bir sertifika güvenilmemelidir.
Web tarayıcınız tüm bunları otomatik olarak yönetir; böylece doğru sunucuyla iletişim kurduğunuzdan ve iletişiminizin güvenli olduğundan emin olmanızı sağlar.

Modern Sertifika Ekosistemi

Sertifika dünyası zaman içinde önemli ölçüde gelişmiştir:

Let’s Encrypt 2015 yılında kurulmuş olup ücretsiz ve otomatik TLS sertifikaları sağlar. Bu, daha önce birçok web sitesinin HTTPS kullanmasını engelleyen maliyet bariyerini ortadan kaldırmıştır. Sonuç olarak HTTPS kullanımı 2015’te web trafiğinin %50’sinin altındayken bugün %95’in üzerine çıkmıştır.

Certificate Transparency (CT), Sertifika Otoritelerinin (CA’lar) verdikleri tüm sertifikaları herkese açık ve denetlenebilir loglara kaydetmesini zorunlu kılar. Tarayıcılar bu logları kontrol edebilir ve doğru şekilde kaydedilmemiş sertifikaları reddedebilir. Bu, saldırganların fark edilmeden sahte sertifika almasını çok daha zor hale getirir.

Kısa ömürlü sertifikalar (short-lived certificates) giderek daha yaygın hale gelmektedir. Let’s Encrypt sertifikaları yalnızca 90 gün geçerlidir; bu, otomasyonu teşvik eder ve bir sertifika ele geçirilse bile maruz kalma süresini azaltır. Bazı kuruluşlar ise yalnızca saatler veya günler geçerli sertifikalar kullanır.


Automated Certificate Management Environment (ACME), Let’s Encrypt ve diğer CA’lar tarafından sertifika verme ve yenileme işlemlerini otomatikleştirmek için kullanılan protokoldür. Certbot gibi araçlar, sertifika almayı ve yenilemeyi oldukça kolay hale getirir.

TLS Yapılandırmalarının Test Edilmesi

Bir güvenlik uzmanı olarak TLS yapılandırmalarını değerlendirme ihtiyacınız olabilir. Bu amaçla kullanılabilecek faydalı araçlar şunlardır:

testssl.sh: Bir sunucunun TLS yapılandırmasını; desteklenen protokoller, şifreleme paketleri (cipher suites) ve yaygın zafiyetler açısından kontrol eden komut satırı aracıdır. Özellikle internete açık olmayan iç sistemlere karşı ayrıntılı analiz yapmak için en iyi seçeneklerden biridir.

sslyze: SSL/TLS yapılandırmalarını analiz etmek için kullanılan Python tabanlı bir araçtır. Otomasyon ve CI/CD süreçlerine entegrasyon için uygundur.

SSL Labs (ssllabs.com): İnternete açık HTTPS sunucuları için ayrıntılı analiz sağlayan web tabanlı bir servistir. Genel kullanımlı (public) bir web sitesi için hızlı bir değerlendirme yapmak adına en pratik seçenektir.

Nmap ssl-enum-ciphers scripti: Nmap’in bir betiği olup port taraması sırasında desteklenen şifreleme paketlerini (cipher suites) listeler.

Yaygın Problemler

TLS yapılandırmalarında dikkat edilmesi gereken yaygın sorunlar şunlardır:
  • Kullanımı kaldırılmış (deprecated) protokollerin desteği (TLS 1.0 / 1.1)
  • Zayıf şifreleme paketleri (weak cipher suites)
  • İleriye dönük gizlilik (forward secrecy) eksikliği
  • Sertifika problemleri
Güvenli Shell(SSH)-Secure Shell(SSH)
Secure Shell (SSH)
, uzaktan sistem yönetimi için güvenli bir yöntem sağlamak amacıyla oluşturulmuştur. Bir ağa bağlı başka bir sisteme güvenli bir şekilde bağlanmanızı ve uzak sistem üzerinde komut çalıştırmanızı sağlar. SSH’deki “S”, secure (güvenli) anlamına gelir ve şu şekilde özetlenebilir:

  • Uzak sunucunun kimliğini doğrulayabilirsiniz.
  • Değiş tokuş edilen mesajlar şifrelenir ve yalnızca hedef alıcı tarafından çözülebilir.
  • Her iki taraf da mesajlarda herhangi bir değişiklik yapılıp yapılmadığını tespit edebilir.
Yukarıdaki üç özellik kriptografi ile sağlanır. Daha teknik ifadeyle bunlar, farklı şifreleme algoritmalarının doğru kullanımı sayesinde mümkün olan gizlilik (confidentiality) ve bütünlük (integrity) özelliklerinin bir parçasıdır.
SSH, sunucuların, ağ cihazlarının ve bulut altyapısının uzaktan yönetimi için evrensel standart haline gelmiştir. Sağladığı güvenlik garantileri nedeniyle etkileşimli uzaktan erişimde Telnet’in yerini tamamen almıştır.

SSH Kimlik Doğrulama Yöntemleri

SSH kullanmak için bir SSH sunucusuna ve bir SSH istemcisine ihtiyaç vardır. SSH sunucusu varsayılan olarak 22 numaralı portu dinler. SSH istemcisi çeşitli yöntemlerle kimlik doğrulaması yapabilir:

Parola kimlik doğrulaması (password authentication) en basit yöntemdir. Kullanıcı bir kullanıcı adı ve parola sağlar ve bunlar şifrelenmiş SSH bağlantısı üzerinden iletilir. Parola iletim sırasında korunmuş olsa da, zayıf parolalar kullanıldığında kaba kuvvet (brute force) saldırılarına karşı savunmasızdır.

Açık anahtar kimlik doğrulaması (public key authentication) düzenli kullanım için önerilen yöntemdir. Bir anahtar çifti oluşturulur: biri gizli tutulan özel anahtar (private key), diğeri erişilmek istenen sunuculara yerleştirilen açık anahtardır (public key). Bağlantı sırasında sunucu, özel anahtarı gerçekten sahip olduğunuzu kanıtlamanız için bir doğrulama (challenge) yapar; ancak özel anahtar asla aktarılmaz.

Sertifika tabanlı kimlik doğrulama (certificate-based authentication) daha büyük organizasyonlarda kullanılır. Bir SSH Sertifika Otoritesi (Certificate Authority), kullanıcı ve sunucu anahtarlarını imzalar; böylece her sunucuya tek tek açık anahtar dağıtma ihtiyacı ortadan kalkar. Bu yöntem daha ölçeklenebilir olup anahtarların süresinin dolması ve iptal edilmesine de olanak tanır.

Çok faktörlü kimlik doğrulama (Multi-Factor Authentication - MFA) birden fazla yöntemi birleştirir. Birçok organizasyon artık hem bir anahtar hem de kimlik doğrulayıcı uygulamadan (authenticator app) alınan tek kullanımlık şifreyi (one-time password) birlikte talep etmektedir.

SSH ile Bağlanma

Linux, macOS ve Windows 10/11 üzerinde bir SSH sunucusuna ssh [email protected] komutu kullanılarak bağlanabilirsiniz. Bu komut, belirtilen IP adresindeki sunucuya verilen kullanıcı adıyla bağlanmayı dener. Eğer SSH sunucusu varsayılan portta çalışıyorsa, sizden bu kullanıcı için parola girmeniz istenir (veya yapılandırılmışsa anahtarınızı kullanır). Kimlik doğrulama tamamlandıktan sonra hedef sunucunun terminaline erişim sağlarsınız.
Kod:
root@CW-ommahe$ ssh [email protected]
[email protected]'s password: XBtc49AB

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep 20 13:53:17 2021
mark@debian8:~$

Yukarıdaki örnekte ssh [email protected] komutu çalıştırılmıştır. Doğru parola girildikten sonra uzak sistemin terminaline erişim sağlanmıştır. SSH, uzaktan yönetim için güvenilirdir çünkü kullanıcı adı ve parola şifrelenmiş olarak gönderilir. Uzak sistemde çalıştırılan tüm komutlar da şifreli bir kanal üzerinden iletilir

Sunucu Anahtarı Doğrulaması (Host Key Verification)

Bir sisteme ilk kez bağlandığınızda, Ortadaki Adam (Man-in-the-Middle - MITM) saldırılarını önlemek için SSH sunucusunun açık anahtarının (public key) parmak izini (fingerprint) doğrulamanız gerekir. SSH durumunda, açık anahtarın geçerli olup olmadığını doğrulayacak genellikle üçüncü bir taraf bulunmaz; bu nedenle bu işlem manuel olarak veya harici (out-of-band) doğrulama yöntemleriyle yapılmalıdır.
1780543798529.png
Yeni bir sunucuya bağlandığınızda aşağıdaki gibi bir mesaj görürsünüz:
Kod:
The authenticity of host '10.112.161.206' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
İdeal olarak, bu parmak izini ayrı bir kanal üzerinden (örneğin güvenli bir yapılandırma yönetim sistemi aracılığıyla veya sunucu yöneticisine sorarak) doğrulamanız gerekir. Doğrulandıktan sonra sunucu anahtarı ~/.ssh/known_hosts dosyasında saklanır. Eğer anahtar daha sonra beklenmedik şekilde değişirse, SSH sizi uyarır; bu durum bir MITM saldırısına veya sunucunun yeniden kurulmuş olmasına işaret edebilir.

SSH Anahtar Üretimi (SSH Key Generation)

Anahtar tabanlı kimlik doğrulama kurmak için ssh-keygen kullanarak bir anahtar çifti oluşturulur:

# Modern sistemler için önerilen Ed25519 anahtarı oluşturma
Kod:
ssh-keygen -t ed25519 -C "[email protected]"

# Ed25519 desteklemeyen sistemler için 4096 bit RSA kullanımı
Kod:
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Ed25519 anahtarları güncel öneridir. Daha kısa, daha hızlıdır ve RSA anahtarlarına kıyasla daha güvenli kabul edilir. Eğer Ed25519 kullanılamıyorsa, RSA anahtarlarının en az 4096 bit olması gerekir.
Özel anahtarınız ~/.ssh/id_ed25519 (veya ~/.ssh/id_rsa) konumunda saklanır ve güçlü bir parola (passphrase) ile korunmalıdır. Açık anahtar ise .pub uzantısıyla saklanır ve güvenle paylaşılabilir.
Sunucuda anahtar tabanlı girişi etkinleştirmek için açık anahtarınızı uzak sistemdeki ~/.ssh/authorized_keys dosyasına eklemeniz gerekir:
# Açık anahtarınızı uzak sunucuya kopyalayın
Kod:
ssh-copy-id [email protected]

Faydalı SSH Seçenekleri

SSH, sızma testi uzmanları ve sistem yöneticileri için birçok kullanışlı özellik sunar:

# Standart dışı bir port üzerinden bağlanma
Kod:
ssh -p 2222 [email protected]

# Belirli bir özel anahtar kullanma
Kod:
ssh -i ~/.ssh/custom_key [email protected]

# Bir bastion/jump host üzerinden iç ağa erişme
Kod:
ssh -J bastion.example.com mark@internal-server

# Yerel port yönlendirme (remote servise yerel port üzerinden erişim)
Kod:
ssh -L 8080:localhost:80 [email protected]

# Dinamik port yönlendirme (SOCKS proxy)
Kod:
ssh -D 9050 [email protected]

# Etkileşimli kabuk açmadan tek bir komut çalıştırma
Kod:
ssh [email protected] "cat /etc/passwd"

SSH Yapılandırma Dosyası (SSH Config File)

Sık yapılan bağlantılar için ~/.ssh/config dosyasında kısayollar oluşturabilirsiniz:
Kod:
Host webserver
    HostName 10.112.161.206
    User mark
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Host internal
    HostName 10.10.10.50
    User admin
    ProxyJump bastion.example.com

Bu yapılandırma sayesinde, tam komutu yazmak yerine sadece ssh webserver yazarak bağlantı kurabilirsiniz.

Güvenli Dosya Transferi

SSH, güvenli dosya transferi için çeşitli yöntemler sunar:
SFTP (SSH File Transfer Protocol), etkileşimli dosya transferi için önerilen yöntemdir. Şifrelenmiş bir SSH bağlantısı üzerinden FTP benzeri bir arayüz sağlar:
Kod:

SCP (Secure Copy Protocol), geleneksel olarak basit dosya kopyalama işlemleri için kullanılmıştır. Ancak OpenSSH projesi, SCP protokolündeki güvenlik endişeleri nedeniyle scp kullanımını sftp lehine kullanımdan kaldırmıştır (deprecated). SCP hâlâ çalışır, ancak daha yeni sistemlerde kullanımdan kaldırıldığına dair bir uyarı gösterir:

# Uzak sistemden yerel sisteme kopyalama
Kod:
scp [email protected]:/home/mark/archive.tar.gz ~/

# Yerel sistemden uzak sisteme kopyalama
Kod:
scp backup.tar.bz2 [email protected]:/home/mark/

SSH Üzerinden rsync

SSH üzerinden rsync, büyük miktarda veri transferi veya dizin senkronizasyonu için tercih edilir; çünkü yalnızca değişen dosya parçalarını aktarır:
Kod:
rsync -avz -e ssh /local/directory/ [email protected]:/remote/directory/

SSH vs FTPS vs SFTP

Bu güvenli dosya transfer seçenekleri arasındaki farkları netleştirmek önemlidir:
  • SFTP, SSH üzerinden çalışır (port 22) ve günümüzde güvenli dosya transferi için en yaygın tercihtir.
  • FTPS, FTP’nin TLS ile güvenli hale getirilmiş versiyonudur (gizli TLS için 990 numaralı port). Benzer isimlerine rağmen SFTP’den farklı bir protokoldür.
  • SCP, SSH üzerinden çalışır ancak SFTP lehine kullanımdan kaldırılma sürecindedir (deprecated).
Çoğu kullanım senaryosu için SFTP önerilir çünkü SSH ile aynı kimlik doğrulama ve şifreleme mekanizmalarını kullanır, bu da yönetimi kolaylaştırır.

SSH Sertleştirme (Hardening) Konuları

SSH sunucularını değerlendirirken veya yapılandırırken /etc/ssh/sshd_config dosyasında şu güvenlik ayarları dikkate alınmalıdır:
  • Anahtar tabanlı kimlik doğrulama kurulduktan sonra parola ile girişin devre dışı bırakılması (PasswordAuthentication no).
  • Root girişinin kapatılması (PermitRootLogin no) ve kullanıcıların önce normal kullanıcıyla giriş yapmaya zorlanması.
  • SSH üzerinden hangi hesapların bağlanabileceğini sınırlamak için AllowUsers veya AllowGroups kullanılması.
  • Otomatik tarama trafiğini azaltmak için varsayılan portun değiştirilmesi (güvenlik yoluyla gizleme, tek başına güçlü bir kontrol değildir).
  • Başarısız giriş denemelerini engellemek için fail2ban veya benzeri araçların etkinleştirilmesi.
  • KexAlgorithms, Ciphers ve MACs yapılandırmalarıyla modern anahtar değişim ve şifreleme
Parola Saldırısı- Password Attack
Kod:
root@CW-ommah$ telnet 10.112.161.206 110
Trying 10.112.161.206...
Connected to 10.112.161.206.
Escape character is '^]'.
+OK 10.112.161.206 Mail Server POP3 Wed, 15 Sep 2021 11:05:34 +0300
USER frank
+OK frank
PASS D2xc9CgD
+OK 1 messages (179) octets
STAT
+OK 1 179
LIST
+OK 1 messages (179) octets
1 179
.
RETR 1
+OK
From: Mail Server
To: Frank
subject: Sending email with Telnet
Hello Frank,
I am just writing to say hi!
.
QUIT
+OK 10.112.161.206 closing connection
Connection closed by foreign host.

Kimlik Doğrulama Faktörleri

Kimlik doğrulama (authentication), yani kimliğinizi kanıtlama işlemi, aşağıdakilerden biri veya iki ya da daha fazlasının birleşimiyle gerçekleştirilebilir:
  • Bildiklerin (Something you know): Parola veya PIN kodu gibi.
  • Sahip oldukların (Something you have): Telefon, güvenlik anahtarı veya akıllı kart gibi.
  • Olduğun şey (Something you are): Parmak izi veya yüz tanıma gibi biyometrik özellikler.

Zayıf Parolaların Neden Hâlâ Kullanıldığı

2013’teki Adobe veri ihlalinden sızdırılan 150 milyon kullanıcı adı ve parola üzerinde yapılan analizlere göre en yaygın 10 parola arasında 123456, password, qwerty ve benzeri bariz seçenekler yer almaktadır.
Parola alışkanlıkları önemli ölçüde gelişmemiştir. Daha güncel veri ihlallerinin analizleri, 2020’lerde hâlâ şu yaygın parolaların kullanıldığını göstermektedir:

  • 123456 ve türevleri (123456789, 12345678, 1234567890)
  • password ve Password1
  • qwerty ve qwerty123
  • Sayılarla birlikte şirket veya servis isimleri (Summer2024, Welcome1)
  • Spor takımları ve popüler kültür referansları
Büyük veri ihlali veritabanlarının erişilebilir hale gelmesi, parola saldırılarını her zamankinden daha etkili yapmıştır. Saldırganlar, sızdırılmış kimlik bilgilerini farklı servisler arasında karşılaştırabilir çünkü birçok kullanıcı aynı parolayı tekrar kullanmaktadır.

Parola Saldırı Türleri

Parolalara yönelik saldırılar, basit kaba kuvvet (brute force) yöntemlerinin ötesine geçerek gelişmiştir:

Parola tahmini (Password Guessing), hedef hakkında bazı bilgiler gerektirir. Örneğin kişinin evcil hayvanının adı, doğum yılı, favori spor takımı veya çocuklarının isimleri gibi. Sosyal medya, bu bilgilerin toplanmasını her zamankinden daha kolay hale getirmiştir.

Sözlük saldırısı (Dictionary Attack), sözlükteki yaygın kelimeleri veya wordlist içindeki ifadeleri dener. Bu yöntem etkilidir çünkü birçok kullanıcı gerçek kelimeler veya basit varyasyonlar seçer.

Kaba kuvvet saldırısı (Brute Force Attack), tüm olası karakter kombinasyonlarını dener. Bu yöntem tamamen kapsamlıdır ve zaman alıcıdır, ancak kısa parolalara karşı etkilidir. Arama uzayı parola uzunluğu arttıkça üstel olarak büyür; bu nedenle uzun parolalar çok daha güvenlidir.

Kimlik bilgisi doldurma (Credential Stuffing), önceki veri ihlallerinden sızdırılmış kullanıcı adı/parola çiftlerini alır ve bunları başka servislerde dener. Bu yöntem parola tekrar kullanımını hedefler ve oldukça etkilidir. Saldırganlar milyonlarca kimlik bilgisini otomatik araçlarla birçok site üzerinde aynı anda test eder.

Parola püskürtme (Password Spraying), çok sayıda hesap üzerinde az sayıda yaygın parolayı dener. Tek bir hesaba çok sayıda parola denemek (hesap kilitlemeye yol açar) yerine, saldırgan binlerce hesapta bir veya iki parola dener. Bu yöntem hesap kilitleme mekanizmalarını atlatabilir.

Hibrit saldırılar (Hybrid Attacks), sözlük kelimelerini yaygın desenlerle birleştirir. Örneğin Summer kelimesine yıllar eklemek (Summer2023, Summer2024) veya yaygın karakter değiştirmeleri yapmak (P@ssw0rd, Adm1n!).

Wordlist’ler ve Veri İhlali Verileri

Zamanla güvenlik araştırmacıları ve saldırganlar, veri ihlallerinden sızdırılan parolaları içeren kapsamlı wordlist’ler (kelime listeleri) oluşturmuştur.
Modern wordlist’ler artık herşeyin çok ötesine geçmiştir:

  • SecLists, farklı amaçlar için hazırlanmış birçok wordlist içeren bir koleksiyondur ve birçok güvenlik dağıtımında /usr/share/seclists/ dizininde bulunur.
  • CrackStation, parola kırma (password cracking) için optimize edilmiş wordlist’ler sağlar.
  • Veri ihlali derlemeleri, farklı siber saldırılardan elde edilmiş milyarlarca gerçek parolayı içerir.
Wordlist seçimi hedef hakkındaki bilginize bağlı olmalıdır. Örneğin Fransız bir kullanıcı Fransızca kelimeler kullanabilir. Bir şirket çalışanları ise şirket adıyla birlikte yıllar veya mevsimler gibi kalıpları tercih edebilir. Hedefe özel hazırlanmış wordlist’ler, genel listelere kıyasla genellikle çok daha etkilidir.

THC Hydra

THC Hydra, FTP, POP3, IMAP, SMTP, SSH ve HTTP ile ilgili tüm yöntemler dahil olmak üzere birçok protokolü destekleyen hızlı ve esnek bir parola kırma aracıdır. Ağ servislerine karşı yaygın parolaları veya bir wordlist içindeki girdileri denemek için otomatik bir yöntem sağlar.
Genel komut satırı sözdizimi şöyledir:
Kod:
hydra -l username -P wordlist.txt server service
Burada kullanılan seçenekler şunlardır:

  • -l username: Hedefin kullanıcı adı
  • -P wordlist.txt: Denenecek parolaları içeren metin dosyası
  • server: Hedef sunucunun hostname’i veya IP adresi
  • service: Saldırı yapılan servis (örneğin ftp, ssh, imap, pop3, smtp)
Aşağıdaki örnekleri inceleyelim:
# mark kullanıcı adı ile FTP’ye saldırı
Kod:
hydra -l mark -P /usr/share/wordlists/rockyou.txt 10.112.161.206 ftp

# alternatif sözdizimi (yukarıdakiyle aynı)
Kod:
hydra -l mark -P /usr/share/wordlists/rockyou.txt ftp://10.112.161.206

# frank kullanıcı adı ile SSH’ye saldırı
Kod:
hydra -l frank -P /usr/share/wordlists/rockyou.txt 10.112.161.206 ssh

# lazie kullanıcı adı ile IMAP’e saldırı
Kod:
hydra -l lazie -P /usr/share/wordlists/rockyou.txt 10.112.161.206 imap

# kullanıcı adı listesi ile saldırı (credential stuffing tarzı)
Kod:
hydra -L users.txt -P passwords.txt 10.112.161.206 ssh

Faydalı Hydra Seçenekleri

SeçenekAçıklama
-l usernameSaldırı yapılacak tek kullanıcı adı
-L users.txtKullanıcı adlarının bulunduğu liste dosyası
-p passwordDenenecek tek parola
-P wordlist.txtParola listesini içeren dosya
-s PORTVarsayılan olmayan bir port belirtir
-V veya -vVDenemeleri gösteren ayrıntılı çıktı
-t nParalel bağlantı (thread) sayısı
-dSorun giderme için hata ayıklama modu
-fİlk geçerli parola bulunduğunda durur
-w nBağlantılar arasında bekleme süresi
Parola bulunduğunda işlemi sonlandırmak için CTRL-C kullanabilirsiniz

Diğer Parola Saldırı Araçları

Hydra ağ servislerine saldırılar için çok iyi olsa da, farklı amaçlar için başka araçlar da vardır:
  • Medusa Hydra’ya benzer ancak modüler bir tasarıma sahiptir. Bazı protokollerde daha kararlı olabilir.
  • Ncrack, Nmap projesi tarafından geliştirilmiştir ve yüksek hızlı paralel kimlik doğrulama testleri için tasarlanmıştır.
  • CrackMapExec (CME) / NetExec, Windows/Active Directory ortamlarında uzmanlaşmıştır ve SMB, WinRM, LDAP gibi protokollerde parola denemesi yapabilir.
  • Burp Suite Intruder, Hydra’nın HTTP modüllerinin yeterli olmadığı web giriş formlarına saldırmak için kullanılır.
  • Hashcat ve John the Ripper, canlı sistemler yerine parola hash’lerini çevrimdışı kırmak için kullanılır. Eğer bir veritabanı ihlali gibi durumlarda hash elde edilirse, bu araçlar düz parolayı canlı sisteme saldırmadan çok daha hızlı şekilde çözebilir.

Parola Saldırılarını Azaltma (Mitigating Password Attacks)

Parola saldırılarına karşı alınacak önlemler hedef sisteme göre değişir. Modern savunmalar şunları içerir:

Parola politikaları (Password Policies) minimum karmaşıklık gereksinimlerini uygular. Modern NIST SP 800-63B (dijital kimlik yönergeleri için ABD hükümet standardı), karmaşıklık kurallarından ziyade parola uzunluğuna odaklanmayı, bilinen ele geçirilmiş parolaların engellenmesini ve yalnızca bir ihlal belirtisi varsa parola değiştirilmesini önerir.

Hesap kilitleme (Account Lockout) belirli sayıda başarısız giriş denemesinden sonra hesabı geçici veya kalıcı olarak kilitler. Bu yöntem brute force saldırılarına karşı etkilidir ancak password spraying ile aşılabilir veya hizmet reddi (DoS) için kötüye kullanılabilir.

Yavaşlatma ve hız sınırlama (Throttling & Rate Limiting) giriş denemelerine gecikme ekler. Birkaç saniyelik gecikme kullanıcılar için kabul edilebilirken otomatik araçları ciddi şekilde yavaşlatır. Daha gelişmiş sistemler üstel geri çekilme (exponential backoff) kullanır.

CAPTCHA, makineler için zor olan bir doğrulama testi ister. Modern CAPTCHA sistemleri yalnızca görsel tanımadan ziyade davranış analizi ve risk puanlaması kullanır.

Çok faktörlü kimlik doğrulama (MFA) parola dışında ek doğrulama gerektirir; örneğin kimlik doğrulama uygulamasından gelen kod, SMS (daha az güvenli olsa da) veya donanım güvenlik anahtarı. MFA, parola saldırılarına karşı en etkili savunmalardan biridir.


Parolasız kimlik doğrulama (Passwordless Authentication) parolaları tamamen ortadan kaldırır:
  • Passkeys (FIDO2/WebAuthn), cihazlarda saklanan kriptografik anahtarlar kullanır ve parolaları biyometrik doğrulama veya PIN ile değiştirir.
  • E-posta ile gönderilen “magic link” yöntemleri.
  • YubiKey gibi donanım güvenlik anahtarları.
Sızdırılmış parola tespiti (Breached Password Detection), kayıt ve giriş sırasında parolaları bilinen veri ihlali listeleriyle karşılaştırır. “Have I Been Pwned” gibi servisler bu amaçla API sağlar.

Davranış analizi (Behavioural Analysis) olağandışı konumlardan giriş denemeleri, imkânsız seyahat senaryoları veya otomatik saldırılara özgü desenler gibi anormallikleri tespit eder.

IP tabanlı kontroller, coğrafi sınırlama (geofencing), bilinen kötü IP’leri engelleme ve yeni cihazlar veya konumlar için ek doğrulama gerektirme gibi yöntemleri içerir.

Bu yaklaşımların birlikte kullanılması, parola saldırılarına karşı katmanlı bir savunma (defence in depth) sağlar. Yüksek güvenlik gerektiren ortamlarda parolasız kimlik doğrulamaya geçiş, bu saldırı vektörlerinin çoğunu tamamen ortadan kaldırır.

Özet

ProtokolTCP PortUygulama(lar)Veri Güvenliği
FTP21Dosya TransferiAçık metin
FTPS990Dosya TransferiŞifreli (örtük TLS)
HTTP80World Wide WebAçık metin
HTTPS443World Wide WebŞifreli (örtük TLS)
IMAP143E-posta (MDA)Açık metin
IMAPS993E-posta (MDA)Şifreli (örtük TLS)
POP3110E-posta (MDA)Açık metin
POP3S995E-posta (MDA)Şifreli (örtük TLS)
SFTP22Dosya TransferiŞifreli (SSH)
SMTP25E-posta (MTA)Açık metin
SMTP Submission587E-posta (MTA, istemci gönderimi)STARTTLS*
SMTPS465E-posta (MTA)Şifreli (örtük TLS)
SSH22Uzak Erişim ve Dos

*STARTTLS, bağlantının standart port üzerinden şifrelenmemiş olarak başladığı ve istemci STARTTLS komutunu verdikten sonra TLS’e yükseltildiği anlamına gelir. Bu, şifrelemenin bağlantı kurulduğu anda başladığı implicit TLS’ten farklıdır. STARTTLS, e-posta gönderimi için 587 portunda yaygındır ve ayrıca 25, 110 ve 143 portlarında da kullanılabilir.

Hydra Hızlı Referans

Hydra, ağ servislerine karşı parola saldırılarında oldukça verimli bir araç olmaya devam etmektedir. Temel seçenekleri aşağıdaki tabloda özetlenmiştir.
SeçenekAçıklama
-l usernameTek bir kullanıcı adı sağla
-L users.txtKullanıcı adlarını içeren dosya sağla
-p passwordDenenecek tek parola sağla
-P wordlist.txtKullanılacak parola listesini belirt
server serviceSunucu adresini ve saldırılacak servisi ayarla
-s PORTVarsayılan olmayan port numarası için kullan
-V veya -vVDenenen kullanıcı adı/parola kombinasyonlarını göster
-t nParalel bağlantı (thread) sayısı
-w nBağlantılar arası bekleme süresi (saniye)
-fİlk geçerli kimlik bilgisi bulunduğunda dur
-dHata ayıklama (debug) çıktısı göster
1780545836165.pngOkuduğunuz için teşekkür ederim




CW-Ommah
Bug Researchers Tim Sundu...

1780545858579.png