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
- Brute Force Saldırıları ( Şifre Kırma )
- SQL Injection Saldırıları ( Zararlı olmayan bir SQL cümlesinin içine zararlı bi SQL cümlesi yerleştirme)
- Yerel ağdan yapılan saldırılar
- Web Üzerinden yapılan saldırılar
SQL Server Audit
- Saldırıyı tespit et
- Kayıt altına al
- 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;
- Fiziksel bağlantı
- Açık Port
- Kullanıcı Adı
- Ş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ı
- Brute Force tespit et
- Sisteme sürekli şifre denemeleri oluyor mu kontrol et
- Denemeleri kayıt atına al
- Sistem yöneticisine haber ver
- Saldırganın içeri girmesini engelle
- 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
0 yorum