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.