14 Ekim 2014

Ağ Temelli Adli Bilişim Temel Bilgiler - Bölüm- 3

Bu bölümde oturum verisi, ağ izleme ve alarm verisi takibi yapılırken kullanılan araçlar üzerinde durulacaktır.

Oturum Verisi


Araçlar:
NetFlow (Cisco) / Fprobe / NG_NetFlow / Flow-Tools
sFlow
Argus / Ra


Oturum verisi iki taraf arasındaki iletişimin özetini verir. Oturum “flow – akış” olarak da adlandırılır. Connection-oriented protokoller için oturum kavramının anlaşılması daha kolaydır, çünkü bir TCP iletişiminin başlangıcı, ortası ve kapanışı çok net olarak protokol tarafından tanımlanmıştır. UDP ve ICMP gibi connectionless protokoller ise TCP kadar yapısal olmadığından oturum tanımı daha zordur. Ancak istek-yanıt (request – response) tipindeki mesajlaşmalar oturum formatını açıklamak için kullanılabilecek şablonlardır.

Daha fazla bilgiyi de toplamak mümkün olmakla birlikte bir oturumu tanımlayan temel bileşenler aşağıdakileri içerir:

  • Kaynak IP adresi
  • Kaynak port numarası
  • Hedef IP adresi
  • Hedef port numarası
  • Zaman damgası (genellikle oturumun ilk paketine aittir)
  • Oturum süresince alış veriş yapılan veri miktarı

Oturum verisi takibi içerikten bağımsız olarak ağ üzerindeki aktiviteler hakkında önemli bir bakış açısı sağlar. Daha sonra bahsedeceğimiz alarm verisi üreten araçlar belli bir sayıda olayın meydana gelmesini (treshold) veya belli bir imzayı ararken oturum verisi üreten araçlar tüm trafiği toplar ve analiz eder. Bu açıdan oturum bilgisi göze çarpmayan saldırganların tespiti açısından çok önemli bir araçtır.

Ağ üzerinde soruşturma açısından kuşkusuz full content data çok değerlidir çünkü full content data üzerinde oturum verisini üretmek de dahil pek çok işlem ve inceleme yapılabilir. Ancak çok yoğun trafiğe sahip ağlarda oturum bilgisini toplamak da çok değerli bilgi sağlayabilir. Oturum verisi üretme özelliği ağ altyapısını oluşturan pek çok cihazda mevcuttur.

Oturum verisi operasyonel ağlarda muhasebe başta olmak üzere pek çok amaç için kullanılabilir. Biz burada güvenlik açısından kullanımına odaklanıyor olacağız.

Oturum verisi üretmenin 2 yöntemi bulunmaktadır:

  1. Birinci yöntemde full content data veya paket başlıklarını içeren bir alt kümesi toplanarak “batch” modda bu veri işlenir ve trafiğin özeti çıkarılır. Önce topla sonra özetle metodu en doğru sonuçları üretmesine rağmen tüm paketleri toplamanın belli bir maliyeti vardır.
  2. İkinci yöntem oturum verisine öncelik verir, trafiği dinler ve iletişim bilgisini kısa bir formatta kaydeder. Bu yöntem özellikle yoğun trafiğin aktığı ağlarda daha iyi bir çözüm olabilir, ancak doğru sonuçlara ulaşabilmek için oturum verisi üreten aracın mümkün olduğunca yüksek oranda paket görmelidir.

Oturum verisine öncelik verilen 2. yöntem içinde de farklı uygulamalar bulunmaktadır. Bunlardan ilki tüm paketlerin izlenmesi ve oturum verisi üretilmesidir ki aşağıda bahsedeceğimiz Argus ve Cisco’nun NetFlow’u bu yaklaşımı uygular. NetFlow Cisco tarafından üretilmiş olsa da Juniper, Foundry Networks yönlendiricileri ve açık kaynak projeleri de Netflow’u destekler, bu nedenle popüler bir oturum verisi üretme aracıdır. İkinci yaklaşım örnekleme yöntemiyle seçilen ağdaki paket başlıklarını ve arayüz istatistiklerini merkezi bir sunucuya yönlendirme, merkezi sunucunun da bu verileri kullanarak oturum verisini tahmin etmesi şeklindedir. Netflow’a rakip olarak üretilen InMon Corporation’ın sFlow’u bu yaklaşımı kullanır. sFlow Extreme Networks, Foundry Networks ve HP (ProCurve line) tarafından desteklenir. Bunların dışında flow formatları da mevcuttur.

Oturum verisi üreten mimarilerde şu kavramların anlaşılması gerekmektedir: “probe” trafiği izleme ve iletişim (conversation) verisi üretme (export etme) işlevi gören bileşendir, “collector” üretilen iletişim (conversation) verilerini toplar, ve “console” bileşeni de toplanan kayıtları yorumlar ve oturum verisini oluşturur.

NetFlow: Cisco’nun patentli ağ muhasebe (network accounting) metodudur. NetFlow oturum verisi unidirectional (tek yönlü) üretilir. Yani her iki tarafında birbirine paket gönderdiği bir iletişim için 2 oturum kaydı üretilir. Cisco router’ların çoğu NetFlow’u desteklemekte ve “probe” olarak davranabilmektedir. Cisco ürünlerine ek olarak pek çok ağ cihazları üreticisi NetFlow’u desteklemektedir (Juniper, Foundry Networks, InMon gibi).

NetFlow kayıtları üreten açık kodlu bir proje de “Fprobe” dur. Fprobe ağ kaynaklarına yük bindirmek istemeyen ağ yöneticileri tarafından bağımsız bir sunucu üzerinde çalıştırılabilir. NetFlow kayıtları üreten bir başka açık kaynak kod projesi de NG_NetFlow’dur.

Cisco ve diğer üreticiler NetFlow kayıtlarının toplanması ve işlenmesi için ticari araçlar sunmaktadır. NetFlow için “collector” ve “console” olarak kullanılabilecek açık kaynak kod projelerinden birisi de Flow-Tools’dur. Flow-Tools’un içinde bulunan Flow-Capture üzerinde çalıştığı sunucunun belli bir port’unda kendisine gönderilen NetFlow kayıtlarını bekler ve bunları –w anahtarıyla belirtilen dosyaya yazar. Flow-Cat ve Flow-Print uygulamaları da birlikte çalışarak (Flow-Cat’in çıktısı Flow-Print’e pipe edilerek) Flow-Capture tarafından üretilen dosyayı okur ve oturum verisini oluşturur.

sFlow: sFlow InMon tarafından desteklenen farklı bir flow formatıdır, ancak NetFlow kadar açık kaynak kodlu projeler tarafından ilgi görmemiştir. NetFlow’da olduğu gibi “probe”, “collector” ve “console” bileşenlerinden oluşan uygulama mimarisiyle kullanılmaktadır.

Argus / RA: Argus ve RA NetFlow ve sFlow’dan farklı olarak kendi kullandığı bir formatta oturum verisi üretmekte ve göstermektedir. NetFlow tek yönlü oturum verisi üretirken Argus “bidirectional” (çift yönlü trafik) oturum verisi üretmektedir. Argus sunucu rolünü yerine getirmekte ve iletişim bilgilerini ağ arayüzünden veya full content data içeren paket dosyasını okuyarak üretmekte, RA istemci rolünü üstlenmekte ve iletişim bilgilerini oturum bilgilerine çevirmektedir.

Hem Argus hem de RA BPF filtrelerinden anlar. Örnek Argus ve RA komutları olarak aşağıdakileri verebiliriz:

# argus –c –d –i eth0 –w eth0.arg – ip

Yukarıdaki komuttaki anahtarlar şu anlamlara gelmektedir:

-c Argus’a bir PID dosyası yaratmasını söyler (tipik olarak /var/run dizini altında)
-d Argus’a arka planda bir “daemon” olarak çalışmasını söyler
-i Argus’a hangi ağ arayüzünde dinleme yapması gerektiğini söyler
-w Argus’a çıktı dosyasının adını söyler
- ip (arada boşluk bulunmaktadır) Argus’a sadece IP paketlerini toplamasını, diğer paketleri (örneğin ARP paketlerini) göz ardı etmesini söyler

Argus’un paketleri bir paket dosyasından okuması da mümkündür. Bunun için şu komut çalıştırılabilir:

# argus –r eth0.lpc –w eth0.arg – ip

RA istemcisi ile arg dosyasının yorumlanması içinse şu komut çalıştırılabilir:

# ra –n –r eth0.arg –L0

-n anahtarı RA’nın IP adresini sorgulamasını (resolution) ve port numarası yerine servis adını göstermesini engeller
-r okunacak dosya ismini söyler
-L0 (büyük L ve sıfır) kolon başlıklarını yazdırır.


