25 Aralık 2016

18 Aralık 2016

26 Kasım 2016

Kali Linux - Bölüm 10: Linux'u Router Haline Getirme

Linux bilgisayarınızın bir router gibi davranması gereken durumlara örnekler sunucunuz üzerinde bir VPN servisini çalıştırma veya sunucunuzu bir erişim noktası (Access Point) olarak yapılandırma durumlarınız verilebilir. Böyle bir durumda sadece routing değil kendi networkünüzdeki diğer cihazlarda da routing ayarları yapma derdinden kurtulmak için NAT (Network Address Translation) ihtiyacınız da olabilir. Böylece sizin ağınızdaki cihazlar sizin aracılığınızla iletilen paketlerin hangi kaynak IP adresinden geldiğini ve buna göre yanıtları nereye döneceklerini düşünmek zorunda kalmaz, sizin sunucunuz kaynak IP adresini NAT’layacağı için gönderilen paketlerin yanıtları da sizin üzerinizden geri döner.

17 Kasım 2016

Kali Linux - Bölüm 9: Kablosuz Ağ Yönetimi

Kali linux’un geliştiricileri kablosuz ağ sürücülerini mümkün olduğunca çok kablosuz ağ adaptör cihazını desteklemeye çalışmakta, Kali linux’un kernel’ında da paket injection için gerekli yamaları uygulamaktadır. Dolayısıyla Kali kablosuz ağ testlerinde bizi yeterince destekliyor, ancak kullanacağımız kablosuz ağ adaptörünün desteklenen chipset’lerden birisini içermesi önemli. Özellikle replay saldırıları cihazların normal davranışına uygun değil, bu yüzden bu amaçla geliştirilmiş olan sürücülerin desteklediği bir chipset kullanmak zorundayız. Kali’nin hangi kablosuz ağ adaptörleri ile uyumlu olduğuna dair internette ürün listeleri bulabilirsiniz.

17 Eylül 2016

07 Eylül 2016

04 Eylül 2016

Kali Linux - Bölüm-6: Manuel Sayfaları (Man Pages)

Manuel Sayfaları (man pages)

Man page’leri Unix ve Unix’in mirasçısı olan Linux’un en güzel yanlarından birisi. Biraz tarihçesinden bahsetmek gerekirse ilk iki yıl Unix projesi ile ilgili hiçbir dokümantasyon yapılmamış. İlk man page’leri proje ekibi yöneticisinin (Doug McIlray) zorlamasıyla Unix’in ilk geliştiricilerinden Dennis Ritchie ve Ken Thompson tarafından yazılmış.

01 Eylül 2016

Kali Linux - Bölüm-5: Shell History

Shell Tarihçesi (History)

“bash” diğer shell’lerde de olduğu gibi, kullanıcıyı daha önce girilmiş olan komutları tekrar tekrar yazmaktan kurtarmak için bir history imkanı sunar. Kullanıcı daha önce yazdığı komutları tekrar yazmadan kullanabilmek için ok tuşları ile önceki komutlar arasında gezinebilir (ok tuşuna bastıkça komut satırında daha önce yazılmış olan komutlar görüntülenir).

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.

21 Temmuz 2016

Pentest Post Exploitation Aktiviteleri

Post exploitation, hedef sisteme erişim sağlandıktan ve yetkiler yükseltildikten (root) sonra başlayan bir süreçtir. Yani erişim sağladıktan sonra bu erişimin kalıcı hale getirilmesi ve sürdürülmesi amaçlanır. Bir kere girebildiğimiz bir sistemi her seferinde tekrar açıklığı kullanıp hacklemek uzun bir uğraş ister ve sistemdeki bu açık farkedilip kapatılırsa sisteme giriş hakkını kaybetmiş oluruz başka bir açık bulmayı denemeye başlarız. Bu sıkıntılı süreç yerine genellikle bir kere hackleyip sistemi ele geçirdiğimizde kendimize istediğimiz zaman girebileceğimiz bir giriş olanağı oluştururuz.

11 Temmuz 2016

MySQL Log Ayarları

Mysql Server hangi aktivitelerin meydana geldiğini anlamamız için bazı log türleri sunmaktadır. 

  • Error Log : Mysqld başlatılırken çalışırken veya dururken meydana gelen hatalar
  • General Query Log: Kurulan client bağlantıları ve clienttan gelen sorgular(show, select)
  • Binary Log : Delete, update, create, drop gibi veriyi değiştiren sorgular
  • Relay Log : Replication Master Server tarafından gönderilen veriyi değiştiren sorgular
  • Slow Query Log: Çalışması long_query_time değerinden uzun süren sorgular
  • DDL log : DDL sorgularınca gerçekleştirilen Metadata işlemleri
Default olarak Windowsta Error loglarının aktif olması haricinde hiçbir loglama açık değildir. Loglamayı aktif hale getirebilmek için konfigürasyon dosyası açılır: '/etc/mysql/my.conf' (debian) 


Gösterilen satırlardan # işareti kaldırılarak aktif hale getirilmelidir.

Aktifleştirme sonrası mysql servisine restart atılması gereklidir. Sonrasında gösterilen dizinlere gidilerek Mysql Server'a yapılan erişimler ve sorgularla ilgili logların düştüğünü görebiliriz.


General Query loglarında client tarafından gönderilen genel sorgular bulunur.


Binary Loglarda ise veriler üzerinde yapılan değişiklikler yazılır. Binary logları okuyabilmek için 


mysql ile gelen mysqlbinlog aracı kullanılabilir. Mysqlbinlog --parameters [file_name]

Uzak bağlantıyla yapılan bir erişim aşağıdaki görüldüğü gibi 'General Query Log' dosyasına aşağıdaki gibi bir kayıtla görüntülenmektedir.


Konfigürasyon dosyası üzerinde yaptığımız bu değişiklikleri, eğer server'a erişimimiz yok ise,  mysql konsolu aracılığıyla da yapabiliriz. Buna benzer konfigürasyonlar için Mysql içerisinde değişkenler(VARIABLES) oluşturulmuştur. Bu değişkenler SHOW VARIABLES; komutu ile 


incelenebilir. 
NOT : Logların kayıt edilebileceği muhtemel hedefler log dosyaları veya mysql içerisinde general_log, slow_log tabloları olabilir.
--log_output: değişkenine ile FILE, TABLE, NONE seçeneklerini atayabiliriz.FILE ve TABLE birlikte de seçilebilir. Default seçeneği FILE'dır.
--general_log : değişkeni ile general query loglanmasını aktif veya pasif hale getirir.
--general_log_file : ile kayıt dosyalarının yerini belirleriz.
--slow_query ve --slow_query_log değişkenleride benzer mantıkta çalışır.
--sql_log_off değişkeni ile güncel bağlantı için loglama kapatılabilir(ON) veya açılabilir(OFF).
--log-error[=filename] değişkeni ile error loglarının kayıt edileceği dosya belirlenebilir.
--log_error_verbosity değişkeni error loglarının ayrıntı seviyesini belirlemede kullanılır. 1 (Errors only), 2 (Errors and Warnings) , 3 (Error,Warnings and Notes) 
--log_syslog değişkeni ile error loglarının sysloga gönderilmesi aktif edilir. (ON)
--log_syslog_facility değişkeni ile sysloga gönderilen error loglar için facility belirlenebilir.
--expire_log_days ve max_binlog_size değişkenleri binary loglar için max dosya boyutu ve tutulma süresi gibi değişkenleri içerir.
NOT : Bu değişkenlere değer ataması yapmak için mysql konsolunda
        SET [GLOBAL] VARIABLE = VALUE ; şeklinde komut çalıştırılır. Örneğin
SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';


