### O que é SNMP? **Simple Network Management Protocol (SNMP)** é um protocolo usado para monitorar e gerenciar dispositivos de rede como roteadores, switches, impressoras e servidores. **Características importantes:** - Funciona sobre **UDP** (protocolo sem estado) - Versões 1, 2, e 2c **não criptografam** dados - Frequentemente configurado com **community strings padrão** - Vulnerável a **IP spoofing** e **replay attacks** - Métodos de autenticação **fracos** por padrão ### O que são MIBs? **Management Information Base (MIB)** é uma base de dados estruturada em árvore que contém informações sobre dispositivos de rede. **Estrutura:** - Organizada em formato de **árvore hierárquica** - Cada ramo representa **organizações** ou **funcionalidades** - Folhas da árvore contêm **valores específicos** consultáveis ## Descoberta com NMAP ### Descoberta Básica Encontrar hosts com SNMP ativo e salvar em arquivo. ```bash # Scan básico de descoberta SNMP sudo nmap -sU --open -p 161 <targetRange> -oG open-snmp.txt # Exemplo prático sudo nmap -sU --open -p 161 192.168.1.0/24 -oG open-snmp.txt ``` ### Bruteforce de Community Strings Tentar descobrir community strings válidas. ```bash # Bruteforce com wordlist padrão sudo nmap -sU -p 161 --script snmp-brute <ipAddr> # Bruteforce com wordlist customizada sudo nmap -sU -p 161 --script snmp-brute --script-args snmp-brute.communitiesdb=/usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt <ipAddr> ``` ### Enumeração Específica com NMAP Scripts especializados para diferentes tipos de informação. ```bash # Enumerar usuários Windows sudo nmap -sU -p 161 --script snmp-win32-users <ipAddr> # Enumerar serviços Windows sudo nmap -sU -p 161 --script snmp-win32-services <ipAddr> # Executar todos os scripts SNMP sudo nmap -sU -p 161 --script snmp-* <ipAddr> -oG nmap/snmp.txt ``` ## Enumeração com SNMPWALK ### Comandos Básicos Ferramenta principal para consultar MIBs de forma automática. ```bash # SNMPv1 com community "public" e timeout de 10s snmpwalk -c public -v1 -t 10 <ipAddr> # SNMPv1 com conversão automática hex para ASCII snmpwalk -c public -v1 -Oa <ipAddr> # SNMPv2c básico snmpwalk -v2c -c public <ipAddr> ``` ### Enumeração Específica Consultar informações específicas do sistema. ```bash # Listar software instalado snmpwalk -v2c -c public <ipAddr> hrSWInstalledName # Verificar quantidade de RAM snmpwalk -v2c -c public <ipAddr> hrMemorySize # Informações do sistema snmpwalk -v2c -c public <ipAddr> system # Interfaces de rede snmpwalk -v2c -c public <ipAddr> interfaces ``` ## Consultas de MIBs Específicas ### Usuários e Processos Windows OIDs específicos para sistemas Windows. ```bash # Usuários locais Windows snmpwalk -c public -v1 <ipAddr> 1.3.6.1.4.1.77.1.2.25 # Processos em execução snmpwalk -c public -v1 <ipAddr> 1.3.6.1.2.1.25.4.2.1.2 # Software instalado snmpwalk -c public -v1 <ipAddr> 1.3.6.1.2.1.25.6.3.1.2 # Portas TCP em escuta snmpwalk -c public -v1 <ipAddr> 1.3.6.1.2.1.6.13.1.3 ``` ### MIBs Úteis para Pentesting Lista de OIDs importantes para reconhecimento. ```bash # Informações do sistema 1.3.6.1.2.1.1.1.0 # Descrição do sistema 1.3.6.1.2.1.1.5.0 # Nome do host 1.3.6.1.2.1.1.6.0 # Localização do sistema # Usuários e contas 1.3.6.1.4.1.77.1.2.25 # Usuários Windows 1.3.6.1.2.1.25.4.2.1.2 # Processos rodando # Rede 1.3.6.1.2.1.2.2.1.2 # Interfaces de rede 1.3.6.1.2.1.4.20.1.1 # Endereços IP 1.3.6.1.2.1.6.13.1.3 # Portas TCP abertas # Armazenamento 1.3.6.1.2.1.25.2.3.1.3 # Tipos de storage 1.3.6.1.2.1.25.6.3.1.2 # Software instalado ``` ## Bruteforce com ONESIXTYONE ### Preparação Criar arquivo com community strings comuns. ```bash # Community strings mais comuns public private manager management admin community snmp monitor ``` ### Comandos de Bruteforce Ferramenta rápida para testar múltiplas community strings. ```bash # Bruteforce contra IP único com wordlist padrão onesixtyone -c /usr/share/doc/onesixtyone/dict.txt <ipAddr> # Bruteforce contra lista de IPs onesixtyone -c <wordList> -i <targetFile> # Bruteforce com wordlist customizada onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt <ipAddr> # Bruteforce silencioso (só sucessos) onesixtyone -q -c <wordList> <ipAddr> ``` ## Modificação com SNMPSET ### Comandos de Modificação **⚠️ CUIDADO:** Apenas use em ambientes de teste autorizados. ```bash # Alterar valor de um OID específico snmpset -v2c -c private <ipAddr> <OID> <tipo> <newValue> # Alterar informação de contato do sistema snmpset -v2c -c private <ipAddr> sysContact.0 s "Novo Contato" # Alterar localização do sistema snmpset -v2c -c private <ipAddr> sysLocation.0 s "Nova Localização" # Tipos de dados comuns: # s = string # i = integer # a = ip address # o = object identifier ``` ## Ferramentas Complementares ### SNMP-Check Ferramenta automatizada para enumeração completa. ```bash # Instalação apt-get install snmp-check # Uso básico snmp-check -t <ipAddr> -c public # Com output detalhado snmp-check -t <ipAddr> -c public -v 2c -w ``` ### Metasploit Modules Módulos úteis para enumeração SNMP. ```bash # Descoberta de community strings use auxiliary/scanner/snmp/snmp_login # Enumeração de usuários use auxiliary/scanner/snmp/snmp_enumusers # Enumeração geral use auxiliary/scanner/snmp/snmp_enum ``` ## Community Strings Comuns ### Lista Básica ``` public private community manager admin snmp monitor read write guest security ``` ### Lista Estendida para Dispositivos Específicos ```bash # Cisco cisco c0mmu1ty cable-docsis ANYCOM # HP/3Com admin hp_admin switch # Dell dell private # Para routers/switches default secret system ``` ## Dicas de Segurança e Evasão ### Técnicas de Evasão ```bash # Usar source port específica (pode contornar alguns firewalls) nmap -sU -p 161 --source-port 161 <target> # Throttling para evitar detecção snmpwalk -c public -v1 -t 10 -r 1 <target> # Usar diferentes versões SNMP snmpwalk -v1 -c public <target> # SNMPv1 snmpwalk -v2c -c public <target> # SNMPv2c ``` ### Limpeza de Logs ```bash # Verificar se deixou rastros (se tiver acesso write) snmpset -v2c -c private <target> sysContact.0 s "Original Contact" ```