SNMP Protokolü Nedir? Saldırı Türleri ve Araçları?

Faruk Şener
10 min readMar 24, 2020

--

“Simple Network Management Protocol” ün kısaltması. “Basit Ağ Yönetimi Protokolü” adı verilen bu teknoloji, bilgisayar ağları büyüdükçe bu ağlar üzerindeki birimleri denetlemek amacıyla tasarlanmıştır. Cihaz üzerindeki sıcaklıktan, cihaza bağlı kullanıcılara, internet bağlantı hızından sistem çalışma süresine kadar çeşitli bilgiler SNMP’de tanımlanmış ağaç yapısı içinde tutulurlar.

SNMP Nedir?
SNMP, ağ cihazlarında yönetimsel bilgi alışverişinin sağlanması için oluşturulmuş bir uygulama katmanı protokolüdür. TCP/IP protokolünün bir parçası olan SNMP; ağ yöneticilerinin ağ performansını arttırması, ağ problemlerini bulup çözmesi ve ağlardaki genişleme için planlama yapabilmesine olarak sağlar. Günümüzde kullanımda olan 3 tane SNMP sürümü mevcuttur.

SNMP Versiyonları

SNMPv1

En eski versiyonudur ve yönetilen cihazlardan veri çekmek için basit fonksiyonlar sağlar. Basit ve kolay kullanılabilir bir yapıya sahiptir ve şifreleme algoritması barındırmaz. Güvenlik sebebiyle sadece LAN seviyesinde kullanmak daha sağlıklı olacaktır.

En büyük dezavantajı ise 32-bit counter yapısı ile günümüzde gigabyte ve terabyte’larla ifade edilen trafik için yetersiz kalmasıdır.

SNMPv2

Bu versiyonla 64-bit counter yapısına geçilmiştir fakat hala bazı kritik bilgilerin clear text olarak gönderiliyor olması, güvenlik açısından pek değer katmamıştır.

SNMPv2 konuşulurken genelde SNMP “v2c” ile karşılaşırız. “c” community anlamına gelmektedir. SNMP ”v2p“ ve . SNMP ”v2u” olmak üzere iki farklı versiyonu daha bulunmaktadır ama bunlar çok nadir durumlarda kullanılırlar.

SNMPv3

2002 yılında ortaya çıkarılan SNMPv3, önceki versiyon olan SNMPv2c özelliklerini barındırmakla birlikte, farklı güvenlik çözümleri ile gelmiştir: Kullanıcı hesabı (user account) tanımlama, kimlik doğrulama (authentication) ve veri şifreleme (encryption) özelliği. Bu açıdan kullanılması tavsiye edilen SNMP versiyonudur fakat unutulmamalıdır ki; bu özellikler yapılandırmayı zorlaştırdığı gibi daha çok veri işlem kapasitesine de ihtiyaç oluşturur.

o noAuthNoPriv : Kimlik doğrulama ve gizlilik olmadan iletişim.

o authNoPriv : Kimlik doğrulama ile ve gizlilik olmadan iletişim. Kimlik Doğrulama için kullanılan protokoller MD5 ve SHA’dır (Güvenli Karma Algoritma).

o authPriv : Kimlik doğrulama ve gizlilik ile iletişim. Kimlik Doğrulama için kullanılan protokoller MD5 ve SHA’ dır; ve Gizlilik için DES (Veri Şifreleme Standardı) ve AES (Gelişmiş Şifreleme Standardı) protokolleri kullanılabilir. Gizlilik Desteği için bazı üçüncü taraf gizlilik paketleri yüklemeniz gerekir. Kurulumla ilgili ayrıntılar “Gizlilik Desteği” konusunda ele alınmaktadır.

SNMP’yi Oluşturan Bileşenler:
Ajan uygulama: SNMP hizmetini cihaz üzerinde çalıştırıp gerekli bilgileri kayıtlı tutarak yönetici birime aktaran veya yönetici birimden gelen değişikliği cihaza uygulayan uygulamaya verilen isim.
Yönetici uygulama: Ajan uygulamadan ihtiyaç duyulan bilgileri alıp kullanıcıya gösteren ve kullanıcının değiştirmek istediği değerleri cihaza gönderen uygulama.
Ağ Yönetim Sistemi (NMS): Yönetici birimde çalışan ve bir ağa bağlı tüm cihazların izlenmesini ve yönetimini sağlayan uygulamaya verilen isimdir.

