Blog

Arşivden: Web Tabanlı Siber Saldırılara Karşı Tuzak Sistemi (2017)

Kasım 2017'de Uluslararası Siber Güvenlik Federasyonu dergisinin 2. sayısında yayımlanan honeypot yazım. Lisans bitirme tezimden doğan bir tuzak sistemi ve dokuz yıl sonra ona dönüp bakmak.

Arşivden: Web Tabanlı Siber Saldırılara Karşı Tuzak Sistemi (2017)
Uluslararası Siber Güvenlik Federasyonu Dergisi, Sayı 2 — Kasım 2017

Geçen gün eski kutuları karıştırırken bir dergi çıktı: Uluslararası Siber Güvenlik Federasyonu Dergisi, Sayı 2, Kasım 2017. 92. sayfada benim yazım duruyor — "Web Tabanlı Siber Saldırılara Karşı Tuzak Sistemi".

Fırat Üniversitesi Bilgisayar Mühendisliği'ndeki lisans bitirme tezimden doğmuştu. Yeni mezundum, tezde kurduğum sistemi bir dergi yazısına dönüştürmüştüm. Bugün honeypot ve deception technology kurumsal güvenlik sözlüğünün standart parçası — ama 2017'de, hele Türkiye'de, bunu çalışan bir model olarak kuran pek fazla kişi yoktu.

💡

Künye: Muhammed Emin Özdemir, "Web Tabanlı Siber Saldırılara Karşı Tuzak Sistemi", Uluslararası Siber Güvenlik Federasyonu Dergisi, Sayı 2, Kasım 2017, s. 92. ISSN: 2564-7563.

Fikir: Saldırganı Yanlış Kapıya Yönlendirmek

Bal küpü (honeypot) mantığı basit: sunucuların bir bölümünü kasten tuzağa dönüştürüp saldırganı asıl kıymetli verilerden uzak tutmak.

Ben de sanal makineler üzerinde örnek bir bankacılık sistemi yazdım ve ikiye böldüm. Tuzak bölge kasıtlı zafiyetlerle doluydu ve yalnızca web sitesi metinleri gibi değersiz verilerle çalışıyordu. Güvenli bölgedeyse hesap bilgileri, kredi kartları, çekler senetler vardı — ve orada tek bir açık yoktu.

Saldırgan tuzak bölgede oyalanırken gerçek veri hiç tehlikeye girmiyordu.

BileşenSeçim
SanallaştırmaVMWare Workstation
Hedef sistemUbuntu + Apache
UygulamaPHP + MySQL
SaldırganKali Linux
Log analiziScalp (modifiye + Türkçeleştirilmiş)

Yem: Kasıtlı Bırakılmış Açıklar

Projenin can alıcı noktası, saldırganın bulmasını istediğim açıklardı. Yeterince görünür olmalıydılar ki tuzak işlesin. Dergide Şekil 1.1 olarak yayımlanan parça:

$title = $_GET["title"];
$sql = "SELECT * FROM news WHERE title LIKE '%" . $title . "%'";
$recordset = mysqli_query($link, $sql);

Girdi doğrudan sorguya yapıştırılıyor; sonuna bir tırnak eklemek enjeksiyona yetiyor. Yanına bir de kontrolsüz include koydum, böylece ?sayfa=../../../etc/passwd gibi bir istekle sunucudaki dosyalara ulaşmak mümkün hale geldi.

Saldırı tarafında sqlmap kullanmak da elle URL denemek de mümkündü. Yazıda düştüğüm not hâlâ hoşuma gidiyor: "ikisi arasında sadece zaman farkı vardır."

Tuzağın Alarmı

Tuzak kurmak yeterli değil — saldırıyı fark etmek gerekiyor. Bunun için Scalp Log Analyzer'ı alıp ihtiyacım doğrultusunda modifiye ettim ve Türkçeleştirdim. Apache loglarını bir kural dosyasına göre tarayıp saldırı paketlerini normal trafikten ayırıyordu.

