28 Ağustos 2016

Kali Linux - Bölüm-4: Shell Scripting

Shell scripting konusu bir Unix/Linux sistem yöneticisi için vazgeçilmez bir konu. Çünkü scriptler her defasında aynı komutları defalarca yazmaktan kurtardığı gibi aynı zamanda uygulama ortamına benzer bir ortam sunarak farklı durumlarda farklı işlemleri otomatik olarak gerçekleştirmeyi de mümkün kılıyorlar.

21 Ağustos 2016

17 Ağustos 2016

Kali Linux - Bölüm-2: Shell Ortamı

Linux işletim sistemleri ile birlikte masaüstü ortamları da geliyor, ama linux’un (ve tabi Unix’in) başından itibaren ve halen en güçlü kullanım paneli shell ortamıdır. Bir Unix sistem yöneticisinin tüm işlerini GUI ortamlarında halletmesi çok zordur. Bu nedenle shell ortamını iyi tanımamız lazım.

14 Ağustos 2016

Kali Linux - Bölüm-1: Kali Nedir?

Kali bir (genel amaçlı konularda Debian paketleri baz alınarak oluşturulmuş) Linux dağıtımıdır, ancak genel amaçlı olmayıp özellikle sızma testi, adli bilişim ve tersine mühendislik amaçlarıyla kullanılmak üzere özelleştirilmiştir. Bu alanla ilgilenen hemen herkesin malumu olmakla birlikte bu alana yeni ilgi duyanlar için en başta netleştirmekte fayda gördüğüm bir konu Kali içinde yer alan araçların kendi geliştiricileri olduğu, Kali ekibinin bu araçlar içinde seçtiklerini (tabi lisans hakları buna izin veriyorsa) Kali dağıtımına dahil ettikleridir.

Kali tüm araçların tekrar incelenmesi ve neredeyse sıfırdan bir sızma testi platformu olarak geliştirilmiş olmasına rağmen yine aynı grup tarafından geliştirilmiş olan Backtrack dağıtımının mirasçısıdır. Kali’nin araçlar açısından genel eğilimden farklılaştığı bir nokta sadece DOS, DDOS ve anonim internet erişimine özel araçları genellikle yasal projelerde kullanılmadıkları gerekçesiyle dışlamış olması ve barındırmamasıdır.

Resmi sitesi https://www.kali.org olan kali dağıtımı ile ilgili dokümantasyon ve indirme linklerine bu siteden erişebilirsiniz.

Debian standartlarına bağlı kalınarak özelleştirilmiş bu dağıtımın kernel seviyesinde ve güvenlik araçları uygulama kodları seviyesinde gerekli görülen pek çok irili ufaklı özelleştirme yapılmıştır. Yani herhangi bir linux işletim sistemi alınarak üzerine araçlar basit bir şekilde kurulmamıştır. Çoğunluğu açık kaynak kodlu araçlardan oluşan güvenlik yazılım paketleri ile ilgili bilgi ve yama linklerine http://tools.kali.org web sitesinden ulaşabilirsiniz.

Kali açık bir platformdur. Kali’nin kernel’ını ve Kali üzerinde kurulu güvenlik araçlarından kaynak kodu mevcut olan paketlerin kaynak kodlarını Debian uygulama indirme araçları ile indirip ihtiyaçlarınıza göre değiştirerek tekrar derleyebilirsiniz. Buna pek ihtiyacınız olmazmış gibi görünebilir, ancak özellikle sızma testi bulgularınızın false pozitif olduğu iddia edildiğinde tespitinize yol açan aracın nasıl çalıştığını anlamak isteyebilirsiniz. Bazı durumlarda da aracı özelleştirme ihtiyacınız olabilir. Örneğin kullanıcı tespiti açıklığını bulan bir araç kısıtlı sayıda kullanıcıyı çekiyordur ama siz daha fazla kullanıcı tespit etmek isteyebilirsiniz.

