Ana içeriğe atla

Güvenlik Testlerinde Bilgi Toplama (Part 1)

Bu gün, güvenlik testlerinde bilgi toplama konusuna değineceğiz. Bilgi neden önemlidir? Bilginin güvenliği için neler yapmalıyız? Bilgi paylaşımı nasıl olmalı? Kendimizi nasıl koruyabiliriz? Bilgi toplama yolları nelerdir? Bu soruların hepsine cevap olacak uzun soluklu makalemize başlamak istiyorum. :) Aslında yukarıdaki cümlede dediğim gibi uzun soluklu bir makale olacaktı. Fakat yazdıklarım arttıkça bu makaleyi iki parçaya bölme kararı aldım. İlk parçasında Pasif Bilgi Toplama Yollarından bahsederken, ikinci kısmında da Aktif Bilgi Toplama yollarından bahsedeceğim. Umarım bilgilendirici bir çalışma olmuştur. Neyse o halde başlayalım. :)

Öncelikle cevaplamamız gereken soruyla başlayalım. Bilgi neden önemlidir? 
Hayatımızda belki de paradan en değerli şey bilgidir. Bilgiler bizim lehimize kullanılabileceği gibi aleyhimize de kullanılabilir. İnternet dünyasında paylaştığımız her şey illa bir gün gelip karşımıza çıkacaktır. Bilgiler, güvenlik testleri için en önemli kaynaktır. Yeterli düzeyde toplanmayan bilgiden istenilen sonuçlar çıkarılamaz.Bilgi toplama esnasında bu gerekli mi değil mi diye sorulmadan alınabilecek tüm bilgiler alınmalı ve bu bilgiler sonraki aşamalarda kullanılmak üzere sınıflandırılmalıdır. Edinilen bilgilere göre eksikler tanımlanmış, açıklar belirlenmiş olur.

Bilgi Toplama Yöntemleri 

Bilgi toplama yöntemleri; hedef sistemle doğrudan iletişime geçerek ve hedef sistemden bağımsız olmak üzere 2 türlüdür.

1.Pasif Bilgi Toplama
2.Aktif Bilgi Toplama

Pasif Bilgi Toplama Hedef sistem ile doğrudan iletişime geçilmez, herhangi bir iz bırakmadan internetin imkanları kullanılarak yapılır. Mesela whois sorguları ile şirketin ip aralığı, sorumlu yöneticisi bulunabilir. DNS sorguları ile mail, ftp ve benzeri servislerin hangi ip adreslerinde çalıştığı, ip adresleri ve iletişim sistemi bilgilerini hedefle herhangi bir iletişim kurulmadan alınabilir. Şimdi pasif bilgi toplama ile ilgili yollardan bahsetmek istiyorum.

IP Adresleri ve Domain Adları Hakkında Bilgi Edinme 

Kullandığımız ip ve domain adresleri tek bir yerde tutulur ve dağıtılır. Bu işlemin yapıldığı merkez ICANN(Internet Corporation For Assigned Named and Numbers) adlı kuruluştur.

ICANN ip adreslerini ve domain isimlerinin dağıtımını şu şekilde düzenlenmiştir. 

IP Adresleri: RIR(Regional Internet Registrars) aracılığyla,
Domain İsimleri: İP adresleri bulundukları böylegelere göre farklı RIR aracılığıyla sorgulanabilir. Dünya üzerinde ip adreslerini tutan dört farklı RIR bulunmaktadır. Bunlar;


  • RIPE NCC: Réseaux IP Européens Network Coordination Centre
  • ARIN:American Registry for Internet Numbers
  • APNIC:Asia Pacific Network Information Centre
  • LACNİC:Latin America and Caribbean IP adress Regional Registry
Ülkemizdeki IP ve domain RİPE NCC aracılığı ile öğrenebiliriz.
Şimdi aşağıda göstereceğimiz whois sorgusu ile bir ip adresi hakkında çeşitli bilgiler edineceğiz.



whois servisi TCP/43 portu üzerinden çalışmaktadır ve çoğu zaman sistemde bu port dışarıya doğru açık değildir. Bu sebeple whois hizmetini genelde whois proxyler üzerinden alınır. Whois proxyler basit birer web sayfasıdır ve kullanıcıdan aldığı sorgulamaları whois sunuculara gönderilerek sonucu kullanıcılara gösterir. Whois sorgusu ile edinilen bilgileri RIPE NCC'nin sitesinden sadece ip adresi girilerekte elde edebilirsiniz. Şunu belirtmeden geçmeyelim. Eğer ARIN üzerinden yapacağınız IP adresi sorgulama işlemleri eğer ARIN'in kontrol dışındaysa size ilgili RIR'ın bilgilerini gönderir. Sorgulayacağınız ip adresinin hangi bölgede olduğunu bilmiyorsanız, ilk olarak ARIN'den sorgulama yaparak bulunduğu whois sunucularını öğrenebilirsiniz.

Web Sayfalarının Geçmişini İzleme

archive.org 1996'dan beri tüm interneti kaydeden bir sistemdir. Buradan hedef sistemin önceki kaydedilmiş verilerine erişmek mümkündür. Sorgulattığınız domain adresinin hangi tarihlerde arşiv alındığını ve o dönemdeki site görüntüsünü elde edebilirsiniz.

Aşağıda facebook.com için 2006 ve 2010 yılları için yapılmış olan arşivleme örneklerini göreceksiniz. Giriş yapıp eski içeriğe erişebilir miyiz denedim, fakat giriş kabul edilmiyordu. Nostaji yapamadık maalesef. :)


Netcraft Aracılığı ile Bilgi Toplama

Netcraft, işletim sistemi, kernel versiyonu ve web sunucu olarak çalışan yazılıma ait detaylı bilgilerin yanı sıra sistemin uptime bilgisini gösteren bir web sitesidir. 

Peki ya nasıl çalışır?
Netcraft,işletim sistemin yazılım bilgilerini belirlemek için httprint ile çeşitli sorgular yapar ve gelen cevaplara göre bir tahminde bulunur.Bu işlemde yapılan istek hatalı bir istektir ve dönecek hatalardan web sunucusunun yazılımı belirlenmiş olur.Sorgulanan sisteme ait geçmiş bilgilerde yer almaktadır. Aşağıya bir örneğini koyacağım.



Yukarıda gördüğünüz gibi domaine ait kişinin bilgilerinden alınan host şirketine kadar bir çok bilgiye erişebiliyorsunuz. 

DNSStuff Aracılığı ile Bilgi Toplama

DNSStuff komut satırından nslookup,host,dig ve whois gibi programları çalıştırarak alınabilecek çıktıları derli toplu ve merkezi bir ortamdan kullanılmasını sağlayan bir araçtır. Aynı sayfada mail sunucunuzun /IP adresinizin spam listesine girip girmediğini, DNS sunucu yapılandırma gibi bilgilere de ulaşmamızı sağlar.

Passive DNS Replication

Passive DNS Replication(PDR) bir tür pasif dns aracıdır. Daha çok bir IP adresine ait domainleri bulmaya çalışılırken faydalanılır. 

Peki ya nasıl çalışır?

Bir sunucuya kurulan pdr sistemi, sunucudan gelen veri trafiğini dinleyerek dns verilerini bir tabloya yazıp, sonradan gelen istekleri karşılaştırır. Bu bilgilerden bir veritabanı oluşturur. Örnekle bunu açıklamak istersek;

PDR kurulu sistemde www.ecemboluk.com için bir istek görmüş olsun, buna ait veritabanındaki basit tablomuz,

www.ecemboluk.com IP 2.2.2.2

Daha sonra www.mrsmaths.com adresine ait bir dns sorgusu da yakalanmış olsun bununda adresi yukarıdaki adresle aynı olsun. Yani 2.2.2.2

Tabloda da www.mrsmaths.com IP 2.2.2.2 

PDR sistemi IP adresleri aynı olan domainleri veritabanına yerleştirir ve sorgular. Bu sorgudan sonra o zamana kadar tutulan DNS çözümlemelerini verir. 


Mesela www.linux.com’un sunuldugu IP adresinde baska hangi isimler host ediliyormus bakalim… 

sonuc: http://cert.uni-stuttgart.de/stats/dns-replication.php?query=66.35.250.177&submit=Query (Kaynak BGA kaynakları)

Bir Domain'e Ait E-Posta Adreslerinin Bulunması

Bir domaine ait arama motorları vasıtasıyla bulunabilecek e-posta hesaplarını toptan bulabilmek için Google ve MSN Search'u bizim için arayıp belirlediğimiz kriterlere göre mailleri bulanan Linux üzerinde çalışan theHarvester uygulamasını tanıtacağım. Aşağıda da göreceğiniz gibi uygulama python programalama dili ile yazılmıştır. Şimdi örneği inceleyelim.




Makalemizin ileriki kısmında görüşmek dileğiyle, iyi çalışmalar. :)

Yorumlar

Bu blogdaki popüler yayınlar

Algoritma Kavramı, Sözde Kod ve Akış Diyagramı

Bu yazımda çoğumuzun amelelik gibi gördüğü fakat belki de en önemli konu hakkında kısaca bilgi vermek istiyorum. Bundan sonra küçük örneklerle kod yazmayı arttıracağız. Programlama dillerinden bahsetmiştik geçenlerde. Yüksek seviyeli veya düşük seviyeli diller olsun hepsinin arasında kullanım farkları haricinde çok bir farkılılık yoktur. Hayatımızda kullandığımız koca koca programları, programlama dilleri değil onları hazırlayan algoritma kaynağı oluşturur. Kısaca algoritma kavramını tanımlarsak; Algoritma, belli bir problemi çözmek veya belli bir amaca ulaşmak için çizilen yoldur. Algoritma proglamlamada kullanılan en güzel tekniktir. Neyi nasıl yapacağımızı planlamamızı sağlar. Algoritmayı oluşturanda sözde kod ve akış diyagramlarıdır. ALGORİTMA ÖRNEĞİ(resim1) Sözde Kod:Yapacağımız algoritmayı kısa olarak sözle tanımlama yöntemidir. Örneğin; İki sayının toplamını veren algoritmanın sözde kodunu yazınız. 1)BAŞLA 2)YAZ(“1.sayiyi giriniz:”) 3)OKU(S1) 4)YAZ(“2.sayiyi g...

Örnek Algoritmalar ve Örnek C++ Kodları

Örneklerimize bu başlığımız altında devam ediyoruz arkadaşlar. :) Yıl başına kadar C++ hakkında bildiğim tüm konuları ve yaptığım projeleri sizlerle paylaşacağım. Sorularınızı yorumlarda bekliyorum. Şimdiden kolay gelsin :) Algoritma 5: Yarıçapı klavyeden girilen kürenin yüzey alanını ve hacmini açıklayan algoritmanın C++ kodunu yazınız.(π=3) #include <iostream> using namespace std; int main() { float r,alan,hacim; cout<<“Yaricapi giriniz:”; cin>>r; alan=4*3*r*r; hacim=(4*3*r*r*r)/3; cout<<“Alan:”<<alan<<endl; cout<<“Hacim”<<hacim<<endl; } Algoritma 6: Katsayıları klavyeden girilen birinci dereceden denklemin kökünü bulan algoritmanın C++ kodunu yazınız. #include <iostream> using namespace std; int main() { int a,b,c,x; cout<<“Katsayilari giriniz:”; cin>>a>>b>>c; x=(c-b)/a; cout<<“Kok:”<<x; } Algoritma 7:Klavyeden yarıçapı ve dilim açısı girilen daire diliminin...

C++ ile Veri Yapıları

Bu yazımızda, bilgisayar dünyasının temel yapı taşı olan veri yapısı konusunu ele alacağız. Bu konu oldukça zor olmakla birlikte, gayet önemli ve eğlenceli yapıdır. Veri yapısını bilmek ve etkin kullanmak, hayatınızda yapacağınız projelerde size kolaylık sağlayacaktır. Veri yapısı genel olarak bakıldığınında hayatımızın her anında vardır. Konular ilerledikçe bu daha iyi anlaşılacaktır. Veri yapısını tanımlamak gerekirse, bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılır. Veri yapıları, verilerin düzenlenme biçimini belirleyen yapıtaşlarıdır. Bir yazılım değişkeni bile basit bir veri yapısı olarak kabul edilebilir. Değişik algoritmalarda verilerin diziler, listeler, yığıtlar, kuyruklar, ağaçlar ve çizgeler gibi veri modellerine uydurularak düzenlenmesi gerekebilir. Veri, yapı ve algoritma bir yazılımın birbirinden ayrılmaz bileşenleridir. Algoritması hazırlanmış her yapı için verilerin düzenli bir şekilde kullanımı önemlidir. Çünkü yapı iyi kurul...