hacktricks/network-services-pentesting/pentesting-snmp/README.md
2024-02-10 18:14:16 +00:00

291 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 Pentesting
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmak için</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'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](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 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'u takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna **PR göndererek paylaşın**.
</details>
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Bounty ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **bounty platformu**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresinde bize katılın ve **$100,000**'e kadar ödüller kazanmaya başlayın!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Temel Bilgiler
**SNMP - Basit Ağ Yönetim Protokolü**, ağdaki farklı cihazları (router'lar, switch'ler, 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 **tuzağı** için **162/UDP** bağlantı noktasını kullanır. Bunlar, **açıkça istenmeyen SNMP sunucusundan istemciye 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 format**tır. MIB, bir cihazın sorgulanabilir **SNMP nesnelerinin** bir **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 ad**, 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ılır. **MIB'ler veri içermez**, ancak **hangi bilginin nerede bulunacağını** ve nasıl görüneceğini açıklar, belirli OID için dönen değerleri veya hangi veri türünün kullanıldığınııklar.
### OID'ler
**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 düzeyleri veya OID'ler, çeşitli standart belirleme kuruluşlarına tahsis edilir. Bu üst düzeylerde, küresel yönetim uygulamaları ve standartlarının çerçevesi belirlenir.
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 dahil etme özerkliğine sahiptirler. Bu sistem, farklı satıcılar ve standartlar arasında çeşitli nesnelerin tanımlanması ve yönetilmesi 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)'e erişerek.\
[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) içindeki gibi bazı **tanınmış OID'ler** vardır, bu da MIB-2 tarafından tanımlanan Basit Ağ Yönetim Protokolü (SNMP) değişkenlerine atıfta bulunur. Ve bu olandan **bekleyen OID'ler** ile bazı ilginç ana bilgisayar verilerine (sistem verileri, ağ verileri, işlem verileri...) ulaşabilirsiniz.
### **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 belirtir. Bu nedenle, tüm OID'ler "1" ile başlar.
* 3 - Bu ORG olarak adlandırılır ve cihazı oluşturan organizasyonu belirtmek için kullanılır.
* 6 - Bu dod veya İlk olarak İnternet'i kuran kuruluş olan Savunma Bakanlığıdır.
* 1 - Bu, tüm iletişimin İnternet üzerinden gerçekleşeceğini belirtmek için internetin değeridir.
* 4 - Bu değer, bu cihazın bir devlet değil, özel bir kuruluş tarafından yapıldığını belirler.
* 1 - Bu değer, cihazın bir kurumsal veya işletme birimi tarafından yapıldığını belirtir.
Bu ilk altı değer, tüm cihazlar için aynı olma eğilimindedir ve bunlar hakkında temel bilgileri verir. Bu sayı dizisi, cihaz hükümet tarafından yapıldığında hariç olmak üzere, tüm OID'ler için aynı olacaktır.
Sonraki sayı kümesine geçelim.
* 1452 - Bu cihazı üreten kuruluşun 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.
Değerlerin geri kalanı cihaz hakkında özel bilgiler verir.
* 5 - Ayrık bir alarm noktasını belirtir.
* 1 - Cihazdaki belirli nokta
* 3 - Bağlantı noktası
* 21 - Bağlantı noktasının adresi
* 1 - Bağlantı noktası 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** (topluluk dizesi) dayanır ve **tüm bilgiler düz metin** olarak iletilir. **Sürüm 2 ve 2c** de trafiği **düz metin** olarak gönderir ve kimlik doğrulaması için bir **topluluk dizesi kullanır**.
* **SNMPv3**: Daha iyi bir **kimlik doğrulama** biçimi kullanır ve bilgiler, (**sözlük saldırısı** gerçekleştirilebilir, ancak SNMPv1 ve v2'den doğru kimlik bilgilerini bulmak çok daha zor olur) **şifrelenmiş** olarak iletilir.
### Topluluk Dizeleri
Daha önce belirtildiği gibi, MIB'de kaydedilen bilgilere erişmek için sürüm 1 ve 2/2c'de topluluk dizesini, sürüm 3'te kimlik bilgilerini bilmek gerekmektedir.\
**2 tür topluluk dizesi** vardır:
* **`public`** genellikle **salt okunur** işlevler
* **`private`** genellikle **Oku/Yaz** işlevler
Bir OID'nin yazılabilirliği kullanılan topluluk dizesine bağlıdır, bu yüzden **herhangi bir** "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` hata**sı alırsınız.
1 ve 2/2c sürümlerinde **geçersiz** bir topluluk dizesi kullanırsanız sunucu **yanıt vermez**. Bu nedenle, yanıt veriyorsa, **geçerli bir topluluk dizesi kullanılmıştır**.
## Bağlantı Noktaları
[Wikipedia'dan](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#:~:text=All%20SNMP%20messages%20are%20transported,port%20161%20in%20the%20agent.):
* SNMP ajanı, UDP bağlantı noktası **161** üzerinden istekleri alır.
* Yönetici, bildirimleri ([Tuzağa](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) ve [Bilgi İsteği](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) bağlantı noktası **162** üzerinden alır.
* [Taşıma Katmanı Güvenliği](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) veya
## SNMP Numaralandırma
Cihazdan toplanan her OID'nin ne anlama geldiğini görmek için aşağıdakilerin kurulması ö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 dizesi 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
```
Genişletilmiş sorgular (download-mibs) sayesinde aşağıdaki komutla sistem hakkında daha fazla bilgi tespit etmek mümkündür:
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP**, ağ hakkında birçok bilgiye sahiptir ve ilginizi çekebilecek şeyler şunlardır: **Ağ arayüzleri** (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 önemli bir bileşen olan **tam OID ağacına** erişimi sağlayan iki ana ayar vardır:
1. **`rwuser noauth`**, kimlik doğrulama gerektirmeksizin OID ağacına tam erişime izin vermek için ayarlanır. Bu ayar açıktır ve sınırsız erişime izin verir.
2. Daha spesifik kontrol için erişim, aşağıdaki şekilde sağlanabilir:
- **IPv4** adresleri için **`rwcommunity`** ve
- **IPv6** adresleri için **`rwcommunity6`**.
Her iki komut da bir **topluluk dizesi** ve ilgili IP adresini gerektirir, isteğin kaynağına bakılmaksızın tam erişim sağlar.
### Microsoft Windows için SNMP Parametreleri
SNMP aracılığıyla Windows sistemlerin ç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` üzerinden erişilen bu parametre, sistem içindeki etkin işlemlerin izlenmesine olanak sağlar.
- **Çalışan Programlar**: `1.3.6.1.2.1.25.4.2.1.2` değeri, şu anda çalışan programları takip etmek için kullanılır.
- **İş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 sağlanır.
- **Yazılım Adı**: Bir sistemde yüklü olan 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 takibine olanak 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 etkin 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
SNMP hizmeti içinde **değer yazmanıza** izin veren bir **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 %}
## **Kitlesel SNMP**
[Braa ](https://github.com/mteg/braa), kitlesel bir SNMP tarama aracıdır. Bu tür bir aracın amaçlanan kullanımı, tabii ki, SNMP sorguları yapmaktır - ancak net-snmp'den snmpwalk gibi, düzinelerce veya yüzlerce ana bilgisayara aynı anda ve tek bir işlemde sorgu yapabilir ve taramayı ÇOK hızlı bir şekilde gerçekleştirir.
Braa, kendi SNMP yığınına sahiptir, bu nedenle net-snmp gibi SNMP kütüphanelerine ihtiyaç duymaz.
**Syntax:** braa \[Topluluk dizesi]@\[SNMP sunucusunun IP'si]:\[iso kimliği]
```bash
braa ignite123@192.168.1.125:.1.3.6.*
```
Bu, manuel olarak işleyemeyeceğiniz birçok MB bilgi çıkarabilir.
Öyleyse, en ilginç bilgilere bakalı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, her dosyadan cihazları tanımlamak için **sysDesc MIB verilerinin** (1.3.6.1.2.1.1.1.0) çıkarılmasıyla başlar. Bunun için bir **grep komutu** kullanılır:
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Özel Dizeyi Tanımlama**
Ö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 "trap" kelimesini içeren SNMP Trap verilerinin bir **grep komutu** ile analizine dayanır:
```bash
grep -i "trap" *.snmp
```
### **Kullanıcı Adları/Şifreler**
MIB tablolarında depolanan günlükler, yanlış giriş denemelerini içerebilecek şekilde incelenir ve bu yanlış giriş denemeleri sırasında kullanıcı adı olarak girilen şifreler kazara bulunabilir. 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ına uyan desenlere odaklanan bir düzenli ifade ile 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
Değerleri değiştirmek için _**NetScanTools**_ kullanabilirsiniz. Bunun için **private string**'i bilmelisiniz.
## Spoofing
Eğer SMNP servisine sadece belirli IP'lerin sorgu yapmasına izin veren bir ACL varsa, UDP paketi içinde bu adreslerden birini sahteleyebilir ve trafiği izleyebilirsiniz.
## SNMP Yapılandırma dosyalarını inceleme
* 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.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
```
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Bug bounty ipucu**: **Intigriti'ye kaydolun**, hackerlar tarafından oluşturulan bir premium **bug bounty platformu**! Bugün [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) adresine katılın ve **$100,000**'e kadar ödüller kazanmaya başlayın!
{% embed url="https://go.intigriti.com/hacktricks" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahraman olmak için AWS hacklemeyi öğrenin<strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek isterseniz** veya **HackTricks'i PDF olarak indirmek isterseniz** [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzdaki özel [**NFT'leri**](https://opensea.io/collection/the-peass-family) keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'ı takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR göndererek paylaşın.
</details>