SNMP Yönetim Bilgi Birimleri(MIB) :MIB kavramı bir ağaç yapısına benzetilebilir. Ulaşılmak istenen değeri tutan değişkene OID (Object IDentifier, Nesne Tanımlayıcısı) adı verilir. MIB yapısındaki sıralamaya göre değer alır. Her kuruluşun, “Internet Engineering Task Force (IETF)” tarafından atanan bir değeri vardır, yani belirli bir yere kadar ağaç yapısı evrenseldir, ancak kurumların kendi kullanacakları yönetim nesneleri için bu kodu her kurum kendi tanımlar . Bu değişkenler ağacın dallarının en uç noktasında olup bir cihazla ilgili tek bir değeri tutabileceği gibi kendisinden sonra gelen bütün alt dalları ifade etmek için de kullanılabilir. Kökten ağaç dalına uzanan bu hiyerarşi birbirlerinden nokta ile ayrılmış sayı dizileriyle ifade edilir. Yönetilen nesneler köke bağlı mantıksal gruplar şeklinde öbeklenir . MIB’i, SNMP ağ cihazlarının veri nesnelerinin tanımlandığı bir ASCII metin belgesi olarak da tanımlayabiliriz. Mesela SNMP sözlüğü gibi düşünebiliriz. Bu sözlükte her SNMP nesnesinin karşılığı rakamsal olarak tutulur. SNMP cihazı bir bildirimde bulunduğu zaman her veri nesnesini OID’lerle tanımlar.

OID değeri ―1.3.6.1.2.1.1.5‖ olan ―sysName‖ değeri ağaç yapısında gösterilmiştir. Buradaki ilk girdi de sysName.0 olarak adlandırılır. Yani komutta 1.3.6.1.2.1.1.5.0 yerine sysName.0 yazılırsa da aynı işlevi görür. Değişkenin başındaki ilk dört sayı, yani 1.3.6.1 standarttır. Bu noktadan sonra ulaşmak istediğimiz bilgiye göre alt dallara ilerlenir. Örneğin 1.3.6.1.2.1.1 dalı sistemle ilgili sistem adı, sistem tanımı, sistemin ayakta olduğu süre gibi değerleri tutar. Bunun alt dalı olan 1.3.6.1.2.1.1.5.0 değişkeni bunlardan biridir (sistem adı):

a : ISO (International Standart Organization)
b : Org (organization)
c : Dod (Department of defense)
d : Internet
e : Mgmt (Network management entries)
f : SNMP MIB v2
g : system
h : sysName
ı : Dalın sonundaki ilk girdiyi belirtir.

Sistem dalı altındaki diğer değerler ise aşağıdaki gibidir:
1.3.6.1.2.1.1.1 — sysDescr (Cihaz tanımlaması için)
1.3.6.1.2.1.1.2 — sysObjectID (Cihaz ID’si için)
1.3.6.1.2.1.1.3 — sysUpTime (Cihazın ne zaman güncellendiği)
1.3.6.1.2.1.1.4 — sysContact (Cihaz iletişim bilgileri)
1.3.6.1.2.1.1.5 — sysName (Cihaz adı)
1.3.6.1.2.1.1.6 — sysLocation (Cihazın fiziksel yeri)
1.3.6.1.2.1.1.7 — sysServices (Cihaz tipini belirler)
Artan ağ gereksinimlerini karşılayabilmek için MIB değerleri zaman içerisinde üretici firmalar tarafından arttırılmıştır. Daha efektif ağ yönetimi sağlayabilmek için sahadaki cihazlardan daha fazla bilgi çekmek gerekir. İhtiyaç duyulan bu veriler için yeni MIB değerleri ortaya çıkarılmıştır. IETF (Internet Engineering Task Force) tarafından bu MIB değerlerini düzenlemek için farklı RFC (request for comments) dökümanları tanımlanmıştır. Bu MIB değerleri iki ana başlık altında toplanmıştır:

1-) MIBv1

Hem hata yönetimi hem de konfigürasyon yönetimi için geliştirilmiş olan MIB v1 için sadece bazı kontrol nesneleri tanımlanmıştır, bu yüzden gelişmiş ağlar için yeterli değildir. MIB v1’de en fazla 100 veri çekişine izin verilmekte olup gereksiz veri çekmeyi engeller.
MIB v1 aşağıdaki alanlarla ilgili veri çekebilir:
a. Sistem

b. Arayüzler

c. Adres çevrimi

d. IP

e. ICMP

f. TCP

g. UDP

h. EGP

1-) MIBv2