Önce hiç saldırı olmadan çalıştırdım: 0 saldırı. Sonra kendi bıraktığım açıkları istismar edip tekrarladım: 7 satır işlendi, 2 saldırı yakalandı, çıktı üretildi, bildirim gönderildi.

Scalp log analiz çıktıları
Şekil 3.1 ve 3.2 — Saldırı öncesi ve sonrası analiz sonuçları

Son adımda analizi CronJob ile otomatikleştirdim: sistem kendi kendini tarıyor, saldırı bulunca sunucu yöneticisine detaylı bir e-posta atıyordu. IP adresi, bağlantı paketleri, tarayıcı bilgisi — hepsi elimizdeydi.

Dokuz Yıl Sonra

Fikir yerinde duruyor; değişen şey, aynı işi yapmak için bugün elimizin altında olanlar.

Parola saklama md5()'ten password_hash() ve Argon2id'ye taşındı. Elle yazdığım log tarayıcısının yerini Fail2ban, CrowdSec, Wazuh gibi gerçek zamanlı tespit ve otomatik yanıt araçları aldı. Bal küpünü sıfırdan yazmak da gerekmiyor artık — T-Pot, Cowrie, OpenCanary hazır bekliyor. Günlerimi alan o dört sanal makine kurulumu ise bugün tek bir docker-compose.yml dosyası.

Ama en çok şuna gülümsüyorum: analizi CronJob'a bağlayıp yöneticiye otomatik e-posta attırmam, aslında bugün "sürekli izleme ve otomatik alarm" diye anlattığımız şeyin el yapımı halinden başka bir şey değilmiş.

Değişmeyen Kısım

Teknoloji tarafında neredeyse her şey değişti. Ama yazının temel tezi hâlâ ayakta:

Saldırıyı tamamen engelleyemezsiniz; ama nereye bakacağını kontrol edebilir ve olan biteni görebilirsiniz.

Kıymetli veriyi ayrı bir bölgeye almak, saldırganın ilgisini düşük değerli bir yüzeye çekmek, her erişimi kaydetmek ve bu kayıtları otomatik analiz etmek. Bugün bunlara defense in depth, deception technology, detection engineering diyoruz. İsimler değişti, fikir aynı fikir.

Yeni mezun bir bilgisayar mühendisliği öğrencisinin bunu kendi başına kurup dergiye yazması ise, dönüp baktığımda hâlâ gurur duyduğum bir şey.

Orijinal Dergi Sayfaları

Yazının dergideki ilk sayfası
Yazının açılış sayfası
Kod örneklerinin yer aldığı sayfa
Kasıtlı zafiyetlerin anlatıldığı sayfa

Teşekkür (orijinal yazıdan): Projenin başından itibaren her aşamasında yardımcı olan, yol gösteren ve takip eden Fırat Üniversitesi Bilgisayar Mühendisliği sayın akademisyenleri hocalarım Yrd. Doç. Dr. Ahmet ÇINAR'a ve Doç. Dr. Bedri ÖZER'e manevi desteklerinden dolayı teşekkürü bir borç bilirim.


Sizin de böyle bir "arşivden çıkan" projeniz var mı? Yıllar sonra dönüp baktığınızda hâlâ arkasında durduğunuz bir işiniz varsa yorumlarda anlatın, okumak isterim.

İyi kodlamalar!

0

Yorumlar

İlk yorumu siz yapın

Düşüncelerinizi Paylaşın

Henüz yorum yapılmamış. İlk yorumu yukarıdaki formdan siz yapın!
ME

Muhammed Emin Özdemir

Kurumsal sistemlerde uzmanlaşmış Senior Software Developer. Temiz kod, ölçeklenebilir mimariler ve modern UI/UX üzerine odaklanıyor.

Hakkımda daha fazlası →