# Enumerando SNMP

Basicamente, o protocolo SNMP (Simple Network Management Protocol)serve para gerenciar dispositivos e serviços de rede, funciona na porta 161 UDP. Quando conseguimos enumerar o SNMP com sucesso, é possível extrair informações sobre usuários, programas instalados, portas abertas, informações sobre o sistema operacional, entre outras. Antes de qualquer coisa, precisamos saber de alguns detalhes.

* OID - Object Identifier -> Código utilizado para identificar os objetos;
* MIB - Management Information Base -> Base contendo informações relacionadas ao gerenciamento de redes;
* Community -> Valor utilizado entre as partes snmp para troca de informações.&#x20;

(Nível de acesso da community: RO - Read Only; RW - Read/Write)

**Exemplos:**

![](/files/-MebY5Lv0EDoiLEzfFeG)

Precisamos identificar quais hosts na rede respondem por determinada community.

Podemos usar a ferramenta onesixtyone para fazer um "brutefoce" e identificar, passando uma wordlist com o nome das community da seguinte forma.

```
$ cat comu.txt 
public
private
cisco
manager
juniper

$ onesixtyone -c comu.txt 172.16.1.0/24
Scanning 256 hosts, 7 communities
172.16.1.4 [public] Hardware: x86 Family 6 Model 62 Stepping 4 AT/AT COMPATIBLE - Software: Windows 2000 Version 5.1 (Build 2600 Multiprocessor Free)
172.16.1.247 [manager] Vyatta VyOS 1.1.7
172.16.1.247 [juniper] Vyatta VyOS 1.1.7
```

Para enumerar as contas de usuários.

```
┌──(user㉿kali)-[~/Desktop]
└─$ snmpwalk -c public -v1 172.16.1.4 1.3.6.1.4.1.77.1.2.25                                                                                                                                                                            130 ⨯
iso.3.6.1.4.1.77.1.2.25.1.1.4.108.117.105.115 = STRING: "luis"
iso.3.6.1.4.1.77.1.2.25.1.1.7.85.115.117.97.114.105.111 = STRING: "Usuario"
iso.3.6.1.4.1.77.1.2.25.1.1.7.114.97.102.97.101.108.97 = STRING: "rafaela"
iso.3.6.1.4.1.77.1.2.25.1.1.9.67.111.110.118.105.100.97.100.111 = STRING: "Convidado"
iso.3.6.1.4.1.77.1.2.25.1.1.13.65.100.109.105.110.105.115.116.114.97.100.111.114 = STRING: "Administrador"
iso.3.6.1.4.1.77.1.2.25.1.1.13.72.101.108.112.65.115.115.105.115.116.97.110.116 = STRING: "HelpAssistant"
iso.3.6.1.4.1.77.1.2.25.1.1.15.75.69.89.50.57.56.55.48.48.49.57.49.56.50.48 = STRING: "KEY298700191820"
iso.3.6.1.4.1.77.1.2.25.1.1.16.83.85.80.80.79.82.84.95.51.56.56.57.52.53.97.48 = STRING: "SUPPORT_388945a0"
```

Dessa forma, ele não informa exatamente o que está buscando, apenas alguns códigos no início, isso dificulta o entendimento da saída da ferramenta. Precisamos instalar um pacote para que possa traduzir essas informações.

```
┌──(user㉿kali)-[~/Desktop]
└─$ sudo apt install snmp-mibs-downloader
```

Agora para configurar, basta deixar o seguinte arquivo vazio.

```
┌──(root💀kali)-[/home/user/Desktop]
└─# echo "" > /etc/snmp/snmp.conf
```

Agora quando executamos, retorna com mais clareza as informações. Lembrando que pode-se passar sem o valor da MIB.

```
──(user㉿kali)-[~/Desktop]
└─$ snmpwalk -c public -v1 172.16.1.4                      
SNMPv2-MIB::sysDescr.0 = STRING: Hardware: x86 Family 6 Model 62 Stepping 4 AT/AT COMPATIBLE - Software: Windows 2000 Version 5.1 (Build 2600 Multiprocessor Free)
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.311.1.1.3.1.1
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1324872701) 153 days, 8:12:07.01
SNMPv2-MIB::sysContact.0 = STRING: 
SNMPv2-MIB::sysName.0 = STRING: WKS01
SNMPv2-MIB::sysLocation.0 = STRING: 
SNMPv2-MIB::sysServices.0 = INTEGER: 76
IF-MIB::ifNumber.0 = INTEGER: 2
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifDescr.1 = STRING: MS TCP Loopback interface.
IF-MIB::ifDescr.2 = STRING: AMD PCNET Family PCI Ethernet Adapter - Miniporta do agendador de pacotes.
IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)
IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifMtu.1 = INTEGER: 1520
IF-MIB::ifMtu.2 = INTEGER: 1500
IF-MIB::ifSpeed.1 = Gauge32: 10000000
IF-MIB::ifSpeed.2 = Gauge32: 1000000000
IF-MIB::ifPhysAddress.1 = STRING: 
IF-MIB::ifPhysAddress.2 = STRING: 0:c:29:fb:ab:27
IF-MIB::ifAdminStatus.1 = INTEGER: up(1)
IF-MIB::ifAdminStatus.2 = INTEGER: up(1)
```

### Modificações através do SNMP

Quando existe uma community manager, quer dizer que temos permissão de escrita, então podemos fazer algumas alterações.

```
```

Podemos manipular os dados utilizando o snmpset. Iremos alterar onde está o valor de **SNMPv2-MIB::sysContact.0** que é "XISDE".

O "s" significa que o valor é uma string

```
┌──(user㉿kali)-[~/Desktop]
└─$ snmpwalk -c manager -v1 172.16.1.247                                  
SNMPv2-MIB::sysDescr.0 = STRING: Vyatta VyOS 1.1.7
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.30803
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (479344920) 55 days, 11:30:49.20
SNMPv2-MIB::sysContact.0 = STRING: XISDE
SNMPv2-MIB::sysName.0 = STRING: juniper
SNMPv2-MIB::sysLocation.0 = STRING: Unknown

```

Alterando o valor para "NICO", temos:

```
┌──(user㉿kali)-[~/Desktop]
└─$ snmpset -c manager -v1 172.16.1.247 SNMPv2-MIB::sysContact.0 s "NICO"                                                                                                                                                              130 ⨯
SNMPv2-MIB::sysContact.0 = STRING: NICO
                                                                                                                                                                                                                                             
┌──(user㉿kali)-[~/Desktop]
└─$ snmpwalk -c manager -v1 172.16.1.247                                 
SNMPv2-MIB::sysDescr.0 = STRING: Vyatta VyOS 1.1.7
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.30803
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (479359620) 55 days, 11:33:16.20
SNMPv2-MIB::sysContact.0 = STRING: NICO
SNMPv2-MIB::sysName.0 = STRING: juniper
SNMPv2-MIB::sysLocation.0 = STRING: Unknown
SNMPv2-MIB::sysServices.0 = INTEGER: 14

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nicollaslopes.gitbook.io/estudos/master/enumeration/enumerando-snmp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
