266 lines
14 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 - Pentesting SNMP
{{#include ../../banners/hacktricks-training.md}}
## Basic Information
**SNMP - Simple Network Management Protocol** ni protokali inayotumika kufuatilia vifaa tofauti katika mtandao (kama vile routers, switches, printers, IoTs...).
```
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
```
> [!TIP]
> SNMP pia inatumia bandari **162/UDP** kwa **traps**. Hizi ni data **pakiti zinazotumwa kutoka kwa seva ya SNMP kwenda kwa mteja bila kuombwa kwa wazi**.
### MIB
Ili kuhakikisha kuwa ufikiaji wa SNMP unafanya kazi kati ya watengenezaji na kwa mchanganyiko tofauti wa mteja-seva, **Management Information Base (MIB)** iliundwa. MIB ni **format huru ya kuhifadhi taarifa za kifaa**. MIB ni **faili ya maandiko** ambayo inataja **SNMP objects** zote zinazoweza kuulizwa za kifaa katika **hierarchy ya mti iliyoandikwa kwa kiwango**. Inajumuisha angalau moja `Object Identifier` (`OID`), ambayo, pamoja na **anwani ya kipekee** na **jina**, pia inatoa taarifa kuhusu aina, haki za ufikiaji, na maelezo ya kipengele husika.\
MIB files zimeandikwa katika `Abstract Syntax Notation One` (`ASN.1`) kwa format ya maandiko ya ASCII. **MIBs hazina data**, lakini zinaelezea **wapi kupatikana taarifa gani** na inavyoonekana, ambayo inarudisha thamani kwa OID maalum, au ni aina gani ya data inayotumika.
### OIDs
**Object Identifiers (OIDs)** zina jukumu muhimu. Hizi ni vitambulisho vya kipekee vilivyoundwa kusimamia vitu ndani ya **Management Information Base (MIB)**.
Viwango vya juu zaidi vya MIB object IDs, au OIDs, vimepewa mashirika mbalimbali yanayoweka viwango. Ni ndani ya viwango hivi vya juu ambapo mfumo wa mazoea na viwango vya usimamizi wa kimataifa umeanzishwa.
Zaidi ya hayo, wauzaji wanapewa uhuru wa kuanzisha matawi binafsi. Ndani ya matawi haya, wana **uhuru wa kujumuisha vitu vilivyo na usimamizi vinavyohusiana na mistari yao ya bidhaa**. Mfumo huu unahakikisha kuwa kuna njia iliyopangwa na iliyoandaliwa ya kutambua na kusimamia anuwai ya vitu kati ya wauzaji na viwango tofauti.
![](<../../images/SNMP_OID_MIB_Tree (1).png>)
Unaweza **kuvinjari** kupitia **OID tree** kutoka kwenye wavuti hapa: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) au **ona maana ya OID** (kama `1.3.6.1.2.1.1`) kwa kufikia [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
Kuna **OIDs maarufu** kama zile ndani ya [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) zinazorejelea MIB-2 iliyofafanua Simple Network Management Protocol (SNMP) variables. Na kutoka kwa **OIDs zinazotarajiwa kutoka hapa** unaweza kupata data ya kuvutia ya mwenyeji (data ya mfumo, data ya mtandao, data ya michakato...)
### **OID Mfano**
[**Mfano kutoka hapa**](https://www.netadmintools.com/snmp-mib-and-oids/):
**`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`**
Hapa kuna ufafanuzi wa anwani hii.
- 1 hii inaitwa ISO na inaweka wazi kuwa hii ni OID. Hii ndiyo sababu OIDs zote huanza na "1"
- 3 hii inaitwa ORG na inatumika kubainisha shirika lililojenga kifaa.
- 6 hii ni dod au Wizara ya Ulinzi ambayo ni shirika lililoanzisha Mtandao kwanza.
- 1 hii ni thamani ya mtandao kuashiria kuwa mawasiliano yote yatatokea kupitia Mtandao.
- 4 thamani hii inaashiria kuwa kifaa hiki kimeundwa na shirika binafsi na si la serikali.
- 1 thamani hii inaashiria kuwa kifaa kimeundwa na shirika au kampuni.
Thamani hizi sita za kwanza huwa sawa kwa vifaa vyote na zinakupa taarifa za msingi kuhusu hivyo. Mfuatano huu wa nambari utakuwa sawa kwa OIDs zote, isipokuwa wakati kifaa kimeundwa na serikali.
Tukihamia kwenye seti inayofuata ya nambari.
- 1452 inatoa jina la shirika lililotengeneza kifaa hiki.
- 1 inaelezea aina ya kifaa. Katika kesi hii, ni saa ya alamu.
- 2 inaashiria kuwa kifaa hiki ni kitengo cha terminal cha mbali.
Thamani zilizobaki zinatoa taarifa maalum kuhusu kifaa.
- 5 inaashiria alama ya alamu ya pekee.
- 1 alama maalum katika kifaa
- 3 bandari
- 21 anwani ya bandari
- 1 onyesho la bandari
- 4 nambari ya alama
- 7 hali ya alama
### SNMP Versions
Kuna toleo 2 muhimu za SNMP:
- **SNMPv1**: Kuu, bado ni ya kawaida zaidi, **uthibitishaji unategemea mfuatano** (community string) unaosafiri kwa **maandishi wazi** (maelezo yote yanatembea kwa maandiko wazi). **Toleo 2 na 2c** pia hutuma **trafiki kwa maandiko wazi** na hutumia **mfuatano wa jamii kama uthibitishaji**.
- **SNMPv3**: Inatumia aina bora ya **uthibitishaji** na taarifa inasafiri **imefungwa** (dictionary attack inaweza kufanywa lakini itakuwa ngumu zaidi kupata creds sahihi kuliko katika SNMPv1 na v2).
### Community Strings
Kama ilivyotajwa hapo awali, **ili kufikia taarifa zilizohifadhiwa kwenye MIB unahitaji kujua mfuatano wa jamii katika matoleo 1 na 2/2c na akidi katika toleo 3.**\
Kuna **aina 2 za mfuatano wa jamii**:
- **`public`** hasa **kazi za kusoma tu**
- **`private`** **Soma/Andika** kwa ujumla
Kumbuka kuwa **uwezo wa kuandika OID unategemea mfuatano wa jamii unaotumika**, hivyo **hata** ukigundua kuwa "**public**" inatumika, unaweza kuwa na uwezo wa **kuandika baadhi ya thamani.** Pia, kuna **weza** kuwepo vitu ambavyo ni **daima "Soma Tu".**\
Ikiwa unajaribu **kuandika** kipengele, **kosa `noSuchName` au `readOnly` linapokelewa**.
Katika matoleo 1 na 2/2c ikiwa utatumia mfuatano wa jamii **mbaya** seva haitajibu. Hivyo, ikiwa inajibu, **mfuatano wa jamii halali umetumika**.
## Ports
[From Wikipedia](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol):
- Wakala wa SNMP hupokea maombi kwenye bandari ya UDP **161**.
- Meneja hupokea arifa ([Traps](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#Trap) na [InformRequests](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#InformRequest)) kwenye bandari **162**.
- Wakati inapotumika na [Transport Layer Security](https://en.wikipedia.org/wiki/Transport_Layer_Security) au [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security), maombi yanapokelewa kwenye bandari **10161** na arifa zinatumwa kwenye bandari **10162**.
## Brute-Force Community String (v1 na v2c)
Ili **kukisia mfuatano wa jamii** unaweza kufanya shambulio la kamusi. Angalia [hapa njia tofauti za kufanya shambulio la brute-force dhidi ya SNMP](../../generic-hacking/brute-force.md#snmp). Mfuatano wa jamii unaotumika mara nyingi ni `public`.
## Enumerating SNMP
Inapendekezwa kufunga yafuatayo ili kuona maana ya **kila OID iliyokusanywa** kutoka kwa kifaa:
```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
```
Ikiwa unajua mfuatano halali wa jamii, unaweza kufikia data kwa kutumia **SNMPWalk** au **SNMP-Check**:
```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
```
Shukrani kwa maswali ya kupanuliwa (download-mibs), inawezekana kuorodhesha zaidi kuhusu mfumo kwa kutumia amri ifuatayo:
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** ina taarifa nyingi kuhusu mwenyeji na mambo ambayo unaweza kupendezwa nayo ni: **Interfaces za Mtandao** (anwani za **IPv4** na **IPv6**), Majina ya Watumiaji, Wakati wa Uendeshaji, Toleo la Server/OS, na **mchakato**
**unaotembea** (inaweza kuwa na nywila)....
### **Mipangilio Hatari**
Katika eneo la usimamizi wa mtandao, mipangilio na vigezo fulani ni muhimu kuhakikisha ufuatiliaji na udhibiti wa kina.
### Mipangilio ya Ufikiaji
Mipangilio miwili kuu inaruhusu ufikiaji wa **mti mzima wa OID**, ambao ni sehemu muhimu katika usimamizi wa mtandao:
1. **`rwuser noauth`** imewekwa kuruhusu ufikiaji kamili wa mti wa OID bila haja ya uthibitisho. Mipangilio hii ni rahisi na inaruhusu ufikiaji usio na vizuizi.
2. Kwa udhibiti maalum zaidi, ufikiaji unaweza kutolewa kwa kutumia:
- **`rwcommunity`** kwa anwani za **IPv4**, na
- **`rwcommunity6`** kwa anwani za **IPv6**.
Amri zote mbili zinahitaji **nywila ya jamii** na anwani husika ya IP, zikitoa ufikiaji kamili bila kujali chanzo cha ombi.
### Vigezo vya SNMP kwa Microsoft Windows
Mfululizo wa **Thamani za Msingi wa Taarifa za Usimamizi (MIB)** hutumiwa kufuatilia vipengele mbalimbali vya mfumo wa Windows kupitia SNMP:
- **Mchakato wa Mfumo**: Inapatikana kupitia `1.3.6.1.2.1.25.1.6.0`, vigezo hivi vinaruhusu ufuatiliaji wa michakato hai ndani ya mfumo.
- **Programu Zinazoendesha**: Thamani ya `1.3.6.1.2.1.25.4.2.1.2` imetengwa kwa ajili ya kufuatilia programu zinazotembea kwa sasa.
- **Njia za Michakato**: Ili kubaini mahali ambapo mchakato unatembea, thamani ya `1.3.6.1.2.1.25.4.2.1.4` ya MIB inatumika.
- **Vitengo vya Hifadhi**: Ufuatiliaji wa vitengo vya hifadhi unarahisishwa na `1.3.6.1.2.1.25.2.3.1.4`.
- **Jina la Programu**: Ili kubaini programu iliyosanikishwa kwenye mfumo, `1.3.6.1.2.1.25.6.3.1.2` inatumika.
- **Akaunti za Watumiaji**: Thamani ya `1.3.6.1.4.1.77.1.2.25` inaruhusu ufuatiliaji wa akaunti za watumiaji.
- **Ports za TCP za Mitaa**: Hatimaye, `1.3.6.1.2.1.6.13.1.3` imetengwa kwa ajili ya ufuatiliaji wa ports za TCP za mitaa, ikitoa mwanga kuhusu muunganisho hai wa mtandao.
### Cisco
Angalia ukurasa huu ikiwa una vifaa vya Cisco:
{{#ref}}
cisco-snmp.md
{{#endref}}
## Kutoka SNMP hadi RCE
Ikiwa una **nywila** inayokuruhusu **kuandika thamani** ndani ya huduma ya SNMP, unaweza kuwa na uwezo wa kuitumia vibaya ili **kutekeleza amri**:
{{#ref}}
snmp-rce.md
{{#endref}}
## **SNMP Kubwa**
[Braa](https://github.com/mteg/braa) ni skana kubwa ya SNMP. Matumizi yaliyokusudiwa ya zana kama hii ni, bila shaka, kufanya maswali ya SNMP lakini tofauti na snmpwalk kutoka net-snmp, ina uwezo wa kuuliza majeshi makumi au mamia kwa wakati mmoja, na katika mchakato mmoja. Hivyo, inatumia rasilimali chache za mfumo na inafanya ufuatiliaji HARAKA SANA.
Braa inatekeleza stack yake ya snmp, hivyo haitaji maktaba yoyote ya SNMP kama net-snmp.
**Syntax:** braa \[Community-string]@\[IP ya server ya SNMP]:\[iso id]
```bash
braa ignite123@192.168.1.125:.1.3.6.*
```
Hii inaweza kutoa MB nyingi za taarifa ambazo huwezi kushughulikia kwa mikono.
Hivyo, hebu tutafute taarifa za kuvutia zaidi (kutoka [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/)):
### **Vifaa**
Mchakato huanza kwa kutoa **sysDesc MIB data** (1.3.6.1.2.1.1.1.0) kutoka kila faili ili kubaini vifaa. Hii inafanywa kwa kutumia **grep command**:
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Tambua Mfuatano wa Kibinafsi**
Hatua muhimu inahusisha kutambua **mfuatano wa jamii ya kibinafsi** unaotumiwa na mashirika, hasa kwenye router za Cisco IOS. Mfuatano huu unaruhusu kutoa **mipangilio inayoendelea** kutoka kwa router. Utambuzi mara nyingi unategemea kuchambua data ya SNMP Trap kwa neno "trap" kwa kutumia **amri ya grep**:
```bash
grep -i "trap" *.snmp
```
### **Majina ya Watumiaji/Maneno ya Siri**
Logs zilizohifadhiwa ndani ya MIB tables zinachunguzwa kwa **jaribio la kuingia lililoshindwa**, ambalo linaweza kwa bahati mbaya kujumuisha maneno ya siri yaliyoingizwa kama majina ya watumiaji. Neno muhimu kama _fail_, _failed_, au _login_ linatafutwa ili kupata data muhimu:
```bash
grep -i "login\|fail" *.snmp
```
### **Barua pepe**
Hatimaye, ili kutoa **anwani za barua pepe** kutoka kwa data, amri ya **grep** yenye muundo wa kawaida inatumika, ikilenga mifumo inayolingana na muundo wa barua pepe:
```bash
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
## Kubadilisha thamani za SNMP
Unaweza kutumia _**NetScanTools**_ kubadilisha **thamani**. Itabidi ujue **nywila ya faragha** ili kufanya hivyo.
## Kupotosha
Ikiwa kuna ACL inayoruhusu tu IP fulani kuuliza huduma ya SMNP, unaweza kupotosha moja ya anwani hizi ndani ya pakiti ya UDP na kunusa trafiki.
## Kagua faili za Mipangilio ya SNMP
- snmp.conf
- snmpd.conf
- snmp-config.xml
## Amri za Kiotomatiki za HackTricks
```
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
```
{{#include ../../banners/hacktricks-training.md}}