spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
Merkezi Tehdit Tespit ve İzleme Sistemleri - 3 Yazdır E-posta
Hüseyin Can, Hasan Hüseyin Özbenli, TÜBİTAK BİLGEM   
23.09.2014

Bu bölümde, Merkezi Tehdit Tespit ve İzleme Sistemleri yazı dizisinin devamı olarak OSSEC’in bazı özellikleri ile ilgili yapılan örnek uygulamalar gösterilecektir.

Syscheck

Syscheck, OSSEC'in bütünlük kontrolü (integrity checking) yapmayı sağlayan modülüdür. Ayarlanmış dosya ya da Windows registry girdilerindeki değişiklikleri belli periyotlarla kontrol edip çıktıları MD5/SHA1 kriptografik özet formatlarında kaydetmektedir. Ön tanımlı olarak her 6 saatte bütünlük kontrolü yapılmaktadır, ancak bu süre ossec.conf dosyasından değiştirilebilir. Dosya değişiklikleri kontrol edilebildiği gibi, belli dizinler için de bütünlük kontrolü yapılabilmektedir. Ayrıca belirlenen dosya/dizinler için bütünlük kontrol işlemi yok sayılabilmektedir. 

<syscheck>
    <directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/bin,/sbin</directories>
</syscheck>
 

Linux (2.6.13 kernel sürümünde sonra) ve Windows sistemlerde, gerçek zamanlı bütünlük kontrolü yapmak için ossec.conf dosyasındaki <directories> etiketi içerisine realtime="yes"parametresinin eklenmesi gerekir. 

Aşağıdaki komutlar kullanılarak, komutun çalıştırıldığı anda bütünlük kontrolü istenilen zamanda anlık olarak yapılabilmektedir [1].   

# /var/ossec/bin/agent_control -r -a
# /var/ossec/bin/agent_control -r -u <agent_id>

Örnekteki uygulamada Windows sistemlerde uzak masaüstü bağlantısı açılmasını sağlayan ve saldırganlar tarafından sıklıkla kullanılan çoklu uzak masaüstü bağlantısı kurulması amacıyla istismar edilen termsrv.dll dosyasının bütünlük kontrolü için ossec.conf dosyasında eklenen girdi ve üretilen alarm gösterilmiştir.

</syscheck>
<directories check_all="yes">%WINDIR%/System32/termsrv.dll</directories>
</syscheck>

3-1.png

Şekil 1. Dosya bütünlüğü kontrolü sonucu oluşan alarm

Rootcheck

Rootcheck, OSSEC'in rootkit tespitinde sistem denetiminde kullanılan modülüdür. Sistemde, bilinen rootkitlerin ve sistem anomalilerinin tespitine yönelik tarama yapmaktadır. OSSEC'te tanımlı temel kontrol adımları şu şekildedir [2]:  

  • Tespit aşamasında, rootkitlerin ve  bunlar tarafından kullanılan dosyaların bulunduğu rootkit_files.txt dosyası kontrol edilmektedir. Belirtilen her bir dosya üzerinde stats, fopen ve opendir fonksiyonlarını çalıştırılır ve sistem çağrıları kontrol edilir.
  • Rootkitlerin ele geçirme göstergelerinin (Indicator of Compromise, IOC) bulunduğu rootkit_trojans.txt dosyası kontrol edilmektedir. Bu yöntem çekirdek seviyesinde çalışan veya bilinmeyen rootkitlerin tespitinde kullanılmaz.
  • /dev dizininde birçok rootkit gizlenmektedir. Rootcheck modülü, /dev dizinini tarayarak sistemde anomali tespiti yapmaktadır.
  • Tüm sistem üzerinde olağan dışı dosyaları, hak problemlerini incelemektedir. Root hakkıyla birlikte yazma izninin mevcut olduğu dosyalar, gizli dosya ve klasörler şüpheli olarak görüldüğünden rootkit tespiti için bunlar taranmaktadır.
  • Gizli işlemlerin kontrolü yapılmaktadır. Herhangi bir pid'nin kullanılıp kullanılmama durumu getsid() ve kill() fonksiyonları kullanılarak yapılmaktadır. Eğer pid kullanıldıysa fakat "ps" komutuyla görüntülenememekte ise bu çekirdek seviyesinde çalışan bir rootkitin ya da trojanın göstergesi olabilir. 
  • Gizli portların varlığının kontrolü yapılmaktadır. Sistemdeki bütün tcp ve udp portları bind() fonksiyonu ile kontrol edilmektedir. Netstat çıktısında gözükmeyen port bağlantıları rootkit varlığının göstergesi olabilmektedir.
  • “promisc” modu aktif olan tüm arayüzlerin kontrolü yapılmaktadır. Promiscuous modu aktif fakat ifconfig komutu çıktısında gözükmeyen arayüzler rootkit varlığının göstergesi olabilmektedir. 

$OSSEC_HOME/shared dizini altında bulunan dosyalarda sistem denetimi yapılabilmektedir. Merkezi olarak sistem denetleme işleminin yapılabilmesi OSSEC'in sağladığı özelliklerden biridir. 

Örneklerde bu dosyalardan bazılarında yapılan konfigürasyonlar gösterilecektir.

1. cis_debian_linux_rcl.txt, cis_rhel_linux_rcl.txt, cis_rhel5_linux_rcl.txt dosyaları kullanılarak Linux sistemlerde denetleme yapılabilmektedir. Örnekte root kullanıcısı ile ssh bağlantısı yapılabilmesini sağlayan konfigürasyonun denetlenmesi sonucu üretilen alarm gösterilmiştir.

3-2.png

Şekil 2. Linux sistem denetimi sonucu oluşan alarm

2. win_applications_rcl.txt dosyası kullanılarak bir programın sistemdeki varlığı registry, dosya, proses bilgileri üzerinden tespit edilebilmektedir. Aşağıdaki örnekte saldırganlar tarafından uzak masaüstü bağlantısı açmak için de kullanılabilen Teamviewer uygulamasının tespiti gösterilmiştir.

win_applications_rcl.txt dosyasını girilen konfigürasyon:
 
[Remote Access Tool - Teamviewer] [any] []
f:\Program Files\TeamViewer;
f:\Documents and Settings\Administrator\Local Settings\Temp\TeamViewer;
r:HKLM\SOFTWARE\Classes\teamviewer8;
r:HKLM\SOFTWARE\TeamViewer;
r:HKLM\SYSTEM\ControlSet001\Services\TeamViewer9;
r:HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_TEAMVIEWER9;
p:r:TeamViewer.exe;

  • İlk satırda; alarm üretilirken gösterilecek metin ve belirtilen göstergelerden bir tanesinin sağlanması durumunda alarm üretilmesi isteniyorsa [all], hepsinin sağlanması durumunda alarm üretilmesi isteniyorsa [any] ifadesi kullanılır. 
  • f parametrisi ile dosya ya da dizin belirtilir.
  • r parametresi ile registry girdisi belirtilir.
  • p parametresi ile çalışan proses belirtilir.
  • =: değeri ile eşitlik durumu belirtilir.
  • r: değeri ile regex formatında girdi yapılabilir.
  • >: değeri ile strcmp işleminin büyük olması durumu belirtilir.
  • <: değeri ile strcmp işleminin küçük olması durumu belirtilir.
  • &&: değeri ile çoklu girdiler yapılabilir.

Teamviewer uygulamasının sistemde bulunması durumunda üretilen alarm Şekil 3'de gösterilmiştir. 

3-3.png

 Şekil 3. Teamviewer uygulamasının kontrol edilmesiyle oluşan alarm

3. win_malware_rcl.txt dosyası kullanılarak yukarıda anlatılan uygulama denetimine benzer şekilde yapılan konfigürasyonla registry, dosya, proses bilgileri üzerinden zararlı yazılım tespiti yapılabilmektedir. Zararlı yazılımların ele geçirme göstergeleri bu dosyaya eklenerek sistemde tespiti yapılabilir. Zararlı yazılımlar sistem dosyasıyla aynı isimde farklı dosya yolunda ya da sistem dosyasının ismine benzer olacak şekilde dosya sisteminde bulunabilmektedir. Örnekte explorer.exe prosesinin %windir% dizini dışında çalışması durumunda üretilen alarm gösterilmiştir.

mal.png
 
Şekil 4. Zararlı yazılım tespiti sonucu oluşan alarm

Bu alarmın düşmesi için yapılan konfigürasyon:

[Possible Malware - Explorer.exe running outside windows directory] [all] []
p:r:explorer.exe && !%WINDIR%\explorer.exe;

 
4. win_audit_rcl.txt dosyası kullanılarak Windows sistemlerde sistem konfigürasyon denetimleri yapılmaktadır. Kurumun sistem sıkılaştırma politikaları bu dosya üzerinde yapılacak konfigürasyonla denetlenebilir. Örnekte sisteme USB takılması durumunda alarm üretilmesi gösterilmiştir. Sunucu vb. kritik sistemler için bu konfigürasyon yapılabilir. 

3-4.png

Şekil 5. USB disk takıldığını gösteren alarm

Bu alarmın düşmesi için yapılan konfigürasyon: 

[USB Storage Detected] [any] []
r:HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR;

Log İzleme

OSSEC, ossec-logcollector isimli uygulamasıyla log dosyalarını yeni olay kayıtları için izleyebilir. ossec-logcollector, ossec.conf dosyasından yapılandırılır. OSSEC syslog, snort-full, snort-fast, squid, IIS, eventlog, eventchannel, mysql, postgresql, nmap, apache log formatlarını desteklemektedir. Ayrıca belirtilen bir komutun çıktısında herhangi bir değişiklik olduğunda alarm üretmektedir. [3]
Syslog formatında dosya görüntülenmesi için örnek konfigürasyon aşağıdaki gibi yapılabilir:

<ossec_config>
 <localfile>
    <location>/var/log/messages</location>
    <log_format>syslog</log_format>
 </localfile>
</ossec_config>

Windows güvenlik olay kayıtlarının izlenebilmesi için örnek konfigürasyon aşağıdaki gibi yapılabilir:

<ossec_config>
 <localfile>
    <location>Security</location>
    <log_format>eventlog</log_format>
 </localfile>
</ossec_config>

Windows Vista ve sonraki işletim sistemlerinde kullanılabilen "eventchannel" log formatının izlenebilmesi için örnek konfigürasyon aşağıdaki yapılabilir:

<ossec_config>
  <localfile>
    <location>Microsoft-Windows-AppLocker/EXE and DLL</location>
    <log_format>eventchannel</log_format>
  </localfile>
</ossec_config>

Linux sistemlerde auth.log dosyasında oluşan değişiklik sonucu üretilen alarm şekilde gösterilmiştir.

3-5.png

Şekil 6. auth.log dosyasında oluşan değişiklik sonucu üretilen alarm

“Pass the hash” saldırganların parola yerine şifre özetini kullanarak sistemde uzaktan oturum elde etmesini sağlayan bir tekniktir. Detaylı bilgi için Pass the Hash Saldırıları ve Korunma Yöntemleri makalesi incelebilir. PSExec “Pass the hash” uygulaması çalıştırıldığında üretilen alarm Şekil 7'de gösterilmiştir. 

3-6.png 

Şekil 7. PSExec uygulaması çalıştığında Windows olay kayıtlarında oluşan alarm

OSSEC aracında  <check_diff /> özelliği sayesinde komut çıktılarında fark oluştuğunda alarm üretilmesi sağlanmaktadır. Üretilen alarmın formatı decoder özelliği ile düzenlenebilir. Örnekte Windows işletim sistemine eklenen yönlendirme kuralı sonucu üretilen alarm gösterilmiştir. 
İstemcide ossec.conf dosyasına girilen konfigürasyon:

<localfile>
<log_format>full_command</log_format>  
<command>route print -4</command> 
</localfile>

Sunucuda $OSSEC_HOME/rules/ossec_rules.xml dosyasına girilen konfigürasyon:

<rule id="12223" level="7">
    <if_sid>530</if_sid>
    <match>ossec: output: 'route print -4</match>
    <check_diff />
    <description>Routes have changed.</description>
  </rule>

 İşletim sistemine yönlendirme girilmesi sonucu üretilen alarm Şekil 8'de gösterilmiştir.  

  3-7.png
 Şekil 8. Yönlendirme kaydı eklendiğinde oluşan alarm

Komut çıktısında alarm üretilmesi için "netstat", "net share", "wmic qfe get", "vssadmin list shadows" vb. komutlar kullanılarak sistem hakkında detaylı bilgi sağlanabilir.

Yazı dizisinin son kısmında ise bu zamana kadar üretilen log ve alarm verilerinin indekslenmesi ve indekslenen veriler üzerinde sorgu yapılabilmesine olanak sağlayan sistemler üzerinde durulacaktır.

Kaynaklar 

[1] http://ossec-docs.readthedocs.org/en/latest/manual/syscheck/

[2] http://ossec-docs.readthedocs.org/en/latest/manual/rootcheck/manual-rootcheck.html

[3] http://ossec-docs.readthedocs.org/en/latest/manual/monitoring/file-log-monitoring.html


Favori olarak ekle (0) | Görüntüleme sayısı: 3740

Bu yazıya ilk yorumu yazın

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2017 TÜBİTAK-BİLGEM. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB