# 161,162,10161,10162/udp - Pentesting SNMP {% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin * [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin! * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** bizi takip edin 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
{% endhint %}
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı yazılı ve sözlü Lehçe gereklidir_). {% embed url="https://www.stmcyber.com/careers" %} ## 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) ``` {% hint style="info" %} SNMP ayrıca **traps** için **162/UDP** portunu kullanır. Bunlar, **SNMP sunucusundan istemciye açıkça talep edilmeden gönderilen veri paketleridir**. {% endhint %} ### 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 tüm 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ı, `Abstract Syntax Notation One` (`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; bu, belirli OID için dönen değerler veya hangi veri türünün kullanıldığı hakkında bilgi verir. ### 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. ![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>) Bir **OID ağacında** buradan **gezin**: [http://www.oid-info.com/cgi-bin/display?tree=#focus](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](http://oid-info.com/get/1.3.6.1.2.1.1) adresini ziyaret edin.\ [1.3.6.1.2.1](http://oid-info.com/get/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 elde edebileceğiniz bazı ilginç ana bilgisayar verileri (sistem verileri, ağ verileri, süreç verileri...) bulunmaktadır. ### **OID Örneği** [**Buradan örnek**](https://www.netadmintools.com/snmp-mib-and-oids/): **`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 bunun 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. Geri kalan 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 olarak iletilir). **Sürüm 2 ve 2c** de **düz metin** içinde trafik 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üzleri 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şlevleri * **`private`** **Okuma/Yazma** genel olarak **Bir OID'nin yazılabilirliği, kullanılan topluluk dizesine bağlıdır**, 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üm 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 [Wikipedia'dan](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol): * SNMP ajanı, UDP portu **161** üzerinde istekleri alır. * Yönetici, port **162** üzerinde bildirimleri ( [Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) ve [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) alır. * [Taşıma Katmanı Güvenliği](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) veya [Datagram Taşıma Katmanı Güvenliği](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security) 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](../../generic-methodologies-and-resources/brute-force.md#snmp). 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: ```bash 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 ``` Eğer geçerli bir topluluk dizesini biliyorsanız, veriye **SNMPWalk** veya **SNMP-Check** kullanarak erişebilirsiniz: ```bash 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" braa @:.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: ```bash snmpwalk -v X -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull ``` **SNMP**, ana bilgisayar hakkında birçok bilgiye sahiptir ve ilginizi çekebilecek ş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: 1. **`rwuser noauth`** ayarı, 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. 2. Daha spesifik kontrol için, erişim şu şekilde verilebilir: * **`rwcommunity`** **IPv4** adresleri için, ve * **`rwcommunity6`** **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`, TCP yerel portlarının izlenmesi için ayrılmıştır ve aktif ağ bağlantıları hakkında bilgi verir. ### Cisco Eğer Cisco ekipmanınız varsa bu sayfaya göz atın: {% content-ref url="cisco-snmp.md" %} [cisco-snmp.md](cisco-snmp.md) {% endcontent-ref %} ## 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: {% content-ref url="snmp-rce.md" %} [snmp-rce.md](snmp-rce.md) {% endcontent-ref %} ## **Kapsamlı SNMP** [Braa](https://github.com/mteg/braa) bir kütle SNMP tarayıcısıdır. Böyle bir aracın amaçlanan kullanımı, elbette, SNMP sorguları yapmaktır – ancak net-snmp'den 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] ```bash braa ignite123@192.168.1.125:.1.3.6.* ``` Bu, manuel olarak işleyemeyeceğiniz çok fazla MB bilgi çıkarabilir. Şimdi en ilginç bilgilere bakalım (from [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](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: ```bash 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 bu işlem için bir **grep komutu** kullanılır: ```bash 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: ```bash 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: ```bash 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ı inceleme * snmp.conf * snmpd.conf * snmp-config.xml
Eğer **hackleme kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_). {% embed url="https://www.stmcyber.com/careers" %} ## 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.xyz/pentesting/pentesting-snmp 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 ``` {% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin * [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin! * **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.** * **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
{% endhint %}