SNMP Güvenliği ve Router Pentest

SNMPv1 ve SNMPv2 yönetim sırasında kimlik doğrulamayı sağlamak içn topluluk ismi (community name) adı verilen bir kimlik doğrulayıcı/şifre kullanır, kullanıcı adı kullanılmaz. SNMPv3 ise şifreleme ve mesaj bütünlüğü sağlayarak kimlik doğrulamayı daha güvenilir hale getirmiştir. SNMPv3 ile kimlik doğrulama sırasında kullanıcı adı ve şifre birlikte kullanılarak daha güvenilir bir yapı sunar. Ancak SNMPv3 kullanımı henüz yaygınlaşmamış, SNMPv1 ve özellikle SNMPv2 daha sık kullanılmaktadır. Bu yazıda da eski sürüm SNMP ile kimlik doğrulaması sırasında varsayılan topluluk ismi verilmiş bir Router konfigürasyonu değiştirilecektir.
Önceki bir yazıda GNS3 kullanarak Router konfigürasyonun basit olarak nasıl gerçekleştirilebildiği konusuna değinilmiş ve ayrıca ağ sızma testleri için basit bir lab ortamı hazırlanmıştı. Bu yazıda önceki yazıya benzer bir ortam için ağ sızma testi gerçekleştirilecektir. Yazı 5 adımdan oluşacaktır.
  1. Mevcut ortamın incelenecek ve hedef ağa erişimin sağlanamadığı görülecektir.
  2. Router keşfedilecektir.
  3. Keşfedilen Router üzerinde kullanılan topluluk isimleri belirlenecek ve bu topluluk isimlerine ait erişimler tespit edilecektir.
  4. Yazma ve Okuma erişim yetkisi olan topluluk ismi ile Router konfigürasyonu çekilecektir.
  5. Elde edilen Router konfigürasyon bilgisi güncellenerek Router’a geri yüklenecektir.

1) Mevcut Durum

Ortamımızda 4 adet bilgisayar bulunmaktadır:

Topoloji temel olarak aşağıdaki gibidir:

  • Saldırgana ait Windows 7 makinesinin IP değeri 192.168.0.10, Kali makinesinin IP adresi ise 192.168.0.11 olarak belirlenmiştir. 
  • Kurbana ait Windows 7 makinesinin IP değeri 10.0.0.10 olarak belirlenmiştir. 
  • Ubuntu üzerinde kurulu olan Router’ın saldırgan makinelerinin bulunduğu ağa bakan bacağının IP değeri 192.168.0.200, kurban makinesinin bulunduğu ağa bakan bacağının IP değeri 10.0.0.200 olarak belirlenmiştir. 

2) Router Keşfi

Router gibi aktif cihazlar birbirleriyle haberleşirken SNMP (Simple Network Management Protocol) kullanırlar. Bu protokol haberleşmesi sırasında UDP’yi kullanır. Router üzerindeki SNMP ajanı da UDP 161 portunu dinler ve gelen taleplere cevap verirler. Ayrıca gelen kesme (SNMP trap) bilgilerini alabilmek için de UDP 162 portunu dinler.

Router keşfi için UDP 161 portu açık olan bilgisayar tespit edilecektir. Bu amaçla Kali üzerindeki nmap aracı kullanılabilir. Port tarama sonucunda 192.168.0.200 IP numaralı makinenin UDP 161. portunun açık olduğu görülmektedir.

nmap 192.168.0.0/24 -sU -p161 –open -Pn -n

3) Topluluk İsimlerinin ve Bu Topluluk İsimlerine Ait Erişimlerin Keşfedilmesi

Bu yazıda kullanılacak Router üzerindeki topluluk isimleri varsaylan olarak okuma işlemleri için Public, okuma ve yazla işlemleri için ise Private olarak belirlenmiştir. Bu değerlerin değiştirilmesi tavsiye edilmesi bir çok durumda değiştirilmemekte veya oldukça karmaşık verilmemektedir. Bu sebeple, Ruoter’ların konfigürasyon dosyalarına kolay bir şekilde erişim sağlanabilmektedir.

Bu başlıkta topluluk isimlerinin ve erişimlerinin belirlenmesi için 5 yöntem kullanılacaktır.

i) Nmap “snmp-brute” betiği ile topluluk isimleri keşfedilecektir.

ii) MSF “snmp_login” modülü ile topluluk isimleri keşfedilecek ve keşfedilen topluluk isimlerine ait erişim hakları belirlenecektir.

iii) MSF “snmp_enum” modülü ile daha önceden bilinen topluluk isimlerinin okuma izninin olup olmadığı belirlenecektir.

iv) Kali’deki “snmpcheck” aracı ile daha önceden bilinen topluluk isimlerinin okuma ve yazma izninin olup olmadığı belirlenecektir.

v) Kali’deki “snmpwalk” aracı ile daha önceden bilinen topluluk isimlerinin okuma izninin, “snmpset” aracıyla ise yazma izninin olup olmadığı belirlenecektir.

i) Nmap “snmp-brute” betiği

Nmap ile versiyon taraması ve SNMP topluluk ismi için NSE betiği kullanıldığında topluluk isimlerinin varsayılan (Public ve Private) olarak bırakıldığı görülmüştür.

nmap 192.168.0.200 -sU -p161 –open -Pn -n –script=snmp-brute

Eğer bir sözlük oluşturulmuşsa bu sözlük de betiği argüman olarak verilebilir:

nmap 192.168.0.200 -sU -p161 –open -Pn -n –script=snmp-brute –script-args snmp-brute.communitiesdb=/root/Desktop/ToplulukIsımleri.txt

ii) MSF “snmp_login” modülü

Topluluk isimlerinin keşfi ve erişim yetkilerinin belirlenmesi için MSF modülleri de kullanılabilir. MSF üzerindeki SNMP ile ilgili bilgi toplama modülleri aşağıdaki gibidir:

Bu modüllerden “snmp_login” modülü ile topluluk ismi keşfedilebilir ve bu topluluk isimlerinin erişim yetkisi belirlenebilmektedir. “snmp_login” modülü ilgili seçenekler şu şekildedir:

PASS_FILE seçeneğinde belirtilen sözlükteki tüm topluluk isimleri denendiğinde 2 adet topluluk isminin (Public ve Private) Router üzerinde kullanıldığı tespit edilmiştir. Ayrıca bu topluluk isimlerinin erişim düzeyleri de Public için sadece Okuma, Private için ise Okuma ve Yazma olduğu görülmektedir.

iii) MSF “snmp_enum” modülü

MSF’e ait bir diğer snmp ile ilgili modül ise “snmp_enum” modülüdür. Bu modül ile, SNMP desteği olan ve topluluk ismi keşfedilen bir araca ait donanım, yazılım, ağ gibi bilgileri elde edilir. Kısacası, örnek Router için enumeration işlemi gerçekleştirilebilir. MSF “snmp_enum” modülünün kullanımı aşağıdaki gibidir:

Elde edilen bilgilerin devamı şu şekildedir:

Diğer bilgiler ise aşağıdaki gibidir:

Not: MSF “snmp_enum” modülüne topluluk ismi olarak “Private” verildiği durumda da aynı sonuçlar dönmektedir.

iv) Kali’deki “snmpcheck” aracı

Topluluk isimlerinin erişimlerinin belirlenmesi için MSF modülleri yerine Kali üzerindeki “snmpcheck” aracı da kullanılabilmektedir.

“Public” topluluk ismi ile Router’a ait SMNP bilgileri elde edilebildiği görülmektedir:

Benzer olarak “Private” topluluk ismi için de bu bilgiler elde edilebilmektedir:

Yazma erişimlerinin kontrolü için “-w” parametresi kullanıldığında ise, “Public” topluluk isminin yazma erişim izni yokken, “Private” topluluk ismi için ise yazma erişim izninin bulunduğu görülmektedir.

v) Kali’deki “snmpwalk” ve “snmpset” araçları

Kali üzerindeki “snmpwalk” aracıyla SNMP veritabanındaki tüm bilgiler, “snmpcheck” aracına benzer olarak, elde edilebilir. Bu araç ile ilgili ayrıntlı bilgi için “-h” seçeneği eklenir:

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.

Router hakkındaki tüm değişkenler “Public” topluluk ismi ile elde edilebilmiştir:

snmpwalk -v2c -c public 192.168.0.200

Tüm MIB değerleri bu şekilde listelenmektedir:

Benzer şekilde “Private” topluluk ismi ile de aynı bilgiler elde edilebilmektedir.

Tek bir değeri sorgulamak için ise ilgili OID değeri belirtilmelidir.

Böylece, “Public” ve “Private” topluluk isimlerinin okuma izinlerinin olduğu “snmpwalk” aracı ile görülmüştür. Bu topluluk isimlerinin yazma izinlerinin olup olmadığının kontrolü için “snmpset” aracı kullanılır.

4) Router Konfigürasyonuna Erişimin Sağlanması

Önceki başlık altında “Public” topluluk ismi için okuma, “Private” topluluk ismi için ise Okuma/Yazma erişim izinlerinin olduğu görülmüştür. Bu başlıkta ise, Router üzerindeki konfigürasyon bilgileri çekilecektir. Bu işlem 2 farklı yöntem ile gerçekleştirilebilmektedir:

i) Cain & Abel aracı kullanılarak Router konfigürasyon bilgileri elde edilebilir.

ii) MSF “cisco_config_tftp” modülü kullanılarak Router konfigürasyon bilgileri elde edilebilir.

i) Cain & Abel aracı

Cain & Abel aracında CCDU sekmesinde “+” butonuna basıldığında “Cisco Config Downloader” penceresi açılmaktadır. Bu pencerede Router IP bilgisi ve okuma/yazma hakkı olan topluluk ismi verilebilmektedir.

Böylece konfigürasyon bilgisi elde edilebilmektedir.

