Sunday, September 21, 2014

Akıllı Telefon Güvenliği

Bu “işlere” ilk başladığım zamanlarda ele geçirdiğim bir bilgisayarla ilgili en büyük endişelerimden birisi kullanıcının bilgisayarı kapatıp yatmaya gitmesiydi. Akıllı telefonlar hayatımıza bu kadar girdiğinden beri ise bu endişem ortadan kalktı. Akıllı telefonların da kapsama dahil olduğu sızma testlerinde ise dertlerim daha çok hedefin telefonu şarja takmayı unutmaması veya kullanıcıyı "uygunsuz" bir durumda yakalamakla ilgili. 

Resim 1: Hacklenmiş akıllı telefon (temsili)

Aslında birer bilgisayar olan ve nedense “Akıllı Telefon” diye aşağıladığımız bu cihazlar saldırganların ufkunu genişleten, daha önce hayal bile edemediğimiz şekilde hedefe yaklaşmamızı sağlayan birer saldırı vektörüdür. Bilgisayarınızı taşımadığınız/götürmediğiniz ama telefonunuzun yanınızda olduğu durumları düşünün. Şimdi de günün her anında sizi izleyen veya dinleyen, her konuşmanıza şahit olan, her SMS ve Whatsapp mesajınızı okuyan ve çektiğiniz her fotoğrafı gören biri olduğunu düşünün. Ürkütücü değil mi? Her gün binlerce akıllı telefonun saldırganlar tarafından ele geçirildiğini gösteren araştırma sonuçlarını da göz önünde bulundurursak, bu cihazların güvenliğine ne kadar önem vermemiz gerektiğini anlarız.

Akıllı telefonlarımızın güvenliği sağlamak alabileceğimiz bazı basit tedbirleri hatırlamakta fayda var.

PIN kodu ve ekran güvenlik kodu
Telefonunuzun ana ekranındaki kullanıcı kodu ilk savunma hattınızı oluşturur. Birilerinin telefonunuzdaki verilere, arama kayıtlarınıza veya fotoğraflarınıza izinsiz erişebilmesini engellemek için mutlaka kilit kullanın. Kilidi, telefon belirli bir süre kullanılmadığında, otomatik olarak devreye girecek şekilde ayarlayın.

Telefonunuzun güvenlik ayarlarını bozmayın
Fabrika ayarlarını değiştirmek önemli güvenlik kontrollerinin devreden çıkmasına neden olur. Android cihazınızı rootlamak ve iPhone üzerinde yapılan jailbreak işlemi cihazın üreticisi tarafından yerleştirilen çok önemli güvenlik özelliklerinin devreden çıkmasına ve kullanılamamasına neden olur.

Yedekleyin
Rehber, belge ve fotoğraflar gibi cihazınızın üzerinde bulunan verileri yedekleyin. Yedekleme işlemi için bilgisayarınızı, üreticinin sağladığı yedekleme özelliğini, GSM operatörlerinin sağladığı yedekleme hizmetleri, uluslararası yedekleme hizmetleri veya basit bir hafıza kartı bile kullanılabilir. Böylece telefonunuz çalınır, kaybolur veya bir nedenle bilgilerinize erişemez olursanız kayıp yaşamazsınız.

Sadece güvendiğiniz uygulamaları yükleyin
Her hangi bir uygulamayı indirmeden önce mutlaka araştırın. Uygulamaları sadece güvendiğiniz kaynaklardan indirmek, yayıncının adına dikkat etmek ve uygulamayı arama motorlarında sorgulamakta fayda var. Örneğin bir dönem çok popüler olan “Flappy Bird” oyunu Google Playstore’dan kaldırıldıktan sonra forumlarda ve internet sitelerinde yayınlanan sürümlerinin neredeyse tamamı kullanıcı bilgilerini çalmaya yönelik zararlı yazılım barındırıyordu.

