Anasayfa / Adli Bilişim / Sızma Testi(Pentest) Nasıl Yapılır?

Sızma Testi(Pentest) Nasıl Yapılır?

Pentest veya Penetrasyon testi, Türkçe karşılığı ile “sızma testi”. Sizlerin de takdir edeceği gibi artık günümüzde işlerimizin büyük bir çoğunluğunu internet, dijital ortam üzerinden gerçekleştirmekte ve sağlamaktayız. Durum böyleyken, kullanmış olduğumuz web siteleri ve uygulamalarının güvenliği büyük önem arz etmektedir. Çünkü herhangi bir güvenlik zafiyetinde; kişisel bilgilerimiz, hesap bilgilerimiz, internet kullanımı bilgilerimiz(çerezler vb.) 3. Kişi veya kişiler tarafından ele geçirilebilir.

Web sitelerinin ve uygulamalarının güvenlik açıklarını tespit edip, kapatmaya yönelik yapılan çalışmalara pentest çalışmaları denir.

Bu içeriğimde neler öğreneceksiniz?

  • Pentest çalışmalarını kimlerin yapabileceğini,
  • Sızma testi araçlarının neler olduğu ve hangi amaçla kullanıldığını,
  • Bu çalışmanın nasıl yapılacağını ve hangi komutların kullanıldığını,
  • Güvenli olan bir web sitesinin penetrasyon test çalışmasının sonucunu,
  • Güvenli olmayan bir web sitesinin penetrasyon test çalışmasının sonucunu,
  • Sitenizi, uygulamanızı daha güvenli hale getirmek için öneriler,

Pentest Çalışmalarını Kimler Yapabilir?

Her şeyden önce bilmeniz gereken bir husus, gelişigüzel olarak herhangi bir siteye veya uygulamaya sızma testi çalışmaları gerçekleştiremezsiniz. Bunun büyük yasal sorumlulukları vardır.

Bu yazımda verilen hassas bilgilerin de kişilerin, markaların kendi internet siteleri, uygulamaları üzerinde çalışmalarını gerçekleştirmesi amacıyladır. Böylelikle, var ise güvenlik açıklarını kötü niyetli kişilerden önce tespit edip, kapatılması için çalışmalarınızı yapabilirsiniz.

Kurum, kuruluş ve markalara pentest çalışmalarını gerçekleştirmek ve pentest uzmanı(pentester) olmak için yapmanız gereken; ilgili sertifikalara sahip olmaktır. Dolayısıyla herhangi bir meslek farketmeksizin, her kesimden ilgilenen kişiler bu çalışmaları gerçekleştirebilir.

Pentest hakkında muhakkak bilinmesi gerekenlere ilgili yazımdan ulaşabilirsiniz.

Pentest Çalışmalarında Kullanılan Araçlar

Güvenlik açıklarını tespit etmek ve bu zafiyetleri sömürmek için bazı yazılımlara, araçlara ihtiyaç duyulur. Böylelikle işimizin zor kısmını büyük ölçüde hafifletmiş oluruz.

Öncelikle hedef site üzerinde bilgi sahibi olmamız gerekir. Bunun için kullanacağımız yazılım, nmap(network mapper).

Ardından keşfedilen güvenlik açıklarını Metasploit aracı ile sömürmek ve açıkların kapatılmasını sağlamaktır.

Penetrasyon çalışmaları boyunca gerçekleştirdiğimiz işlemlere zemin sağlayan Linux işletim sistemini kullanmaktayız. Linux hakkında bilgi sahibi olmak ve sanal makine üzerine nasıl kurulum yapacağınızı öğrenmek için buraya tıklayabilirsiniz.

NMAP

Nmap(network mapper), adından da anlaşılacağı üzere ağ haritalama aracıdır. Hedef sistem üzerinde birçok bilgiyi altın tepside sunmakla birlikte sızma testi çalışmalarının vazgeçilmez bir aracıdır. Aynı zamanda nmap aracını hedef sitede kullanmaya başladığınız an, siber bir saldırıya da başlamış olursunuz, tabii eğer ilgili sertifikalarınız ve izinleriniz var ise, problem yok. 🙂 Aksi takdirde yasal ve cezai sorumlulukları kabullenmiş olursunuz.

Nmap kullanılarak ilgili site/uygulama üzerinde edinilebilecek bilgilerden bazıları şu şekildedir;

  • Host Keşfi
  • Port Taraması
  • İşletim Sisteminin Tespit Edilmesi
  • Reverse DNS Çözümlemesi

Gerçekleştirilen tarama sonucunda, artık hedef site üzerinde daha net bilgilere sahip olacağız. Böylelikle hangi port üzerinde açığın bulunduğunu, güvenlik duvarından hangi paketlerin geri döndüğünü veya geçtiğini tespit ederiz. Ardından numaralanmış halde verilen bilgileri sömürmek(exploit etmek) için Metasploit aracını kullanmalıyız.

Metasploit Framework Console(msfconsole)

Metasploit aracı, ruby dilinde yazılmış bir güvenlik projesidir. Metasploit ile bir sisteme saldırmanın ve o sistem içerisindeki zafiyetleri sömürmenin yanı sıra ilgili site veya uygulamanın üzerinde arka kapılar(backdoor) oluşturularak, erişim ve düzenleme olanağı da sağlamaktadır. Sızma testi çalışmalarında kullanılan önemli ve vazgeçilmez araçlardan biridir.

Yaşanacak senaryoların gidişatına göre kendi yazmış(kodlamış) olduğunuz exploit’i, Metasploit üzerine ekleyerek de çalışmalarınızı gerçekleştirebilirsiniz.

Bu yazımın devamında 2 farklı türde senaryo gerçekleştirilecektir. 1. senaryoda herhangi bir güvenlik açığı bulunmayan bir web sitesi, 2. senaryoda ise güvenlik açıkları bulunan bir web sitesi üzerinden çalışmalar gerçekleştirilecektir. Böylece 2 türde yaptığınız çalışmalar sonucunda, analizleri nasıl gerçekleştireceğinizi öğrenebilirsiniz.

Şimdi uygulama aşamasına geçelim ve canlı olarak bir pentest çalışması gerçekleştirelim;

#1 Güvenlik açığı bulunmayan web sitesi

  • Terminalimizi açtıktan sonra ilk olarak nslookup komutu ile birlikte hedef sitenin adresini yazıyoruz. Böylelikle ilgili sitenin IP adresini öğrenmiş oluruz. Çalışmalarımızı IP adres(ler)i üzerinden gerçekleştirmekteyiz.

pentest çalışması nasıl yapılır,

Ör: nslookup siteisminiz.com

  • Hedef sitenin IP adresini keşfettikten sonra artık nmap aracı ile ağ taramasını gerçekleştirebilir, ağ haritasını çıkarabiliriz.

Burada kullanmamız gereken komut; nmap  -sV 127.0.0.1

Bu komut aracılığıyla hedef sitenin ağ haritasını ve versiyon sürümlerini listelemekteyiz.

127.0.0.1 IP adresi, hedef sitenin nslookup ile keşfedilen adresidir.

* Burada kullanılan IP adres(ler)i, güvenlik gerekçeleriyle localhost IP si olarak değiştirilmiştir.

nmap ile ağ taraması yapmak,

Nmap, Linux sisteminize kurulu değil ise kurulum işlemini gerçekleştirmek için terminalinize;

sudo apt-get install nmap

komutunu yazmanız yeterli olacaktır. Artık Nmap, sisteminize yüklenmiş ve kurulmuş oldu.

Nmap, keşif çalışmalarında, hedef sisteme paketler gönderir ve paketler geri geliyorsa sistemde keşfedilmiş arka kapılar bulunmuştur anlamına gelmektedir.

Şu anda çalışmalarını gerçekleştirdiğim, yukarıdaki görselde görülen bir web sitem üzerinde 3 adet port açığı bulunmaktadır. Bulunan bu portların karşısında, normal şartlarda versiyon sürümlerinin de bulunması gerekmektedir. Fakat bu keşfedilmiş olanlar, güvenlik açığı değildir.

Port 21 – FTP Dosya Yükleme

Port 80 – HTTPS Protokolü

Port 8888 – Alt HTTP protokollerini yönetmek/uygulamak

Çalışmalarını gerçekleştirdiğim bu web sitem üzerinde kapsamlı analize karşın herhangi bir güvenlik açığı tespiti bulunamamıştır. Yine de emin olmak adına tekrar daha detaylı bir analiz işlemi gerçekleştirelim.

  • Bunun için yeniden terminalimiz aracılığı ile

nmap –v –A siteisminiz.com

komutunu giriyoruz. Karşımıza, hedef sistemin tüm alanlarıyla birlikte bir analiz sunulacaktır.

nmap ile detaylı tarama yapmak,

Tercih ettiğim bu hedef web sitesinde, gerek kullandığı sürümün son sürüm, güncel olması sebebiyle gerekse de RSA şifreleme yöntemi gibi güvenlik kalkanları ile korunduğundan herhangi bir güvenlik zafiyeti bulgusuna rastlanmamıştır.
Aynı zamanda bir dipnot olarak, tercih ettiğiniz hosting firmalarının size sunmuş olduğu ekstra güvenlik önlemleri sayesinde, saldırı yapmaya çalışan IP adresleri tespit edilir ve siteye erişimleri yasaklanır.

#2 Güvenlik açığı bulunan web sitesi

  • Belirlemiş olduğumuz web sitesinin IP adresini keşfetmek amacıyla terminalimize nslookup siteismi.com komutunu giriyoruz.

pentest çalışması nasıl yapılır,

  • Ardından nmap aracımıza geçiş yaparak hedef sitenin ağ haritasını ve açıklarını tespit etmeye çalışacağız. Bunun için nmap –sV 127.0.0.1(Keşfedilen IP adresi) komutunu girerek ilgili site üzerinde, versiyon sürümleri ile birlikte çalışmalarımızı başlatıyoruz.
  • Nmap çalışması tamamlandıktan sonra, karşımıza; port, state, service, version başlıkları altında tarama sonuçları gelecektir. Burada portların karşısında durumunun açık olup olmadığı, ilgili portun hangi servis türünde olduğu(ne amaçla kullanıldığı) ve versiyonu yazmaktadır. Bu bilgiler, kritik bilgilerdir ve güvenlik zafiyetinin olup olmadığı hakkında sonuçlar vermektedir.

nmap aracı ile açık portları tespit etmek,

  • Bulunan zafiyetleri sömürmek amacıyla metasploit aracımızı kullanmamız gerekir. Bunun için terminalimize, msfconsole komutunu giriyoruz.
Metasploit aracı, Linux sisteminizde kurulu değilse terminalinize şu kodu girmelisiniz;

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall

metasploit aracı,

  • Ardından yapmamız gereken, tespit etmiş olduğumuz zafiyetin adını metasploit aracı içerisinde aratmaktır. Nmap aracında, “version” kategorisinin altındaki herhangi bir güvenlik açığını(ör: Dovecot pop3d) kopyalayıp,
    search Dovecot pop3d komutunu terminalimize girmeliyiz.

metasploit ile zafiyet nasıl aranır,

  • Sonrasında karşımıza ilgili zafiyetin daha öncesinde açıklanmış, ifşa edilmiş bilgileri sunulmaktadır. Description kısmında ise bu zafiyet türünün açıklamaları ve kaynakları yer edinmektedir. Date kısmının altında ise bu güvenlik açıklarının hangi tarihlerde açıklandığını, tespit edildiğini öğrenebilirsiniz. Bunları kullanarak güvenlik açığını sömürebilir miyiz, denemelerini gerçekleştireceğiz.
  • use 1 komutu ile zafiyeti kullanmaya geçiyoruz. Burada kullanılan “1(name kısmı)”, zafiyet üzerinde kullanılabilecek en uygun seçeneklerden biridir(normal, excellent, great seçeneklerine göre…). Artık 1 numaralı zafiyetin içerisindeyiz.
  • show targets komutunu terminale girerek, hedefleri göstereceğiz.

metasploit ile güvenlik açıklarının tespiti nasıl yapılır,

  • set targets 0 komutu ile gelen hedeflerden(target) name kısmı 0 olanı seçtik ve sisteme giriş için hedefi belirledik. (Burada seçmiş olduğumuz zafiyetin türüne göre onlarca, yüzlerce ve hatta binlerce seçenek karşımıza gelebilir. Şu an yapmış olduğumuz çalışmada yalnızca 1 hedef gösterilmiştir. Nmap üzerinde yapılan arama ve tarama sonucu çıkan versiyonları tek tek deneyerek farkı gözlemleyebilirsiniz.)

matasploit ile güvenlik zafiyeti hedefi nasıl belirlenir,

  • show options komutunu girerek, bir önceki adımda belirlemiş olduğumu hedefin seçeneklerini karşımıza getiriyoruz.

metasploit ile exploit nasıl edilir,

  • show payloads komutunu terminalimize yazarak, seçeneklerdeki payloadları(sistem içerisindeki açıkları, arka kapıları) gösteriyoruz.

sızma testi nasıl yapılır,

  • set PAYLOAD 5 komutu ile bir önceki adımda karşımıza gelen payloadlardan bir tanesini(numaralanmış listede 5 numarayı) belirledik ve hedefimizi bu yönde ayarladık.
  • show options komutu ise, hedefimizin seçeneklerini bize göstermektedir.

sızma testi nasıl yapılır,

Bu şekilde pentest çalışmalarınızı gerçekleştirerek, web siteniz üzerinde herhangi bir güvenlik zafiyeti bulgusu olup olmadığının kontrolünü yapabilirsiniz.

Güvenlik Açığınızın Olmaması İçin Yapmanız Gerekenler

Hiç kimse faal olarak kullandığı web sitesinde veya uygulamasında güvenlik açığının olmasını istemez. Fakat yine de birçok kişi ne yapması gerektiğini de tam olarak bilemez.

İnternet sitenizde veya uygulamanızda güvenlik zafiyetlerinin bulunmasını istemiyorsanız, size liste halinde birkaç önerim olacaktır.

  • Sisteminizi mutlaka en güncel sürümde kullanmalısınız. Çünkü gelen her güncelleme ile birlikte, bir önceki sürümün eksiklikleri düzeltilir, geliştirmeler yapılır ve varsa güvenlik açığı da kapatılır. Yeni güncellemeler ile birlikte sürüm geliştiricileri, ne yaptıklarını kullanıcılara haber verir ve kaynak olarak ekler. Kötü niyetli kişiler, bu kaynakları kullanarak nelerin değiştiğinden haberdar olur ve eski sürümü kullanan web sitelerini tespit etmeye çalışıp, zafiyetleri sömürmek isterler.
  • WordPress gibi bir CMS(içerik yönetim sistemi) sahibiyseniz, eklentilerinizi dikkatli seçmeli ve yine güncel tutmalısınız. Yakın geçmişe yönelik ufak çaplı bir araştırma yaparsanız, birçok eklentinin güvenlik açığı sebebiyle, on binlerce web sitesi sahibi ve kullanıcısı durumdan etkilenmiş, kişisel bilgiler ve verileri ifşa olmuş veya kötü amaçlar, çıkarlar uğruna kullanılmıştır.
  • Yazılım geliştirme aşaması devam ederken sürekli olarak deneyler yapılmalı ve anlık olarak sürümler test edilmelidir. Böylece ileride yaşanacak sorunlar erken safhada tespit edilir ve sorunlara çözüm üretilir.
  • Siteniz üzerinde yorum paneli, iletişim formu, kullanıcı oluşturma gibi alanlarda özel karakterlerin(*/><%) kullanılmasını engellemelisiniz. Böylece kötü niyetli kişilerin zararlı kodları çalıştırmasına engel olursunuz. Bu kodlar aracılığıyla çok büyük sorunlar başınıza gelebilir. XSS saldırıları, HTML Injection bu duruma örneklerdir.
  • İnternet sitenizi “https” protokolünde kullanmalısınız. Eğer halen http bir siteye sahipseniz, acilen https ye geçmelisiniz. Çünkü http protokolüne sahip siteler, kapısı açık evlere benzer. Saldırılara karşı savunmasızdır. HTTPS protokolü, şifrelenmiş ve güvenlik açısından gerek site sahiplerine gerekse de kullanıcılara büyük fayda sağlamakta ve verilerinizi korumaya yardımcı olmaktadır.

#EKSTRA

Bir WordPress web sitesi sahibiyseniz, brute force(kaba kuvvet) saldırılarını engellemek için “Loginizer” eklentisini kullanabilirsiniz. Böylelikle aynı IP üzerinden, yönetici paneline erişmeye çalışan kötü niyetli kişileri engelleyebilirsiniz.

Eklentinin çalışma mantığı; admin panelinize 3 defadan fazla kez hatalı giriş yapılması halinde, ilgili IP adresine belirli bir süre zarfında giriş yasağı getirmektedir. Bu gibi durumlarda, sitenize yönetici rolünde erişmek isteyen kişi(ler)i engellemiş olursunuz. Aynı zamanda yapay zeka(bot) saldırılarını da böylelikle ekarte edersiniz.

Görüşlerinizi ve yorumlarınızı merak ediyorum. Aklınıza takılan sorularınızı yorumlarda belirtmekten lütfen çekinmeyin :).

İşinize Yarayabilir

sanal makine nedir, virtualbox kurulumu,

Sanal Makine ve VirtualBox Kurulumu

Halihazırda kullanmış olduğunuz işletim sistemi nedir? Windows, MacOS ya da Linux? Peki, bir bilgisayar üzerinde …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir