Kriptografi (Cryptography) : Bilginin Gizliliği, Bütünlüğü ve Güvenli İletişimin Temelleri

Kriptografi, bilgilerin yetkisiz kişiler tarafından okunmasını, değiştirilmesini veya sahte olarak üretilmesini önlemek amacıyla matematiksel yöntemler kullanan bilim dalıdır. 


Kelime kökeni Yunancadır.

  • Kryptos = Gizli

  • Graphia = Yazı

Yani anlamı:

Gizli Yazı Sanatı

Günümüzde kriptografi yalnızca şifreleme değildir.

Aşağıdaki güvenlik hizmetlerinin tamamını sağlar:

  • Gizlilik (Confidentiality)

  • Bütünlük (Integrity)

  • Kimlik Doğrulama (Authentication)

  • İnkar Edememe (Non-Repudiation)

  • Yetkilendirme

  • Güvenli Anahtar Paylaşımı

Bugün kullandığımız hemen her sistem kriptografi kullanır.

  • HTTPS

  • SSH

  • VPN

  • Wi-Fi (WPA2/WPA3)

  • Bankacılık

  • E-Devlet

  • Mobil uygulamalar

  • WhatsApp

  • Signal

  • Bitcoin

  • Elektronik imza

  • Bulut depolama


Kriptografinin Tarihçesi

Antik Çağ

İlk şifreleme yöntemleri askeri amaçlıydı.

Spartalıların Scytale Yöntemi

Silindir üzerine sarılan deri şerit kullanılırdı.

Doğru çapa sahip silindir olmadan mesaj okunamazdı.


Sezar Şifreleme (Caesar Cipher)

Julius Caesar tarafından kullanılmıştır.

Örnek

A → D
B → E
C → F

Mesaj

MERHABA

3 harf kaydırılır

PHUKDED

Avantaj

  • Basit

Dezavantaj

  • Kolay kırılır.


Orta Çağ

  • Monoalfabetik şifreler

  • Polialfabetik şifreler

En ünlüsü

Vigenère Cipher

300 yıl boyunca "kırılamaz şifre" olarak bilinmiştir.


II. Dünya Savaşı

Kriptografinin en önemli dönemi.

Enigma Makinesi

Almanya tarafından kullanılmıştır.

Alan Turing ve ekibi Enigma'yı çözerek savaşın seyrini değiştirmiştir.

Bu çalışma modern bilgisayar biliminin temelini oluşturmuştur.


Modern Kriptografi

1970 sonrası

Matematik tabanlı sistemlere geçildi.

  • DES

  • RSA

  • Diffie-Hellman

  • AES

  • ECC

  • SHA

  • TLS


Kriptografinin Amaçları

1. Gizlilik (Confidentiality)

Bilgi yalnızca yetkili kişiler tarafından okunabilir.

Örnek

E-posta

Şifrelenmeden

Merhaba Ali

Şifrelenmiş

AF23D9AA7712C98...

2. Bütünlük (Integrity)

Verinin değiştirilmediğinin garanti edilmesi.

Hash algoritmaları kullanılır.

SHA-256

3. Kimlik Doğrulama

Mesajı gerçekten gönderen kişinin doğrulanması.

Yöntemler

  • Dijital imza

  • Sertifika

  • HMAC


4. İnkar Edememe

Gönderen

"Daha önce bunu ben göndermedim."

diyemez.

Elektronik imza bunun için kullanılır.


Kriptografinin Temel Kavramları

Plaintext

Şifrelenmemiş veri.

Merhaba Dünya

Ciphertext

Şifrelenmiş veri.

98A3EF127BBAB...

Encryption

Şifreleme işlemi

Plaintext
Encryption
Ciphertext

Decryption

Şifre çözme

Ciphertext
Decryption
Plaintext

Cipher

Şifreleme algoritmasının kendisi.

Örneğin

  • AES

  • ChaCha20

  • RSA


Key (Anahtar)

Kriptografinin en önemli unsurudur.

Aynı algoritma

Farklı anahtar

Tamamen farklı çıktı üretir.


Şifreleme Türleri

İki temel sistem vardır.

Kriptografi
├── Simetrik
└── Asimetrik

Simetrik Şifreleme

Tek anahtar kullanılır.

Gönderen
AES
Anahtar
AES
Alıcı

Şifreleme ve çözme anahtarı aynıdır.

Avantajları

  • Çok hızlı

  • Büyük dosyalar

  • Düşük CPU kullanımı

Dezavantajları

  • Anahtar paylaşımı zordur.