Kayıtların dosya yerine tabloda tutulması için değişkene atama yapalım.
Log kayıtlarının dosya yerine tabloda tutulmasının avantajları ;

  • Log girdileri için standart format olması , bu formatları görüntülemek için şu komutlar çalıştırılabilir.
    SHOW CREATE TABLE mysql.general_log;


    SHOW CREATE TABLE mysql.slow_log;
  • Log kayıtlarına SQL sorguları aracılığıyla da ulaşma imkanı doğar. Belirli kriterleri listeleme gibi kolaylıklar oluşur. Örneğin sadece belirli bir client için log içeriği sorgulayabiliriz. Bu sorgulama imkanları bize dosya taramasından daha kullanışlıdır.
  • Doğrudan db server hostunda dosya sistemine erişim sağlamak yerine bağlantı kurabilen tüm clientlar (log tablolarına erişim izinleri varsa) sql konsolundan erişim sağlayabilirler.
Aşağıdaki Brute force saldırı örneği incelenecek olursa aynı client üzerinden gelen çok sayıda geçersiz login denemesi görülmektedir. Denemelerin kesildiği yerde ise saldırganın doğru şekilde giriş yaptığı yani parolayı bulduğu görülmektedir.


Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.

28 Haziran 2016

MSSQL Server Log Ayarları

SQL server audit işlemi için 2 farklı loglama biçimi sunmaktadır. Bunlar Windows Event Log ve Binary File formatlarıdır. Windows event log formatında kayıt yapmak mantıklı gözükmektedir. Çünkü birçok log yönetim çözümü bu formatı desteklemektedir. Ancak güvenlik ve performans açısından daha çok önerilen yöndem binary file formatı ile kayıt etmekdir. Dosyaya yazmak daha hızlı olduğu için performans sebebiyle Windows tarafından da bu yöntem önerilir. Bu kayıtların ele geçirilmiş yönetici hesaplarından gelebilecek olası saldırılar gibi çeşitli sebeplerle dosyalar halinde ve farklı bir server üzerinde tutulması en güvenli ve hızlı yol olacaktır.

Audit Konfigürasyonu
Audit seçeneği Express sürümlerde bulunmamaktadır. Anlatımda SQL Server Enterprise


2008 sürümü kullanılmıştır. Audit konfigürasyonu yapmak için SQL Server Management Studio açılır , 'Object Explorer' üzerinde 'Security -> Audits' yolu izlenir. 'Audits' nodu üzerine sağ tıklanıp 'New Audit' seçeneği seçildiğinde karşımıza 'Create Audit' pencerisi çıkar.

'Audit name' kısmına Audit objesinin ismi yazılır. 'Destination' kısmında File, Security log,  Application log seçenekleri seçilebilir. File seçeneğini seçerek dosyanın kayıt edilmesi gerektiği yeri 'File Path' bölümünde gösterebiliriz. Security ve Application log seçenekleri ile ise logların windows event log formatında olması sağlanabilir. Bu işlemden sonra hangi olayların loglanacağını belirlemek için Object Explorer üzerinde 'Server Audit Specification' nodu üzerine sağ tıklanıp 'New Server Audit Specification' seçeneği seçilir. 'Audit Action Type' içerisinden loglanmasını 

istediğimiz olaylar seçilir. 

Burada bir önceki bölümde oluşturulan Audit objesine verilen isim seçilmelidir. Güvenlik ihlallerinin tespiti açısından mümkün olduğunca fazla bilgi olması işimize gelir ancak performans ve bazı diğer sebeplerden dolayı bu çoğu zaman mümkün olmamaktadır. Güvenlik açısından bakıldığında aşağıdaki olayların işaretlenmesi genel olarak önerilmektedir:
  • FAILED_LOGIN_GROUP 
  • SUCCESSFUL_LOGIN_GROUP 
  • DATABASE_OBJECT_CHANGE_GROUP
  • DATABASE_PRINCIPAL_CHANGE_GROUP 
  • SCHEMA_OBJECT_CHANGE_GROUP 
  • SERVER_PRINCIPAL_CHANGE_GROUP 
  • LOGIN_CHANGE_PASSWORD_GROUP 
  • SERVER_STATE_CHANGE_GROUP 
