SNMP Güvenliği ve Tehditler

Değerli arkadaşlar, merhaba! Bu yazımızda sizlere, SNMP protokolü dolayısıyla oluşabilecek tehlikelerden bahsedeceğiz. Bu blogu okumadan önce SNMP blogunu okumanızı öneririz; tıklayın.

Öncelikle size CVE'den bahsetmek istiyorum. CVE, Bilgi Teknolojileri ortamındaki risk faktörlerini belirlemek için kullanılır ve bilinen güvenlik açıklarının bir listesini tutar.

SNMP'de GetBulkRequest diye bir paket vardır. Bu paket, sistem üzerindeki araçların değerlerini kaydeder. Örneğin bir yazıcının değerleri; ismi, toner türü, IP adresi gibidir. Saldırganlar, bir şeyleri manipüle etmeyi çok sever. Evet, bu paket manipüle edilebilir ve bunun sonucunda bileşen veya sistem hakkında kritik bilgileri toplayabilir. Daha sonra bunları kullanmak, saldırganın yeteneğine ve hayal gücüne bağlıdır. Hedefe bir GetBulkRequest paketi yollayan saldırgan; paket kaç byte ise onun yaklaşık 700 katı kadar parçalanmış veriyi geri döndürebilir ve bunu sürekli yapabilir. Bu bir saldırı vektörüdür ve literatürdeki ismi DoS (Denial of Service) şeklindedir. Bunu CVE'den kontrol edelim; ekran görüntüsünün basit açıklamasını yazacağım.

CVE-2002-0013: Saldırganlar, bir DoS saldırısı başlatmak için SNMPv1'den yararlanabilir veya çok sayıda GetRequest, GetNextRquest veya SetRequest mesajı göndererek SNMP'yi ezebilir ve erişim ayrıcalığı elde edebilir.

CVE-2002-0012: Saldırganlar, bir DoS saldırısı yürütmek veya erişim ayrıcalıkları elde etmek için SNMPv1 tuzak işlemeyi (trap handling) kullanabilir.

SNMP blogunda bahsettik; SNMPv1 ve SNMPv2c'nin şifreleme algoritması yoktur veya zayıftır. Yani ağ üzerinde giden veriler, saldırganlar tarafından çeşitli ağ analiz araçlarıyla veya çeşitli saldırılarla düz yazı olarak okunabilir. Yani şu an bunu nasıl rahatlıkla okuyabiliyorsanız saldırganlar da bu verileri öyle okuyabilir. Bunlar, 'Man in the middle' yani 'ortadaki adam' saldırısı sonucu gerçekleşebilir (anlatacağız). SNMPv3, şifreleme ve kimlik doğrulama anahtarı kullanır fakat kullanılan bu anahtar, kendisini geçersiz kılmak için değiştirilebilir. Bu aslında; "saldırganın, kullanılan şifreleme ve kimlik doğrulama anahtarını seçmesine izin vermek için manipüle edilebilir" şeklinde daha net ifade edilebilir.

[*] Bu kısımda gösterilenler yalnızca eğitim ve farkındalık amacıyla oluşturulmuştur. Bu kısımdaki bilgilerin yasa dışı bir faaliyette kullanılması sonucunda okuyucularımız sorumludur; site admini herhangi bir sorumluluk kabul etmeyecektir.

Bu kısımda gösterdiklerimizi yalnızca eğitim ve farkındalık olarak algılamanızı rica ediyorum. Bizler, hırsız veya zorba değiliz.

SNMP'nin bir güvenlik açığı olup olmadığını öğrenmek için 'nmap' isimli aracı kullanmamız doğru olacaktır. Eğer bu aracın ne olduğunu bilmiyorsanız endişe etmeyin, zamanı gelince detaylıca göreceğiz. Fakat kısaca nmap, komut satırı üzerinde çalışan ücretsiz bir güvenlik açığı tarama aracıdır; kullanıcı arayüzü ile çalışan versiyonu da vardır; 'zenmap'.

'sudo nmap -sU -p161, 162 -sV <Yönlendiricinizin IP adresi>' şeklinde kullandığımız bu komut, 161 ve 162 portlarının Durum, Hizmet ve Sürüm bilgisini göreceksiniz. Fakat bu işlemin biraz sürebileceğini söylemem gerekiyor; sabırlı olmanız gerek.

Bu bilgiler ışığında eğer port açıksa yani saldırıya müsaitse kimlik bilgilerini BruteForce yani Kaba Kuvvet saldırısı ile alabilirsiniz. Bunun için de aşağıdaki gibi bir nmap komut dosyası çalıştırma şansınız vardır:

Bunu yaptıktan sonra nmap eğer herhangi bir şey bulamazsa sonuç döndürmeyecektir.

[*] Bu kısımda gösterilenler yalnızca eğitim ve farkındalık amacıyla oluşturulmuştur. Bu kısımdaki bilgilerin yasa dışı bir faaliyette kullanılması sonucunda okuyucularımız sorumludur; site admini herhangi bir sorumluluk kabul etmeyecektir.

Artık tehlikelerin ve kötü senaryoların farkındayız. Bu blogu elbette, bunlardan korunmanın yollarını söylemeden sonlandıramayız.

  1. SNMP'ye ihtiyaç duymadığınız bilgisayarlardaki SNMP'yi devre dışı bırakın. Bu sayede saldırganların da yollarını tıkamış olursunuz.
  2. Güvenlik duvarı (firewall) kullanarak internet üzerinden SNMP'ye izinleri kapatın.
  3. 161 ve 162 numaralı portlardaki tüm trafiğe izin vermeyin; bunları filtreleyip sınırlandırın.
  4. SNMPv3 kullanmaya gayret gösterin.
  5. 'Community read string' dediğimiz; Türkçe karşılığı biraz anlamsız gibi gelen yapıyı varsayılan hâli ile kullanmayın; en az 20 karakterli güçlü bir 'community read string' oluşturun.
  6. SNMPv3 kullanıyorsanız 'NoAuthNoPriv' modunu kullanmayın. Eğer kullanırsanız; her ne kadar SNMPv3 kullanıyormuşsunuz gibi gözükse de aslında SNMPv3, SNMv2 gibi davranır. Bunun yerine 'AuthNoPriv' veya gizlilik çok lazımsa 'AuthPriv' kullanabilirsiniz.
  7. 'read only' yani 'salt okunur' ayarını yapmanız gerekir. Bu ayar, ele geçirilme durumu olsa bile herhangi bir şekilde bir değişiklik yapılmasını önler.
  8. 'Access Control List - ACL' yani 'Erişim Kontrol Listeleri' oluşturun. Yukarıda, 'read only' ayarının çok güzel bir önlem olduğunu ima ettik ki öyledir. Fakat okunmaması gereken bilgiler de olabilir. Okuma ve/veya yazma izinlerine sahip cihazlar için ACL oluşturun.
  9. Saldırı riski düşük de olsa hiçbir SNMP aracısının DHCP kullanmadığından emin olun.
  10. Trafiğin güvenliğini sağlamak için 'Transport Security Model - TSM' yani 'Taşıma Güvenliği Modeli' kullanın.
  11. Cihazlarınızı güncel tutun. Güncellemeler aslında güvenlik açıklarını kapatmak için de gelir. Cihaz güncellemelerini yapmadığınız takdirde cihazlar eski versiyonda kalır ve saldırılara açık olur (bu sadece SNMP için değil).
  12. Kullanıcıların, hangi OID'leri ve performans verilerini görüntüleyebileceklerini kısıtlamak için SNMP görüntüleme (SNMP view) komutunu kullanın.

Yayınlanma Tarihi: 2022-08-17 20:37:49

Son Düzenleme Tarihi: 2023-06-06 13:48:21