9 Mayıs 2020 Cumartesi

Veritabanı Saldırıları ve Veri TabanI Güvenliği

veri tabanı güvenliği

Veri  Tabanı Sistemleri



En kritik verilerimiz veri tabanı sistemlerinde bulunuyor. Müşteri sistemleri, insan kaynakları sistemleri ,maaş bordro bilgileri , ürün geliştirme uygulamaları, yapısal ve sistematik olmayan veriler (World vs.). Bunların hepsini veri tabanında sisteminde tutarız. Örnek vermek gerekirse; bir araba motoru üreten firmanın tüm çizim bilgileri, mühendislik bilgileri veri tabanında tutulur. Rakip firmaların eline geçmesi bir olağan üstü durum nitelendire bilir. Bu yüzden güvenliği çok önemlidir şirket sırrı sayılabilecek bilgiler içere bilir. Bu bilgilerin çalınması ele geçirilmesi durumunda KVVK ( kişisel verileri koruma kurumu  tarafından) maddi cezalar uygulana bilir.


Veri tabanı Güvenliğine Genel Bakış



Siber güvenlik denilince aklımıza  ağ güvenliği , internet güvenliği geliyor. Trojen , mail , Keylogger sosyal mühendislik vs. .Dışardan gelebilecek saldırılara karşı standart çözümler ile nispeten korumalıyız. Lisanslı anti virüs programları gibi üçüncül düzey programlar gibi bir çok korunma programları piyasada mevcut. Eğer 1433 portunu kapatırsanız  dışarıdan herhangi birisi SQL sistemine giremez.

Düşman içerdeyse ne yapacağız?

Veri tabanı sunucusu gibi kritik sunuculara içerden yapılan saldırılara karşı zaaflarımız var. Güvenlik önlemi olarak kapalı yerine açık bir port, hızlı bir network kullana biliriz.



Veri  Tabanıı Saldırı Yöntemleri



  1. Brute Force Saldırıları ( Şifre Kırma )
  2. SQL Injection Saldırıları ( Zararlı olmayan bir SQL cümlesinin içine zararlı bi SQL cümlesi yerleştirme)
  3. Yerel ağdan yapılan saldırılar
  4. Web Üzerinden yapılan saldırılar



SQL Server Audit



  1. Saldırıyı tespit et
  2. Kayıt altına al
  3. Engelle




Change Data Capture



Silinen ve kaybolan verilerin loglanması.


Database Trigger



Değiştirilmeden ve silinmeden  önceki değerleri kayıt altına alma


Server Trigger



Server bazından gerçekleşen kullanıcı ekleme ve kullanıcı silme


DDL Trigger



Veri yapısına yapılan saldırıyı tespit etme


Veri tabanı Sistemine Saldırı Nasıl Yapılır?



Bir veri tabanı sistemine girebilmemiz için temel anlamda ihtiyacımız olan maddeler;
  1. Fiziksel bağlantı
  2. Açık Port
  3. Kullanıcı Adı
  4. Şifre




Brute Force Atakları İle Yönetici Şifresini Ele Geçirme



Düşman içerdeyse çok tehlikeli, dört aşamalı saldırıyı yerel ağdan gerçekleştiriyorsak zaten ilk iki aşamayı geçiyoruz.  Üçüncü aşamada veri tabanı sistemlerinin varsayılan kullanıcının otomatikman bilgisi var, ki genelde kapatılmaz ve açık bırakılır. Geriye sadece dördüncü aşama olan şifreyi tahmin etmek kalıyor. Şifre deneme yapma İşlemine Brute Force atak işlemi diyoruz  .Türkçe anlamı çeşitli anahtarlar ile kapıyı zorlama. Brute Force yazılım ve uygulamaları rahatlıkla  elde edilebilir yada  program dilinden az da olsa  anlayan kişiler tarafından kodlanarak yazılabilir. Bu sebepten dolayı şifremizi zor bir şifre seçmemiz gerekir. Ama şunu da bilmekte fayda var hiçbir şifre kırılmaz diye bir terim yok sadece zaman alır kimi şifre 2 saat kimi şifre 2 yıl. Önlem almakta fayda var…



