Otomatik Keşif (Auto-Discovery)


Keşif (Discovery) Derken

Hedef ağın bileşenleri hakkında bilgi toplamak, ağı Host/Port taramaları ile aktif olarak keşfetmek diyebiliriz. Ağdaki mevcut makinelerin ve çalışan servislerin bulunması ping ve çeşitli TCP/IP paketleri gönderilmesiyle gerçekleştirilir. Tarama ile makinelerin IPv4, IPv6, Hostname, Mac Address, Mac Vendor, up/down, port, OS (işletim sistemi) bilgilerine erişmek mümkün.


Keşif için tercihimiz; Nmap (Network Mapper). Nmap çeşitli parametrelerin kombinasyonu yapılarak istenilen bilgilere yönelik tarama yapma imkânı sunmakta. Ayrıca çoğu yazılımcıdaki; hayaller Matrix hayatlar “Hello World” hayal kırıklığından kurtulup Trinity moduna geçmeniz de mümkün :)

İzleme ve Keşif (Monitoring ve Discovery)

Web tabanlı izleme aracımız olan UNITMON için bir optimizasyon yaparak kullanıcıya zaman kazandırma ve aracımıza pratiklik katma amacı ile yola çıktık. Ne demiş atalarımız; “Keep it simple stupid!”

UNITMON ağdaki cihazlar için çeşitli izlemeler ekleme ve zafiyet yönetimi imkânı sunarak IT sisteminin kontrol altında tutulmasını, güvenlik zafiyetlerini tespit etmeyi sağlar. Kullanıcı Varlıklar menüsünden her bir varlığı tek tek ekleyerek işlemlerini gerçekleştirirken, otomatik keşif ile aynı anda birden fazla varlık ekleyip yanı sıra bu varlıklara, bulunan servisler aracılığıyla izlemeler de ekleyebilir.

Ağı keşfetmek ile amacımız; kullanıcının manuel eklediği varlıkların ve başlıca servislerin Otomatik Keşif (Auto-Discovery) ile default eklenmesi. Yani tabiri caizse kullanıcıyı amelelikten kurtarmak.

Nasıl mı Keşif?

Keşfi ASP.NET MVC mimarisine Nmap’in implementasyonu ile gerçekleştirdik. İlk etapta kullanıcıya kolaylık olması için Ağ Adresi/Subnet, hostname çözümlemesi için DNS değerleri hesaplanıp keşif ekranına aktarıldı ve kullanıcıya sadece Keşfet butonuna basmak düştü. Arka planda hesapladığımız bu default değerleri kullanıcı istediği takdirde değiştirerek keşif yapabilmekte.

Formatlar:
Ağ Adresi/Subnet - IP/Subnet: 192.168.5.0/24
IP: 192.168.0.1
IP aralığı: 192.168.0.1-30
Belirli IPler: 192.168.0.1 192.168.0.13
Host: xyz.domain.com


Keşif sonucunda bulunan bütün host'lar listelenmeden önce işletim sistemlerine göre spesifik bir şekilde sınıflandırıldı; Windows, Linux/Mac OS/Unix, Virtual Hosts, Yazıcılar, Diğerleri.



Teknik Bağlamda 

Taramayı job manager (görev yöneticisi) aracılığıyla yaptığımız için kullanıcının hangi job manager üzerinden tarama yapmak istediğini seçmesi gerekiyor. İşlem queue'ya alındıktan sonra sırası gelince job manager aktif olduğu takdirde tarama başlıyor.

İhtiyacımız olan bilgiler kapsamında Nmap’in sunduğu parametrelerle ve hesaplamış olduğumuz Ağ Adresi/Subnet, DNS’i ekleyerek en fizibil taramayı yapabileceğimiz Nmap komutumuzu çeşitli testlerin ardından oluşturduk. C# üzerinden nmap.exe dosyasını çalıştıracağımız process’e bu komutu gönderdik. Komutumuzun sonuna eklemiş olduğumuz -oX parametresi ile sonucu xml dosyasına yazdık. Ardından dosyaya yazılan sonucu parse etmek, analiz etmek, anlamlı bir şekilde ekrana aktarmak kaldı.  Ağ yapısını ekranda göstermek için Kendo-TreeView nesnesini tercih ettik. Default olarak hostname'iyle listelenen makineler, tree üzerinde değiştirme imkanı sunularak istenilen bir varlık adıyla veritabanına kaydedilebiliyor. Host'ların ve servislerin yanına checkbox’lar ekleyerek veri tabanına kayıt aşamasında kullanıcıya opsiyon sunduk. Kaydet butonuna basılmasının ardından işaretli host’lar ve servisler kaydedilip takibe alınabiliyor.

Beynimizin Network’e bağlanacağı günleri görür müyüz merak ediyorum :) O zaman neler geliştirmek gerekecek muamma lakin her daim sorunun bir parçası olmamak için çözümün bir parçası olmaya çalışmak gerek.

Tuba Demir
Software Engineer
CRYPTTECH - Cyber Security Intelligence

Yorumlar

Bu blogdaki popüler yayınlar

1. Geleneksel Stajyer CTF Soru ve Cevapları

B*-Tree (BTree, BPlusTree) Veri Yapısı ile Veri İndeksleme

2. Geleneksel Stajyer CTF Soru ve Cevapları - 2017