Ağ İstatistik Verisi


Anlık istatistik araçları: Cisco, IPCAD, Trafshow, Tcpdstat
Zaman aralığı için istatistik araçları: MRTG, Ntop



Ağ istatistik verisi full content data ve oturum verisi’nin bir üst seviyesinde ağ izleme girdisi sağlayan veri türüdür. Buradaki istatistik terimini tanımlayıcı (descriptive) istatistik anlamında kullanılmakta ve tüm trafiğe ilişkin istatistikten bahsedilmektedir. Yani dolaylı (inferential) istatistik uygulamalarında olduğu gibi örnekleme ve güven aralıkları söz konusu değildir.

Bu tür verinin sağlayabileceği faydaya örnek vermek gerekirse operasyonel problemlerin teşhisi amacıyla kullanılabilmesi yanı sıra ruting ağ kullanım şekil ve yoğunluklarındaki değişikliklerin izlenebilmesi vasıtasıyla potansiyel saldırı veya gizli kanal (covert channel) faaliyetlerini tespit etmek mümkün olabilmektedir. Örneğin UDP port 53 trafiğinin tipik kullanım oranı olan %2’den %5 oranına yükselmesi bu kanalı kullanan bir arka kapı programının varlığına işaret olabilir.

Bu alanda veri oluşturan araçlara baktığımızda 2 tür araç bulunduğunu gözlemliyoruz:

  • Birinci grup araçlar ağ aktivitesine ilişkin anlık (snapshot) veya anlığa yakın bir süre içinde bilgi sağlar. Bu tür araçlar bağlantı problemlerinin sebeplerini araştırmak, halen süren bir hizmet kesintisi saldırısını izlemek veya oturumları anlık olarak izlemek amaçlarıyla kullanılabilir. Bu araçlara örnek olarak Cisco’nun Accounting özelliklerini ve Tcpdstat’ı verebiliriz.
  • İkinci grup araçlar ağ kullanımını uzun vadeli izlemek için kullanılmaktadır. Bu araçlar ağ üzerindeki aktiviteleri günlük, haftalık, aylık olarak izlemek, trend’leri ve normal kullanım oranlarını tespit etmek ve mevcut ağ aktiviteleri ile karşılaştırabilmek için kullanılır. Bu araçlara örnek olarak MRTG (Multi Router Traffic Grapher) ve Ntop’ı verebiliriz.

Cisco Router: Cisco router’lar üzerinde ip accounting’i aktif hale getirmek ve IP ve protokol bazlı istatistik raporlama imkanı bulunmaktadır. Bu raporlarda anormal durumları (tanımsız IP protokolüne sahip paket sayıları, ARP istek paketi sayısından çok daha fazla ARP yanıt paketi sayısı, port numarası tanımlanmamış TCP ve UDP paket sayıları gibi) farketmek mümkündür. Ayrıca Cisco arayüz istatistiklerinden layer 2 anormalliklerini (Ethernet için minimum paket büyüklüğünden (64 byte) küçük, Maximum Transferrable Unit – MTU büyüklüğünden büyük (1.500 byte) paket sayıları, çarpışma (collision) sayıları), aşırı yük nedeniyle alıcı port’un kullanılamadığı durum sayısı gibi bilgileri gözlemlemek mümkündür.

Açık kaynak kod projelerinden örnekler vermek gerekirse:

  • IPCAD (IP Cisco Accounting Daemon) Cisco cihazların ürettiği istatistikleri Unix platform üzerinde belli bir arayüz için üretir.
  • IFSTAT yine arayüz üzerinde gözlenen trafik miktarını (kilobits per second) kısaca raporlayan bir araçtır. Bu araç örneğin sensör sunucu arayüzü üzerindeki yükü kontrol etmek için kullanılabilir.
  • BMON arayüz üzerinde gözlenen trafik yükünü gösterir ve basit bir grafikle de raporlama yapabilir.
  • TRAFSHOW, IFSTAT ve BMON’dan daha detaylı olarak TCP, UDP ve ICMP protokol istatistiklerini de ilgili arayüz için raporlar. IP ve port bilgilerini sağlar. Ayrıca odaklanılmak istenen trafik için BPF filtrelerini destekler. Trafshow öntanımlı kullanımında layer 3 ve üzerine odaklanır, layer 2 raporlaması için –e anahtarı kullanılır.
  • TCPDSTAT yukarıda sayılan araçların aksine arayüz üzerindeki gerçek zamanlı istatistikleri değil kendisine verilen paket dosyalarını okuyarak oluşturduğu istatistikleri raporlar.

Uzun zaman aralığı için istatistik bilgisi üreten araçlardan MRTG ve Ntop’dan bahsetmek gerekirse:

MRTG: MRTG (Multi Router Traffic Grapher) SNMP özelliği açık olan yönlendiricilerden arayüz istatistiklerini SNMP protokolüyle sorgular. Topladığı istatistikleri belli zaman aralıkları için raporlar. Böyle bir yöntemle izleme yapmak isteniyorsa yönlendiriciler üzerindeki SNMP kelimeleri (community strings) kolay tahmin edilemeyecek kelimeler olarak seçilmeli ve yönlendiricilerin UDP 161 port’larına erişim kısıtlanmalıdır.

MRTG çıktılarını sunacak olan makine üzerinde Apache web sunucusu kurulmalıdır. MRTG sunucusuna erişim için HTTPS servisi kullanılması ve erişimin kısıtlanması gerekebilir.

Ntop: Ntop HTTPS’i destekleyen kendi web sunucusuna da sahiptir. Ntop libpcap’i kullanmakla birlikte istenirse plug-in yüklenerek NetFlow ve sFlow desteği de sağlamaktadır. Seçilen arayüz için pasif olarak ağ paketlerini toplayarak belli aralıklar için ağ kullanım yükü, genel paket istatistikleri (ortalama paket büyüklüğü, aktif sunucu sayısı, unicast ve broadcast paket sayıları gibi), IP bazlı protokol istatistikleri, port bazlı bant kullanımı, oturum sayıları, belli saat aralıkları için ağ yükü istatistikleri gibi çok geniş ağ istatistik verileri üretir.


Alarm Verisi


Araçlar: Snort, BRO, Prelude, Sguil



Bu noktaya kadar tüm içerik verisi, oturum verisi ve istatistik verisi’nin üzerinden geçtik. Tüm bu veriler bir analist tarafından incelenerek saldırı veya ağ problemlerine işaret eden anormallikler tespit edilebilir. Özellikle soruşturmalarda tam olarak ne aramak gerektiğini bilmediğimiz veya ağın normal kullanımı hakkında bilgi edinmek için izlenmek istememiz gibi durumlarda bu veriler önemli kaynak sağlar. Alarm verisi ve alarm verisi üretme yöntemleri ise bilinen ve yüksek ihtimalle saldırı veya bir probleme işaret eden durumları otomatik olarak tespit edilmesi ve raporlanmasına yöneliktir.

Alarm verisi üreten araçlardan açık kaynak kodlu projeler arasında en ünlüsü kuşkusuz Snort. Öyleki Snort ile aynı tarihlerde geliştirilmeye başlanmış IDS projeleri dahi Snort kurallarını desteklemektedir, Snort alarmlarını analistler tarafından daha kullanışlı biçimde sunmak için pek çok analist uygulaması geliştirilmiştir.

Snort 1998 yılında bir paket dinleyici (sniffer) olarak geliştirilmeye başlanmıştır. Daha sonra bir rule parser’ı eklenerek basit bir IDS haline getirilmiştir. Daha sonra pre-processor’lar eklenmeye başlanmış ve alarm tespit motoru daha geliştirilmiştir. Snort dokümantasyonu en kapsamlı ve detaylı açık kod proje dokümantasyonlarından biridir. Türkçe kurulum dokümantasyonu da mevcuttur. Snort başlangıçta bir hobi iken şu anda Sourcefire adlı bir şirkete dönüşmüş durumda olup appliance temelli çözümler, eğitim ve diğer hizmetleri de sunmaktadır.

Snort aşağıdaki modlarda çalıştırılabilir:

  • Paket izleyici (sniffer): Ağ arayüzündeki paketleri dinler ve standart çıktıya (ekran) yazar.
  • Paket kaydedici (logger): Dinlediği paketleri log dosyalarına yazar.
  • Ağ saldırı tespit sistemi (NIDS): Snort’un en gelişmiş olduğu alandır, ağ pasif olarak dinler (veya paket dosyalarını okur) ve daha önceden tanımlanmış saldırı imzalarıyla uyuşma olması durumunda konfigüre edilmiş aktiviteleri gerçekleştirir. Bu aktiviteler arasında alarm dosyasına yazma, veritabanına yazma, ekrana yazma, syslog alarmı üretme, bir Unix soketine yönlendirme, Windows platformunda pop-up penceresinde gösterme sayılabilir. Alarm üreten paketler ikilik düzende (binary) veya ASCII decoded olarak kaydedilebilir.
  • Inline mod (IPS): Bu modda paketler libpcap kütüphanesinden değil IPTables’dan okunup inline kullanım için belirlenen kurallar doğrultusunda sözkonusu paketin IPTables tarafından düşürülmesi (drop) ya da geçirilmesi (pass) sağlanabilir.

Snort topladığı paketleri sırasıyla protokol decoder, pre-processor ve detection engine’inden geçirerek değerlendirir. Pre-processor’lar çeşitli amaçlara hizmet eder; örneğin port tarama aktivitesinin varlığını tespit etmeye, daha sonra yapılacak bir analiz için oturum bilgisi ve içeriğini birleştirmeye, fragmented paketleri unfragmented hale getirmeye.

Snort açık kaynak kod dünyasında tek ağ temelli saldırı tespit sistemi değildir, diğer projelere BRO ve Prelude örnek verilebilir.

Snort alarm verisi üretir, Snort kullanan analistler için yazılmış istemci arayüzler de bulunmaktadır (Analysis Console for Intrusion Databases – ACID gibi). Ancak analistin ihtiyacı sadece alarmı üreten paket içeriğini görmek, bu alarmı üreten imzayı (kuralı) görmekle malesef karşılanamaz. Çoğu kez saldırının başarılı olup olmadığını anlayabilmek için oturum boyunca alış veriş yapılan paket içeriklerine flow yapısı için de erişme ihtiyacı bulunmaktadır. Ayrıca analistin operasyonel ihtiyacını karşılayabilmek ve alarmların nasıl ele alınması gerektiğini yönetmesine yardımcı olacak (yani alınan önlemi not edebileceği, gerekirse daha kıdemli analistlere olayı eskale etmesine yardımcı olacak) bir platforma ihtiyaç vardır. Sguil projesi bu ihtiyaca yönelik geliştirilmiş bir projedir. Sguil Tcl/Tk betik dili ve GUI altyapısı ile geliştirilmiş bir istemci sunucu uygulamasıdır. Bu nedenle Tcl/Tk’yı destekleyen platformlarda (Linux, Windows, vd.) çalıştırılabilir. Sguil’i denemek için bir demo sunucusu da bulunmakta, istemci uygulamayı indirerek Sguil’i deneme imkanı bulunmaktadır.

Sguil sunucusu sensörlerden full content data ve alarm verisi toplar. Alarm verisini Snort IDS’ten full content data’yı paket toplama modunda çalışan başka bir Snort prosesinden ve oturum verisini SANCP (Security Analyst Network Connection Profiler)’den elde eder. Sguil verisini tutmak için MySQL’i kullanmaktadır. Veritabanı sunucusu ayrı bir sunucu olabilir ancak tipik olarak Sguil sunucusu ile aynı platform üzerinde kullanılır. İstemci sunucu mimarisine sahip olması bir analist grubunun birlikte aynı platform üzerinde çalışmasını desteklemektedir. İstemci sunucuya OpenSSL kullanarak bağlanabilir.

Sguil’in sağladığı pratik faydalara örnek olarak seçilen alarmla ilgili oturum için transcript (metin formatında) bilgisini görebilmek, alarmı üreten kuralı görebilmek, ilgili paketin Wireshark üzerinde incelenebilmesi, paketin kaynak veya hedef IP adresi için whois araştırmasını yapabilmek, paket full content data’sını hex veya ASCII formatlarında görebilmek, eskalasyon yapabilmek, kullanıcıların kendi aralarında mesajlaşmasını sağlayan bir araç, alarm olayları (event)’nın tarihçesini (eskale edilmiş, kategorisi değiştirilmiş vs.) görebilmek, seçilen bir alarmı doğuran paketi gönderen veya alan IP adresi ile ilgili diğer paketleri sorgulayabilmek ve sorgu sonrası alınan paketler için yine transcript oluşturarak aynı IP ile ilgili diğer aktiviteleri anlayabilmek, belli kategorilerdeki olayları sorgulayabilmek sayılabilir. Sguil’in mottosu analistler tarafından analistler için geliştirilmiş olmasıdır.

<<Önceki Bölüm