SQL Incejtion Saldırıları İle Şifreye İhtiyaç Duymadan Sisteme Girme



SQL Injejtion temel olarak çok basit bir saldırı yöntemi olmasına rağmen yıllardır popülerliğini yitirmedi. Injektion kelime anlamı ile İngilizcede şıranga anlamına gelmektedir.Yani Enjekte aslında bir şeyin arasına bir şey enjekte etmek. Bundan kasıt zararlı olmayan bir SQL cümlesinin içine zararlı bir SQL cümlesi enjekte etmektir. Böylece bir sistemde SQL Injejtion açığı varsa saldırgan;
  • Sisteme kullanıcı ekleye bilir
  • Verileri ftp ile dışarı çıkarabilir
  • Verilere zarar verebilir
  • Sisteme zararlı yazılım atabilir
  • Sisteme format atabilir
  • ….




Diğer Yöntemler



Bunlardan farklı başka tehditlerde var elbette. Genelde AT çalışanları kullanıcıyı kısıtlarlar, yani bir kullanıcı kendi bilgisayarına program kurma yetkisine sahip değildir. Dolasıyla zararlı bir saldırı yazılımı kendi  bilgisayarına yüklenemeyeceğini düşünürsün. Oysaki bir veri tabanı sunucu saldırması için elinde bir Excel programı, yazılımı olması yeterlidir. Çalışan bir şekilde ver tabanına bağlanma imkanına kavuşmuşsa Excel üzerinde Microsoft  Query ile her türlü saldırı işlemini gerçekleştire bilir. Gene Excel üzerinde rapor çekmek bir çok şirkette kullanılan yaygın bir uygulamadır. Buralarda dikkatsizlik sonucu veri tabanı bağlantı bilgileri Excel içerisine kayıt edilebilir (şifre gibi). Rapor çektiğinde kullanıcıya sürekli şifre sormasın diye yapılan bir işlemdir aslında bu , ama çokta tehlikelidir.


ERP Gibi Herkesin Kullandığı Uygulamaların Zaaflarını Kullanarak Sisteme Sızma



Bu uygulamalar yetkilenmeyi kendi içeresinde yaparlar ,fakat veri tabanına giderken tam yetkili bir kullanıcı ile giderler. Eğer ERP sisteminde bir açık varsa bu bir güvenlik zafiyetidir. Ve sıradan bir çalışan bunu kullanarak  sisteme büyük zararlar verebilir .Virüs , Keylogger tarzı uygulamalar ile klavye dinleyerek şifre ve admin bilgilerini  tespit edilebilir. Özelikle  AT personelinin bilgisayarına bulaşan ve klavye dinleyen virüs , keylogger  benzeri yazılımlar ile bir veri tabanı sisteminin şifresi tesbit edilebilir ve veri tabanına girebilir.


Application Configuration  Dosyalarında Saklanan Connection Stringlerin Okunması


Geliştirilen yazılımlarının içinde bazen veri tabanı bağlantı bilgileri config yada ini dosyalarının içinde tutulur burada bu işlerden anlayan bir kişi bağlantı bilgilerini okuya bilir.

Tersine Mühendislik Yapılarak Uygulamaların İçeresine Gömülen Connection Stringlerin Okunması


Doğrudan yazılım içine gömülü şekilde de tutulabilir. Bu okunamayacağı anlamına gelmez çeşitli tersine mühendislik yöntemleri ile bu bilgiler okunabilir. En bilindik uygulama .Net Reflector’ dur bir yazılan uygulamayı çevirme imkanına sahiptir.

Brute Force Saldırısını Tespit  ve Engelleme Adımları


  1. Brute Force tespit et
  2. Sisteme sürekli şifre denemeleri oluyor mu kontrol et
  3. Denemeleri kayıt atına al
  4. Sistem yöneticisine haber ver
  5. Saldırganın içeri girmesini engelle
  6. Saldırganı oyala, yakalamak için zaman kazan


SQL İnjection İle Sunucuya Zararlı Yazılım Atma Adımları



  • Zararlı yazılım geliştirme ( keylogger uygulaması)
  • Yazılımın .exe sini binary olarak saklama
  • SQL Injejtion açığını kullanarak bu dosyayı sunucuya at
  • Sunucuda bu dosyayı kaydet
  • Sunucuya kullanıcı aç
  • Sunucuda keylogger uygulamasını çalıştır
  • Keylogger uygulamasından gelen klavye bilgilerini SQL tablosuna at
  • Excel ile bağlan klavye bilgilerini iste



SQL İnjejtion Önlem olarak;



Server  Trigger ile yeni eklenen bir kullanıcıdan haberdar olma. İlk olarak SQL Injejtion açığı bulan kişinin ilk işi bir zararlı yazılım eklemek veya  bilgileri görüntülemek için veri tabanımıza bir kullanıcı oluşturmak olacaktır. Bu amaçla sistem açık olabilir… sıklıkla penetrasyon testleri yapılmalı. Ve kendi önlemlerimizi alabiliyor olmamız lazım. Yeni bir kullanıcı eklendiği zaman anında haberdar olmamız lazım. Bunun içinde Server Trigger kullanabilir detaylı olarak bilgi alabilirsiniz. Ve kullanıcıyı engelleye bilirisiniz.Sistemimizde Bizden Habersiz Bir Veri Tabanı Siliniyor, Ekleniyor yada değiştiriliyorsa;
  • Mail ile Database admine haber vermek
  • Bu işlemi yapmasına kesinlikle izin vermemek
  • Bu işlemi sadece belli bilgisayardan yapmasına izin vermemek 







_SA Şifresinin Ele Geçtiğini Düşünüyorsak Eğer



SA şifresini değiştire biliriz fakat bu  mümkün olamaya bilir. Bir şekilde yazılama , sisteme bağlanan uygulamalar SA üzerinde bağlanıyor olabilir. Ve onları değiştirmek bizim için sıkıntılı bir geçiş olabilir. Kolay olmayabilir, zaman ister. Diğer nokta SA şifremizi ele geçirildiyse bu şifreyi bir daha ele geçirme ihtimali yüksektir . Değiştirsek de şifreyi bulma bazı yöntemlerle mümkündür. Saldırıyı yapanı tespit etmek engellemekten daha önemli bir hal alır. Bu nokta da ne yapabiliriz senaryomuz şu aslında; SA kullanıcısı ile bağlanan uygulamaları ve SA kullanıcısı ile bağlanana bilecek bilgisayarları kontrol ederek bu uygulamalar veya bu bilgisayarla dışında bir bağlantı söz konusu ise  o zaman database  admin e bir bilgilendirici mail göndermek. Ve daha sonra  bir Server Trigger ile bu işi çözmek.


Silinen/Değiştirilen Kayıtları Tespit Etme



Saldırı içindeki data ile alakalı olabilir. Örnek verecek olursak ben bir şekilde sistemde açık bulup kendi maaşımı güncelleyebilirim. Veya bir şekilde açıp bulup bir e ticaret sitesinde satılan bir ürünün birim fiyat listesini değiştire bilirim veya bir faturanın içerisine girip miktarı azaltıp çoğalta bilirim örnekleri çoğalta biliriz.  Bu durumda bizim silinen ve değiştirilen kayıtları da tespit edecek bir mekanizmaya ihtiyacımız var
Kim  tarafından değiştirldi ?
  • Ne zaman değiştirildi ?
  • Hangi bilgisayardan değiştirildi ?
  • Hangi kullanıcı ile değiştirildi ?
  • Hangi progam ile değiştirildi ?
  • Hangi SQL cümlesiyle değiştirildi ?
  • Hangi değerler değiştirildi / silindi



Bu sorulara Cevap Verebilmek İçin Kullana Bileceğimiz İki Tane  Yöntem Var



  • Database Trigger
  • Change Data Capture

TunahanKIZIL






Disqus Yorumları Yükle

0 yorum