MIB v1’den farklı olarak; yeni işlemsel gereksinimler için eklentiler sunar. Bunlar SMI/MIB ve SNMP ile ileriye doğru uyumluluk sağlama, çoklu protokolleri destekleyen cihazları destekleme ve açıklık, okunabilirlik için daha anlaşılabilir bir yapı sunmak şeklinde özetlenebilir.
MIB v2 aşağıdaki alanlarla ilgili veri çekebilir:
a. Sistem

b. Fiziksel adresler

c. Arayüzler

d. Adres çevrimleri

e. IP

f. ICMP

g. TCP

h. UDP

i. EGP

j. İletişim

k. SNMP

Bu çalışmada,”System”, “Interface”, “At”, ve “IP” ana başlıkları altındaki MIB II değerleri kullanılmaktadır.

SNMP Paket Türleri

SNMP üzerinde bulunan 7 adet paket türü:

  1. Get
  2. GetNext
  3. GetBulk (SNMPv2) ( Bant genişliğinden tasarruf eder.)
  4. GetResponse
  5. Set
  6. Trap
  7. Inform (SNMPv2)

Yönetici Get, GetNext ya da GetBulk mesajları ile bir ya da birden fazla değişken verisi talep eder, agent ise GetResponse mesajı ile talep edilen veriyi ya da isteğin neden cevaplandırılamadığını belirten hata mesajını iletir.

Yönetici Set mesajı ile bir değişken üzerindeki verinin değiştirilmesini talep eder, agent ise GetResponse mesajı ile değişikliğin yapıldığını veya hangi nedenle yapılamayacağını belirten GetResponse mesajı iletir.

Trap mesajı ise agent tarafından yöneticiye iletilen, önemli olayı ya da durumu belirten mesajdır.

Inform mesajı, mesaj iletildikten sonra yöneticiden onay paketi beklenir. Onay gelmediği durumda Inform mesajı tekrar gönderilir.

SNMP Saldırıları

Öncelikle öğrendiklerimizin üstünden geçelim ve neler yapılabilir aşama aşama gidelim. İlk olarak az önce okuduğunuz paket türlerinden bu konuda işimize yarayanı ele alalım.

· GetBulkRequest

Bu paket sistemimiz üzerindeki araçların birçok değerini hafızaya kaydeder. Örneğin yazıcımızın ismini, ne tarz toner kullandığını, router üzerindeki IP adreslerini ve benzer bilgileri kaydeder. Buradan çıkarmamız gereken sonuç şudur. GetBulkRequest manipüle edilerek karşılaştığımız sistem hakkında kritik bilgilere ulaşabiliriz. Daha da önemlisi hedefe 87 byte’lık bir getBulkRequest yolladığımızda tüm cihazların verilerinin toplamında 60k byte’a yakın parçalanmış veri geri döner. Yolladığımız veriden 700 kat daha büyük bir veri. Bu öğrendiğimiz bilgiyi biraz daha ileri götürelim. Sürekli olarak sisteme getBulkRequest attığımızı düşünelim. En sonunda erişeceğimiz nokta Denial Of Service !

· Versiyon Kaynaklı Saldırılar

Az önce Version1 ve Version2c’nin güvenlik açısından eksik olduğundan bahsetmiştim. Nedenini Version3’ten az da olsa kestirebilirsiniz. Bu iki versiyonda veriler plain-text’tir. Herhangi bir encryption kullanılmaz. Şifreler plain-text olduğundan dolayı network trafiğinden doğruca snifflenebilir.

· Default Configuration

Default Configuration kullanılması durumunda değiştirilmemiş kullanıcı ismi ve şifre ile sisteme girilebilir. Sistemdeki “Public” ve “Private” community stringlere erişilebilir.

a. Public Community String, bize sistem üzerinde sadece okuma izni olan yerlere erişim imkanı sağlar. Yani Management Information Base (MIB)’e erişimimiz olur. Burada tutulan her veriyi okuyabiliriz. Network arayüzleri, bağlantılar, Sistem versiyonu, dolaylı olarak sistem üzerinde bulunan zaafiyetleri burada okuduğumuz veriler sayesinde öğrenebiliriz.

b. Private Community String, sistem üzerinde hem okuma hem yazma iznine sahip olmamızı sağlar. Yazma iznimiz olduğuna göre Network Arayüzlerini down duruma getirerek başka bir Denial Of Service Attack yapabiliriz. Burada yapılacak başka bir yöntem de yönlendirmeler üzerinde oynayarak başka sistemleri üzerimize yönlendirip bu sistemlere erişim sağlamaktır.

Özet olarak; Simple Network Management Protokolü tanımış olduk. Çalışma mekanizması hakkında fikirler edindik. Edindiğimiz fikirler doğrultusunda sistemi zarara uğratmaya neler sebep olur, bunları gördük. Bu bilgilerin üzerine bir şeyler koyup daha iyilerini yapabilmek size kalmış

Saldırıdan önce GNS3 ile simülasyon ortamını oluşturalım.

Buradan bakabilirsiniz.

Router’a SNMP Konfigurasyonu yapmak için buraya bakabilirsiniz.

SNMPWALK

SNMPWALK, bilgi için bir ağ aygıtını sorgulamak için SNMP GETNEXT isteklerini kullanan Güvenlik Yönetim Sistemi (SMS) CLI ‘sinde bulunan Basit Ağ Yönetimi Protokolü (SNMP) uygulamasıdır. Belirtilen Object ID’ nin altındaki alt ağaçtaki tüm değişkenler sorgulanır ve değerleri kullanıcıya sunulur. GET isteğinde bulunmak için snmpget, SET isteğinde bulunmak için snmpset komutları kullanılır. Uzak SNMP-enabled bir cihazdan merkezi bir toplayıcı olan “SNMP yöneticisi” ne uyarı mesajları göndermek için snmptrap komutunu kullanılırız.

snmpwalk v1 kullanımı:

snmpwalk -v1 -c public 192.168.227.10 1.3.6.1.2.1.1.5.0

snmpwalk v2c kullanımı:

snmpwalk -v2c -c public 192.168.227.10 1.3.6.1.2.1.1.5.0

Not: “snmpwalk” ile gerçekleştirilen benzer işlemler, “snmpbulkwalk” aracı ile de gerçekleştirilebilir. “snmpbulkwalk” aracı SNMPv1 için çalışmamakla birlikle, SNMPv2 üzerinde oldukça hızlı çalışmaktadır.

snmpwalk v3 kullanımı:

snmpwalk -v3 -l authPriv -u USER -a SHA -A “PASSWORD1” -x AES -X “PASSWORD1” 192.168.227.10:161

Daha detaylı bir şekilde bakmak isterseniz buradan bakabilirsiniz.

SnmpManager Makinesinden agent’a snmp get isteği gönderip gelen bilgiyi görebiliriz.

Versiyon 2c kullandığımız için trafik şifreli değildir. Wireshark ile paketin içeriği görülebilir.

Eğer paketin şifreli olarak gelmesi için versiyon 3 kullanmamız gerekir.

Şimdi saldırı araçlarını kullanarak SNMP şifrelerini ele geçirebiliriz.

Saldırı Araçları

Hydra

Hydra genellikle tercih edilen araçtır. Telnet, FTP, HTTP, HTTPS, smb, çeşitli veritabanları ve çok daha fazlası dahil olmak üzere 50'den fazla protokole karşı hızlı sözlük saldırıları gerçekleştirebilir

Şimdi bir kelime listesi seçmemiz gerekiyor. Herhangi bir sözlük saldırısında olduğu gibi, kelime listesi anahtardır. Kali’de yerleşik çok sayıda kelime listesi var.

Aşağıdaki komutu çalıştırın:

hydra -P /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt 192.168.227.10 snmp

-P: şifre listesinin yolunu gösterir

Komutlar yürütüldüğünde, sözlük saldırısını uygulamaya başlayacaktır ve böylece hemen doğru kullanıcı adı ve şifreye sahip olursunuz. Gördüğünüz gibi SNMP şifresini public, private ve pass olarak başarıyla yakaladık.

Medusa

Medusa’nın hızlı, büyük ölçüde paralel, modüler, giriş brute-forcer olması amaçlanmıştır. Birçok protokolü destekler: AFP, CVS, FTP, HTTP, IMAP, rlogin, SSH, SNMP ve VNC

medusa -M snmp -h 192.168.227.10 -P ~/Desktop/trypass -u test-admin

Buraya

-h: ana bilgisayar IP’sini gösterir

-u: belirli bir kullanıcıyı gösterir

Ancak Brute zorlama SNMP kullanıcı adı gerektirmez, ancak medusa uygun bir sözdizimi olmadan çalışmaz, istediğiniz herhangi bir kullanıcı adını kullanabilirsiniz

- P: şifre listesinin yolunu gösterir

Gördüğünüz gibi SNMP şifresini public, private ve pass olarak başarıyla yakaladık .

Metasploit

Bu modül, çeşitli makinelerde SNMP girişlerini test edecek ve başarılı girişleri bildirecektir. Bir veritabanı eklentisi yüklediyseniz ve bir veritabanına bağlandığınızda, bu modül başarılı girişleri ve ana bilgisayarları kaydeder, böylece erişiminizi takip edebilirsiniz. Metasploit’te SNMP ile ilgili birçok modül vardır. Örnek olarak snmp_login modülü kullanılacaktır.

Açık Kali terminal tipi msfconsole

use auxiliary/scanner/snmp/snmp_login

msf auxiliary(scanner/snmp/snmp_login)> set rhosts 192.168.227.10

msf auxiliary(scanner/snmp/snmp_login)> set stop_on_success true

msf auxiliary(scanner/snmp/snmp_login)> run

Aşağıdaki görüntüden SNMP şifresini başarıyla aldığımızı gözlemleyebilirsiniz.

Nmap

Nmap kullanarak snmp ile ilgili bilgiler almak için birçok nse script’leri vardır.

Buradan bakabilirsiniz.

Eğer tüm SNMP numaralandırma nmap komut dosyalarını bir ana bilgisayara karşı çalıştırmak istiyorsak ‘-sC’ seçeneğini kullanırız.

sudo nmap -sU -p 161 -sC -sV 192.168.227.10

Onesixtyone

Onesixtyone, birden fazla IP adresine birden çok SNMP isteği gönderen, farklı topluluk dizelerini deneyen ve yanıt bekleyen bir SNMP tarayıcıdır.

onesixtyone 192.168.227.10 -c ~/Desktop/trypass

Yukarıda gördüğünüz gibi şifre onesixtyone kullanarak pass, public ve private olarak bulunmuş oluyor.

SNMPPLUX

SNMPPLUX adlı böyle bir araç, daha büyük bir geliştirme projesinin (ORR) bir dalıdır. SNMPPLUX, pysnmp, re, sys, getopt, dizi, zaman ve çok işlemli python modülleri tarafından desteklenen USM uyumlu SNMPv1, SNMPv2c ve SNMPv3 kimlik doğrulama tarayıcısıdır. SNMPv1 ve v2c topluluk sözlüğü saldırılarını sağlamanın yanı sıra, aşağıdaki kimlik doğrulama türleri için SNMPv3 için kullanıcı adı ve parola sözlüğü saldırıları da sağlar. https://github.com/InteliSecureLabs/SNMPPLUX adresinden indirilebilir.

SNMPDoS

Amplifikasyon ile yapılan SNMP reflection saldırısı, nispeten küçük bir giriş akışından bile çok daha yüksek trafik hacimleri üretebilir ve sonuçta çok daha etkili ve daha tehlikeli bir hizmet reddi tehdidine dönüşebilir. Buna amplification saldırısı denir. Bu araç ile bu saldırı yapılabilir. https://github.com/vpnguy-zz/snmpdos adresinden indirilebilir.

SNMPwn

SNMPwn, bir SNMPv3 kullanıcı numaralandırıcı ve saldırı aracıdır. Güvenlik uzmanları ve penetrasyon test cihazları tarafından test etme iznine sahip olduğunuz ana bilgisayarlara karşı kullanılmak üzere tasarlanmış meşru bir güvenlik aracıdır. SNMP kullanıcısı olmadığında, SNMPv3 sistemlerinin “Unknown User Name” ile yanıt vermesi avantajından yararlanır ve bu sayede büyük kullanıcı listelerinde dolaşanları bulmamıza izin verir. https://github.com/hatlord/snmpwn adresinden indirilebilir.

Referanslar:

http://peanuter.darpanet.org/?p=84

https://bestmonitoringtools.com/snmpwalk-example-v3-v2-snmpget-snmpset-snmptrap/

https://resources.infosecinstitute.com/snmp-pentesting/

https://www.sans.org/reading-room/whitepapers/networkdevs/securing-snmp-net-snmp-snmpv3-1051

https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=2ahUKEwju8-PJ9bLoAhXkQhUIHVwPBXwQFjABegQIBxAB&url=http%3A%2F%2Fwww.emo.org.tr%2Fekler%2F139817e4e2bc123_ek.pdf&usg=AOvVaw3q4zyfr4anHdm9b9J7K_Lx

https://www.9tut.com/simple-network-management-protocol-snmp-tutorial

http://fac.ksu.edu.sa/sites/default/files/lab-06-snmpv3-security.pdf

http://www.on-time.com/rtos-32-docs/rtip-32/programming-manual/snmp/snmpv2.htm

https://home.cyber.ee/~ahtbu/CDS2011/MaunoPihelgasSlides.pdf

http://www.h3c.com.hk/download.do?id=622882

http://www.snmp.com/snmpv3/v3bcp.pdf

https://www.usenix.org/system/files/conference/woot12/woot12-final14.pdf

--

--