Bununla birlikte doğası itibarıyla pek çok saldırı aracı barındıran bu dağıtımın geliştirici kadrosu çok geniş tutulmamış, tüm paketler geliştiriciler tarafından ve de ekip tarafından imzalanmakta, paket dağıtım repository’leri de en azda tutulmuştur. Bu açıdan açık platform özelliği, güvenlik ihtiyacı nedeniyle, kısıtlanmış gibi görülebilir. Ayrıca source listenize diğer repository’lerin eklenmesi hem güvenlik hem de sistemin toplu olarak fonksiyonalitesinin bozulmaması için önerilmemektedir. Zira pek çok farklı güvenlik aracının farklı kütüphane versiyonları kullanması ve kurulumları sırasında yapabilecekleri değişiklikler birbirlerini olumsuz etkileyebilir. Kali’yi tüm bu kurulum ve birlikte çalışma uyum problemlerinden arındırılmış bir platform olarak düşünebilirsiniz. Eğer standart bir linux dağıtımı üzerine farklı araçlar kurmak veya kaynak kodundan derlemek gibi bir deneyiminiz olduysa bu söylenenler daha iyi anlaşılacaktır. Uzun sözün kısası elinizin altında Kali olsa da sıradan bir yazılımın denenmesi amacıyla bile Kali’nin kullanımı önerilmemektedir. Bu sadece mevcut yazılımların çalışmasını etkilemesi açısından değil kuracağınız yazılımın da çalışmaması riskinin bulunmasından kaynaklanmaktadır.

Kali’nin diğer linux dağıtımlarından belli başlı farkları şunlardır:

  • Tek kullanıcı ve “root” kullanıcısı olarak kullanılmak üzere tasarlanmıştır. Bu yaklaşım normal sunucular için güvenlik açısından sakıncalıdır. Ancak kali’de kullanılan araçların önemli bir kısmı root erişim haklarına ihtiyaç duyurmakta ve her defasında sudo yapmaktan kurtulmak için bu yaklaşım kullanılmaktadır.
  • Kali genel amaçlı bir dağıtım değildir ve bu nedenle ağ servisi vermesi de beklenmez. Bu yüzden sistem başlangıç konfigürasyonları tüm servisler kapalı olacak şekildedir. Elbette siz servisleri açabilir ve bunları her reboot işleminden sonra aktif hale gelecek şekilde ayarlayabilirsiniz.
  • Kali kablosuz ağ testleri için özelleştirilmiş bir kernel kullanmaktadır. Yani ayrıca özel sürücüler kurma ihtiyacı yoktur.
Kali’yi Intel ve ARM işlemci mimarileri için derlenmiş, ISO, VMWare ve VirtualBox imajları halinde indirebilirsiniz. Kali’nin de sağladığı imkanlar sayesinde masaüstü özelleştirilmiş, barındırdığı paketler sınırlanmış, kendi geliştirdiğiniz scriptleri içeren v.d. özelleştirmeler ile kendi imajlarınızı da oluşturabilirsiniz. Tabi bu özelleştirmeyi yine Kali’nin web sitesinden edineceğiniz bilgiler, Kali’nin sağladığı scriptler ve bir cross compiler toolchaing kullanarak ARM mimarisi için de yapabilirsiniz.

Raspberry Pi gibi ARM tabanlı gömülü sistemlere Kali kurulumu için şu linkten faydalanabilirsiniz: http://blog.btrisk.com/2015/09/raspberry-pi-kali-kurulumu.html

Kali’yi live olarak bootable ISO imajı ile bir USB sürücüden veya sistem üzerine kurarak kullanabilirsiniz. Tüm bu alternatiflerle ilgili detaylı bilgiyi Kali’nin dokümantasyon sitesinden bulabilirsiniz.

Kali ekibi dağıtımların bütünlüğü konusunda üzerine düşeni yerine getirmiş durumda, imzaların doğrulanması ise kullanıcıların üzerine düşüyor. Doğrulama ile ilgili prosedür Kali’nin downloads linkinde dokümante edilmiş.

Kali dağıtımı OSCP sertifikasyonunun hamisi olan ve bir eğitim şirketi olan Offensive Security şirketi tarafından desteklenmektedir. KALI LINUX markası Offensive Security şirketine aittir.

Kali’yi Öğrenmek Ne Demektir?

Hacking’in saldırı araçları kullanmaktan ibaret olduğu algısı çok yaygındır ve Kali gibi bir ortam bu algıyı güçlendirmektedir. Ancak araçlarla oynamak, fonksiyonalitelerine aşina olmaya çalışmak sadece hızlı bir giriş yöntemidir.

Asla unutmayın gerçek bir hacker, Kali gibi bir platformu oluşturabilen, teknolojinin nasıl çalıştığını merak eden ve en detaylı seviyede inceleyebilen, güvenlik araçları geliştirerek geliştirdiği test veya saldırı metodlarını otomatize edebilen kişidir. Çünkü araçlar belli bir amaç için vardırlar, amacı anlamadan aracı geliştiremezsiniz. Hacker’ın amacı var olan teknolojileri anlayıp bu teknolojilerdeki mimari açıklıkları kullanmak, teknolojilerdeki yetersiz konfigürasyonları test edip bunları kullanmak ve güvenlik kontrollerini otomatik araçlar vasıtasıyla aşmaya çalışmaktır. Tabi sosyal mühendislik amacıyla belli araçlar geliştirmek de yine amaçlara hizmet etmek için yapılmaktadır. Sadece araçları ve kabaca ne yaptıklarını anlamak sizi bir adım öteye götürür, ancak ikinci seviyeye çıkmak istiyorsanız işletim sistemi, işlemci mimarisi, web sunucusu, veritabanı sunucusu gibi temel teknolojileri, ağ protokollerini öğrenmeli ve mutlaka kaynak kodu sevmelisiniz.

Güvenlik sektöründe karşılaştığım pekçok kişi yazılım yapmak istemediği için bu alanı seçtiğini söyler. Gerçek şu ki yazılımı anlamayan bir kişi ancak bir araç operatörü olabilir.

Bu nedenlerle Kali’yi öğrenmek demek aslında güvenlik yetkinliği olarak size zannedildiği kadar çok şey katmaz. Ama işinizi biliyorsanız size ciddi zaman kazandırır. Tabi Kali’nin geliştirme ekibi içinde yer almak istiyorsanız, o zaman çok daha farklı bir boyuta geçersiniz ki bu boyut da pentest uzmanlığından daha çok bir sistem ve yazılım uzmanlığı yolu anlamındadır. Gerçek şu ki iyi bir hacker’ın aynı zamanda iyi bir sistem ve yazılım (ve elbette ağ) uzmanı olması gerekmektedir, ama bu çok uzun bir süreç gerektirmektedir.

Bunlarla birlikte Kali’yi etkin biçimde kullanabilmek için mutlaka ve mutlaka en azından temel seviyede Linux işletim sistemi kullanım ve yönetim yetkinliğine sahip olmak gereklidir. Bu yüzden bu makalenin teknik içeriğinin önemli bölümü temel linux bilgisine yöneliktir. Evet, script kiddie (hacker terminolojisinde araç kullanarak hava atmaya çalışan kişilere verilen ad, bir diğer deyişle hacker ergeni) olmak için bile temel linux bilgisine ihtiyaç var.

Kali’nin Kurulumu

Kali’nin kurulumu ile diğer linux dağıtımlarının kurulumu ve hatta Windows kurulumu arasında pek fark yok. Kali dağıtımı daha önce de belirttiğimiz gibi ISO, VMWare ve Virtual Box imajları olarak elde edilebilir. Kali ISO imajları aynı zamanda bootable, yani live olarak işletim sistemini başlatabilmeye imkan veren imajlar. Dilerseniz bu imajları DVD veya USB belleğe de (Windowsda Win32 Disk Imager, linuxda dd gibi araçları kullanarak) kopyalayarak bilgisayarınızı live olarak Kali Linux işletim sistemi ile başlatabilirsiniz. Live işletim sistemi demek aslında dosya sistemi bellekte bulunan ve yazdığınız verilerin işletim sistemi kapandığında kaybolacağı bir işletim sistemi demek. Bunun dışında normal bir işletim sisteminden hiçbir farkı yok.

Kali’yi diskinize yazarak kalıcı yapmak isteseydiniz izleyeceğiniz temel adımlar şunlar olurdu (aynı adımlar bir sanal makine kurulumunda da geçerli):

  • Diskin partition tablosunun oluşturulması (ve diskin ilk sektörüne yazılması)
  • Partition’ların ve üzerlerine kurulacak file system’lerinin belirlenmesi (ve işletim sisteminin kurulacağı partition’ın belirlenmesi)
  • Partition’lar için file system formatlama işleminin gerçekleştirilmesi
  • Kurulum için kernel imaj dosyasının ve diğer işletim sistemi uygulama ve kütüphanelerinin formatlanmış filesystem’e yazılması
  • İşletim sistemi için zaman dilimi yerelleştirme, dil, klavye formatı v.b. konfigürasyonun yapılması
  • İşletim sisteminin boot edilmesi

Bu işlemler için birer ekran görüntüsü almayı pek anlamlı bulmadım, çünkü ne yaptığınızı bilmemeniz durumunda görüntünün pek bir faydası yok, ayrıca kurulum işlemi sizi yeterince yönlendiriyor. Ekran görüntülerini koysam da bir yıl içinde aynı işlemleri yapan farklı ekran imajlarıyla karşılaşacağınız farklı bir versiyon çıkmış olacak.

Yukarıdaki işlemlerde sizin müdahalenizi gerektirecek kısımların önemli oranı disk yapılandırmasıyla ilgili. Kısaca partition ve file system konularının üzerinden geçelim. Ham (raw) bir disk sektör ve cluster adı verilen birimlerle büyüklüğü ifade edilen tertemiz bir tarlaya benzer. İşletim sisteminin diski anlamlandırabilmesi için gerekli ilk veri yapısı partition tablosudur. Bu tablo diskin ilk sektöründen başlar, partition’ın tipi yine ilk bölümlerde belirtilir ki işletim sistemi partition tablosunu da içeren veri yapısını doğru yorumlasın. Partition tablosu diskin hangi bölümlerinin hangi partition’lar olarak tanımlandığını / bölümlendiğini, her bir partition tablosunda hangi filesystem bulunduğu (ör: FAT, FAT32, NTFS, ext, v.d.), hangi partition’ların sistem partition’ı olduğu (yani bootable bir kernel imajı barındırdığını) v.d. bilgileri içerir. Bilgisayar (donanım) ilk açıldığında BIOS kodu bootable cihaz sırasının üzerinden geçerek (ör: CD, USB, HDD, v.d.) içinde veri bulunan ve bir partition tablosu barındıran ilk sürücüye erişerek sistem partition’ını bulmaya ve bu partition’daki işletim sistemi kernel’ını yüklemeye çalışır. İşletim sistemi hafızaya yüklendikten sonra partition tablosu partition’ların yerlerinin tespiti ve içlerinde barındırdıkları filesystem’e göre kullanıcıya sunulmasını sağlar. Filesystem temel olarak kendine ayrılan partition sınırları içinde dizin ve dosya hiyerarşisi ve dosyaların işgal ettiği alanların adreslerini takip etmeye yarayan veri yapıları barındırır. Bunlar FAT gibi basit bir dosya sisteminden NTFS gibi karmaşık bir dosya sistemine kadar farklı kuralları olan veri yapıları olabilir. İşte bir işletim sistemini kurarken eğer ham bir disk kullanıyorsanız önce diski yapılandırma ihtiyacınız bu sebeplerden kaynaklanmaktadır. İşletim sisteminin ayağa kalkabilmesi ve kullanıcıya dosyalarını yazabileceği ve okuyabileceği bir alan sunabilmesi için önce diskin yapılandırılmış olması gereklidir.

Aynı bilgisayar üzerinde birden fazla bootable işletim sistemi kurma konusuna burada girmeyeceğim, ancak bu işlem DOS partition tablosunda birden fazla partition’ının sistem partition’ı olarak işaretlenmesi ve bir loader uygulaması ile mümkün.

Linux Hakkında Temel Bilgi

Kali bir linux dağıtımı olmakla birlikte Linux’u öğrenmek için doğru bir platform olduğu söylenemez. Linux hakkında temel deneyimleri edinmek için Ubuntu, Debian, Mint gibi dağıtımlar tercih edilebilir.

Bununla birlikte Kali’yi etkin olarak kullanmak için temel linux kullanıcı ve sistem yönetici bilgisine sahip olmak gereklidir.

Linux hakkında hakimiyetinizi en üst düzeye taşımak istiyorsanız Linux From Scratch (http://www.linuxfromscratch.org/) projesi herhalde en doğru yerlerden birisi olacaktır. Ama başlangıç olarak genel işletim sistemi işlemlerinin Linux üzerinde nasıl yapıldığından ve Linux’a özel bazı temel bilgileri belirterek bir giriş yapabiliriz.

Kali Linux hakkındaki bundan sonraki makalelerde Debian paketlerinden faydalanılarak oluşturulmuş olan Kali dağıtımı hakkında detaylı bilgiye ulaşabileceksiniz.