Bu şekilde kayıt ettikten sonra Audit Object ve Audit Specifications nodelarına sağ tıklanarak 'Enable' seçeneğine tıklanarak aktif hale getirilmelidir. Artık belirttiğimiz olayların logları tutulacaktır.  

Audit Act'on Gruplari 
  • Server-level : Bu olaylar yönetimde yapılan değişikliklerini, logon/logoff gibi server operasyonlarıyla ilgili olaylardır.
  • Database-level : Data manipulation language ve Data definition language operasyonlarını kapsar. Database, tablo, fonksiyon, stored procedur gibi schema objelerini ilgilendiren olaylardır. Örneğin SELECT, ALTER gibi SQL komutlarını loglamak için 
  • Audit-level : Auditing process'iyle ilgili olayları içerir.
Destination olarak Windows Event Log seçeniğini kullandığımızda kayıt edilen loglara erişmek için Object Explorer üzerinde 'Management' nodu içerisinde 'SQL Server Logs' başlığı altında



Windows logları görüntülenebilir. Örneğin aşağıda örnek bir brute force kayıtlarını inceleyebiliriz.

Destination olarak file seçeneği seçildiğinde Binary File formatı geçerli olur ve belirtilen adrese log dosyaları yazılır. Bu dosya dizin üzerinden erişilip açılırsa binary formatta olduğu için okunamaz. Okumak için yine Object Explorer üzerinde Security -> Audits yolu takip edilir ve oluşturduğumuz Audit objesine sağ tıklanarak view audit log seçeneğine tıklanır.


Referanslar
https://www.manageengine.com/products/eventlog/help/getting-started/enable-mssql-audit-logs.html
https://msdn.microsoft.com/en-us/library/cc280663.aspx

Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.

21 Haziran 2016

Jailbreak Nedir?

Ios Unix temelli bir işletim sistemidir. Bu anlamda kullanıcılar kısıtlı olan yetkilere sahiptirler. Unix tabanlı bu işletim sisteminde yönetici hesabına sahip olunabilmektedir. İşte bu işleme jailbreak olarak tanımlanır. Jailbreak, birçok müdaheleye kapalı olan ios işletim sistemini çeşitli müdahaleye ve yazılımsal özellik kazandırılmasına imkan tanır. Apple bunu onaylamasada jailbreak etkisiyle bir çok özellik ios’un bir sonraki sürümlerine eklediğini görmekteyiz. 

14 Haziran 2016

Cisco IOS Log Konfigurasyonu

Network yöneticileri için hataların tespitinde ve güvenlik ihlallerinin incelenmesinde log kayıtları önemlidir. Cisco switch, router gibi cihazlarda çalıştırdığı IOS işletim sistemi ile kullanışlı log mekanizmaları sunmaktadır. Bu log mesajları 5 farklı şekilde oluşturulabilir:

06 Haziran 2016

31 Mayıs 2016

Wireless Şifre Kırma (WEP)

WEP (Wired Equivalent Privacy) IEEE 802.11 wireless networkleri için kullanılan bir şifreleme algoritmasıdır. Uzun süre boyunca wifi şifrelemesinde kullanılmıştır. 2003 yılında barındırdığı zafiyetler sebebiyle yerini WPA algoritmasına bırakmıştır. Günümüzde destekleyen cihaz sayısı giderek azalmış olmakla birlikte, nadiren de olsa WEP algoritması kullanan modemlerle karşılaşmaktayız. 

Bu makalede WEP algoritmasının kolayca kırılabildiğinin ve temel konseptin gösterilmesi amaçlanmıştır. Temel mantığı hava ortamında akış yapan internet paketlerinin incelenerek ARP sorgularının IVs (Initialization Vector) 'lerle modeme gönderilmesi üzerine olacaktır. ARP Protokolü ve paket yapısını biliyor olmak önemlidir. Bu test için Aircrack aracı kullanılacak olduğu için kurulumun yapılması gereklidir. Kali linux üzerinde default kurulu geldiği için live cd veya sanal makinede kali üzerinde de çalışılabilir.

Gereklilikler ;
  • Aircrack tarafından desteklenen bir wireless kartı olması ayrıca kurulu driverların injection yapabilmesi gerekir. Desteklenen wireless kartları listesini linkten kontrol edebilirsiniz ;  http://www.aircrack-ng.org/doku.php?id=compatibility_drivers
  • Access Point yada modem'e paketleri rahat gönderip alabilecek mesafede yakın olmamız önemlidir. Access Point'ten sinyal alıyor olmak her zaman doğru uzaklıkta olduğumuzu göstermez, paket alabilecek uzaklıkta olabiliriz ama bilgisayarımızın wireless kartları Acces pointler kadar güçlü değildir, bizimde gönderebiliyor olduğumuzdan emin olmamız gerekir. Bunun için paket gönderebilecek kadar yakın olmakta gerekecektir.
  • ARP Request yakalamak istediğimiz için networke bağlı en azından bir kullanıcı (client) olması gerekecektir.

Hedefin Belirlenmesi ;
1) Öncelikle bilgisayarımızda bulunan wireless adaptörümüzün çalıştığını ve geçerli olduğunu görmek için iwconfig komutunu kullanırız.

Biz bu test için wlan1 interface'indeki adaptör kullanacağız. Farklı cihazlar için bu değişebilir, kendi cihazınızda yazan interface'i kullanmanız gerekir.

2) Wireless adaptörünü airmon-ng aracı ile monitor moda alarak havada akan tüm paketlerin alınması sağlanır.


mon0 isminde yeni bir interface oluşturuldu. Dinlemeyi bu interface'i kullanarak yapacağız. Normalde wifi kartımız sadece kendisine gelen (varış adresi olarak kendisinin adresi yazılmış) paketleri alır. Ancak monitor moduna aldığımızda bize ait olmasa bile tüm paketleri dinler.

3) Sırada hedefimizi belirlemek için airodump-ng aracı ile trafiği dinlemeye başlayacağız.


Hedefimiz HackMe ismindeki Acces Point olacaktır.

4) Kendi cihazımızın MAC adresini not edelim. (ifconfig komutuyla)


Elde Edilen Bilgiler;
  • Kendi cihazımızın MAC adresi = 00:1A:2A:00:EA:A5
  • Access Point BSSID (Hedef Mac Adresi) = E0:19:1D:00:0C:BB
  • ESSID (Wireless Network Adı) = HackMe
  • Channel = 1
Hedef Access Point cihazına göre bu bilgiler uygun bir şekilde toplanmalıdır.

Wireless Driver'ında Packet Injection Testi


Wireless kartımız için kullandığımız driver'ın injection yapabiliyor olması gerektiği yukarıda bahsedilmişti. Bunu test ederek hem yeterli uzaklıkta olduğumuzu hemde injection yapabildiğimizi görebiliriz.

# aireplay-ng -9 -e HackMe -a E0:19:1D:00:0C:BB mon0
komutu yardımıyla testi gerçekleştiririz.
-9 = injection test
-e = essid
-a = hedef AP mac adresi
anlamlarına gelmektedir.



IV's Dinlemeye Başlama


Airodump aracı hedef Access Pointe giden IVs'leri yakalamak için başlatılır.
#  airodump-ng -c 1 –bssid  E0:19:1D:00:0C:BB -w Output mon0
-c  = channel
-w = yakalanan paketlerin kayıt edileceği dosya


Görüldüğü gibi networke bağlı bir cihaz bulunmaktadır. Data kısmında toplanan verilerin sayısı görülmektedir. Bu sayının en azından 5000 civarına ulaşmasını beklememiz gerekmektedir. Eğer beklemek istemiyorsak aireplay aracını kullanarak  fake authentication yapabiliriz.

