09UDP
SNMP
Simple Network Management Protocol is a protocol used to monitor and manage devices on IP networks (routers, switches, servers, printers, etc.)
01 Set Up SNMP Service
- Windows
powershell16 lines
## ------------------| InstallAdd-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0" ## Windows 10/11 (Run as Administrator)Install-WindowsFeature -Name SNMP-Service -IncludeAllSubFeature -Verbose ## Windows Server 2016/2019/2022 (Run as Administrator)
## ------------------| Configure SNMP Service### Configure via Registryreg add "HKLM\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities" /v public /t REG_DWORD /d 4### Configure via GUI##### 1. Open Services (services.msc), find "SNMP Service", and set to Automatic##### 2. Right-click SNMP Service > Properties > Security Tab##### - Add Community String (e.g., "public", Read-Only)##### - Set "Accept SNMP packets from these hosts" (e.g., SNMP Manager IP)### Allow SNMP through Firewallnetsh advfirewall firewall add rule name="Allow SNMP" dir=in action=allow protocol=UDP localport=161Restart-Service -Name SNMP ### Restart SNMP ServiceGet-Service -Name SNMP ### Verify SNMP Service- Linux
bash28 lines
## ------------------| Installsudo apt install -y snmpd snmp ### Ubuntu/Debiansudo dnf install net-snmp net-snmp-utils -y ### CentOS/RHEL
## ------------------| Configure SNMP Service## sudo vi /etc/snmp/snmpd.confrocommunity public # Allow SNMPv2c read-only accessagentAddress udp:161 # Listen on all interfaces (or specify IP like udp:127.0.0.1:161)sysLocation ServerRoom # Optional system info
## ------------------| Configure SNMP to Listen on All Interfacessudo sed -i 's/snmpd.options=".*"/snmpd.options="-Lsd -Lf \/dev\/null -u snmp -g snmp -I -smux,mteTrigger,mteTriggerConf -p \/var\/run\/snmpd.pid"/' /etc/default/snmpd ### Ubuntu/Debiansudo sed -i 's/OPTIONS=.*/OPTIONS="-LS0-5d"/' /etc/sysconfig/snmpd ### CentOS/RHEL
## ------------------| Restart and enable SNMPsudo systemctl restart snmpdsudo systemctl enable snmpd
## ------------------| Configure SNMPv3### Create SNMPv3 Usersudo net-snmp-create-v3-user -ro -A "authPassword" -X "privPassword" -a SHA -x AES snmpuser### Add to /etc/snmp/snmpd.confsudo bash -c 'echo "rouser snmpuser authPriv" >> /etc/snmp/snmpd.conf'### Restart SNMP Servicesudo systemctl restart snmpd### Test SNMPv3snmpwalk -v3 -u snmpuser -a SHA -A "authPassword" -x AES -X "privPassword" <device-ip> .1.3.6.1.2.1.1.1.002 Enumerations
- Nmap
bash16 lines
## ------------------| Nmap Generalsudo nmap -sU --open -p 161 <IP> ## Check if SNMP port (UDP 161) is opensudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-info --script-args=community=public <IP> ## Enumerate general SNMP informationsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-interfaces --script-args=community=public <IP> ## List network interfaces via SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-netstat --script-args=community=public <IP> ## Retrieve netstat info via SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-processes --script-args=community=public <IP> ## List running processes via SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-sysdescr --script-args=community=public <IP> ## Get system description from SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-hh3c-logins --script-args=community=public <IP> ## Extract Huawei login info via SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-ios-config --script-args=community=public <IP> ## Attempt to download Cisco IOS config via SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script="snmp-* and not snmp-brute" --script-args=community=public <IP> ## Run all SNMP-related scripts
## ------------------| Special Nmap for Windowssudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-win32-services --script-args=community=public <IP> ## List Windows services via SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-win32-shares --script-args=community=public <IP> ## List Windows shares via SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-win32-software --script-args=community=public <IP> ## List installed Windows software via SNMPsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-win32-users --script-args=community=public <IP> ## List Windows user accounts via SNMP- Community Strings Brute-force
bash28 lines
## ------------------| Common Community Stringspublicinternalprivatemanagerbackup
## ------------------| Nmapsudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-brute --script-args="snmp-brute.communitiesdb=/usr/share/seclists/Discovery/SNMP/snmp.txt" <IP>sudo nmap -sU -p 161 -Pn -n -T4 -v --script=snmp-brute --script-args="snmp-brute.communitiesdb=/usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt" <IP>
## ------------------| Hydrahydra -P /usr/share/seclists/Discovery/SNMP/snmp.txt -v <IP> snmphydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt -v <IP> snmp
## ------------------| OneSixtyOneonesixtyone -c dict.txt -i iplist.txtonesixtyone -c /usr/share/seclists/Discovery/SNMP/snmp.txt <IP>onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt <IP>#### wget https://raw.githubusercontent.com/trailofbits/onesixtyone/master/dict.txt
## ------------------| SNMP-Brutewget https://raw.githubusercontent.com/SECFORCE/SNMP-Brute/master/snmpbrute.pypython3 snmpbrute.py -t <IP>python3 snmpbrute.py -a -t <IP>python3 snmpbrute.py --sploitego -t <IP>python3 snmpbrute.py -f /usr/share/seclists/Discovery/SNMP/snmp.txt -t <IP>python3 snmpbrute.py -f /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt -t <IP>- Basic Enum
bash18 lines
## ------------------| To read snmpwalk output as human readableapt-get install snmp-mibs-downloader -ycat /etc/snmp/snmp.conf## Comment 👉mibs :👈 this
### First get the correct commiunity string from onesixtyone## ------------------| Basic checkssnmpenum <IP> public linux.txt # Use this for Linux, then move in to snmpwalk !!snmpenum <IP> public windows.txt # Use this for Windows, then move in to snmpwalk !!snmp-check <IP> -c publicsnmpwalk -c public -v1 <IP>snmpwalk -c public -v2c <IP>snmpwalk -c internal -v2c <IP> | tee snmpwalk.outsnmpbulkwalk -c public -v2c <IP> | tee snmpbulkwalk.outsnmpbulkwalk -Cr1000 -c public -v2c <IP> | tee snmpbulkwalk.out
## ------------------| Analyze / Grepgrep -oP '::.*?\.' snmpwalk.out | sort | uniq -c | sort -n- SNMP OIDs (Object Identifiers)
bash51 lines
## ------------------| Common for both OSsnmpwalk -c public -v1 <IP> -Ovq HOST-RESOURCES-MIB::hrSWRunParameters ## Get running services with argssnmpwalk -c public -v1 <IP> .1.3.6.1.2.1.1.5.0 ## System Name (Hostname)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.1.1.0 ## System Description (OS, hardware, version)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.4.2.1.2 ## Running Processes (Process names)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.4.2.1.4 ## Process Paths (Executable paths)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.1.6.0 ## System Processes (Running process count)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.6.3.1.2 ## Installed Software (Software inventory)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.1.7.0 ## System Services (Running services summary)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.4.2.1.5 ## Process Arguments (Command-line arguments)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.2.3.1.4 ## Storage Units (Disk/partition details)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.6.13.1.3 ## Open TCP Ports (Active connections)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.2.2.1.2 ## Network Interfaces (Interface names/descriptions)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.2.2.1.6 ## Network Interface MAC Addressessnmpwalk -c public -v1 <IP> .1.3.6.1.2.1.4.22.1.2 ## ARP Table (IP-to-MAC mappings)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.3.2.1.3 ## Get hardware device namessnmpwalk -c public -v1 <IP> .1.3.6.1.2.1.1.6.0 ## System Location
## ------------------| Get ipAddressTablesnmpwalk -c public -v1 <IP> 1.3.6.1.2.1.4.34.1.3snmpwalk -c public -v2c <IP> 1.3.6.1.2.1.4.34.1.3### IPV6snmpwalk -v2c -c public <IP> ipAddressIfIndex.ipv6 | cut -d'"' -f2 | grep 'de:ad' | sed -E 's/(.{2}):(.{2})/\1\2/g'### Using Enyx## wget https://raw.githubusercontent.com/trickster0/Enyx/master/enyx.py## cat /etc/snmp/snmp.conf## Unomment 👉mibs :👈 thispython enyx.py 2c public 10.10.10.20
## ------------------| Special for Windowssnmpwalk -c public -v1 <IP> .1.3.6.1.4.1.77.1.2.25 ## User Accounts (Local user accounts)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.77.1.2.3.1.1 ## Domain Information (Domain membership details)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.77.1.2.2 ## Windows Groups (Local group accounts)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.77.1.2.27 ## Windows Shares (Shared folders/drives)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.77.1.2.1 ## Windows Services (Detailed service information)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.77.1.2.14 ## Installed Patches (Windows update details)snmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.6.3.1.4 ## Get Windows software install locationsnmpwalk -c public -v1 <IP> .1.3.6.1.2.1.25.6.3.1.5 ## Get Windows software version
## ------------------| Special for Linuxsnmpwalk -c public -v1 <IP> .1.3.6.1.4.1.2021.4.3.0 ## Total RAM (Memory size)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.2021.4.11.0 ## Free RAM (Available memory)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.2021.11.9.0 ## CPU Load (1-minute average)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.2021.10.1.3.1 ## CPU Load (Detailed 1-minute load)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.2021.9.1.2 ## Mounted Filesystems (Mount points)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.2021.9.1.7 ## Disk Usage (Free space per filesystem)snmpwalk -c public -v1 <IP> .1.3.6.1.4.1.2021.8.1.101 ## Custom Scripts (If extended via /etc/snmp/snmpd.conf)snmpwalk -c public -v1 <IP> 1.3.6.1.2.1.25.3.8.1.2 ## Get mounted filesystem pathssnmpwalk -c public -v1 <IP> 1.3.6.1.2.1.25.3.2.1.5 ## Get device typessnmpwalk -c public -v1 <IP> 1.3.6.1.2.1.1.3.0 ## Get system uptimesnmpwalk -c public -v1 <IP> 1.3.6.1.2.1.25.3.3.1.2 ## Get CPU load