onesixtyone

Scanner SNMP rapide. Envoie des requêtes SNMP à plusieurs hôtes simultanément pour trouver des chaînes de communauté valides : bien plus rapide qu'un brute-force SNMP séquentiel. Fast SNMP scanner. Sends SNMP requests to multiple hosts simultaneously to find valid community strings — much faster than sequential SNMP brute-forcing.

↗ https://github.com/trailofbits/onesixtyone

Overview

onesixtyone is an SNMP scanner that brute-forces community strings across multiple hosts simultaneously. Named after UDP port 161 (SNMP), it efficiently discovers SNMP-enabled devices and their community strings by sending many requests in parallel rather than sequentially.

Basic Usage

Scan single host with default community strings

onesixtyone 10.10.10.1

With custom community string list

onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt 10.10.10.1

Scan multiple hosts from file

onesixtyone -c communities.txt -i hosts.txt

Scan subnet

onesixtyone -c communities.txt 10.10.10.1/24

Increase timeout

onesixtyone -c communities.txt -t 2 10.10.10.1

Finding SNMP Hosts First

Scan for UDP 161 open with nmap

nmap -sU -p 161 --open 10.10.10.0/24 -oG - | grep "161/open" | awk '{print $2}' > snmp_hosts.txt

Or with masscan (faster)

masscan -p U:161 --rate 1000 10.10.10.0/24

Then brute-force community strings

onesixtyone -c /usr/share/seclists/Discovery/SNMP/snmp.txt -i snmp_hosts.txt

Community String Lists

Quick list (most common)

cat > quick_communities.txt << 'EOF'
public
private
community
manager
monitor
admin
cisco
snmp
EOF
# Full list from SecLists
/usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt
/usr/share/seclists/Discovery/SNMP/snmp.txt

# Try quick list first, then full list
onesixtyone -c quick_communities.txt 10.10.10.1
onesixtyone -c /usr/share/seclists/Discovery/SNMP/snmp.txt 10.10.10.1

Output and Follow-Up

# Example output:
# 10.10.10.1 [public] Linux mail 4.19.0 #1 SMP Thu Feb 6 UTC 2020
# 10.10.10.5 [private] Cisco IOS Software, Version 15.1(4)M4

After finding community string, enumerate with snmpwalk or snmpcheck:

snmpwalk -v 2c -c public 10.10.10.1

Or comprehensive enum with snmpcheck:

snmpcheck -c public 10.10.10.1
snmpwalk -v 2c -c public 10.10.10.1 1.3.6.1.2.1.1.5.0  # hostname
snmpwalk -v 2c -c public 10.10.10.1 1.3.6.1.2.1.25.4   # processes

Tips

  • SNMP v1/v2c sends community strings in plaintext UDP packets — trivially sniffable
  • “public” works on a surprising number of devices — always try it first
  • Network devices (switches, routers, printers) almost always have SNMP enabled
  • Write community (usually “private”) can modify device config — handle carefully
Help / Man page
onesixtyone [options] <host/subnet>

-c FILE     Community strings file
-i FILE     Hosts file
-o FILE     Output file
-t TIME     Timeout in milliseconds (default: 10)
-d          Debug output
-q          Quiet mode
-w N        Wait N ms between sending packets

host/subnet: IP, CIDR, or range

Vue d’ensemble

onesixtyone est un scanner SNMP qui brute-force les chaînes de communauté sur plusieurs hôtes simultanément. Nommé d’après le port UDP 161 (SNMP), il découvre efficacement les équipements SNMP activés et leurs chaînes de communauté en envoyant de nombreuses requêtes en parallèle plutôt que séquentiellement.

Utilisation de base

# Scanner un seul hôte avec les chaînes de communauté par défaut
onesixtyone 10.10.10.1

# Avec une liste personnalisée de chaînes de communauté
onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt 10.10.10.1

# Scanner plusieurs hôtes depuis un fichier
onesixtyone -c communities.txt -i hosts.txt

# Scanner un sous-réseau
onesixtyone -c communities.txt 10.10.10.1/24

# Augmenter le timeout
onesixtyone -c communities.txt -t 2 10.10.10.1

Trouver les hôtes SNMP d’abord

# Scanner les hôtes avec UDP 161 ouvert via nmap
nmap -sU -p 161 --open 10.10.10.0/24 -oG - | grep "161/open" | awk '{print $2}' > snmp_hosts.txt

# Ou avec masscan (plus rapide)
masscan -p U:161 --rate 1000 10.10.10.0/24

# Puis brute-forcer les chaînes de communauté
onesixtyone -c /usr/share/seclists/Discovery/SNMP/snmp.txt -i snmp_hosts.txt

Listes de chaînes de communauté

cat > quick_communities.txt << 'EOF'
public
private
community
manager
monitor
admin
cisco
snmp
EOF
# Liste complète depuis SecLists
/usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt
/usr/share/seclists/Discovery/SNMP/snmp.txt

# Essayer d'abord la liste rapide, puis la liste complète
onesixtyone -c quick_communities.txt 10.10.10.1
onesixtyone -c /usr/share/seclists/Discovery/SNMP/snmp.txt 10.10.10.1

Sortie et suivi

# Exemple de sortie :
# 10.10.10.1 [public] Linux mail 4.19.0 #1 SMP Thu Feb 6 UTC 2020
# 10.10.10.5 [private] Cisco IOS Software, Version 15.1(4)M4

Après avoir trouvé la chaîne de communauté, énumérer avec snmpwalk ou snmpcheck :

snmpwalk -v 2c -c public 10.10.10.1

Ou énumération complète avec snmpcheck :

snmpcheck -c public 10.10.10.1
snmpwalk -v 2c -c public 10.10.10.1 1.3.6.1.2.1.1.5.0  # hostname
snmpwalk -v 2c -c public 10.10.10.1 1.3.6.1.2.1.25.4   # processus

Conseils

  • SNMP v1/v2c envoie les chaînes de communauté en clair dans des paquets UDP : trivialement sniffable
  • “public” fonctionne sur un nombre surprenant d’équipements : toujours l’essayer en premier
  • Les équipements réseau (switchs, routeurs, imprimantes) ont presque toujours SNMP activé
  • La communauté d’écriture (généralement “private”) peut modifier la configuration de l’équipement : à manier avec précaution
Aide / Page de manuel
onesixtyone [options] <host/subnet>

-c FILE     Community strings file
-i FILE     Hosts file
-o FILE     Output file
-t TIME     Timeout in milliseconds (default: 10)
-d          Debug output
-q          Quiet mode
-w N        Wait N ms between sending packets

host/subnet: IP, CIDR, or range