Access Point'in gelen paketleri kabul etmesi için gönderen MAC adresiyle daha önceden eşleşme yapmış yani tanıyor olması gerekir. Tanımadığı mac adresinden gelen paketler için  yeni IVs oluşturmayacaktır. O yüzden networke dahil olmuş bir cihazın MAC adresini kullanarak paket gönderebiliriz. Biz tanıdığını bildiğimiz bir MAC adresinden giden ARP paketlerini yakalayıp birçok kez o paketi tekrar göndererek her seferinde yeni IVs oluşturmasını sağlayacağız.

#  aireplay-ng -1 1 -e HackMe -a E0:19:1D:00:0C:BB -h 80:BE:05:ED:9D:A5 mon0
-1 = fake authentication
1  = yeniden gönderme süresi 1sn
-e = essid
-a = AP mac adresi
-h = networke bağlı cihaz mac adresi


Yeterli sayıda paket topladığımızda dinlemeyi kapatabiliriz.



Output.cap isminde oluşan dosyamızda toplanan datalar bulunmaktadır. Aircrack aracıyla bu dosyadan şifreyi kırmayı denersek
# aircrack-ng output.cap


Şifrenin test123456789 olduğu bulunmuş oldu. Görüldüğü gibi WEP algoritması basit bir şekilde kırılabilmektedir. Bu yüzden kullanımı önerilmemektedir.

Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.

24 Mayıs 2016

Shellter ve Diğer Yöntemler ile Antivirus Atlatma

1. Shellter Nedir?

Shellter, ücretsiz antivüs atlatma aracıdır. Zararsız bir uygulamaya zararlı kod entegre etmek için kullanılır. Entegre edilen zararlı kodlar, kurban bilgisayarında shell açma ve antivirüsleri atlatmak için kodu modife etmektedir. 

16 Mayıs 2016

BIND DNS Server Kurulumu ve Ayarları

DNS, IP adresi ve domain ismi arasında dönüşüm yapılmasını sağlayan protokoldür. DNS temelleri ile ilgili “DNS Nedir” isimli makalemizi okuyabilirsiniz. Bu makalenin kapsamı DNS server kurulumu ve konfigürasyonu üzerine olacaktır. Bind name server yazılımı DNS protokolünün uygulamasında en yaygın kullanılan yazılımlardan biridir. Ayrıca açık kaynak kodlu bir uygulamadır. 

09 Mayıs 2016

Ücretsiz VPN Kurulumu

Ücretsiz VPN kurulumu makalemiz herhangi bir ortam için geçerli, ancak bu makalede özellikle Amazon EC2 altyapısı üzerinde bir VPN sunucusu kurarak hem Amazon’da bulunan sunucularınıza güvenli erişim imkanı sağlamak hem de genel olarak ücretsiz ama etkili bir VPN çözümünü aktarmak istiyoruz.

01 Mayıs 2016

Metasploit Framework'e Exploit Ekleme

Bir önceki makalemizde BTRisk tarafından geliştirilen uygulamamızın nasıl exploit edileceği ve bu exploitin scriptini hazırlamıştık. Bu makalemizde mevcut scriptimizi metasploit framework üzerinde çalışmak üzere düzenleyeceğiz ve bir modül olarak metasplit üzerine ekleyeceğiz.

24 Nisan 2016

IIS Log Ayarları

Web serverlar tarafından tutulan loglar meydana gelen sorunların çözümünde, sistemin gözlemlenmesi ve istatisiklerin çıkarılmasında gibi durumlarda faydalı olduğu gibi siber saldırıların tespitinde ve ispatlanmasında önemli ipuçları taşır. Maruz kalınan bir saldırıda bu logların kanıt olarak kullanılabilmesi için güvenilirliği de önem taşımaktadır. Yeterince detaylı bilgi olması ve bu bilgilerin doğru ve değiştirilmemiş olması önemlidir.

18 Nisan 2016

Apache Log Ayarları

Apache http server çok kapsamlı ve esnek loglama imkanı sunmaktadır. Bu makalede saldırı tespiti için logların konfigürasyonu ve içeriğinin anlaşılması üzerinde durulacaktır. Logların istenilen şekilde oluşturulması için yapılacak konfigürasyonda, Apache log yapısını bilmekte fayda olduğu için öncelikle bu yapı anlatılmıştır. Apache tarafından üretilen iki ayrı log çeşiti vardır bunlar: Access log ve Error log'larıdır. 
NOT! : Apache serverın logları yazdığı dizine ulaşabilen herhangi biri serveri başlatan kullanıcı kimliğine (genellikle root) ulaşabilir. O yüzden logların yazıldığı dizine hiç kimseye yazma izni verilmemesi gerekir.

Error Logları

İsmi ve lokasyonu ErrorLog yönergesi tarafından belirlenen önemli log dosyasıdır. Diagnostic bilgilerinin ve işlenen isteklerde meydana gelen hatalarla ilgili bilgiler tutulur. Server başlatılırken veya çalışırken bir sorunla karşılaşıldığında neyin yanlış gittiğini anlamak için bakılacak yer burasıdır. Hatta bu loglar çoğunlukla sorunun nasıl düzeltileceğine dair notlar da içerir. Örnek bir error log satırı:

[Tue Jan 19 15:28:57.687859 2016] [core:info] [pid 6561] [client 192.168.56.1:60187] AH00128: File does not exist: /var/www/html/favicon.ico

Bu girdinin ilk ögesi tarih ve saati, ikinci öğe önem derecesini belirtmektedir. Hata türlerinin önem seviyesini belirlemek için LogLevel yönergesi kullanılabilir. Apache konfigürasyon dosyası '/etc/apache2/apache.conf' içerisinde LogLevel satırında bu değer belirtilmektedir. Verilebilecek değerler arasında emerg, alert, crit, error, warn, notice, info ve debug seviyeleri bulunmaktadır.

Acces Logları

Sunucu tarafından işleme alınan tüm istekleri kaydeder. Bu logların kayıt olacağı yer ve içeriği CustomLog yönergesi tarafından belirlenir. LogFormat yönergesi ile de log içeriğini formatı istenildiği şekilde belirlenebilir. CustomLog formatı için kullanılabilecek ifadeler aşağıda listelenmiştir:
  • %a: Remote IP-address
  • %A: Local IP-address
  • %B: http başlıkları hariç, yanıtın bayt cinsinden uzunluğu
  • %b: %B ile aynı, CLF format
  • %{FOOBAR}e: FOOBAR değişkeninin içeriği
  • %f: Dosya ismi
  • %h: Remote host
  • %H Request protocol
  • %{Foobar}i:     İstekle birlikte sunuya gönderilen FOOBAR başlıklı satırların içeriği
  • %l: Remote kullanıcı kimliği(eğer identd tarafından geldiyse)
  • %m İstek Metod
  • %{Foobar}n:    Diğer modüldeki FOOBAR bilgisinin içeriği.
  • %{Foobar}o:    Yanıtta FOOBAR başlıklı satırların içeriği
  • %p: canonical Port of the server serving the request
  • %P: process ID of the child that serviced the request.
  • %q: query string
  • %r: İsteğin ilk satırı
  • %s: Durum. İsteğin son durumu için %>s kullanılır
  • %t: Tarih ve saat.(standart ingiliz biçemi)
  • %{format}t:      Formatlı Tarih ve saat(yerelleştirme için)
  • %T: Saniye cinsinden, isteği sunmak için harcanan zaman.
  • %u: Remote user
  • %U: İstenen URL yolu.
  • %v: ServerName
  • %X: Yanıt tamamlandığında bağlantı durumu
