hacktricks/network-services-pentesting/pentesting-snmp/README.md

297 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 161,162,10161,10162/udp - SNMP Sızma Testi
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri**ne ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
{% embed url="https://www.stmcyber.com/careers" %}
## Temel Bilgiler
**SNMP - Basit Ağ Yönetim Protokolü**, ağdaki farklı cihazları izlemek için kullanılan bir protokoldür (örneğin yönlendiriciler, anahtarlar, yazıcılar, IoT'ler...).
```
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
```
{% hint style="info" %}
SNMP ayrıca **tuzaklar** için **162/UDP** bağlantı noktasını da kullanır. Bunlar, **SNMP sunucusundan istekte bulunulmadan istemciye gönderilen veri paketleridir**.
{% endhint %}
### MIB
SNMP erişiminin farklı ü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**. MIB, tüm sorgulanabilir **SNMP nesnelerinin** bir cihazda **standartlaştırılmış** ağaç hiyerarşisinde listelendiği bir **metin** dosyasıdır. En az bir `Nesne Tanımlayıcı` (`OID`) içerir ve gerekli **benzersiz adresin yanı sıra bir isim**, ayrıca 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 nasıl görüneceğini açıklar, belirli OID'ler için değerler döndürür veya hangi veri türünün kullanıldığını belirtir.
### OIDs
**Nesne Tanımlayıcılar (OID'ler)** önemli bir rol oynar. Bu benzersiz tanımlayıcılar, bir **Yönetim Bilgi Tabanı (MIB)** içindeki nesneleri yönetmek için tasarlanmıştır.
MIB nesne kimliklerinin en üst seviyeleri veya OID'ler, çeşitli standart belirleme kuruluşlarına tahsis edilmiştir. Küresel yönetim uygulamaları ve standartlar çerçevesi bu üst seviyelerde oluşturulur.
Ayrıca, satıcılara özel dallar oluşturma özgürlüğü verilir. Bu dallar içinde, **kendi ürün hatlarıyla ilgili yönetilen nesneleri eklemek için özerklikleri vardır**. Bu sistem, farklı satıcılar ve standartlar arasında geniş bir nesne yelpazesini tanımlamak ve yönetmek için yapılandırılmış ve düzenli bir yöntem olduğunu sağlar.
![](../../.gitbook/assets/snmp_oid_mib_tree.png)
Bir **OID ağacı** üzerinde **gezebilirsiniz** buradan: [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örebilirsiniz (ö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).\
[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) içindeki gibi **tanınmış OID'ler** bulunmaktadır, bu, MIB-2 tarafından tanımlanan Basit Ağ Yönetim Protokolü (SNMP) değişkenlerine referans verir. Ve bu OID'lerden **elde edebileceğiniz** bazı ilginç ana bilgisayar verileri (sistem verileri, ağ verileri, işlem verileri...) olabilir.
### **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ıları aşağıda verilmiştir.
* 1 Bu, ISO olarak adlandırılır ve bu bir OID olduğunu belirler. Bu nedenle, tüm OID'ler "1" ile başlar.
* 3 Bu, ORG olarak adlandırılır ve cihazı kuran organizasyonu belirtmek için kullanılır.
* 6 Bu, dod veya Savunma Bakanlığıdır ve İnternet'i ilk kez kuran organizasyondur.
* 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 bir devlet kurumu değil, özel bir kuruluş tarafından yapıldığını belirler.
* 1 Bu değer, cihazın bir işletme veya ticari bir varlık tarafından yapıldığını belirtir.
Bu ilk altı değer genellikle tüm cihazlar için aynı olma eğilimindedir ve temel bilgileri verir. Bu sayı dizisi, cihazlar için tüm OID'ler için aynı olacaktır, cihaz devlet tarafından yapıldığında dışında.
Sonraki sayılar setine geçelim.
* 1452 Bu cihazı üreten organizasyonun adını verir.
* 1 Cihazın türünü açıklar. Bu durumda, bir alarm saati.
* 2 Bu cihazın bir uzak terminal ünitesi olduğunu belirler.
Gerisi, cihaz hakkında belirli bilgiler verir.
* 5 Belirli bir alarm noktasını belirtir.
* 1 Cihazdaki belirli nokta
* 3 Port
* 21 Portun adresi
* 1 Port için ekran
* 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 dayanır** (topluluk dizesi) ve **tüm bilgiler düz metin olarak iletilir**. **Sürüm 2 ve 2c** de **trafik düz metin olarak** gönderilir ve **kimlik doğrulama için bir topluluk dizesi kullanılır**.
* **SNMPv3**: Daha iyi bir **kimlik doğrulama** biçimi kullanır ve bilgi **şifrelenmiş** olarak iletilir (**sözlük saldırısı** gerçekleştirilebilir ancak doğru kimlik bilgilerini bulmak SNMPv1 ve v2'den daha zor olacaktır).
### Topluluk Dizeleri
Daha önce belirtildiği gibi, **MIB'de kayıtlı bilgilere erişmek için sürüm 1 ve 2/2c'de topluluk dizesini, sürüm 3'te kimlik bilgilerini bilmelisiniz.**\
**2 tür topluluk dizesi** vardır:
* **`public`** genellikle **salt okunur** işlevler
* **`private`** genellikle **Oku/Yaz** işlevi görür
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 yazabilirsiniz**. Ayrıca, **her zaman "Salt Okunur"** olan nesneler olabilir.\
Bir nesneyi **yazmaya** çalışırsanız **`noSuchName` veya `readOnly` hatası** alırsınız\*\*.\*\*
Sürüm 1 ve 2/2c'de kötü bir topluluk dizesi kullanırsanız sunucu **yanıt vermeyecektir**. Bu nedenle, yanıt verirse, **geçerli bir topluluk dizesi kullanılmıştır**.
## Bağlantı Noktaları
[Wikipedia'dan](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
* SNMP ajanı, UDP bağlantı noktası **161** üzerinden istekleri alır.
* Yönetici, bildirimleri ([Tuzaklar](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) ve [Bilgi İstekleri](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) **162** numaralı bağlantı noktasından 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 **10161** numaralı bağlantı noktasından alınır ve bildirimler **10162** numaralı bağlantı noktasına gönderilir.
## Kaba Kuvvet Topluluk Dizesi (v1 ve v2c)
Topluluk dizesini **tahmin etmek** için bir sözlük saldırısı gerçekleştirebilirsiniz. SNMP'ye karşı kaba kuvvet saldırısı yapmanın farklı yolları için [buraya](../../generic-methodologies-and-resources/brute-force.md#snmp) bakın. Sıkça kullanılan bir topluluk dizesi `public`dir.
## SNMP Numaralandırma
Her OID'nin cihazdan toplanan anlamını 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, verilere **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" <target>
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
```
Uzatılmış sorgular (download-mibs) sayesinde, aşağıdaki komutla sistem hakkında daha fazla bilgi sıralamak mümkündür:
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP**, ana bilgisayar hakkında birçok bilgi içerir ve ilginç bulabileceğiniz şeyler şunlardır: **Ağ arabirimleri** (IPv4 ve **IPv6** adresi), Kullanıcı adları, Çalışma süresi, Sunucu/İşletim sistemi sürümü 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 önemlidir.
### Erişim Ayarları
Ağ yönetiminde, tam OID ağacına erişimi sağlayan iki ana ayar şunlardır:
1. **`rwuser noauth`**, kimlik doğrulama gerektirmeksizin tam erişime izin vermek için ayarlanmıştır. Bu ayar basittir ve sınırsız erişime olanak tanır.
2. Daha spesifik kontrol için erişim, şu şekilde sağlanabilir:
* **`rwcommunity`** IPv4 adresleri için ve
* **`rwcommunity6`** IPv6 adresleri için.
Her iki komut da bir **topluluk dizesi** ve ilgili IP adresini gerektirir, isteğin kaynağından bağımsız olarak tam erişim sağlar.
### Microsoft Windows İçin SNMP Parametreleri
Windows sisteminin çeşitli yönlerini izlemek için **Yönetim Bilgi Tabanı (MIB) değerleri** kullanılır:
* **Sistem İşlemleri**: `1.3.6.1.2.1.25.1.6.0` üzerinden erişilen bu parametre, sistemdeki etkin işlemlerin izlenmesine olanak tanır.
* **Ç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 belirlenmiştir.
* **İşlemler 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 kolaylaştırılı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 izlenmesine olanak tanır.
* **TCP Yerel Portlar**: Son olarak, `1.3.6.1.2.1.6.13.1.3` TCP yerel portlarının izlenmesi için belirlenmiştir, aktif ağ bağlantıları hakkında bilgi sağlar.
### Cisco
Eğer Cisco ekipmanına sahipseniz, 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 servisi içinde **değer yazmaya izin veren dizeye** sahipseniz, bunu **komutları yürütmek** 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)kütle SNMP tarayıcısıdır. Bu tür bir aracın amaçlanan kullanımı elbette SNMP sorguları yapmaktır - ancak net-snmp'den snmpwalk gibi onlarca veya yüzlerce ana bilgisayara aynı anda ve tek bir işlemde sorgu yapabilir ve bu nedenle çok az sistem kaynağı tüketir ve taramayı ÇOK hızlı yapar.
Braa kendi SNMP yığını uygular, bu nedenle net-snmp gibi SNMP kütüphanelerine ihtiyaç duymaz.
**Sözdizimi:** braa \[Topluluk-dizisi]@\[SNMP sunucusunun IP adresi]:\[iso kimliği]
```bash
braa ignite123@192.168.1.125:.1.3.6.*
```
Bu, manuel olarak işleyemeyeceğiniz birçok MB bilgi çıkarabilir.
Bu yüzden, en ilginç bilgileri arayalım ([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**
İşlem, cihazları tanımlamak için her dosyadan **sysDesc MIB verilerinin** (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 Tanımlama**
Örgütler tarafından özellikle Cisco IOS yönlendiricilerinde kullanılan **özel topluluk dizesini** tanımlamak önemli bir adımdır. Bu dize, yönlendiricilerden **çalışan yapılandırmaların** çıkarılmasını sağlar. Tanımlama genellikle bir **grep komutu** ile SNMP Tuzak verilerini analiz etmeye dayanır ve "tuzak" kelimesini arar.
```bash
grep -i "trap" *.snmp
```
### **Kullanıcı Adları/Şifreler**
MIB tablolarında saklanan günlükler, yanlış giriş denemeleri için incelenir, bu da yanlışlıkla kullanıcı adı olarak girilen şifreleri 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 düzenli ifade içeren bir **grep komutu** 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
SNMP değerlerini değiştirmek için _**NetScanTools**_ kullanabilirsiniz. Bunu yapabilmek için **özel dizeyi (private string)** bilmelisiniz.
## Spoofing
Eğer SMNP servisine sorgu yapmaya izin veren yalnızca belirli IP'leri içeren bir ACL varsa, UDP paketi içinde bu adreslerden birini taklit edebilir ve trafiği dinleyebilirsiniz.
## SNMP Yapılandırma Dosyalarını İnceleme
* snmp.conf
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Eğer **hacking kariyeri** sizi ilgilendiriyorsa ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma 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
```
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.**
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>