Exploit
Exploit (İngilizce: to exploit - kötüye kullanmak) bir bilgisayar programıdır veya bir script, bilgisayar programlarında bulunan zayıflık veya hatalar için kullanılır.
Bilgi güvenliği |
---|
Güvenlik kategorileri |
|
Tehditler |
|
Korunma |
|
Genel anlatım
Bir Exploit genellikle açığa gösteriş olarak yazılır ve İnternet'te yayınlanmaz.
Bu yapılan uzman dilinde "Proof of Concept" olarak adlandırılır. Bunun sayesinde;
Yazılım üreticisi hızlı bir şekilde açığı bilmeli ve gerekeni yapmalı.
Exploit'in niteliği teorik olarak exploit olarak adlandırılıyor.
Genellikle exploit'ler devreye giriyor, bir bilgisayar program kodu veri birbirinden ayırmazsa. Böylece mesela bir Buffer Overflow saldırganın kodu yanlış hafızaya yazılır ve programın uygulamasında manipule edilir.
Bir başka yöntem ise Format String saldırılarıdır. Filtre edilmemiş kullanıcı komutu format fonksiyonu printf() olarak verilir.
Çeşitli exploit'ler mevcuttur:
- Local Exploits
- Remote Exploits
- Dos-Exploits
- Command-Execution-Exploits
- SQL-Injection-Exploits
- Zero-Day-Exploits
Local-Exploits
Lokal exploit'ler mesela bir *.exe *.gif gibi dosya çalıştırıldığında devreye girer ve yerel bilgisayarda yüklü olan vulnerable (savunmasız/yaralı) yazılım sayesınde exploit'te entegre edilmiş Shellcode'u çalıştır ve kötü kod enjekte eder. Bunun sayesinde saldırgan yüksek haklara sahip olur.
Remote-Exploits
Bir Remote Exploit İnternet (ağ) üzerinden çalışmakta ve mevcut olan güvenlik açığını kullanarak, bir vulnerable sisteme erişim sağlamaktadır.
Dos-Exploits
İlk tanınmış olan açığı yazılan exploit'ler Dos-Exploitlerdir (Denial - of Service) Bir sistemi yavaşlandıran veya durduran.
Command-Execution-Exploits
Saldırgan tarafından kontrol edilen bir program kodu hedef sisteme uygulama.
Böyle bir exploit'i doğru şekilde çalıştırabilmesi için programcı veya saldırgan, hafıza olmak üzere hedef uygulamayı iyi bilmesi gerek.
Bu bilgileri açık bir program kodu kaynağından veya test ederek edinir. Kendi kodunu becerikli yere yerleştirmeli çalıştırabilmesi için.
Command-Execution-Exploits çok tehlikeli, çünkü hedef olan sistemde saldırgan tüm haklara sahip oluyor.
Daha doğrusu tüm haklar ile sistemi yönetiyor.
SQL-Injection-Exploits
SQL Nedir?
SQL (Structured Query Language) veritabanlarında veri çekme, silme ve değiştirme gibi işlemler için kullanılan basit yapılı bir dildir. Bugün hemen hemen tüm web uygulamalarının altyapısında veritabanı desteği vardır ve bu web uygulamaları veri tabanı ile SQL aracılığıyla anlaşırlar.
Bir siteye mesaj bıraktığınızda bu mesaj veri tabanına kaydedilir. O mesaj onaylandığında veri tabanındaki bir alan güncellenmiş olur. Yönetici veri tabanındaki kaydı silerek o mesajın siteden silinmesini sağlar.
Örnek bir kayıt silme SQL çümlesi şu şekilde olabilir;
DELETE FROM members WHERE id=17
Yukarıdaki kod veri tabanı tarafından çalıştırıldığında Members tablosunda ID alanı 17 olan kayıt silinecektir.
SQL Injection nedir?
Web uygulamalarında birçok işlem için kullanıcıdan alınan veri ile dinamik SQL cümlecikleri oluşturulur. Mesela “SELECT * FROM Products
” örnek SQL cümleciği basit şekilde veri tabanından web uygulamasına tüm ürünleri döndürecektir. Bu SQL cümlecikleri oluşturulurken araya sıkıştırılan herhangi bir meta-karakter SQL Injection'a neden olabilir.
SQL injection' ile birçok şeye erişebilir dikkat edilmesi gereken önemli açıklardan biridir.
Zero-Day-Exploits saldırısı
Bir Exploit, açığa aynı günde yazılan ve sanalda hızlı bir şekilde yayınlanan güvenlik açığı ( 0-Gün Exploit)
Bu tip Exploitlerin tehlikeli olmasının sebebi ise hiçbir üretici veya geliştirici bu güvenlik açığını kısa bir süre içerisinde yeni bir yama ile doğru veya anlamlı bir şekilde kapatamaması. Böyle bir saldırı Zero-Day-Saldırı olarak adlandırılıyor. Zero-Day-Saldırıları etkili, çünkü hızlı ve otomasyonu gerçekleştirilmeden yeni bir güvenlik açığı kullanılabiliyor. (Öncesinde bir Firewall veya antivirüs yazılımı ile karşılaşmadan.)
Karşı Önlem
Çeşitli teknik korunmalar var, mesela hafıza korunması.
Bunlar sadece belirli kullanım tekniklerini önler, fakat bir güvenlik açığından korunma imkânsız. Kısmen olarak Intrusion Detection System sayesinde bir saldırı tespit edilebilir veya intrusion prevention system sayesinde belki bir saldırı önlenebilir. Genel sorun ise yanlış programlama.
Tek çare ise işlem hatasından kaynaklanan güvenlik açıklarını geliştirmede önleme.