Değiştiriciler(Modifiers): Belli öğelerin sadece belli durum kodlarıyla ilgili yanıtlarda kayıt edilmesi istenidiğinde, bu durum kodları % iminden hemen sonra virgülle ayrılmış olarak yazılabilir. Örneğin, “%400,501{user-agent}i” belirteci, User-agent başlığının sadece 400 ve 501 hatalarında log kayderer. Diğer durum kodları için loglarda “-” yazılır. Durum kodlarının olumsuzunu belirtmek için “!” kullanılır.
Apache tarafından deteklenen log formatlarından bazıları: 

Common Log Format (CLF)
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/acces_log common
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

Combined Log Format
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog log/access_log combined
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
"http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

Referer başlığını içeren log formatı
"%{Referer}i -> %U"

User-agent başlığını içeren log formatı
"%{User-agent}i

Multiple Acces Logs: Birden çok CustomLog yönergesi belirterek oluşturulur
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
CustomLog logs/referer_log "%{Referer}i -> %U"
CustomLog logs/agent_log "%{User-agent}i

Apache logları incelenirken muhtemel tehditleri aramak için bakılacak bazı şeyler şunlardır :
  • Çalıştırılabilir dosya istekleri, ör: /system32/cmd.exe?c+dir
  • Önemli dosyalara yapılan erişim denemeleri, ör: /var/log veya /etc/shadow
  • SQL Injection atakları, ör: or 1=1-- veya SELECT
  • Fazla miktarda giriş denemeleri
  • Web sitesi üzerinde kısıtlanmış bölgelere yapılan erişim denemeleri
  • TRACE veya OPTIONS gibi istek metodları
  • Fazla miktardaki 404 ve 500 hata kodları... vb.
İhtiyacımıza göre log formatını belirlemeli ve yapılan saldırı analizlerinde ihtiyaç duyacağımız bilgileri formata dahil etmeliyiz. Örneğin aşağıdaki şekilde bir log formatı belirlemek önerilir.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" detailed
CustomLog logs/access.log detailed

Apache Loglarını Syslog Server'a Yönlendirilmesi
  • Lokal sistem üzerinde tutulan apache logları:
    • Access Logs : /var/log/apache2/access.log
    • Error Logs : /var/log/apache2/error.log
  • Bu dizinlerin rsyslog servisi tarafından gözlenmesi için konfigurasyon yapılması gereklidir. Syslog tarafından dizin belirterek belirli bir log dosyasını almak için 'imfile' modulü kullanılır.
    • Konfigurasyon Dosyası : /etc/rsyslog.conf
  • Bu konfigurasyon dosyasının en altına aşağıdaki komutlar eklenmeli :
$MODLOAD IMFILE 
$INPUTFILEPOLLINTERVAL 10 
$PRIVDROPTOGROUP ADM
$WORKDIRECTORY /VAR/SPOOL/RSYSLOG

# APACHE ACCESS FILE:
$INPUTFILENAME /VAR/LOG/APACHE2/ACCESS.LOG
$INPUTFILETAG APACHE-ACCESS:
$INPUTFILESTATEFILE STAT-APACHE-ACCESS
$INPUTFILESEVERITY INFO
$INPUTFILEFACILITY local5
$INPUTRUNFILEMONITOR

#APACHE ERROR FILE: 
$INPUTFILENAME /VAR/LOG/APACHE2/ERROR.LOG
$INPUTFILETAG APACHE-ERROR:
$INPUTFILESTATEFILE STAT-APACHE-ERROR
$INPUTFILESEVERITY ERROR
$INPUTFILEFACILITY local5
$INPUTRUNFILEMONITOR

  • Daha sonra bir alt satırda logların yönlendirileceği Remote Server Adresi yazılır. Boş olan facility'lerden birisi seçilebilir. Biz yukarıda local5 facility'sini seçmiştik. Yönlendirme işlemi için en sona aşağıdaki komut da eklenir.
    • local5.* @192.168.56.101:514
  • Apache'yi local5'e aldığımız ve onu yönlendirdiğimiz için sadece apache logları gider. Sistemdeki tüm logları göndermek için '*.*' yazılır.
    • Örneğin : *.* @192.168.56.101:514

Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.