SNMP
Summary:
Polling: Network monitor connects to device on port 161 UDP. So the monitor will ask a NAS for information on an OID and the device responds.
Notifying: The device sends out info about its own OIDs towards port 162 UDP. These messages towards 162 are called [traps/notifications/informs].
Used for network management. Basic commands (read(monitor), write(config), trap(collection), traversal ops(get supported variables)) Tends to be overly verbose. Often misconfigured, leads to information leakage. UDP based, stateless protocol that is vulnerable to IP spoofing and replay attacks. Versions 1, 2, 2c offer no traffic encryption and are the easiest to hack. The don't utilize a user pass combo rather just a single community string to auth in. SNMP info can also be easily intercepted. 3c will require user and password and offers encryption but can still fall to brute forcing attacks. Always check for weak auth schemes and normally has default public and private community strings.
SNMP Verbs: Get, GetNext, Set, Trap
Community Strings:
Private: write access Public: read access OID: These are numerical ID for sensor data on things like fans, heat, drive cap, etc. These are laid out in a tree structure where they can be vague or granular MIB: This are human friendly names for OIDs
There are default MIBs and OIDs for systems where you can ask almost any system something like [sysuptime.0] and get info from it. These are built in and can find list with google ["OID for synology nas"] and look at the product manuals. SNMP management information base (mib) is a network settings database organized as a tree. If we can access the MIB and know how to read and interpret the info, we can then know each and every device on the network. If we can crack the password on SNMP, we may be able to control each networked device.
---Common attacks---
(Before you try any hack on SNMP, make certain you try these default passwords first.) Default Community: using default community strings Sniffing Community Strings: (works with v1-v2//clear text coms) Brute forcing strings: (will trigger IDS systems as they see many login attempts with different strings) Flooding: a DOS attack where we spoof an snmp agent then flood the SNMP trap manager with traps varying in sizes from 50b to 32kb until the management trap is unable to function
Tools:
snmpwalk - uses getnext to enumerate the network tree. We provide an OID and it will walk everything under that OID. Otherwise it will try to walk as much tree as it can see.
We want to install "snmp-mibs-downloader" then in the file /etc/snmp/snmp.conf we will add and OIDs that we find to the 4th line of the file and this will help us enumerate better.
//walk through snmp mib tree for an IP
//We must be authenticated to use this tool... usually its “public” or “private”
#snmpwalk -c public -v 1 <ip>
//-c community string (normally public) and then the version being used in this case v1 but also try -v 2c
# snmpwalk -c public 192.168.38.200 -v 2c
//we can also use the keys from the [cat mib-values]
#snmpwalk -c public -v 1 -t 10 <ip> 1.3.6.1.4.1.77.1.2.25
//enumerating users
snmpset:
#snmpwalk -v 2c -c public 192.168.102.149 system.syscontact.0
//this gave us the system contact of “String: admin@els.com”
#snmpset -v 2c -c public 192.168.102.149 system.syscontact.0 s new@els.com
//we now set a new user to the contact
Nmap Scripts:
Scan for SNMP ports on network
# nmap -sU --open -p 161 10.11.1.1-254 -oG mega-snmp.txt
Brute list in: /usr/share/nmap/nselib/data/snmpcommunities.lst // there is a seclist for this at: /usr/share/seclists/Misc/wordlist-common-snmp-community-strings.txt
snmp-brute //add our strings here or specify a new list --script-args snmp-brute.communitiesdb=<wordlsit>
snmp-info
snmp-interfaces
snmp-netstat
snmp-processes
snmp-sysdescr
snmp-win32-services
snmp-win32-users
..more at: ls -l /usr/share/nmap/scripts | grep -i snmp
Use a script
#nmap -sU -p 161 10.11.1.1 --script=<name>
cat mib-values
//MS snmp params
This will give us stuff like:
system processes
running programs
process path
storage units
user accounts
tcp local ports
SNMP Brute Force
echo public > community
echo private >> community
echo manager >> community
for ip in $(seq 1 254);do echo 10.11.1.$ip;done > ips
onesixtyone -c community -i ip
s
Brute Force community strings and IPs
#onesixtyone [options] <host> <community>
#onesixtyone -c dict.txt 192.168.1.119
Will use the default wordlist /usr/share/doc/onesixtyone/dict.txt to try to crack the community string
(Authenticated) Enumeration of OIDs: //auth with the community string
#perl snmpenum.pl <IP-address> <community string> <config file>
//the config file can be the following: //(part of snmpenum)can download if we need to. If you have trouble with the files running then use dos2unix *.txt to format them
~/tools/snmp/cisco.txt
~/tools/snmp/linux.txt
~/tools/snmp/windows.txt
//these lists contains several OIDs to check
#snmp-check 192.168.1.2 -c public
MIB Lookup
Last updated
Was this helpful?