Konfigürasyon dosyası varsayılan olarak “C:Program Files (x86)CainCCDU” dizini altına saklanmaktadır. Bu dosya içeriği aşağıdaki gibidir:

Dosya içeriği özetle aşağıdaki gibidir:

no service password-encryption
!
hostname Router
!
enable password en
!
username cisco privilege 0 password 0 cisco123
username root privilege 15 password 7 0236054818115F33480f
!
interface Ethernet0/0
ip address 192.168.0.200 255.255.255.0
ip access-group 150 in
half-duplex
!
interface Ethernet0/1
ip address 10.0.0.200 255.255.255.0
half-duplex
!
interface Ethernet0/2
no ip address
shutdown
half-duplex
!
interface Ethernet0/3
no ip address
shutdown
half-duplex
!
ip http server
no ip http secure-server
!
access-list 150 deny ip 192.168.0.0 0.0.0.255 10.0.0.0 0.0.0.255
access-list 150 permit ip any any
snmp-server community private RW
snmp-server community public RO
snmp-server contact HASH(0x90b3d28)
!
line con 0
line aux 0
line vty 0 4
privilege level 15
login local
transport input telnet
!
end

ii) MSF “cisco_config_tftp” modülü

MSF “cisco_config_tftp” modülü kullanılarak da Router konfigürasyon bilgisi elde edilebilir. Modül seçenekleri aşağıdaki gibidir:

Modül seçenekleri ayarlandığında konfigürasyon dosyası çekilebilmektedir.

Konfigürasyon dosyasının içeriği aşağıdaki gibidir:

5) Router Konfigürasyonunun Değiştirilmesi

Konfigürasyon bilgisi elde edildikten sonra Router üzerinde herhangi bir değişiklik yapılabilir. Böylece Router için bir yeni bir kullanıcı oluşturulabilir, bir bağlantı (SSH, Telnet, HTTP gibi) açılabilir veya kurallarda değişiklik yapılarak normalde erişim sağlanamayan bir yere erişim sağlanabilir. Bu yazı için örnek olarak yazma ve okuma izni olan yeni bir topluluk ismi eklenecektir. Normalde “Public” ve “Private” olmak üzere 2 adet topluluk ismi bulunmaktaydı. Nmap betiği ile sözlük saldırısı gerçekleştirildiğinde sadece “Public” topluluk ismi tespit edilmekteydi. Çünkü sözlükte “Public”, “Test” ve “Monitor” anahtar kelimeleri bulunmaktaydı:

Yapılacak konfigürasyon değişikliği ile “Test” adlı topluluk ismi konfigürasyon dosyasına eklenecektir. Gerçekleştirilecek konfigürasyon bilgisi değişikliği temel olarak 3 yol ile olabilir:

i) Cain & Abel aracı ile değiştirilebilir.

ii) MSF “cisco_upload_file” modülü ile değiştirilebilir.

iii) Router komut satırına erişim (Telnet, SSH vs) sağlandıktan sonra değiştirilebilir. 

i) Cain & Abel aracı

Router konfigürasyonunun değişikliği için Cain & Abel aracı kullanılabilir. Önceki adımda elde edilen konfigürasyon bilgisi aşağıdaki gibidir:

Bu dosyaya bir topluluk ismi eklenerek kaydedilmiştir:

Sonrasında da hedef Router’a yüklenecektir. Bu amaçla, Cain & Abel üzerinde değiştirilmiş olan konfigürasyon dosyası seçilerek Upload işlemi gerçekleştirilir.

Not: Bu işlem sorasında “No response from SNMP service” gibi bir hata mesajı ile karşılaşılabbilmektedir. UDP protokolü gereği cevap alınamadığı durumda bu hata mesajı gelebilmektedir. Bir kaç deneme sonrasında işlem başarılı bir şekilde gerçekleşmektedir.

Konfigürasyon değişikliği sonrasında yeni topluluk isminin elde edilebildiği görülmektedir:

ii) MSF “cisco_upload_file” modülü ile

Önceki adımlarda Kali’deki /root/Desktop dizinine konfigürasyon dosyası kaydedilmişti. Bu dosya aşağıdaki gibidir:

Bu dosyaya da benzer şekilde bir topluluk ismi eklenerek kaydedilmiştir:

Sonrasında hedef Router’a yüklenecektir. Bu işlem için MSF üzerindeki “cisco_upload_file” modülü kullanılacaktır. Bu modül ile ilgili seçenekler aşağıdaki gibidir:

Seçenekler ayarlanıp modül çalıştırıldığında yükleme işlemi gerçekleşecektir.

iii) Konsol erişimi ile

Router konsoluna erişim için kullanıcı erişim bilgileri gerekmektedir. Erişim bilgilerinin elde edilmesi için çeşitli yöntemler bulunmaktadır. Bu yöntemler başka bir yazıda incelenecektir.

Kaynaklar

Ana Sayfa

The following two tabs change content below.
Furkan Sandal
Hayata bilgisayarla gözlerini açan, linux kullanmaktan vazgeçmeyen, ömrünü siber güvenliğe atayan zaat.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir