Linux etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Linux etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Nisan 2014 Cuma

İpucu: ‘Single User Mode' Özelliği ile KALI Bilgisayarın Parolasının Sıfırlanması

‘Single User Mode' Özelliği ile KALI Bilgisayarın Parolasının Sıfırlanması

Önceki bir yazıda Backtrack5 bilgisayarda Single User Mode ile root parolası yenilenmişti. Bu yazıda ise KALI üzerinde aynı işlem gerçekleştirilecektir.

KALI  işletim sistemi üzerinde unutulan root parolasını sıfırlamak için aşağıdaki yöntem takip edilebilir.
İşletim sistemi öncelikle makine yeniden başlatılmalıdır. GRUB önyükleyicisi ekranı gözüktüğünde en üstte yer alan Ubuntu Linux kerneli üzerine gelinerek <e> tuşu ile düzenleme kipine geçiş yapılır.


Aşağıdaki gibi bir ekran ile karşılaşılır:


Yukarıdaki ekran görüntüsünde belirtilen “ro” ve sonrasındaki kısmı silindikten sonra “rw init=/bin/bash” metni eklenir. Son durum aşağıdaki gibi olmaktadır:


<CTRL>+<x> veya F10 tuşlarına basılarak sistemin "Single User Mode"'’da açılması sağlanır. Sistem yüklendiğinde konsoldan da görülebileceği üzere root hakkıyla oturum açılmaktadır. Bu aşamadan sonra passwd komutu ile root parolası sıfırlanabilir.


Sonrasında ise KALI bilgisayar yeniden başlatılarak belirlenen parola ile root kullanıcısı ile giriş sağlanabilir.

31 Aralık 2013 Salı

İpucu: Password Mangling ve Linux için Kaba Kuvvet Aracı

Password Mangling ve Linux için Kaba Kuvvet Aracı

Password Mangling olarak ifade edilen teknik mevcut bir kelimenin farklı varyasyonlarının oluşturulması esasına dayanır. Rastgele veya belirlenen bir politikaya göre küçük-büyük karakter dönüşümü, boşlukların eksi veya alt çizgiye dönüşümü, bazı harflerin sayılara; sayıların harflere ve noktalama işaretlerine dönüşümü vb. uygulanabilir.

Bu yazı TÜBİTAK SGE tarafından düzenlenen SiberMeydan yarışmasında sorulan CentOS imajının root parolasının belirlenmesine yöneliktir [Soru 9]. Soruda beklenen erişim sağlanan makinenin isminden faydalanılarak bir karıştırılmış bir kelime listesi (password mangle) oluşturmak ve liste üzerinden kaba kuvvet saldırısı ile parolanın belirlenmesini sağlamaktadır. Burada sunucunun açık ssh servisine yönelik bir kaba kuvvet saldırısı yapılabileceği gibi bütün parolaların özet değerlerini hesaplayıp /etc/shadow dosyası içerisindeki özet ile karşılaştırma yoluna da gidilebilir. Tabii ki burada öncelikle gerekli olan root kullanıcısına ait bu dosyanın açılması, dolayısıyla sistemdeki açıklıkları kullanarak root olunmasıdır.

Ekran görüntüsünde ilk iki $ işareti arası parolanın MD5 ile özetlendiğini, ikinci ve üçüncü $ arasındaki ifade parola özetlenirken kullanılan tuz (salt) değerini, son kısımda parolanın tuzlu özet (salted hash) değerini göstermektedir.

Parola listesi oluşturmak için bağlantıdaki gibi bir betikten faydalanılabilir. sibermeydan kelimesi bu betiğe girdi olarak verildiğinde bu kelime baz alınarak oluşturulan yeni versiyonlar görülmektedir.

Aşağıdaki gibi bir bash komut seti ile md5pass komutuna salt değeri olarak "UHNLonQh" kullanarak parola üretmesi ve /etc/shadow içerisindeki hash değeri ile bir karşılaştırma yapılması sağlanmıştır.

Ekran çıktısında görüldüğü gibi sorunun cevabı 5!BeRMeyd@n şeklindedir.

Kaynak:
http://www.agguvenligi.net/2013/12/password-mangling-ve-linux.html

21 Aralık 2013 Cumartesi

İpucu: NFS Paylaşımının İstismarı

NFS Paylaşımının İstismarı

NFS (Network File System) UNIX/Linux işletim sistemlerinin doğal, kararlı ve güçlü bir dosya paylaşım sistemidir. Gerekli yapılandırma dosyası /etc/exports olup güvenlik özellikleri göz ardı edildiğinde istismar edilebilecek bir zafiyete neden olabilir. Bu yazıda NFS paylaşımı üzerinden sistem üzerinde yetki elde etmeye yönelik bir yöntemden bahsedilecektir.

Varsayılan olarak 2049/tcp üzerinden çalışan NFS servisinin tespiti nmap vb. araçlarla gerçekleştirildikten sonra servisin açık olduğu belirlenen varlık üzerindeki paylaşımların tespiti için farklı araçlar kullanılabilir.

Geleneksel Linux sistemlerdeki showmount komutu ile paylaşım tespiti:
# showmount -e 10.0.0.5
Nmap aracı ile paylaşım tespiti:
# nmap -n -PN -sS -T5 -p 2049 --script=nfs-showmount 10.0.0.0/24
Metasploit ile paylaşım tespiti:
msf > use auxiliary/scanner/nfs/nfsmount
msf auxiliary(nfsmount) > set RHOSTS 10.0.0.0/24
msf auxiliary(nfsmount) > run
Tespit edilen paylaşımların yerel sisteme bağlanması  şu şekilde gerçekleşir.
# mount -t nfs 10.0.05:/paylasim_adi /baglama_dizini
Daha öncede belirtildiği üzere /etc/exports içerisindeki
/       *(rw)
şeklindeki bir yapılandırma ile bütün sistem herhangi bir erişim izni olmaksızın ağdaki herkesin yerel sistemine okuma/yazma hakkı ile bağlanabilir duruma gelebilmektedir. Ve bu sızma testlerinde büyük ölçekli kurumsal yapılarda dahi karşılaşılabilen bir durumdur. Böyle bir durumda Linux sistemler için gerçekleştirilebilecek post-exploitation adımları uygulanabilir.
Bir diğer durumda bağlanan sistemin farklı UID değerli kullanıcıya ait olması nedeniyle dosyaların açılamaması durumudur. Öncelikle showmount komutu ile /export/home dizininin paylaşıldığı bir ortamda saldırgan sistem üzerinde öncelikle aşağıdaki komut ile hedef dizine yerele bağlanır.
#mount -t nfs 192.168.0.1:/export/home /baglama_dizini
Hedef dizini bu şekilde yerel sisteme bağlandıktan sonra ls -al komutunun çıktısı sonucunda bağlanan dosyaların yerel sistemde mevcut olmayan UID değerine sahip bir kullanıcıya ait olduğu görülebilir
-rwxr----- 2626 1000 1898 parolalar_doc
DAC mantığı ile çalışan geleneksel sistemler bu dosyanın açılmasına izin vermeyeceği için şu şekilde bir yöntem izlenebilir. Öncelikle dizin bağı çözülür:
# umount /baglama_dizini
Örnek bir kullanıcı oluşturulup UID değeri paylaşımındaki değer olacak şekilde ayarlanır.
# useradd raptiye
# usermod -u 2626 raptiye
Yeni kullanıcının ortamına geçiş yapılır:
# su raptiye
Bu noktadan sonra paylaşım tekrar yerele bağlandığında aynı UID'li kullanıcıya sahip olunduğu için bağlanan dosyalar sorunsuz şekilde açılacaktır.

Kaynak:
http://www.agguvenligi.net/2013/01/nfs-istismari.html

18 Aralık 2013 Çarşamba

İpucu: Sızma Testlerinde Hedef Olarak Linux ve Vulnix Kılavuzu

Sızma Testlerinde Hedef Olarak Linux ve Vulnix Kılavuzu

Zafiyet tarama ve bulunan zafiyetlerin sızma testleri ile doğrulanması güvenliğe proaktif açıdan bakılmasının en önemli sonuçlarındandır. Burada amaçlanan zafiyetlerin tespiti ve bunların kullanılması ile birlikte muhtemel false-positive'lerin ayıklanması ve önem seviyesi çok daha yüksek hedeflere yetkili erişimin sağlanması, dolayısıyla kötü niyetli saldırganların yapabileceklerinin bir benzetiminin ortaya konulmasıdır.

Bu blog notunda, kurumsal ortamlarda her ne kadar Windows sistemlere nazaran çok daha sınırlı kullanım alanına sahip olsa da veritabanı, middleware vb. için sıklıkla tercih edilen Linux sistemler üzerinde örnek bir sızma testinin nasıl gerçekleştirilebileceğine değinilecektir.

Linux sistemleri için sızma sürecinde ilk hedef, sisteme bir şekilde giriş hakkı elde etmektir. Bu işlem tamamlandıktan sonra mevcut kullanıcının haklarının arttırılması amaçlanır. Örneğin çekirdek (kernel) sürümünün incelenerek hak yükseltmeye imkan tanıyan zafiyetlerinin belirlenmesi ve varsa kullanılarak root haklarına erişilmesi en klasik yollardan biridir.

Burada üzerinde çalışılacak Vulnix dağıtımı 10/09/12 tarihinde yayınlanmış olup üzerinde belirli açıklıkları barındıran eğitim amaçlı bir Ubuntu dağıtımıdır. Genel özellikleri aşağıdaki gibi olup imaj bağlantıdan temin edilebilir. CTF uygulaması olarak düşünülebilecek bu imajda asıl amaç /root dizini altında bulunan trophy dosyasının içeriğine erişmektedir.
Mimari: x86
Biçim: VMware (vmx & vmdk)
RAM: 512MB
Network: NAT
Boyutu: 194MB – 7zip
Çıkarılmış hali: 820MB
Sızma testi boyunca Backtrack5r3 Linux dağıtımı ve üzerindeki araçlar kullanılacaktır. BT5 imajına bağlantıdan erişebilirsiniz.

Vulnix imajı temin edilip sıkıştırılmış halinden çıkarıldıktan sonra VMWare Workstation üzerinde File>Open sonrası çıkan menüde Vulnix.vmx dosyasının yolu belirtilerek çalıştırılır. Veya bu dosyayı doğrudan çift tıklayarak ta açabilirsiniz.

Vulnix sanal makinesinin bilgileri aşağıda görüldüğü gibidir.


Burada dikkat edilecek husus ağ bağlantısının NAT modunda bırakıldığıdır. Dolayısıyla host bilgisayarınızda NAT ağı olarak hangi ağı belirttiyseniz Vulnix o ağdan otomatik olarak IP alacaktır. Bu ağın hangi subnet olduğunu görmek için Workstation üzerinde Edit>Virtual Network Editor bağlantısından sonra görülebilecek aşağıdaki gibi bir ekran yeterlidir.


Örneğimizde Vulnix imajının 192.168.1.0/24 aralığından IP adresi alacağı görülmektedir. Ortamımız hazır olduğuna göre klasik adımları takip ederek sızma testine başlayabiliriz.

1. Keşif ve IP/Port Tarama

Bu adımda Nmap aracı kullanılarak Vulnix imajının hangi IP adresini aldığı ve üzerindeki servis veren açık portlar belirlenecektir. Bunun için BT5 üzerinden parametreleri aşağıdaki gibi ayarlanmış bir Nmap taraması yapılabilir.
root@agguvenligi:~# nmap -sT -n --top-ports 1000 -T4 -O --open 192.168.1.0/24
Tarama sonrası ekran görüntüsü aşağıdaki gibi olmaktadır.


2. Servisler Üzerinden Bilgi Toplama

a. SMTP

SMTP sunucular üzerinde kullanılabilecek VRFY komutu sunucu üzerindeki mevcut kullanıcıların varlığını belirlemek amacıyla kullanılabilir. Komut aşağıdaki gibi kullanılabilir. Eğer kullanıcı sistem üzerinde mevcutsa 252 cevabı dönerken bulunamaması durumunda 550 cevabı alınacaktır.
root@agguvenligi:~# telnet hedef_ip_adresi 25
vrfy geçerli_kullanıcı_adı
vrfy geçersiz_kullanıcı_adı
Örnek bir tarama sonucu aşağıdaki gibidir (IP değeri mevcut Vulnix sunucusuna göre değişiklik göstermektedir):

Bu işlemi belirli bir sözlük kullanarak otomatik olarak gerçekleştirmek için Metasploit içersindeki auxiliary/scanner/smtp/smtp_enum modülü kullanılabilir.
msf> use auxiliary/scanner/smtp/smtp_enum
msf auxiliary(smtp_enum) > set RHOSTS 192.168.1.101
msf auxiliary(smtp_enum) > run


Manuel olarak yapılan örnekte user ve vulnix kullanıcılarının sistem üzerinde olduğu görülmektedir.


b. FINGER

Bilgi toplama için kullanılabilecek diğer bir servis sistem üzerinde açık olduğu görülen finger servisidir. Bu servis Linux sistem üzerindeki mevcut kullanıcılara dair bilgileri sunan tehlike arz edebilecek bir servistir. Manuel olarak yapılan kontrolde
root@agguvenligi:~# finger -l -p vulnix@192.168.1.101
komutu çalıştırılır. Eğer finger paketi sistemde yüklü değilse aşağıdaki gibi bir hata alınır. Bu durumda, (ağ adaptörü internete çıkacak şekilde ayarlandıktan sonra) finger paketi yüklenmelidir (IP değeri mevcut Vulnix sunucusuna göre değişiklik göstermektedir):


Böylece, Finger komutu çalıştırılarak vulnix kullanıcısına dair bilgiler finger servisinin verdiği şekliyle aşağıda görüldüğü gibi olmaktadır. Sonuçtan bu kullanıcının sistemde kabuk çalıştırmasının mümkün olduğu görülmektedir.

Not: SMTP servisindeki zafiyet sebebiyle elde edilen kullanıcı isimleri (root, backup, bin ve daemon) denendiğinde aynı sonuçlar elde edilmektedir.

Bir sözlük yardımıyla bu işlemi otomatik hale getirmek için aşağıdaki gibi bir komut seti kullanılabilir. Bu şekilde sözlük içerisindeki bütün kullanıcı adlarının finger servisi ile hedef sistem üzerinde var olup olmadığı keşfedilebilir.
root@agguvenligi:~# cat /opt/metasploit/apps/pro/msf3/data/wordlists/unix_users.txt | while read username; do finger -l -p $username@192.168.1.101 | grep -Ev "101|no such user|No one logged on|No mail|No Plan"; done


Finger servisine yönelik sözlük saldırısı için Metasploit içerisinde mevcut bir modül olan auxiliary/scanner/finger/finger_users modülü kullanılabilir. Kullanımı şu şekildedir:
msf> use auxiliary/scanner/finger/finger_users
msf auxiliary(finger_users) > set RHOSTS 192.168.1.101
RHOSTS => 192.168.1.101
msf auxiliary(finger_users) > run

3. Sızma Denemesi

a. SSH

İlk giriş denemesi SSH servisine yönelik kaba kuvvet saldırısı ile gerçekleştirilebilir. BT5 üzerinde bu tür saldırılarda kullanılabilecek örnek bir sözlük /pentest/passwords/wordlists dizini altında bulunmaktadır. Bunun yerine kendi oluşturduğunuz bir sözlüğü kullanmanız da mümkündür.

Hydra aracı bu tür saldırılar için kullanılabilecek performanslı bir araçtır. Aşağıdaki şekilde Vulnix üzerinde uygulanabilir.
root@agguvenligi:~# cd /pentest/passwords/wordlists/
root@agguvenligi:/pentest/passwords/wordlists# hydra -L darkc0de.lst -P darkc0de.lst -S 192.168.1.101 ssh
Komut çalıştırıldıktan sonra bulunan kullanıcı adı ve parola bilgisi aşağıdaki gibi gözükmektedir.

Not: Backtrack üzerindeki "/pentest/passwords/wordlists/darkc0de.lst" dosyasında 1,7 milyondan fazla satır olduğundan "hydra" aracının kullanımı oldukça uzun sürebilmektedir.

b. RLOGIN

Vulnix üzerinde açık olduğunu belirlenen bir diğer serviste Rlogin (TCP/513) servisidir. Bu servis doğru kullanıcı adının bilinmesi halinde parolasız olarak sisteme erişim yetkisi veren tehlikeli olabilecek bir servistir. Bir önceki adımda elde edilen SSH bilgileri (kullanıcı adı: user, parolası: letmein) ile sisteme erişildiğinde user kullanıcısının sisteme Rlogin ile erişme hakkının olduğu görülebilir.


Bu servise yönelik sözlük saldırısı için Metasploit içerisindeki mevcut modüllerden biri olan auxiliary/scanner/rservices/rlogin_login modülü de kullanılabilir. Kullanımı şu şekildedir:
msf > use auxiliary/scanner/rservices/rlogin_login
msf auxiliary(rlogin_login) > set RHOSTS 192.168.1.101
msf auxiliary(rlogin_login) > run
Not: Bu modülün çalıştırılması sonucunda Vulnix üzerinde herhangi bir kimlik bilgisi tespit edilemeyecektir. Bu modül, "FROMUSER_FILE" olarak belirtilen dizindeki (/opt/metasploit-4.4.0/msf3/data/wordlists/rservices_from_users.txt) kimlik bilgilerini aramaktadır ve bu dosyada normalde 7 tane hesap adı bulunmaktadır.

Metasploit modülü ile de bulunan user kullanıcısının Vulnix sisteme rlogin yapabilmesi için PuTTY üzerinde aşağıdaki adımlar takip edilebilir.



Bu işlemlerden sonra bağlantı sağlanmaktadır.

c. NFS

Son giriş kapısı olarak NFS (Ağ Dosya Paylaşımı , TCP/2049) servisini inceleyeceğiz. İlk olarak Kali üzerinden hedef sistemin paylaşımda neler sunduğu sorgulanabilir. Bunun için aşağıdaki komut kullanılabilir.
root@agguvenligi:~# showmount -e 192.168.1.101

Bu çıktı, vulnix kullanıcısının ev dizininin paylaşıma açık olduğu anlamına gelmektedir. Paylaşıma açık bu dizini Kali üzerine bağlamak için aşağıdaki komut kullanılabilir.
root@agguvenligi:~# mkdir /mnt/nfs
root@agguvenligi:~# mount 192.168.1.101:/home/vulnix /mnt/nfs
Sonraki adımda bu dizine erişilmek istenildiğinde "Permission Denied" hatası alınacaktır. Bu hata paylaşılan dizini sunan kullanıcı ile aynı UID değerine sahip kullanıcının BT5 üzerinde bulunmamasından kaynaklanmaktadır.


Bu hatayı aşmak için görülen UID değerinde (2008) BT5 üzerinde yeni bir kullanıcı oluşturulmalıdır.
root@agguvenligi:~# useradd -m agguvenligi -u 2008
root@agguvenligi:~# su - agguvenligi

Bu aşamadan sonra ilgili klasöre erişilebildiği görülebilecektir.

Bağlanan dizin Vulnix kullanıcısının ev dizini olduğu için altında .ssh dizini oluşturarak BT5 üzerinde oluşturulacak public/private anahtar çiftinin bu dizine kopyalanması ile sonrasında parolasız olarak sisteme erişim sağlanabilir.

Bunun için öncelikle BT5 üzerinde anahtar çiftinin oluşturulması gerekir.

Aşağıdaki komut ile birlikte oluşturulan anahtar Vulnix makinesinin içerisine kopyalanır. ("/mnt/nfs" dizini, Vulnix sunucu üzerindeki "/home/vulnix" dizini olarak mount edilmişti.). Bunun için öncelikle mount dizinine ".ssh" adlı bir klasör oluşturulur. Sonrasında da kopyalama işlemi gerçekleştirilir.
agguvenligi@agguvenligi:/$ mkdir /mnt/nfs/.ssh
agguvenligi@agguvenligi:/$ cat .ssh/id_rsa.pub > /mnt/nfs/.ssh/authorized_keys


Anahtar kopyalandıktan sonra aşağıdaki gibi bir komutla sisteme anahtar dosyası ile parola bilmeksizin bağlanılabilir.
root@agguvenligi:~# ssh -i /home/agguvenligi/.ssh//id_rsa vulnix@192.168.1.101

Bağlantının gerçekleştiği kullanıcıya ait hesabın ID değerinin 2008 olduğu görülmektedir.

4. Yetki Yükseltme

Hedef sisteme belirtilen hesap ile SSH erişimi sağladıktan sonraki hedef sistem üzerindeki yetki seviyesini artırmak ya da diğer tabiri ile root olmak olacaktır. Bunun için öncelikle eldeki hesabın neler yapabildiğinin belirlenmesi gerekmektedir. Bunun için sudo -l komutundan faydalanılabilir.


Komut çıktısına dair ekran görüntüsünde de görüldüğü gibi, vulnix kullanıcısının /etc/exports dosyasını root hakları ile parolasız olarak düzenleme hakkı vardır. Dosya içeriğine bakıldığında NFS paylaşımının root_squash opsiyonuyla yapıldığı yani NFS paylaşımına uzak makineden root hakları ile bağlanılsa dahi paylaşım üzerinde root gibi işlem yapılamayacağı görülmektedir.
Aşağıdaki komut ile ilgili dosyaya erişerek belirtilen bu opsiyonu etkisiz hale getirmek ve paylaşım üzerinde root haklarıyla işlem yapmak mümkün olmaktadır.
vulnix@vulnix:~$ sudoedit /etc/exports

Değiştirilen yapılandırmaların geçerli olması NFS servisi yeniden başlatılmalıdır. Vulnix hesabı sınırlı bir hesap olduğu için öncelikle paylaşım BT5 üzerinden umount edildikten sonra Vulnix sanal makinası yeniden başlatılmalıdır.
root@agguvenligi:~# umount /mnt/nfs

Sunucu tekrar başladıktan sonra BT5 üzerinden NFS paylaşımına tekrar erişim sağlanır. Dizin içeriği listelenmeye çalışıldığında eskisinin aksine artık sorunsuz bir şekilde dizin içinde dosyaların listelendiği görülmektedir.

Sistem üzerinden shell almak için BT5 üzerinden bash çalıştırılabilir dosyası hakları 4777 olacak şekilde hedefe kopyalanır. Burada dosyaya herkes tarafında yazma-okuma-çalıştırma hakları verilmiş olup ayrıca çalıştırana dosya sahibinin haklarıyla işlem yapmasını sağlayacak şekilde (örneğimizde root) SUID biti etkin duruma getirilmiştir. Bunun için aşağıdaki komutlar kullanılabilir.
root@agguvenligi:/mnt/nfs# cp /bin/bash .
root@agguvenligi:/mnt/nfs# chmod 4777 bash

Son adımda daha öncede yapıldığı gibi vulnix kullanıcısı ile hedef sisteme SSH bağlantısı kurulmalıdır. Sonrasında hedefe kopyalamış olduğumuz bash kabuğu çalıştırılarak root kullanıcısının ev dizininde yer alan bayrak dosyası trophy.txt ve içeriğine erişim sağlanabildiği görülebilir.
Vulnix makinesi 32bit işletim sistemine sahip olduğu için üzerine kopyalanan bash dosyası da 32bit olmalıdır. Aksi halde "-bash: ./bash: cannot execute binary file" şeklinde bir hata ile karşılaşılacaktır:
root@agguvenligi:~# ssh -i /home/agguvenligi/.ssh/id_rsa vulnix@192.168.1.101
vulnix@vulnix:~$ ./bash -p
bash-4.2# id
bash-4.2# cat /root/trophy.txt


Kaynak:
http://www.agguvenligi.net/2013/08/vulnix-tutorial-I.html
http://www.agguvenligi.net/2013/08/vulnix-tutorial-II.html
http://www.agguvenligi.net/2013/08/vulnix-tutorial-III.html

İpucu: Backtrack5 Single User Mode ile Root Parolasını Yenilemek

Backtrack5 Single User Mode ile Root Parolasını Yenilemek

Backtrack5  işletim sistemi üzerinde unutulan root parolasını resetlemek için aşağıdaki yöntem takip edilebilir.
1) İşletim sistemi Vmware üzerinde çalışan sanal bir makine ise öncelikle makine yeniden başlatılmalı ve ekranda aşağıdaki gibi vmware boot ekranı göründüğünde <SHIFT> tuşuna basılı tutulur (Defalarca "Bas Bırak" yapılmaz, basılı tutulur).


2) GRUB önyükleyicisi ekranı gözüktüğünde en üstte yer alan Ubuntu Linux kerneli üzerine gelinerek <e> tuşu ile düzenleme kipine geçiş yapılır.
Aşağıdaki gibi bir ekran ile karşılaşılır:

3) text splash vga=791 olarak biten satırın ro ve sonrasındaki kısmı silindikten sonra rw init=/bin/bash metni eklendikten sonra son durum aşağıdaki gibi olmaktadır.

4) <CTRL>+<x> tuşlarına beraber basılarak sistemin single user mode'da açılması sağlanır. Sistem yüklendiğinde konsoldan da görülebileceği üzere root hakkıyla oturum açılmaktadır.
5) Bu aşamadan sonra passwd komutu ile root parolası resetlenebilir.

6) reboot -f komutu ile sistem yeniden yüklenerek değiştirilen root parolası ile oturum açılabilir.

Benzer işlem Kali üzerinde de gerçekleştirilebilir. Ayrıntılı bilgi için bakınız.

Kaynak:
http://www.agguvenligi.net/2013/01/backtrack5-single-user-mode-ile-root.html

8 Şubat 2013 Cuma

Kabuk Programlama: Temel Linux Komutları

Temel Linux Komutları
  • pwd : Bulunulan dizini verir.
  • whoami : Mevcut oturum kullanıcısını verir.
  • who : Oturumu açan kullanıcıları verir.
  • pinky : Oturumu açan kullanıcıları verir.
  • last : Oturumu açan son kullanıcıya ait bilgileri verir.
  • lastlog : Tüm kullanıcıların (/etc/passwd altındakilerin) en son oturum açtığı zamanı listeler.
  • ifconfig : IP bilgisini verir.
  • service <ServisAdi> <Operasyon>: Servis başlatır/durdurur/durumunu belirtir.

Not: Aynı işlem /etc/init.d dizini altındaki dosyalarla da gerçekleştirilir.
  • uname -a : İşletim sistemi hakkında bilgi verir.

Not: İşletim sistemi hakkındaki ayrıntılı bilgi /proc/version dosyasından elde edilebilir.
  • cd <Dizin>: İstenilen dizine gidilir.
  • which <Komut>: Komutun bulunduğu dizinini verir.

Not: "man" komutu ile bir komut hakkında ayrıntılı kullanım bilgileri verilir.
  • ls : Mevcut dizindeki dosyaları listeler.
  • ls <Dizin> : Belirtilen dizindeki dosyaları listeler.
  • namei <Dizin> : Belirtilen dizindeki dosyaları üst dizinleri dahil olmak üzere listeler.

  • echo <İfade> : Ekrana (Output Device) belirtilen ifadeyi yazdırır.
  • `Komut` : Komut kabuk tarafından çalıştırılır.
  • basename <Dizin>: Dizinde belirtilen son klasörün adı belirtilir.
  • dirname <Dizin>: Dizinde belirtilen klasörün bulunduğu üst dizin belirtilir.


  • mkdir <Klasor>: Yeni bir dizin (klasör) oluşturur.
  • rmdir <Klasor>: Mevcut dizin (klasör) silinir.
  • touch <Dosya>: Yeni dosya oluşturur.
  • touch <Dosya> --date <Tarih>: Belirli tarihte oluşturulmuş gibi bir dosya oluşturur.


  • cat <Dosya>: Belirtilen dosyanın içeriği okunur.



  • more <Dosya>: Belirtilen dosyanın içeriği okunur.
  • strings <Dosya>: Dosyadaki okunabilir karakterleri yazdırır.

  • <İfade> < <Dosya>: Sağ taraftaki veriyi sol taraftaki komuta girdi olarak sunar.
  • <İfade> > <Dosya> : Sol tarafındaki ifadenin ürettiği çıktıyı sağ tarafındaki dosyaya yönlendirir veya sol tarafındaki veriyi sağ tarafındaki komuta girdi olarak sunar.
  • <İfade/Dosya> >> <Dosya> : Belirtilen dosyaya ilgili ifade/dosya eklenir.
  • vi <Dosya> : Belirtilen dosya vi editörü ile açılır.
  • file <Dosya> : Belirtilen dosyanın türü hakkında bilgi verir.
  • grep <İfade> : Belirtilen dosyada istenilen ifadeyi arar.

Not: "-E" parametresi ile düzenli ifadeler, -A3 ifadesi ile sonraki 3 satır, -B2 parametresi ile önceki ilk 2 satır, -v parametresi ile diğer satırlar,... ekrana yazdırılır.
Not: Düzenli ifadelerde "*" ne olursa olsun, "$" sonu bu şekilde olsun, "^" başı bu şekilde olsun, "[a-z]" belirtilen karakterler arasında olsun, "{1,3}" 1/2 veya 3 tane olsun, "+" 1 veya sonsuz olsun, "?" 0 veya 1 olsun ... demektir. 
  • <Komut1> | <Komut2> : Komut1'in çıktısını Komut2'ye yönlendirir
  • <Komut> 1> /dev/null : Standart çıktıyı /dev/null'a (kara deliğe) gönderir. Özellikle stderr’e yapılan yönlendirmelerin ekrana bastırılmaması için kullanılır.
  • <Komut> 2> /dev/null : Standart hatayı /dev/null'a (kara deliğe) gönderir.

Not:  En çok kullanılan dosya oluşturma teknikleri aşağıda sıralanmıştır:
  • df : Dosya sistemi raporlanır.
  • du -sh <Dosya> : Dosya boyutunu verir.
  • rm <Dosya> : Belirtilen dosyayı siler. "-f" parametresi ile dosya zorla (force) silinir, "-r" parametresi ile altdizinlerle birlikte (recursive) silme işlemi gerçekleştirilir, "-i" parametresi ile kullanıcıya silme işlemi onayı alınarak (interactive) işlem tamamlanır.
  • chmod <İzinler> <Dosya> : İstenilen izin (read/write/execute) verilir. Bir klasörün içerisine girilmesi için R ve X hakları bulunmalıdır.
  • chown <Kullanici> <Dosya> : Dosya sahipliği değiştirilir.

  • find <Dizin>  -name <İfade> : Belirtilen dizinde istenilen isimdeki dosyayı arar.

  • find <Dizin> -user <KullaniciAdi>: Belirtilen dizinde istenilen kullanıcı tarafından oluşturulan dosyayı arar. "mtime" parametresi ise dosyada değişiklik tarihi üzerinde filtre yapmak için kullanılır. "0" ve "-1" değerinde son 24 saat, "1" değerinde son 24 saat ve son 48 saat arasında, "+1" değerinde ise 48 saatten daha fazla süre önce değiştirilen dosyaları tespit etmek için kullanılır. 


Not: Arama yapılması istenen izinler için "perm", dosya türleri için "type", dosya boyutu için "size", belli bir dosyadan daha sonra oluşturulmuş dosyalar için "newer" parametreleri kullanılır.

  • cp <Dosya> <KopyaDosya> : Dosya kopyalanır.
  • mv <Dosya> <KopyalanacakDizin> : Dosya taşınır.
  • wc -c/-w/-l <Dosya> : Belirtilen dosyadaki harf, kelime, satır vs sayısını verir.
  • awk '{print $KolonId}' : Belirtilen kolonları listeler.
  • cut -d "Ayirac" -f<ElemanId>: Belirtilen ayıraca göre elemanları listeler.
  • head -<SatirAdedi> : Belirtilen dosyadaki ilk N tane satır sayısını verir.
  • tail -<SatirAdedi> : Belirtilen dosyadaki son N tane satır sayısını verir.
  • tr <İlkİfade> <İkinciİfade> : Belirtilen karakterler değiştirilir.
  • sort <Dosya> : Sıralamayı gerçekleştirir. "-nr" parametresi ile tersten (numeric reverse) sıralanır.
  • uniq <Dosya> : Farklı ifadeler listelenir. "-c" parametresi ile tekrar adetleri de listelenir.
  • diff <Dosya1> <Dosya2> : İki dosya arasındaki farkı belirtir.
  • tar -czvf <SıkışmışDosya> <Dosya> : Sıkıştırılmış dosya oluşturulur.
  • $RANDOM: Rastgele sayı üretir:
  • :? : Yapılan son işlemin sayısal sonucunu verir. "0" ise işlem başarılı olarak gerçekleştirilmiştir. Aksi sonuçta işlem gerçekleştirilirken hata alınmıştır.

  • ; : Komutları sıralı bir şekilde son komuta kadar çalıştırır.
  • && : Komutları sıralı bir şekilde hata oluşturan komuta kadar (":?" sonucu 0 olmadıkça) çalıştırır.

Not: Konfigürasyon işlemleri için sık sık "./connfigure && make" komutları kullanılır. Böyle konfigürasyonda bir hata olması durumunda işlem sonlandırılır.

  • ps -ef : Çalışan prosesleri listeler.

  • & : Bir prosesi arka planda çalıştırmaya yarar. Arka planda çalışabilen bu proseslere Deamon denir. fg komutu ile bir proses öne, bg komutu ile arkaya alınabilir.
  • nohup : Komut satırı kapansa da uygulamanın çalışmasına devam etmesi için kullanılır.

  • jobs -l : Çalışan görevleri listeler.
  • kill -9 <Proses> : Belirtilen prosesi (zorla) öldürür.
  • id : Bağlı olunan kullanıcı belirtilir.
  • adduser <KullaniciAdi> : Kullanıcı oluşturulur.

  • groups <KullaniciAdi>: Kullanıcının grubunu listeler.


  • su - <KullaniciAdi>: Belirtilen kullanıcıya geçiş yapılır. "-" konulursa çevresel değişkenler de hedef kullanıcının çevresel değişkenleri de alınır. "-" konulmazsa sadece haklar aktarılır.

  • su -s <Kabuk> -c <Komut> <KullaniciAdi>: Oturum açma yetkisi olmayan belli bir kullanıcı gibi istenilen komut çalıştırılır. Aşağıdaki ekran görüntüsünde, "sshd" servis kullanıcısının home dizinine, sshd kullanıcısı gibi bir dosya oluşturulmuştur.


Not: root haklarına sahip kullanıcıda "#", normal bir kullanıcıda ise "$" ile imleç başlamaktadır.
  • dpkg -l : Kurulu paketleri listeler.
  • apt-cache search <PaketAdi> : Yüklenmek istenen paket aranır.
  • apt-get install <PaketAdi>: Paket yüklenir.
  • Degişken_Adi=Degisken
  • md5sum <Veri>: Veri özeti alınır.
  • fdisk : Disk bölümleme işlemleri gerçekleştirilir.
  • host <URL>: URL'in IP adresini verir.
  • host -l <DomainAdresi> <DNSSunucusu>: DNS üzerinden alan transferi (zone tranfer) gerçekleştirir.

Not: Zone transfer için dnsenum ve dnsrecon araçları da kullanılabilir. Kullanımları:
dnsenum <DomainAdı>
dnsrecon -d <DomainAdı> -t axfr
  • wget <URL>: URL'deki sayfa indirilir ve kaydedilir (Aşağıdaki örnek için "index.html" olarak kaydedilmiştir.)
  • gcc -o <DerlenmisUygulama> <DerlenecekKod>: Bir kodu derleyerek binary formata çevirir.


ÖRNEKLER

  • 3. satırdaki kullanıcının bilgilerinin harf sayısı:
  • En çok çalıştırılan 10 komut:
DİZİN YAPISI
  • / : En üst dizin
  • /bin : Açılış sırasında kullanılan programlar
  • /boot : Sistem yükleyicisinin kullandığı dosyalar 
  • /dev : Cihaz dosyaları 
  • /etc : Uygulamaların ve servislerin yapılandırma dosyaları 
  • /home : Kullanıcıların dizinlerinin bulunduğu dizin 
  • /lib : “/bin” dizinindeki dosyaların kullandığı kütüphane dosyaları
  • /mnt : Geçici bağlanan dosya sistemlerinin bulunduğu dizin 
  • /media : Geçici bağlanan cdrom, usb vb. bulunduğu dizin 
  • /opt : Ek yazılımların kurulduğu dizin yapısı 
  • /proc : Çerkirdek hakkında bilgiler tutan dosyaları içeren sanal bir dosya sistemi 
  • /root : “root” kullanıcısının ev dizini 
  • /sbin : Sistem yöneticisinin açılışta kullanabileceği programlar
  • /tmp : Geçici dosyaların tutulduğu dizin

KRİTİK DOSYALAR
  • /etc/resolv.conf : Sistem DNS sunucuları
  • /etc/issue : Dağıtım sürümü 
  • /etc/passwd : Yerel kullanıcılar 
  • /etc/shadow : Kullanıcı parola özetleri 
  • /etc/sudoers : Sudo kuralları 
  • /home/xxx/.bash_history : Kullanıcı komut tarihçesi 
  • /home/*/.ssh/id* : SSH anahtarları 
  • /home/*/.vnc : VNC uzaktan erişim bilgileri
  • /var/log/messages : Çoğu kayıt bilgisinin bulunduğu dosya 
  • /var/log/maillog : Mesaj sistemiyle ilgili kayıtlar 
  • /var/log/lastlog : Sisteme giren ve çıkan kullanıcıların kaydı – salt metin olmadığından “last” komutuyla içeriği görülebilir.


Kaynak:
http://www.galkan.net/p/bash-scripting-ile-pratik-programlama.html
http://www.pixelbeat.org/cmdline.html
http://www.hackings.org/2012/07/en-sk-kullanlan-linux-konsol-komutlar.html