Uygulamaların izinlerine dikkat edin
İndirdiğiniz uygulamanın amacına ve istediği izinlere dikkat edin. Telefonunuzdan özel servis numaralarına (bkz. 900’lü hatlar ve uluslararası özel servis numaraları) yapılacak aramalar size para kaybettirir. Bunun dışında kötü niyetli kişiler tarafından yayınlanan uygulamaların kişisel bilgileri çalmaya yönelik özellikler barındırdığını da unutmamak gerekir.

Güvenlik uygulamalarını yükleyin
Hırsızlığa karşı tedbirinizi alın ve telefonunuzun yerini belirten ve verilerinizi uzaktan silmenize imkan veren bir güvenlik uygulamasını mutlaka yükleyin. Buna ek olarak bir antivirüs uygulamasının da mutlaka yüklü olması gerekir.

İşletim sistemini güncelleyin
Ne kadar söylesem az, akıllı telefon aslında bir bilgisayar. Tıpkı bilgisayarınızda olduğu gibi güvenliğiniz için işletim sistemini güncellemeniz ve üretici tarafından yayınlanan yamaları yüklemeniz gerekiyor.

Kablosuz ağlarda dikkatli davranın
Kablosuz ağlara herkesin bağlanabileceğini unutmayın. Özellikle kalabalık veya popüler mekanların kablosuz ağlarının saldırganlar için çok iştah açıcı hedefler olduğunu belirtmekte fayda var. Kablosuz ağlar üzerinden hassas bilgilerinize veya kişisel bilgilerinizin bulunduğu, alışveriş siteleri, sosyal medya siteleri, iş yerinde kullandığınız uygulamaları ve e-postalarınız gibi yerlere erişirken çok dikkatli olun. Mümkünse bunlara GSM şebekesi üzerinden erişim sağlayın ve halka açık kablosuz ağlardaki kullanımınızı en az seviyede tutun.

Diğer önemli noktalar
Kullanıcı adı ve şifre kullanarak girdiğiniz sitelerden mutlaka “çıkış” linkini kullanarak çıkın
SMS, Whatsapp mesajı veya eposta ile gelen internet bağlantılarına dikkat edin
Kullanmadığınız zaman Bluetooth bağlantınızı kapatın
Satmadan önce mutlaka bilgilerinizi silin (silindiğinden emin olun)
Telefonunuz çalınırsa mutlaka Polis’e haber verin

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



Sunday, September 7, 2014

Zararlı yazılım tespit etmek

Aşağıdaki Kaspersky tarafından yayınlann bir çalışmanın özet haritasıdır. Görüldüğü gibi, 2013 yılında finansal alanda faaliyet gösteren zararlı yazılımların en çok görüldüğü ülkelerin başında geliyoruz.

Resim 1: Ülkemizdeki kullanıcıların %12'den fazlası zararlı yazılım kurbanı. 

Dilimizin döndüğünce sunucular da dahil olmak üzere ağ üzerinde anti virüs yazılımı olmayan makina olmaması gerektiğini ve Android telefonlara bile anti virüs yüklenmesi gerektiğini anlatmaya çalışıyoruz. Ne yazık ki önerilerimiz ancak doktorların "düzenli aralıklarla check-up yaptırın" veya "sigarayı bırakın" demesi kadar etkili olabiliyor. Bu nedenle de destek verdiğim aşağı yukarı bütün ağlarda birkaç tane zararlı yazılım bulaşmış sistem buluyorum.

Engellemek için tedbir alamıyorsak, hiç değilse tespit edebilelim diyerek bir ağ veya sistemde zararlı yazılım olup olmadığını anlamak için kullandığım bazı basit yöntemleri toparlamak istedim.

Temel Göstergeler

  • Sistemlerde ve ağda zararlı yazılım varlığı aşağıdaki temel göstergelerden biri veya birkaçı ile belli olabilir. 
  • Bilgisayarın yavaşlaması: Zararlı yazılım sistem kaynaklarını kullanacağı için sisteminiz yavaşlayabilir.
  • Artan disk kullanımı: Bilgisayarda bir işlem yapmıyorken bile disk ışığının yanıp-sönmesi ve disk kullanımı.
  • Açılırken garip uyarıların belirmesi ve kaybolması: Özellikle dşsk kullanımı ve erişim yetkileri ile uyarıların çıkıp sonra kaybolması. 
  • Sosyal medya hesaplarınızda sizin yazmadığınız mesajların ortaya çıkması
  • Ağ üzerinde kaynağı belli olmayan trafik: Mesai saatleri dışında veya normalde kullanımın az olduğu zamanlarda yüksek trafiğin olması. Bilmediğiniz/kullanmadığınız protokoller üzerinden dışarıyla iletişim kurulması.  
  • Kullanıcıların "internet yavaşladı" şikayetleri: bir şeylerin ters gittiğini en kolay anlayabilecek kişilerdir. Onlardan gelebilecek "bilgisayarım yavaşladı" veya "internet yavaşladı" geri bildirimleri çok önemlidir. 
  • IP adreslerinizin kara listeye düşmesi.


Kullanılabilecek basit bir yöntem
Ağ genelinde birşeylerin ters gittiğini anlamak için yukarıdaki ipuçlarını değerlendirebilirsiniz. Belirli bir sistemin başında olduğunuzda ise, o sistemde zararlı yazılım olup olmadığını anlamak için, aşağıdaki yöntemi kullanabilirsiniz.

Netstat (NETwork STATistics) sistemin gelen ve giden bağlantılarını görüntülememizi sağlayan bir uygulamadır. Netstat ile birlikte kullanabileceğimiz parametreler arasında bizim için faydalı olabilecekler şunlardır:
netstat -a: Tüm bağlantıları ve dinleyen portları gösterir
netstat -b: bağlantıları ve portları onları kullanan uygulama adı ile birlikte görüntüler
netstat -n: port numaralarını gösterir
netstat -o: Bağlantıları ilgili PID (Process Identifier) ile birlikte gösterir

Bir windows sistemde netstat -a konutunu vermeniz siz o anda sistem üzerindeki açık veya dinlemede olan bağlantıların listesini verir. Bu çalışmanın bir miktar sabır gerektiğini söylemekte fayda var ama basit bir yaklaşımla yapılacaklar şunlar:

Öncelikle mevcut bağlantıları ortaya çıkartmamız gerekiyor

Resim 2: netstat -a komutu

netstat -ano ile bağlantıyı kullanan process belirlenebilir. Processler hkkında daha fazla bilgi Windows Task Manager üzerinden elde edilebilir. Bu işlemleri yapmaktaki amacımızının bilgimiz dışında dış dünya ile iletişim kuran yazılımları tespit olmak olduğunu hatırlayarak bu bakış açımızı korumamız gerekiyor.

Resim 3: netstat -ano ile PID'lerin belirlenmesi

Son olarak da bağlantıların hangi uygulamalar tarafından kullanıldığını ortaya çıkartabiliriz.

Resim 4: Bağlantıları kullanan uygulamaların netstat -anb ile belirlenmesi

Resim 4'te gördüğünüz "LISTENING" sistemin bağlantı beklediğini göstermektedir. Buna ek olarak aşağıdaki bağlantı durumları da görülebilir.

  • CLOSED: Bağlantının kapalı olduğunu gösterir
  • ESTABLISHED: Bağlantı kurulmuş
  • TIME_WAIT: Bağlantı açık ancak kullanılmıyor

Bundan sonra yapılacak şey dikkatli bir şekilde "olmaması gerekeni" bulmaktır.

Kullanımda görünen portları ve bu bağlantıları kullanan uygulamaları Google'da aratarak bilinen bir zararlı yazılım olup olmadığını bulmak çoğunlukla mümkün olmaktadır.