Verileri Gizlemek İçin Steganografiyi Kullanma
Hedef Kitle: Siber güvenlik öğrencileri, adli bilişim uzmanları, sistem yöneticileri, bilgi güvenliği uzmanları ve etik hackerlar
Seviye: Başlangıç → İleri
Giriş
Günümüzde verileri korumak denildiğinde çoğu kişinin aklına ilk olarak şifreleme (Encryption) gelir. Ancak şifreleme tek başına her zaman yeterli değildir.
Şifrelenmiş bir dosya;
herkes tarafından görülebilir,
dikkat çeker,
hedef olabilir.
Buna karşılık Steganografi, veriyi görünmez hale getirir.
Yani;
Şifreleme = Veriyi okunamaz yapar.
Steganografi = Veriyi görünmez yapar.
İdeal güvenlikte ise ikisi birlikte kullanılır.
Mesaj
│
Şifreleme (AES)
│
Şifreli Veri
│
Steganografi
│
Resim içerisinde gizli veri
Steganografi Nedir?
Steganografi (Steganography);
Bir bilginin;
resim
ses
video
PDF
Word
ağ trafiği
boşluk karakterleri
metadata
gibi masum görünen verilerin içerisine gizlenmesidir.
Kelime kökeni Yunancadır.
Steganos = Gizli
Graphia = Yazı
Yani:
Gizli Yazı
Şifreleme ile Steganografi Arasındaki Fark
| Özellik | Şifreleme | Steganografi |
|---|---|---|
| Veri görünür mü? | Evet | Hayır |
| Veri okunabilir mi? | Hayır | Hayır |
| Dikkat çeker mi? | Evet | Genellikle Hayır |
| Amaç | Gizlilik | Gizliliği saklamak |
| Kullanım | AES, RSA | LSB, Metadata vb. |
Gerçek Hayattan Örnek
Ali,
"Yarın saat 20:00'de buluş."
mesajını gönderecek.
Şifreleme
Yarın saat 20:00
↓
83F9A6F2A22B889...
Karşı taraf şifreli veri olduğunu anlar.
Steganografi
Ali aynı mesajı
tatil.jpg
isimli resmin içine gizler.
Karşı taraf sadece bir tatil fotoğrafı görür.
Hiç kimse içerisinde mesaj olduğunu anlamaz.
Steganografinin Çalışma Mantığı
Temel prensip şöyledir.
Kap (Cover Object)
↓
Veri
↓
Stego Object
Örneğin;
cover.png
+
gizli.txt
↓
stego.png
Dışarıdan bakıldığında iki resim tamamen aynıdır.
Cover Object Nedir?
Verinin içerisine gizlendiği dosyadır.
Örnekler
JPG
PNG
BMP
WAV
MP3
AVI
MP4
PDF
Payload Nedir?
Gizlenen gerçek veridir.
Örneğin
şifre.txt
parola.pdf
AES anahtarı
ZIP dosyası
Word dosyası
Stego Object
Veri gizlendikten sonraki dosyadır.
cover.jpg
↓
secret.txt eklenir
↓
stego.jpg
Steganografinin Kullanım Alanları
1. Dijital Filigran (Watermark)
Fotoğrafların içerisine görünmez imza eklenebilir.
Örneğin
Fotoğraf
↓
Şirket Logosu
↓
Görünmez Filigran
2. Telif Hakları
Film şirketleri
fotoğraflarına görünmez bilgi ekler.
3. Askeri Haberleşme
Hassas mesajlar
normal görünen dosyaların içerisine gizlenebilir.
4. İstihbarat
Ajanlar
normal fotoğraflar paylaşırken
gizli veri taşıyabilir.
5. Zararlı Yazılımlar
Ne yazık ki
APT grupları da steganografiyi kullanır.
Örneğin
normal.png
↓
PowerShell Script
↓
Çalıştırılır
Steganografi Türleri
1. Image Steganography
En yaygın yöntemdir.
PNG
BMP
JPG
2. Audio Steganography
WAV
MP3
3. Video Steganography
MP4
AVI
MKV
4. Text Steganography
Boşluk karakterleri
TAB
Unicode karakterleri
kullanılabilir.
5. Network Steganography
TCP
UDP
DNS
HTTP
paketleri içerisinde veri gizlenebilir.
Image Steganography
En popüler yöntemdir.
Bir resimde milyonlarca piksel vardır.
Örneğin
1920x1080
2.073.600 piksel
Her piksel
R
G
B
değerlerinden oluşur.
R = 255
G = 128
B = 64
RGB Yapısı
R
G
B
Her biri
8 bit
dir.
11111111
00000000
Toplam
24 bit
LSB (Least Significant Bit)
En önemli tekniklerden biridir.
En düşük anlamlı bit değiştirilir.
Örnek
10010110
↓
10010111
İnsan gözü bu farkı göremez.
Örnek
Normal piksel
11100100
Gizli bit
1
Sonuç
11100101
Yalnızca son bit değişmiştir.
LSB Algoritmasının Avantajları
Basit
Hızlı
Görsel kalite bozulmaz
Eğitim amaçlı idealdir
Dezavantajları
Sıkıştırma sonrası bozulabilir.
Görüntü işleme işlemleri gizli veriyi yok edebilir.
İstatistiksel analizlerle tespit edilebilir.
PNG ve BMP Neden Daha Uygundur?
Çünkü;
Lossless sıkıştırma kullanırlar.
PNG
BMP
LSB verisini korurlar.
JPG Neden Risklidir?
JPEG;
Lossy Compression kullanır.
LSB
↓
JPEG
↓
Veri kaybolabilir.
Linux'ta Steghide Kullanımı
Steghide, dosyaları resim veya ses dosyalarının içine gizlemek için kullanılan açık kaynaklı bir araçtır.
Kurulum (Debian/Pardus/Ubuntu)
sudo apt update
sudo apt install steghide
Kali Linux
sudo apt install steghide
Sürümü Kontrol Etme
steghide --version
Dosya Gizleme
Elinizde:
cover.jpg
secret.txt
olsun.
Komut:
steghide embed \
-cf cover.jpg \
-ef secret.txt
Program parola ister.
Enter passphrase:
Sonuç
stego.jpg
oluşacaktır.
Gizli Dosyayı Çıkarma
steghide extract \
-sf stego.jpg
Parola girildiğinde
secret.txt
çıkarılır.
Bilgi Görüntüleme
steghide info cover.jpg
Binwalk ile İnceleme
Steganografi şüphesi olan dosyalar incelenebilir.
Kurulum:
sudo apt install binwalk
Kullanım:
binwalk image.png
Strings Analizi
strings image.jpg
Exif Bilgileri
exiftool image.jpg
Zsteg
PNG dosyaları için oldukça güçlüdür.
Kurulum
sudo gem install zsteg
Kullanım
zsteg image.png
OutGuess
JPEG dosyalarında kullanılabilir.
Kurulum
sudo apt install outguess
Veri gizleme:
outguess \
-k parola \
-d secret.txt \
cover.jpg \
stego.jpg
Veri çıkarma:
outguess \
-k parola \
-r stego.jpg \
secret.txt
OpenStego
Java tabanlıdır.
Avantajları:
GUI
Windows
Linux
macOS
Filigran desteği
Python ile Basit LSB Örneği
from PIL import Image
img = Image.open("cover.png")
pixels = img.load()
r, g, b = pixels[0, 0]
# Son biti 1 yap
r = (r & 0xFE) | 1
pixels[0, 0] = (r, g, b)
img.save("stego.png")
Bu örnek yalnızca tek bir biti değiştirir. Gerçek uygulamalarda veri, tüm piksellere belirli bir algoritma ile dağıtılır ve genellikle önce şifrelenir.
Adli Bilişimde Steganaliz
Steganaliz, gizlenmiş veriyi tespit etmeye yönelik analiz sürecidir.
Kullanılan yöntemlerden bazıları:
Histogram analizi
İstatistiksel sapma analizi
LSB analizi
Metadata incelemesi
Dosya boyutu karşılaştırması
Makine öğrenmesi tabanlı tespit yöntemleri
En İyi Güvenlik Yaklaşımı
Steganografi tek başına güçlü bir güvenlik mekanizması değildir. En iyi uygulama şu sıralamayı izlemektir:
Veri
│
AES-256 ile Şifreleme
│
Şifreli Veri
│
Steganografi (PNG/BMP)
│
Stego Dosyası
Bu yöntemle saldırgan dosya içinde gizli veri olduğunu fark etse bile, güçlü bir şifreleme katmanı nedeniyle içeriğe erişemez.
Laboratuvar Çalışmaları
Laboratuvar 1
steghideile bir metin dosyasını JPEG dosyasına gizleyin.Aynı dosyayı parola ile çıkarın.
Laboratuvar 2
PNG dosyasında Python kullanarak LSB tekniğiyle birkaç karakter gizleyin.
Sonuç dosyasını orijinal görüntü ile karşılaştırın.
Laboratuvar 3
exiftool,stringsvebinwalkkullanarak örnek bir görüntüyü analiz edin.Araçların bulduğu farklı bilgileri raporlayın.
Laboratuvar 4
Aynı mesajı önce AES ile şifreleyin, ardından oluşan dosyayı
steghideile bir görüntü içine gizleyin.Dosyayı çıkarıp şifresini çözerek bütünlüğünü doğrulayın.
Gerçek Hayatta Kullanım Senaryoları
| Senaryo | Kullanım |
|---|---|
| Dijital filigran | Telif hakkı koruma |
| Adli bilişim | Gizli veri tespiti |
| Kurumsal güvenlik | Hassas bilgilerin gizlenmesi |
| Siber güvenlik eğitimi | LSB ve steganaliz laboratuvarları |
| Tehdit analizi | Zararlı yazılımların steganografi kullanımını inceleme |
| İstihbarat çalışmaları | Gizli iletişim yöntemlerinin analizi |
Steganografi Araçlarının Karşılaştırması
| Araç | Platform | Destek | Arayüz |
|---|---|---|---|
| Steghide | Linux, Windows | JPG, BMP, WAV | CLI |
| OpenStego | Windows, Linux, macOS | PNG ve diğer formatlar | GUI/CLI |
| OutGuess | Linux | JPEG | CLI |
| Zsteg | Linux, macOS | PNG | CLI |
| Binwalk | Linux, Windows | Çoklu dosya formatı analizi | CLI |
| ExifTool | Tüm platformlar | Metadata analizi | CLI |
Sonuç
Steganografi, veriyi yalnızca şifrelemek yerine görünmez hale getirmeyi amaçlayan güçlü bir bilgi gizleme tekniğidir. Günümüzde dijital filigran uygulamalarından adli bilişime, kurumsal veri korumadan siber tehdit analizine kadar pek çok alanda kullanılmaktadır.
Ancak steganografi tek başına mutlak güvenlik sağlamaz. En iyi yaklaşım, güçlü şifreleme algoritmaları (örneğin AES-256) ile şifrelenmiş verilerin, kayıpsız sıkıştırma kullanan dosya formatları (PNG veya BMP gibi) içerisinde güvenilir steganografi yöntemleriyle gizlenmesidir. Böylece hem veri gizliliği hem de gizli iletişimin fark edilme olasılığı önemli ölçüde azaltılır.
Bu nedenle modern bilgi güvenliği yaklaşımında şifreleme + steganografi + bütünlük doğrulama (hash) birlikte kullanıldığında çok katmanlı ve daha dirençli bir koruma modeli elde edilir.
Bu makaleyi, siber güvenlik eğitimlerinizde, laboratuvar uygulamalarınızda veya teknik blogunuzda öğrencilerinize ve okurlarınıza sunabileceğiniz yapılandırılmış bir formatta hazırladım.
Verileri Gizlemek İçin Steganografiyi Kullanma: Kapsamlı Eğitim Rehberi
Siber güvenlik dünyasında veriyi korumanın iki temel yolu vardır: Verinin içeriğini anlaşılmaz hale getirmek (Kriptografi) ve verinin varlığını tamamen gizlemek (Steganografi). Kriptografi, şifrelenmiş bir mesajın orada olduğunu açıkça belli ederken; steganografi, şifreli mesajın varlığını sıradan bir dosyanın (resim, ses veya video) içine saklayarak şüphe çekmekten kaçınır.
Özellikle Capture The Flag (CTF) yarışmalarında ve zararlı yazılım analizlerinde sıkça karşılaşılan steganografi teknikleri, bilgi güvenliği uzmanlarının mutlaka hakim olması gereken konulardan biridir.
Steganografi Nasıl Çalışır?
Steganografinin en yaygın ve temel yöntemi LSB (Least Significant Bit - En Az Anlamlı Bit) tekniğidir.
Dijital bir görüntü, piksellerden oluşur ve her piksel RGB (Kırmızı, Yeşil, Mavi) renk değerlerini temsil eden baytlar içerir. Bir bayt 8 bitten oluşur. LSB tekniğinde, bu 8 bitlik dizilimin en sonundaki (en az anlamlı) bit değiştirilir.
İnsan gözü, bir rengin tonundaki 1 bitlik değişimi (örneğin; 11001000 ile 11001001 arasındaki farkı) algılayamaz. Bu sayede, piksellerin en az anlamlı bitleri sırasıyla değiştirilerek, resmin içine gizli bir metin veya başka bir dosya gömülebilir. Dosyanın boyutu veya dış görünüşü şüphe uyandırmaz.
Kriptografi ve Steganografi Karşılaştırması
Bu iki kavram genellikle birbirini tamamlamak için birlikte kullanılır.
Özellik | Kriptografi (Şifreleme) | Steganografi (Gizleme) |
Temel Amaç | Verinin okunmasını/anlaşılmasını engellemek. | Verinin var olduğunu gizlemek. |
Çıktı Görünümü | Anlamsız karakter dizileri veya rastgele veri blokları. | Sıradan bir resim, ses veya video dosyası. |
Saldırganın Yaklaşımı | Şifreyi kırmaya (Decryption/Brute-force) çalışır. | Dosyanın içinde gizli veri olup olmadığını tespit etmeye (Steganaliz) çalışır. |
Pratik Uygulama: Linux Terminalinde Steghide Kullanımı
Pardus veya diğer Debian tabanlı Linux dağıtımlarında steganografi laboratuvar uygulamaları yapmak için en popüler komut satırı araçlarından biri steghide'dır. Bu araç, JPEG, BMP, WAV ve AU dosyaları içine veri gömebilir.
1. Kurulum
Terminali açın ve paket yöneticisini kullanarak aracı sisteminize kurun:
Bash
sudo apt update
sudo apt install steghide
2. Veri Gömmek (Embedding)
Öğrencilerinize veya CTF katılımcılarına vereceğiniz bir hedef dosya hazırlayalım. Elimizde manzara.jpg adında bir resim ve içine saklamak istediğimiz gizli_hedef.txt (örneğin bir flag veya parola) dosyası olsun.
Bash
steghide embed -ef gizli_hedef.txt -cf manzara.jpg
Komut çalıştırıldığında, steghide sizden bu veriyi korumak için bir parola (passphrase) belirlemenizi isteyecektir. Bu parola, veriyi çıkaracak kişinin bilmesi gereken anahtardır.
3. Gizli Veriyi Tespit Etmek (Info)
Bir dosyanın içinde steghide ile gizlenmiş bir veri olup olmadığını kontrol etmek için info parametresi kullanılır:
Bash
steghide info manzara.jpg
Bu komut dosyanın formatını analiz eder. Eğer doğru parolayı girerseniz, içinde hangi isimde ve boyutta bir dosya saklandığını size söyler.
4. Gizli Veriyi Çıkarmak (Extracting)
Gizlenmiş mesajı resmin içinden çıkartıp okumak için:
Bash
steghide extract -sf manzara.jpg
Doğru parola girildiğinde, gizli_hedef.txt dosyası bulunduğunuz dizine çıkartılacaktır.
İleri Seviye Konular ve Steganaliz
Bir sistem yöneticisi veya mavi takım (Blue Team) analisti olarak, ağınızda veya sistemlerinizde steganografi kullanıldığını tespit etmek (Steganaliz) zordur ancak imkansız değildir.
Dosya Boyutu ve İmzaları (Magic Bytes): Hex editörleri kullanılarak dosyanın başlık (header) bilgileri ile uzantısının uyuşup uyuşmadığı kontrol edilebilir. Gömülen veri dosyanın sonuna eklenmişse, hex analizi ile kolayca tespit edilir.
Binwalk Kullanımı: binwalk, bir dosyanın içine gömülmüş başka dosyalar (örneğin bir JPEG içine gömülmüş ZIP arşivi) olup olmadığını analiz etmek için mükemmel bir araçtır.
ExifTool Analizi: Bazen veriler resmin piksellerine değil, EXIF (meta veri) etiketlerine (örneğin telif hakkı veya kamera modeli kısımlarına) gizlenir.
Özetle: Steganografi tek başına bir güvenlik katmanı sağlamaz. En iyi güvenlik pratiği, veriyi önce güçlü bir şifreleme algoritması (örneğin AES) ile şifrelemek, ardından elde edilen şifreli veriyi steganografi araçları ile bir medya dosyasının içine gizlemektir.
CTF laboratuvarlarında öğrencilere steganaliz mantığını kavratmak için sadece steghide gibi araçların kullanımını göstermek yeterli değildir. Öğrencilerin dosya yapılarını (file signatures) ve "Magic Bytes" (Sihirli Baytlar) kavramını anlamaları, Blue Team (Mavi Takım) senaryolarında anormallikleri tespit edebilmeleri için kritik bir temeldir.
Bu rehberde, Debian/Pardus tabanlı laboratuvar ortamlarında terminal üzerinden hex analizi ve binwalk kullanımını adım adım inceleyeceğiz.
1. Hex Analizi ve Sihirli Baytlar (Magic Bytes)
Her dosya formatının, işletim sistemine "Ben bir JPEG'im" veya "Ben bir ZIP arşivi'yim" demesini sağlayan standart bir başlangıç hex değeri vardır. Buna Magic Bytes (Sihirli Baytlar) denir. Dosya uzantısı (örneğin .jpg) ne olursa olsun, gerçek dosya türünü bu baytlar belirler.
Siber saldırganlar veya CTF tasarımcıları, kötü amaçlı yazılımları veya gizli flag dosyalarını genellikle zararsız görünen resim veya ses dosyalarının içine doğrudan yapıştırırlar (concatenation). Bu durumda dosyanın sonuna farklı bir formatın sihirli baytları eklenmiş olur.
Dosya Formatı | Başlangıç Hex Değeri (Magic Bytes) |
JPEG | FF D8 FF E0 |
PNG | 89 50 4E 47 |
ZIP Arşivi | 50 4B 03 04 (PK) |
PDF Document | 25 50 44 46 (%PDF) |
Aşağıdaki araç ile farklı bayt değerlerinin dosya yapılarını nasıl temsil ettiğini laboratuvar ortamında simüle edebilirsiniz:
2. Binwalk: Dosya İçinde Dosya Arama
binwalk, bir dosyanın veya firmware imajının (donanım yazılımı) içindeki gömülü dosyaları ve yürütülebilir kodları bulmak için kullanılan oldukça popüler bir steganaliz ve tersine mühendislik (reverse engineering) aracıdır. Dosyanın tamamını tarar ve bilinen sihirli bayt imzalarını arar.
Kurulum (Pardus / Debian):
Bash
sudo apt update
sudo apt install binwalk
3. Pratik CTF Senaryosu: Gömülü ZIP Dosyasını Çıkarma
Öğrencileriniz için terminal üzerinde uygulayabileceğiniz uçtan uca bir laboratuvar senaryosu kuralım.
Adım 1: Hedef Dosyayı Hazırlama
Öncelikle sıradan bir JPEG resminin sonuna gizli bir ZIP dosyası ekleyerek kendi "şüpheli" dosyamızı oluşturalım.
Bash
# 1. Gizlenecek veriyi oluşturun ve ziplayinecho "CTF{H3x_4n4l1z1_B4s4r1l1}" > flag.txt zip gizli.zip flag.txt # 2. Linux cat komutuyla resmi ve zip dosyasını birleştirin cat normal_manzara.jpg gizli.zip > supheli_manzara.jpg
Artık supheli_manzara.jpg dosyası çift tıklandığında normal bir resim gibi açılacaktır, ancak son kısımlarında bir ZIP arşivi barındırmaktadır.
Adım 2: Hex Analizi ile Tespit (xxd)
Linux sistemlerinde dahili olarak bulunan xxd aracı ile dosyanın hex dökümünü alıp anormalliği tespit edebiliriz. Eklenen ZIP dosyası resmin sonuna eklendiği için, dosyanın son satırlarına bakmak yeterlidir.
Bash
xxd supheli_manzara.jpg | tail -n 15
Analiz: Çıktının sağ tarafındaki ASCII yorumlamasında PK (Zip dosyalarının sihirli baytı olan 50 4B'nin metin karşılığı) ve flag.txt metnini görüyorsanız, resmin içine bir arşiv gizlendiğini kanıtlamış olursunuz.
Adım 3: Binwalk ile Veriyi Çıkarma
Tespit ettiğimiz gömülü dosyayı çıkartmak için binwalk kullanırız.
Bash
# Dosyayı analiz edip içeriğin listesini görmek için: binwalk supheli_manzara.jpg # İçindeki dosyaları (örneğin ZIP) otomatik olarak klasöre çıkartmak için -e parametresi kullanılır: binwalk -e supheli_manzara.jpg
Komut çalıştıktan sonra _supheli_manzara.jpg.extracted adında bir dizin oluşacak ve gizli flag.txt dosyası bu dizinin içinde, erişilebilir durumda olacaktır.
Yorumlar