Simetrik Algoritmalar

AES

Günümüz standardıdır.

Anahtar boyutları

128 bit
192 bit
256 bit

Kullanım alanları

  • HTTPS

  • VPN

  • Disk şifreleme

  • BitLocker

  • FileVault

  • VeraCrypt


DES

56 bit

Artık güvenli değildir.


3DES

DES'in geliştirilmiş hali.

Yavaş olduğu için terk edilmektedir.


Blowfish

Bruce Schneier

64 bit blok


Twofish

AES yarışmasının finalistidir.


ChaCha20

Google tarafından yaygınlaştırılmıştır.

Mobil cihazlarda oldukça hızlıdır.

TLS ve VPN çözümlerinde yaygın olarak kullanılır.


Asimetrik Kriptografi

İki anahtar vardır.

Public Key
Private Key

Public Key

Herkese açıktır.

Private Key

Sadece sahibindedir.


Çalışma Mantığı

Ali

Ayşe'nin Public Key'i ile şifreler

İnternet

Ayşe

Private Key ile açar.


RSA

1977

Rivest

Shamir

Adleman

En yaygın asimetrik algoritmadır.

Anahtar

2048

3072

4096 bit


ECC (Elliptic Curve Cryptography)

RSA'dan daha küçüktür.

Daha hızlıdır.

Mobil cihazlarda yaygındır.

Örneğin

256 bit ECC

3072 bit RSA güvenliği


Diffie-Hellman

Şifreleme yapmaz.

Anahtar paylaşımı sağlar.

İki taraf ortak gizli anahtar oluşturur.

VPN

SSH

TLS

bunu kullanır.


Hibrit Şifreleme

Modern sistemler tek bir algoritmaya bağlı kalmaz.

Örneğin HTTPS:

  1. Sunucu açık anahtarını gönderir.

  2. İstemci rastgele bir oturum anahtarı üretir.

  3. Bu anahtarı sunucunun açık anahtarıyla şifreler.

  4. Sunucu özel anahtarıyla çözer.

  5. Sonraki tüm veri trafiği AES veya ChaCha20 gibi simetrik algoritmalarla korunur.

Bu yaklaşım, asimetrik şifrelemenin güvenli anahtar paylaşımını ve simetrik şifrelemenin yüksek performansını birleştirir.


Hash Fonksiyonları

Hash, veriden sabit uzunlukta bir özet (digest) üretir. Hash tek yönlüdür; yani özetten orijinal veriye geri dönülemez.

Özellikleri:

  • Tek yönlüdür.

  • Aynı girdi her zaman aynı çıktıyı üretir.

  • Küçük bir değişiklik tamamen farklı bir özet oluşturur (çığ etkisi).

  • Çarpışmalara (collision) karşı dirençli olmalıdır.

Yaygın algoritmalar:

  • SHA-256

  • SHA-384

  • SHA-512

  • SHA-3

  • BLAKE2

  • BLAKE3

Artık güvenli kabul edilmeyenler:

  • MD5

  • SHA-1

Örnek:

Merhaba
SHA-256
0f4a... (64 hexadecimal karakter)

Dijital İmza

Dijital imza, verinin gerçekten belirtilen kişi tarafından oluşturulduğunu ve değiştirilmediğini kanıtlar.

Temel süreç:

  1. Mesajın hash'i alınır.

  2. Hash değeri gönderenin özel anahtarı ile imzalanır.

  3. Alıcı, gönderenin açık anahtarı ile imzayı doğrular.

Kullanım alanları:

  • Elektronik imza

  • Yazılım güncellemeleri

  • Kod imzalama

  • PDF imzalama

  • E-posta güvenliği


Dijital Sertifikalar ve PKI

Bir açık anahtarın gerçekten doğru kişiye veya kuruma ait olduğunu kanıtlamak için dijital sertifikalar kullanılır.

PKI (Public Key Infrastructure) bileşenleri:

  • Sertifika Otoritesi (CA)

  • Kayıt Otoritesi (RA)

  • Sertifika Depoları

  • İptal Listeleri (CRL)

  • OCSP doğrulama hizmetleri

Bir web tarayıcısı HTTPS bağlantısı kurarken sunucunun sertifikasını doğrular, sertifikanın güvenilir bir CA tarafından imzalanıp imzalanmadığını kontrol eder ve ardından güvenli iletişim başlatır.


Blok Şifreler ve Çalışma Kipleri (Modes of Operation)

AES gibi blok şifreler farklı çalışma kipleriyle kullanılabilir.

ECB (Electronic Codebook)

  • Aynı blok aynı çıktıyı üretir.

  • Desenleri gizleyemez.

  • Güvenli değildir.

CBC (Cipher Block Chaining)

  • Her blok bir önceki blokla ilişkilidir.

  • Başlatma Vektörü (IV) gerektirir.

  • Uzun yıllar yaygın olarak kullanılmıştır.

CTR (Counter Mode)

  • Sayaç tabanlı çalışır.

  • Paralel işleme uygundur.

  • Yüksek performans sağlar.

GCM (Galois/Counter Mode)

  • Hem şifreleme hem bütünlük doğrulaması sağlar.

  • TLS ve modern uygulamalarda en çok tercih edilen kiplerden biridir.


Anahtar Yönetimi

En güçlü algoritma bile anahtarlar kötü korunuyorsa güvenli değildir.

İyi anahtar yönetimi için:

  • Güçlü rastgele sayı üreteçleri kullanın.

  • Anahtarları düz metin olarak saklamayın.

  • Anahtar rotasyonu uygulayın.

  • Yetkisiz erişime karşı HSM veya güvenli anahtar kasaları kullanın.

  • Farklı amaçlar için farklı anahtarlar üretin.


Gerçek Hayatta Kriptografi Nerelerde Kullanılır?

TeknolojiKullanılan Kriptografi
HTTPSTLS, AES, ECDHE, SHA-256
SSHRSA, Ed25519, ChaCha20, AES
VPNIPsec, WireGuard, AES, ChaCha20
Wi-FiWPA2/WPA3, AES-CCMP
BitLockerAES
FileVaultXTS-AES
SignalSignal Protocol
WhatsAppUçtan uca şifreleme (E2EE)
BitcoinSHA-256, ECDSA
Git İmzalamaGPG veya SSH anahtarları

Yaygın Saldırılar

  • Kaba kuvvet (Brute Force)

  • Sözlük saldırıları

  • Rainbow Table saldırıları

  • Ortadaki Adam (Man-in-the-Middle)

  • Yan kanal saldırıları (Side Channel)

  • Zamanlama saldırıları

  • Anahtar hırsızlığı

  • Sertifika sahteciliği

  • Rastgele sayı üretici zafiyetleri


Kriptografide En İyi Uygulamalar

  • AES-256 veya ChaCha20 gibi güncel algoritmaları tercih edin.

  • SHA-256, SHA-3 veya BLAKE2/BLAKE3 gibi güçlü hash fonksiyonları kullanın.

  • MD5, SHA-1, DES ve RC4 gibi eski algoritmalardan kaçının.

  • Çok faktörlü kimlik doğrulamayı (MFA) destekleyin.

  • Güvenilir rastgele sayı üreticileri kullanın.

  • Özel anahtarları güvenli donanım veya şifreli depolarda saklayın.

  • Sertifikaların süresini ve iptal durumunu düzenli olarak kontrol edin.

  • Yazılım ve kriptografik kütüphaneleri güncel tutun.


Sonuç

Kriptografi, modern bilgi güvenliğinin temel taşlarından biridir. İnternet üzerinden yapılan bankacılık işlemlerinden mobil mesajlaşmaya, bulut depolamadan elektronik imzaya kadar sayısız sistem; güvenli anahtar yönetimi, güçlü şifreleme algoritmaları, hash fonksiyonları ve dijital imzalar sayesinde güvenli çalışır.

Bir siber güvenlik uzmanı veya sistem yöneticisi için yalnızca algoritmaların isimlerini bilmek yeterli değildir. Simetrik ve asimetrik şifreleme, hibrit sistemler, hash fonksiyonları, dijital sertifikalar, PKI, anahtar yönetimi ve güvenli protokollerin nasıl birlikte çalıştığını anlamak; güvenli sistemler tasarlamak, yapılandırmak ve yönetmek için kritik öneme sahiptir.

Kriptografi, bilgiyi yetkisiz erişimden korumak, veri bütünlüğünü sağlamak ve iletişimin taraflarını doğrulamak için matematiksel yöntemler kullanan bilim dalıdır. Özellikle siber güvenlik laboratuvarlarında, ağ trafiği analizinde ve güvenli iletişim altyapılarında (SSH, VPN) karşılaştığımız şifreleme mekanizmalarının temelini oluşturur.

Bilgi güvenliğinin temelini atan üç ana unsuru (CIA Üçlüsü) sağlamak kriptografinin temel amacıdır:

  • Gizlilik (Confidentiality): Verinin yalnızca yetkili kişiler tarafından okunabilmesi.

  • Bütünlük (Integrity): Verinin iletim sırasında değiştirilmediğinin veya bozulmadığının garanti edilmesi.

  • Erişilebilirlik (Availability): Verinin ihtiyaç duyulduğunda yetkili kişilerce ulaşılabilir olması (doğrudan kriptografinin konusu olmasa da güvenlik mimarisinin ayrılmaz bir parçasıdır).

Kriptografi, mekanizmalarına göre üç ana kategoriye ayrılır:

1. Simetrik Şifreleme (Symmetric Encryption)

Simetrik şifrelemede, veriyi şifrelemek (encrypt) ve çözmek (decrypt) için aynı anahtar kullanılır. Hızlıdır ve büyük veri yığınlarını şifrelemek için idealdir.

  • Nasıl Çalışır? Gönderici, düz metni (plaintext) bir algoritma ve gizli bir anahtar kullanarak şifreli metne (ciphertext) dönüştürür. Alıcı, aynı anahtarı kullanarak şifreli metni tekrar düz metne çevirir.

  • Yaygın Algoritmalar: AES (Advanced Encryption Standard), DES, 3DES, ChaCha20.

  • Zorluk: Anahtar Dağıtımı. Taraflar iletişime geçmeden önce gizli anahtarı güvenli bir şekilde birbirlerine iletmek zorundadır. Ağa sızan bir saldırgan (örneğin Wireshark veya Tshark ile trafiği dinleyen biri) bu anahtarı ele geçirirse, tüm şifreli trafiği çözebilir.

Şifreleme mantığını temel seviyede anlamak için aşağıdaki etkileşimli aracı kullanarak klasik şifreleme algoritmalarının düz metinleri nasıl değiştirdiğini test edebilirsiniz:

2. Asimetrik Şifreleme (Asymmetric Encryption)

Asimetrik şifreleme, simetrik şifrelemenin "anahtar dağıtımı" sorununu çözer. Bu yöntemde birbiriyle matematiksel olarak bağlantılı iki farklı anahtar (Anahtar Çifti) kullanılır: Biri Herkese Açık Anahtar (Public Key), diğeri Özel Anahtar (Private Key).


  • Açık Anahtar (Public Key): Herkesle paylaşılabilir. Veriyi şifrelemek için kullanılır.

  • Özel Anahtar (Private Key): Sadece sahibinde kalmalıdır, asla paylaşılmaz. Açık anahtarla şifrelenen veriyi çözmek veya dijital imza oluşturmak için kullanılır.

  • Kullanım Senaryosu: Sunuculara şifresiz ve güvenli bir şekilde bağlanmak için OpenSSH yapılandırmalarında kullandığımız anahtar çiftleri (örneğin Ed25519 veya RSA anahtarları) doğrudan bu temele dayanır. İstemci, sunucuya açık anahtarını kaydeder ve bağlantı sırasında kendi bilgisayarındaki özel anahtarıyla kimliğini kanıtlar.

  • Yaygın Algoritmalar: RSA, ECC (Elliptic Curve Cryptography), Diffie-Hellman.

Önemli Not: Asimetrik şifreleme, simetrik şifrelemeye göre çok daha yavaştır (daha yoğun matematiksel hesaplama gerektirir). Bu nedenle modern sistemlerde (örneğin HTTPS/TLS) genellikle hibrit bir yapı kullanılır: Asimetrik şifreleme ile "simetrik oturum anahtarı" güvenli bir şekilde karşı tarafa iletilir, ardından hızlı olan simetrik şifreleme ile veri aktarımı başlar.

3. Özet Fonksiyonları (Hash Functions)

Hash fonksiyonları, herhangi bir uzunluktaki veriyi alıp, sabit uzunlukta, benzersiz bir karakter dizisine (özet) dönüştüren tek yönlü (one-way) matematiksel algoritmalardır. Şifrelemeden farkı, işlemin geriye döndürülememesidir; yani hash değerinden orijinal veriye ulaşılamaz.

ÖzellikAçıklama
Tek YönlülükÇıktıdan girdiyi bulmak hesaplama açısından imkansız olmalıdır.
Çarpışma Direnciİki farklı verinin aynı hash değerini üretmesi (collision) neredeyse imkansız olmalıdır.
Çığ EtkisiGirdideki tek bir karakterin (veya bitin) değişmesi, hash çıktısını tamamen değiştirmelidir.
  • Kullanım Senaryosu: İşletim sistemlerinde kullanıcı parolalarının güvenli saklanması (parolaların kendisi değil, hash değerleri veritabanına kaydedilir) veya indirilen bir dosyanın bütünlüğünün doğrulanması. Ayrıca siber güvenlik CTF (Capture The Flag) yarışmalarında hash kırma (hash cracking) senaryoları sıkça karşımıza çıkar.

  • Yaygın Algoritmalar: SHA-256, SHA-3, MD5 (Artık güvensiz kabul edilir), bcrypt.


Kriptografik algoritmaların (AES, RSA, SHA-256) kendileri matematiksel olarak oldukça güvenlidir. Ancak veri ihlallerinin veya CTF yarışmalarındaki bayrak (flag) yakalama senaryolarının çoğu, algoritmanın kırılmasından değil, yanlış uygulanmasından (implementation flaws) kaynaklanır.

İster bir mobil uygulamanın (örneğin Flutter tabanlı bir istemcinin) API ile haberleşmesini tasarlıyor olun, ister bir laboratuvar ortamı için kasıtlı olarak zafiyetli bir web servisi yapılandırıyor olun, en sık karşılaşılan hatalar şunlardır:

1. Kaynak Kodda Sabitlenmiş Anahtarlar (Hardcoded Secrets)

Özellikle istemci tarafı uygulamalarda ve API arka uçlarında yapılan en büyük hatalardan biridir.

  • Senaryo: Geliştirici, veritabanı şifreleme anahtarını, API jetonlarını veya framework'ün (örneğin Django) SECRET_KEY değerini doğrudan kaynak kodun (örneğin settings.py veya Dart dosyalarının) içine yazar.

  • Zafiyet / Sömürü: Uygulamanın derlenmiş hali (APK vb.) tersine mühendislikle (reverse engineering) incelendiğinde bu anahtarlar kolayca çıkarılır. CTF'lerde, derlenmiş bir ikili dosyada strings komutu çalıştırarak veya basit statik analiz araçları kullanarak bu anahtarlar elde edilir ve JWT (JSON Web Token) imzaları taklit edilerek yetki yükseltilir (privilege escalation).

2. Zayıf Rastgele Sayı Üretimi (Insecure Randomness)

Kriptografide güvenlik, tahmin edilemezliğe dayanır. Jeton (token) oluştururken veya anahtar üretirken zayıf rastgele sayı üreteçlerinin kullanılması sistemi çökertir.

  • Zafiyet / Sömürü: Python gibi dillerdeki standart random kütüphanesi kriptografik olarak güvenli değildir (Mersenne Twister algoritmasını kullanır ve yeterince çıktı gözlemlenirse iç durumu tahmin edilebilir). API tabanlı bir sistemde oturum token'ları bu kütüphane ile üretiliyorsa, bir saldırgan bir sonraki token'ı tahmin edebilir.

  • Doğru Uygulama: Güvenli uygulamalarda her zaman işletim sisteminin kriptografik olarak güvenli rastgele sayı üretecine (CSPRNG) başvuran kütüphaneler (örneğin Python'da secrets modülü veya os.urandom) kullanılmalıdır.

3. Blok Şifrelemede Hatalı Mod Seçimi (ECB Zafiyeti)

AES gibi simetrik blok şifreleyiciler, veriyi belirli boyutlardaki bloklara (örneğin 16 byte) bölerek şifreler. Bu blokların birbirine nasıl bağlanacağı "Şifreleme Modu" ile belirlenir.

  • Zafiyet / Sömürü: ECB (Electronic Codebook) modu en güvensiz moddur çünkü aynı düz metin bloklarını her zaman aynı şifreli metin bloklarına dönüştürür. Bu durum, veri içindeki desenlerin (pattern) şifreli metinde de görünür kalmasına neden olur.

  • Doğru Uygulama: AES için CBC (Cipher Block Chaining) veya GCM (Galois/Counter Mode) gibi her blokta rastgelelik (Initialization Vector - IV) kullanan modlar tercih edilmelidir. GCM aynı zamanda bütünlük kontrolü de sağladığı için modern API tasarımlarında altın standarttır.

4. Padding Oracle Saldırıları

AES-CBC gibi modlarda, veri tam blok boyutuna ulaşmazsa son bloğa dolgu (padding) eklenir. Eğer sunucu (veya API), dolgunun hatalı olduğuna dair istemciye spesifik bir hata mesajı veya farklı bir HTTP durum kodu döndürürse, bu durum bir "Oracle" (Kahin) görevi görür.

  • Zafiyet / Sömürü: Saldırgan, şifreli metin üzerindeki bitleri değiştirip sunucuya gönderir ve sunucunun verdiği "Padding hatası" veya "Geçersiz token" tepkilerini analiz ederek, anahtarı bilmeden şifreli metni karakter karakter çözebilir. CTF web kategorisinde oturum çerezlerini (cookie) ele geçirmek için klasikleşmiş bir yöntemdir.

5. Zayıf veya Artık Kullanılmayan Hash Algoritmaları

Parolaları veya veri bütünlüğünü korumak için tek yönlü özet fonksiyonları kullanılır, ancak zamanla bilgisayarların işlem gücü arttığı için bazı algoritmalar ömrünü doldurmuştur.

AlgoritmaDurumNeden Zayıf?
MD5KırıldıÇarpışma (collision) saldırılarına karşı savunmasızdır. İki farklı dosyanın aynı MD5 özetini üretmesi sağlanabilir.
SHA-1KırıldıMD5 gibi çarpışma direnci yitirilmiştir (Google'ın SHAttered saldırısı ile kanıtlandı).
Bcrypt / Argon2GüvenliBrute-force saldırılarını yavaşlatmak için özellikle yavaş çalışacak (iş faktörü/work factor ayarlanabilir) şekilde tasarlanmışlardır. Parola saklamak için idealdir.
  • CTF Senaryosu: Ele geçirilen bir Linux /etc/shadow dosyasında MD5 hash'leri varsa, saniyeler içinde kaba kuvvet (brute-force) veya sözlük saldırıları ile kırılabilir. Modern sistemler, bu yüzden hash işleminden önce parolalara rastgele bir "Tuz (Salt)" ekler ve Bcrypt gibi yavaş fonksiyonlar kullanır.

Ağ trafiği analizi ve CTF (Capture The Flag) yarışmalarında şifreli iletişimi incelemek, protokol zafiyetlerini yakalamak veya kriptografik hataları saptamak için hem genel ağ analiz araçları hem de özelleşmiş kripto analiz kütüphaneleri kullanılır.

Bu araçlar, ham veriyi (PCAP dosyalarını) anlamlandırmak ve zayıf şifrelenmiş veya hatalı yapılandırılmış verileri çözmek için kategorilere ayrılır:

1. Ağ Trafiği ve Protokol Analiz Araçları

Ağ paketlerini yakalamak, paket akışlarını (TCP streams) yeniden birleştirmek ve protokol bazlı zafiyetleri tespit etmek için tercih edilen temel araçlar:

  • Wireshark: Ağ trafiği analizinde endüstri standardıdır. Yakalanan paketlerin (PCAP/PCAPNG) iceriğini görselleştirmek, HTTP/FTP gibi düz metin trafiğinden dosya çıkartmak (Export Objects) ve şifreli TLS trafiğini çözmek için kullanılır.

  • Tshark: Wireshark'ın komut satırı (CLI) sürümüdür. Otomatik pcap analizleri, büyük paket dosyalarının filtrelenmesi ve betiklerle (script) entegre çalışan CTF çözümleri için idealdir.

  • Zeek (Eski adıyla Bro): Ağ trafiğini oturum seviyesinde yapılandırılmış loglara (HTTP, DNS, SSL/TLS logları) dönüştüren güçlü bir ağ güvenlik izleme aracıdır.

  • Scapy: Python tabanlı ham paket oluşturma ve paket analiz kütüphanesidir. Özel protokol analizi yapmak veya PCAP dosyaları üzerinde otomatik veri aramak için sıklıkla kullanılır.

2. Kripto Analiz ve Şifre Kırma Araçları

Şifreli verileri, zayıf anahtarları veya ele geçirilen hash değerlerini analiz etmek için kullanılan araçlar:

AraçKullanım AlanıÖne Çıkan Özelliği
CyberChefEncoding / Cipher AnaliziWeb tabanlı "İsviçre çakısı". Base64, Hex, XOR, AES, Sezar ve veri akışı dönüşümlerini görsel olarak yapmayı sağlar.
HashcatHash KırmaEkran kartı (GPU) gücünü kullanarak hash değerlerini (MD5, SHA, NTLM, Kerberos vb.) kaba kuvvet veya sözlük atağıyla kırar.
John the Ripper (JtR)Hash & Arşiv Kırmaİşlemci (CPU) odaklı hash kırıcı. Özellikle şifreli ZIP, RAR ve SSH özel anahtar parolalarını çözmek için tercih edilir.
RsaCtfToolRSA Zafiyet AnaliziZayıf RSA anahtarlarını (küçük $e$ değeri, ortak asal çarpanlar $p, q$, Wiener atağı vb.) otomatik tespit edip mesajı çözer.
SageMathİleri Kripto AnaliziYanlış yapılandırılmış ECC (Elliptic Curve), LWE veya kafes tabanlı (Lattice-based) kriptografi problemlerini çözmek için Python tabanlı matematiksel ortamdır.

3. Wireshark'ta Şifreli Trafik Nasıl Çözülür?

Siber güvenlik analizlerinde HTTPS/TLS gibi şifreli bir trafiği çözmek için doğrudan algoritmayı "kırmak" yerine genellikle istemci/sunucu tarafındaki oturum anahtarlarından (Session Keys) faydalanılır.

+-------------------+ SSLKEYLOGFILE +-------------------+
| İstemci / Tarayıcı| ======================> | Wireshark |
+-------------------+ (Oturum Anahtarlarını) +-------------------+
| |
| 1. Şifreli TLS Trafiği (PCAP) | 2. Trafiği
+-----------------------------------------------> Çözüp Okur
  1. SSLKEYLOGFILE Tespiti: İstemci (örneğin bir tarayıcı veya istemci uygulaması) SSLKEYLOGFILE ortam değişkeni tanımlanarak çalıştırıldığında, TLS oturum anahtarlarını bir metin dosyasına kaydeder.

  2. Wireshark İçe Aktarımı: Wireshark uygulamasında Preferences -> Protocols -> TLS -> (Pre)-Master-Secret log filename yoluna bu dosya tanıtılır.

  3. Sonuç: Wireshark, yakalanan şifreli paketleri arka planda bu anahtarlarla çözerek düz metin HTTP/2 veya uygulama trafiğini görünür kılar.

Siber güvenlik laboratuvarlarında şifreli paketleri incelemek veya ağ analiz senaryoları kurgulamak için TLS oturum anahtarlarını dışa aktarmak en güvenilir yöntemdir. Bu işlem, sunucunun özel anahtarına (private key) ihtiyaç duymadan, yalnızca o anki oturumun (session) anahtarlarını loglayarak çalışır.

Aşağıdaki adımlar, özellikle Linux (Pardus) ve macOS terminal ortamlarında bu yapıyı kurmak için kritik bir sırayı takip eder. Eğer tarayıcıyı ortam değişkenini tanımlamadan önce açarsanız, anahtarlar kaydedilmeyecektir.

1.Mevcut Tarayıcı Oturumlarını Kapatın:Kritik önkoşul.

İşletim sistemleri arka planda çalışan tarayıcı süreçlerini tek bir çatı altında birleştirir. Eğer halihazırda açık bir Google Chrome veya Firefox pencereniz varsa, yeni açacağınız pencere bu ortam değişkenini görmeyecektir. Tüm tarayıcı pencerelerini tamamen kapattığınızdan (kill ettiğinizden) emin olun.

2.Ortam Değişkenini (SSLKEYLOGFILE) Tanımlayın:Terminal üzerinden yapılandırma.

Terminalinizi açın ve TLS anahtarlarının kaydedileceği dosya yolunu belirleyen SSLKEYLOGFILE değişkenini dışa aktarın.

Bash
export SSLKEYLOGFILE=~/tls_keys.log

(Bu dosya siz tarayıcıyı kullanmaya başladıkça otomatik olarak dolacaktır.)

3.Tarayıcıyı Aynı Terminal Üzerinden Başlatın:

Ortam değişkeninin tarayıcı sürecine aktarılabilmesi için, tarayıcıyı ortam değişkenini tanımladığınız aynı terminal penceresinden başlatmalısınız.

Linux (Pardus vb.) için:

Bash
google-chrome &
# veya
firefox &

macOS için:

Bash
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome &
4.Wireshark'a Anahtar Dosyasını Tanıtın:

Wireshark uygulamasını açın ve bu log dosyasını TLS protokol çözümleyicisine bağlayın:

  1. Edit -> Preferences (macOS'ta Wireshark -> Settings) menüsüne gidin.

  2. Sol taraftaki menüden Protocols sekmesini genişletin.

  3. Listeden TLS'i (eski sürümlerde SSL olarak geçebilir) bulun ve tıklayın.

  4. Sağ tarafta yer alan (Pre)-Master-Secret log filename alanının yanındaki "Browse" butonuna tıklayarak oluşturduğunuz tls_keys.log dosyasını seçin.

  5. OK diyerek ayarları kaydedin.

5.Trafiği Yakalayın ve Çözümlemeyi Test Edin:
  1. Wireshark üzerinden ağ arayüzünüzü (örneğin eth0 veya wlan0) seçerek paket yakalamayı başlatın.

  2. Terminalden başlattığınız tarayıcı üzerinden HTTPS kullanan bir web sitesine (örneğin [https://example.com](https://example.com)) gidin.

  3. Wireshark ekranındaki arama filtresine http2 veya http yazın.

  4. Artık normalde şifreli olan ve Application Data olarak görünen TLS paketlerinin, düz metin HTTP/2 veya HTTP/1.1 talepleri (GET, POST) olarak listelendiğini görebilirsiniz.

Önemli İpucu: tls_keys.log dosyasını cat ~/tls_keys.log komutuyla terminalden okursanız, içinde CLIENT_RANDOM ile başlayan satırlar göreceksiniz. Bu satırların her biri, Wireshark'ın tek bir TLS oturumunu çözmesi için gereken spesifik simetrik anahtarı temsil eder.

Grafik arayüz (GUI) kullanmadan ağ analizini otomatikleştirmek için tshark, terminal ortamında mükemmel bir çözümdür. Wireshark'ta menüler aracılığıyla yaptığınız TLS anahtarı tanıtma işlemini, tshark komutunda -o (override/seçenek belirleme) parametresiyle tek satırda gerçekleştirebilirsiniz.

İşte şifreli trafiği çözmek ve okumak için kullanmanız gereken temel komut:

Bash
tshark -r yakalanan_trafik.pcap -o tls.keylog_file:tls_keys.log -Y "http or http2"

Parametrelerin Anlamı

  • -r yakalanan_trafik.pcap: Analiz edilecek ağ paketi (PCAP veya PCAPNG) dosyasını okur (read).

  • -o tls.keylog_file:tls_keys.log: Wireshark grafik arayüzündeki ayarı terminal üzerinden ezer. Tshark'a TLS trafiğini anında çözmesi için daha önceden kaydettiğiniz tls_keys.log dosyasındaki simetrik anahtarları kullanmasını söyler. (Not: Log dosyasının tam yolunu belirtmeniz gerekebilir, örneğin /home/kullanici/tls_keys.log).

  • -Y "http or http2": Görüntüleme filtresi (display filter) uygular. Bu filtre sayesinde ekranda şifreli anlamsız Application Data paketlerini değil, yalnızca başarıyla çözülmüş düz metin HTTP veya HTTP/2 isteklerini görürsünüz.

İleri Seviye Tshark Kullanımı (Filtreleme ve Çıktı Alma)

Ağ trafiği analizlerinde veya CTF senaryolarında sadece paketleri ekrana dökmek genellikle yeterli olmaz. Çözülmüş trafikten hedef odaklı verileri ayıklamak için komutu daha da özelleştirebilirsiniz.

Sadece HTTP GET İsteklerini ve URL'leri Çekmek İçin:

Eğer bir kullanıcının hangi web adreslerine bağlandığını tespit etmek istiyorsanız, çıktıyı sadece belirli alanlarla sınırlayabilirsiniz:

Bash
tshark -r yakalanan_trafik.pcap -o tls.keylog_file:tls_keys.log -Y "http.request.method == GET" -T fields -e http.host -e http.request.uri
  • -T fields: Çıktı formatını belirli alanlarla (fields) sınırlandırır.

  • -e <alan_adi>: Sadece komutta belirttiğiniz spesifik alanların değerlerini ekrana basar (örnekte hedef sunucu adı ve ziyaret edilen URI).

Çözülmüş HTTP Trafiğini Düz Metin Dosyasına Kaydetmek İçin:

Eğer çözülmüş trafiği daha sonra grep, awk veya diğer terminal komutlarıyla daha derinlemesine incelemek istiyorsanız, tüm ağaç detaylarını bir metin dosyasına aktarabilirsiniz:

Bash
tshark -r yakalanan_trafik.pcap -o tls.keylog_file:tls_keys.log -V > cozulmus_trafik.txt
  • -V: Paketlerin tüm protokol ağacı detaylarını (Verbose) yazdırır. Bu sayede HTTP başlıkları (headers), çerezler (cookies) ve veri gövdeleri (body) düz metin olarak dosyaya kaydedilir.

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu