Sunday, September 14, 2014

İstismar Sonrası Linux Komutları

Geçtiğimiz sene yaklaşık 20 üniversitede “Siber Güvenlik ve Hacking” konulu çeşitli seminerler verdim. Uygulamalı olarak ele aldığım bölümde ise aşağıdaki basit networkü oluşturup port taraması ve zafiyet tespiti aşamalarından sonra hedef sistemi ele geçiriyorum.
Seminerin süresinin kısıtlı olması nedeniyle bundan sonraki aşamaları çok detaylı ele alma imkanım pek olmadı. Bu yazı, sistemi ele geçirdikten sonra saldırganın yapabileceklerini ele alırken aynı zamanda sistem yöneticilerinin de bilmesi ve kullanması gereken basit bazı Linux komutlarını ele alacak.

 Aşağıdaki gibi basit bir topoloji oluşturdum. Saldırı için kullandığım sanal makine Kali Linux, hedef olarak kullandığım sanal makine ise Metasploitable (http://sourceforge.net/projects/metasploitable/files/Metasploitable2/). Metasploitable sızma testleri konusunda pratik yapmak için geliştirilmiş ve üzerinde çeşitli zafiyetler barındıran bir Linux dağıtımıdır. Yeri gelmişken: lütfen Metasploitable yüklü hiç bir sanal makineyi internete açmamaya dikkat edin.

Resim 1: Topoloji

Hedef sistemde olduğunu bildiğim bir açığı bulmak için Nmap kullanıyorum. Hedef Metasploitable olduğu için üzerindeki zafiyetleri biliyorum, bu kısmı biraz "hikayenin bütünlüğünü sağlamak" için ekledim. 


Resim 2: Nmap ile hedef sistemde zafiyet barındıran hizmeti ve portu tespit etmek

Unreal IRC hizmetinde var olduğunu bildiğim zafiyeti istismar etmek için Metasploit'u kullanacağım. 

Resim 3: Metasploit'un esprili başlangıç bannerlarından birisi

Metasploit'ta var olan ve Unreal IRC'i hedef alan istismarı kullanıyorum ama meterpreter benzeri bir shell yüklemek yerine bana hedef sistemin komut satırını getirmesini istiyorum. 

Resim 4: Unreal IRC istismarı

Komutlar sırasıyla: 
Kullanacağım istismarı seçmek için: use exploit/unix/irc/unreal_ircd_3281_backdoor
Hedef sistemi belirlemek için: set RHOST 192.168.1.20
Saldırıyı başlatmak için: exploit

Resim 5: Hedef sistemin komut satırına erişim sağlamak

Hedef sistemde birden fazla kullanıcı ve yetkinin tanımlı olabileceğini düşünerek ilk adım hangi kullanıcı ve dolayısıyla hangi yetki ile erişim sağladığımı anlamaya çalışmak olabilir. Böylece bundan sonra atacağım adıma karar verebilirim.

Resim 6: Hedef sistemde ilk adımlar

Yukarıdaki komutlar sırasıyla;
Hedef sistem üzerinde kim olduğumu anlamak için: whoami ve/veya id
Hedef sistem üzerinde neler yapabileceğimi anlamak için: sudo -l
Hedef metasploitable olduğu için bu durum her saldırganın rüyasıdır, ROOT kullanıcısı ile bağlıyım ve hedef sistem üzerinde tam yetkiliyim. Gerçek hayatta arada bir bu durumla karşılaşsak bile çoğunlukla sıradan bir kullanıcı veya bir servisin yetkileri ile bir sisteme bağlandığımız için o anda neler yapabileceğimizi anlamamız çok önemlidir. 

Hedef sistemin nereye bağlı olduğunu ve erişebileceğimiz diğer sistemlerin ne olduğunu anlamak için ele geçirdiğimiz sistemin ağ bağlantılarını anlamak önemlidir. 

Resim 7: ifconfig komutu

 Resim 8: route komutu

Route komutu bize ele geçirdiğimiz sistemin sahip olduğu network routeları konusunda bilgi verdiği için önemli bir adımdır.

Sistem hakkında bize önemli bilgiler verebilecek diğer komutlara aşağıda değineceğim. Ele geçirilen sistemin ne olduğu, nerelere bağlı olduğu ve sizin bu sistem üzerinizdeki yetkilerinizi anlamak saldırının başarılı olup olmayacağı konusunda hayati önem taşır. Bir sızma testi sırasında en kolay ele geçirdiğimiz sistemin hiç bir yere bağlı olmayan bir sıramatik (banka veya hastane gibi yerlerde sıra numarası dağıtmak için kullanılan kiosklar) olduğunu anlamak biraz moral bozmuş olsa da kurum ağına bağlı olduğunu görmek ve üzerinde antivirüs olmadığı için iç ağa saldırmak için istediğimiz yazılımı yükleyebileceğimizi anladığımızda keyfimiz yerine gelmişti.

Resim 9: Ele geçirilen sistem üzerinde çalışan servisleri listelemek

cat /etc/services komutu ele geçirdiğimiz sistemin hangi amaçla kullanıldığına dair önemli bilgiler verir.

Resim 10: env komutu

Ortam değişkenlerini listemelek için kullandığımız env komutu. PATH değişkenine eklemeler yapmak hedef sistemin istediğimiz şekilde davranmasını sağlamak için gerekli olabilir. PWD ise "Print Working Directory", yani içerisinde bulunduğumuz dizini gösterir.
Bu bilgiye doğrudan pwd komutunu kullanarak da ulaşabiliriz.

Resim 11: pwd komutu

Sistemi Unreal IRC servisini istismar ederek ele geçirdiğimiz için /etc/unreal klasöründe olmamız doğal.

Resim 12: Uname ailesi

Ele geçirdiğimiz sistemi daha yakından tanımak için kullanabileceğimiz komutlardan birisi de uname'dir. Bu komutu farklı parametreler ile birlikte kullanarak sistemin adını ve sistem üzerinde daha kalıcı bir varlık elde etmek için kullanılabilecek başka istismarlar olup olmadığını bulabiliriz.

Resim 13: Beklenen an; parola hashleri

Sistem hakkında bilgi toplamak için kullanabileceğiniz komutlar arasında tabii ki en cazip olan "cat /etc/shadow"dur. Bu aslında bir komut değil, /etc/shadow dizininde bulunan dosyanın açılmasıdır. Bu dosyada bizim için önemli olan bilgi kullanıcı parolalarının hash değerleridir. 

İstismar sonrası kullanılabilecek komutları toparlarsak;

whoami: sistem üzerinde kim olduğumuzu anlamak için
sudo -l: sahip olduğumuz kullanıcının yapabileceklerini anlamak için
pwd: bulunduğumuz dizini görmek için
ps aux | grep root: root yetkisiyle çalışan servisleri görmek için
/sbin/ifconfig -a: mevcut ağ bağlantılarını görmek için
route: sistemin network routelarını görmek için
iptables -L: iptables kurallarını görmek için
arp -a: ARP bağlantılarını görmek için
last: Sisteme en son giriş yapan kullanıcılar
users: Sistemde bulunan kullanıcıları listeler



No comments:

Post a Comment

MITRE ATT&CK Gerçek Hayatta Ne İşimize Yarar?

  Rusya kaynaklı siber saldırılar webinarı sırasında üzerinde durduğum önemli bir çalışma vardı. MITRE ATT&CK matrisini ele alıp hangi...