161,162,10161,10162/udp - Pentesting SNMP
Reading time: 10 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
SNMP - Basit Ağ Yönetim Protokolü ağdaki farklı cihazları (yönlendiriciler, anahtarlar, yazıcılar, IoT'ler gibi) izlemek için kullanılan bir protokoldür.
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
note
SNMP ayrıca 162/UDP portunu traps için kullanır. Bunlar, SNMP sunucusundan istemciye açıkça talep edilmeden gönderilen veri paketleridir.
MIB
SNMP erişiminin üreticiler arasında ve farklı istemci-sunucu kombinasyonlarıyla çalışmasını sağlamak için Yönetim Bilgi Tabanı (MIB) oluşturulmuştur. MIB, cihaz bilgilerini depolamak için bağımsız bir formattır. Bir MIB, bir cihazın sorgulanabilir SNMP nesnelerinin listelendiği standartlaştırılmış bir ağaç hiyerarşisinde bulunan bir metin dosyasıdır. En az bir Nesne Tanımlayıcı
(OID
) içerir; bu, gerekli benzersiz adres ve bir isim ile birlikte, ilgili nesnenin türü, erişim hakları ve açıklaması hakkında bilgi sağlar.
MIB dosyaları, Soyut Söz Dizimi Notasyonu Bir
(ASN.1
) tabanlı ASCII metin formatında yazılmıştır. MIB'ler veri içermez, ancak hangi bilginin nerede bulunacağını ve neye benzediğini açıklar; belirli OID için dönen değerleri veya hangi veri türünün kullanıldığını belirtir.
OIDs
Nesne Tanımlayıcıları (OIDs) kritik bir rol oynar. Bu benzersiz tanımlayıcılar, Yönetim Bilgi Tabanı (MIB) içindeki nesneleri yönetmek için tasarlanmıştır.
MIB nesne kimliklerinin en yüksek seviyeleri, çeşitli standart belirleyici kuruluşlara tahsis edilmiştir. Bu üst seviyelerde, küresel yönetim uygulamaları ve standartları için çerçeve oluşturulmaktadır.
Ayrıca, satıcılara özel dallar oluşturma özgürlüğü verilmektedir. Bu dallar içinde, kendi ürün serilerine ilişkin yönetilen nesneleri ekleme özerkliğine sahiptirler. Bu sistem, farklı satıcılar ve standartlar arasında geniş bir nesne yelpazesini tanımlama ve yönetme için yapılandırılmış ve organize bir yöntem sağlar.
Bir OID ağacında web üzerinden gezinmek için buradan ulaşabilirsiniz: http://www.oid-info.com/cgi-bin/display?tree=#focus veya bir OID'nin ne anlama geldiğini görmek için (örneğin 1.3.6.1.2.1.1
) http://oid-info.com/get/1.3.6.1.2.1.1 adresine erişebilirsiniz.
1.3.6.1.2.1 içinde tanımlanan MIB-2'ye atıfta bulunan bazı iyi bilinen OID'ler vardır. Ve bu OID'lerden bekleyen OID'ler ile bazı ilginç ana bilgisayar verileri (sistem verileri, ağ verileri, süreç verileri...) elde edebilirsiniz.
OID Örneği
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
Bu adresin ayrıntılı açıklaması:
- 1 – buna ISO denir ve bu bir OID olduğunu belirtir. Bu nedenle tüm OID'ler "1" ile başlar.
- 3 – buna ORG denir ve cihazı üreten organizasyonu belirtmek için kullanılır.
- 6 – bu, interneti ilk kuran organizasyon olan Savunma Bakanlığı'dır.
- 1 – bu, tüm iletişimlerin İnternet üzerinden gerçekleşeceğini belirtmek için internetin değeridir.
- 4 – bu değer, bu cihazın özel bir organizasyon tarafından yapıldığını ve devlet tarafından yapılmadığını belirler.
- 1 – bu değer, cihazın bir işletme veya ticari varlık tarafından yapıldığını belirtir.
Bu ilk altı değer, tüm cihazlar için genellikle aynıdır ve size temel bilgileri verir. Bu sayı dizisi, cihaz devlet tarafından yapılmadığı sürece tüm OID'ler için aynı olacaktır.
Sonraki sayı grubuna geçelim.
- 1452 – bu cihazı üreten organizasyonun adını verir.
- 1 – cihazın türünü açıklar. Bu durumda, bir alarm saatidir.
- 2 – bu cihazın uzaktan terminal birimi olduğunu belirler.
Diğer değerler, cihaza özgü bilgileri verir.
- 5 – ayrık bir alarm noktasını belirtir.
- 1 – cihazdaki belirli bir nokta
- 3 – port
- 21 – portun adresi
- 1 – port için gösterim
- 4 – nokta numarası
- 7 – noktanın durumu
SNMP Sürümleri
SNMP'nin 2 önemli sürümü vardır:
- SNMPv1: Ana sürüm, hala en yaygın olanıdır, kimlik doğrulama bir dizeye (topluluk dizesi) dayanır ve düz metin içinde iletilir (tüm bilgiler düz metin içinde iletilir). Sürüm 2 ve 2c de trafiği düz metin içinde gönderir ve kimlik doğrulama olarak bir topluluk dizesi kullanır.
- SNMPv3: Daha iyi bir kimlik doğrulama biçimi kullanır ve bilgiler şifreli olarak iletilir (bir sözlük saldırısı gerçekleştirilebilir ancak SNMPv1 ve v2'ye göre doğru kimlik bilgilerini bulmak çok daha zor olacaktır).
Topluluk Düzeyleri
Daha önce belirtildiği gibi, MIB'de saklanan bilgilere erişmek için sürüm 1 ve 2/2c'de topluluk dizesini, sürüm 3'te ise kimlik bilgilerini bilmeniz gerekir.
2 tür topluluk dizesi vardır:
public
esasen sadece okuma işlevleriprivate
Okuma/Yazma genel olarak
Bir OID'nin yazılabilirliğinin, kullanılan topluluk dizesine bağlı olduğunu unutmayın, bu nedenle "public" kullanıldığını bulsanız bile bazı değerleri yazma yeteneğine sahip olabilirsiniz. Ayrıca, her zaman "Sadece Okuma" olan nesneler de mevcut olabilir.
Bir nesneye yazmaya çalıştığınızda noSuchName
veya readOnly
hatası alınır.
Sürümler 1 ve 2/2c'de kötü bir topluluk dizesi kullanırsanız, sunucu yanıt vermez. Yani, yanıt verirse, geçerli bir topluluk dizesi kullanılmıştır.
Portlar
- SNMP ajanı, UDP portu 161 üzerinde istekleri alır.
- Yönetici, port 162 üzerinde bildirimleri ( Traps ve InformRequests) alır.
- Taşıma Katmanı Güvenliği veya Datagram Taşıma Katmanı Güvenliği ile kullanıldığında, istekler port 10161 üzerinde alınır ve bildirimler port 10162'ye gönderilir.
Brute-Force Topluluk Dizesi (v1 ve v2c)
Topluluk dizesini tahmin etmek için bir sözlük saldırısı gerçekleştirebilirsiniz. SNMP'ye karşı bir brute-force saldırısı gerçekleştirmenin farklı yollarını buradan kontrol edin. Sık kullanılan bir topluluk dizesi public
'dir.
SNMP'yi Sıralama
Cihazdan toplanan her OID'nin ne anlama geldiğini görmek için aşağıdakileri yüklemeniz önerilir:
apt-get install snmp-mibs-downloader
download-mibs
# Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf
sudo vi /etc/snmp/snmp.conf
Geçerli bir topluluk dizesini biliyorsanız, veriye SNMPWalk veya SNMP-Check kullanarak erişebilirsiniz:
snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot
snmpbulkwalk -c public -v2c 10.10.11.136 .
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP]
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] 1.3.6.1.2.1.4.34.1.3 #Get IPv6, needed dec2hex
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] NET-SNMP-EXTEND-MIB::nsExtendObjects #get extended
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] .1 #Enum all
snmp-check [DIR_IP] -p [PORT] -c [COMM_STRING]
nmap --script "snmp* and not snmp-brute" <target>
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
Genişletilmiş sorgular (download-mibs) sayesinde, aşağıdaki komut ile sistem hakkında daha fazla bilgi elde etmek mümkündür:
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
SNMP, ana bilgisayar hakkında birçok bilgiye sahiptir ve ilginç bulabileceğiniz şeyler şunlardır: Ağ arayüzleri (IPv4 ve IPv6 adresi), Kullanıcı adları, Uptime, Sunucu/OS versiyonu ve çalışan işlemler (şifreler içerebilir)....
Tehlikeli Ayarlar
Ağ yönetimi alanında, belirli yapılandırmalar ve parametreler kapsamlı izleme ve kontrol sağlamak için anahtardır.
Erişim Ayarları
Tam OID ağacına erişimi sağlayan iki ana ayar, ağ yönetiminde kritik bir bileşendir:
rwuser noauth
, kimlik doğrulama gerektirmeden OID ağacına tam erişim izni vermek için ayarlanmıştır. Bu ayar basittir ve sınırsız erişim sağlar.- Daha spesifik kontrol için, erişim şu şekilde verilebilir:
rwcommunity
IPv4 adresleri için, verwcommunity6
IPv6 adresleri için.
Her iki komut da bir topluluk dizesi ve ilgili IP adresi gerektirir, talebin kaynağından bağımsız olarak tam erişim sunar.
Microsoft Windows için SNMP Parametreleri
SNMP aracılığıyla bir Windows sisteminin çeşitli yönlerini izlemek için bir dizi Yönetim Bilgi Tabanı (MIB) değeri kullanılır:
- Sistem İşlemleri:
1.3.6.1.2.1.25.1.6.0
aracılığıyla erişilen bu parametre, sistemdeki aktif işlemlerin izlenmesini sağlar. - Çalışan Programlar:
1.3.6.1.2.1.25.4.2.1.2
değeri, şu anda çalışan programların izlenmesi için ayrılmıştır. - İşlem Yolu: Bir işlemin nereden çalıştığını belirlemek için
1.3.6.1.2.1.25.4.2.1.4
MIB değeri kullanılır. - Depolama Birimleri: Depolama birimlerinin izlenmesi
1.3.6.1.2.1.25.2.3.1.4
ile sağlanır. - Yazılım Adı: Bir sistemde yüklü yazılımı tanımlamak için
1.3.6.1.2.1.25.6.3.1.2
kullanılır. - Kullanıcı Hesapları:
1.3.6.1.4.1.77.1.2.25
değeri, kullanıcı hesaplarının izlenmesini sağlar. - TCP Yerel Portları: Son olarak,
1.3.6.1.2.1.6.13.1.3
, aktif ağ bağlantılarına dair içgörü sağlayarak TCP yerel portlarının izlenmesi için ayrılmıştır.
Cisco
Eğer Cisco ekipmanınız varsa bu sayfaya göz atın:
SNMP'den RCE'ye
Eğer SNMP hizmeti içinde değerler yazmanıza izin veren bir dize varsa, bunu komutları çalıştırmak için kötüye kullanabilirsiniz:
Kapsamlı SNMP
Braa, toplu bir SNMP tarayıcısıdır. Bu tür bir aracın amaçlanan kullanımı, elbette, SNMP sorguları yapmaktır – ancak net-snmp'deki snmpwalk'tan farklı olarak, aynı anda onlarca veya yüzlerce ana bilgisayarı sorgulayabilir ve tek bir işlemde çalışır. Böylece, çok az sistem kaynağı tüketir ve taramayı ÇOK hızlı yapar.
Braa, KENDİ snmp yığınına sahiptir, bu nedenle net-snmp gibi herhangi bir SNMP kütüphanesine ihtiyaç duymaz.
Sözdizimi: braa [Topluluk-dizesi]@[SNMP sunucusunun IP'si]:[iso id]
braa ignite123@192.168.1.125:.1.3.6.*
Bu, manuel olarak işleyemeyeceğiniz çok fazla MB bilgi çıkarabilir.
Şimdi en ilginç bilgileri arayalım (from https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
Cihazlar
Süreç, cihazları tanımlamak için her dosyadan sysDesc MIB verisi (1.3.6.1.2.1.1.1.0) çıkarılmasıyla başlar. Bu, bir grep komutu kullanılarak gerçekleştirilir:
grep ".1.3.6.1.2.1.1.1.0" *.snmp
Özel Dizeyi Belirleme
Kritik bir adım, özellikle Cisco IOS yönlendiricilerinde, organizasyonlar tarafından kullanılan özel topluluk dizesini belirlemeyi içerir. Bu dize, yönlendiricilerden çalışan yapılandırmaları çıkarmayı sağlar. Belirleme genellikle "trap" kelimesini içeren SNMP Trap verilerini analiz etmeye dayanır ve bir grep komutu kullanılır:
grep -i "trap" *.snmp
Kullanıcı Adları/Şifreler
MIB tablolarında saklanan günlükler, başarısız oturum açma girişimleri için incelenir; bu, yanlışlıkla kullanıcı adı olarak girilen şifreleri de içerebilir. Değerli verileri bulmak için fail, failed veya login gibi anahtar kelimeler aranır:
grep -i "login\|fail" *.snmp
E-postalar
Son olarak, verilerden e-posta adreslerini çıkarmak için, e-posta formatlarıyla eşleşen desenlere odaklanan bir grep komutu ve düzenli ifade kullanılır:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
SNMP Değerlerini Değiştirme
Değerleri değiştirmek için NetScanTools kullanabilirsiniz. Bunu yapmak için özel dizeyi bilmeniz gerekecek.
Spoofing
Eğer yalnızca bazı IP'lerin SNMP hizmetini sorgulamasına izin veren bir ACL varsa, UDP paketinin içine bu adreslerden birini sahteleyebilir ve trafiği dinleyebilirsiniz.
SNMP Konfigürasyon Dosyalarını İnceleme
- snmp.conf
- snmpd.conf
- snmp-config.xml
HackTricks Otomatik Komutlar
Protocol_Name: SNMP #Protocol Abbreviation if there is one.
Port_Number: 161 #Comma separated if there is more than one.
Protocol_Description: Simple Network Managment Protocol #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: SNMP Check
Description: Enumerate SNMP
Command: snmp-check {IP}
Entry_3:
Name: OneSixtyOne
Description: Crack SNMP passwords
Command: onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt {IP} -w 100
Entry_4:
Name: Nmap
Description: Nmap snmp (no brute)
Command: nmap --script "snmp* and not snmp-brute" {IP}
Entry_5:
Name: Hydra Brute Force
Description: Need Nothing
Command: hydra -P {Big_Passwordlist} -v {IP} snmp
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.