SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — стандартный интернет-протокол для управления устройствами в IP-сетях на основе TCP/UDP. К поддерживающим SNMP устройствам относятся маршрутизаторы, коммутаторы, серверы, рабочие станции, принтеры, модемные стойки и другие. Протокол обычно используется в системах сетевого управления для контроля подключённых к сети устройств на предмет условий, которые требуют внимания администратора. Разберем специализированный инструментарий для работы с SNMP-протоколом: onesixtyone и snmpwalk.

Информация предоставлена исключительно в ознакомительных целях. Не нарушайте законодательство!

onesixtyone

onesixtyone — SNMP-сканер, использующий особенность протокола — работу без установки соединения и отправку всех запросов настолько быстро, насколько это возможно, после чего ожидает ответ и записывает его. По умолчанию onesixtyone ожидает 10 миллисекунд между отправкой пакетов, что достаточно для коммутируемых сетей 100 Мбит/с. Изменить значение можно с помощью параметра -w. Если установлено значение 0, сканер будет отправлять пакеты настолько быстро, насколько устройство сможет их принять, что может привести к блокировке пакетов. Его можно использовать для обнаружения устройств, отвечающих на community-строки, или для проведения атак по словарю на одно или несколько устройств.

Установка (Debian 10):

# apt install onesixtyone

Синтаксис:
Чтобы увидеть список команд, используйте onesixtyone:

# onesixtyone

  • -c user_file — путь до словаря с community-строками;
  • -i IP_file — путь до списка с IP-адресами;
  • -o user_file — файл журнала;
  • -p — порт устройства;
  • -d — режим отладки, использовать дважды для получения дополнительной информации, укажите альтернативный порт;
  • -w n — изменить время ожидания между отправкой пакетов, где n — время в миллисекундах (по умолчанию 10);
  • -q — тихий режим, без вывода в консоль.

Ограничения:

  • Максимальное число хостов: 65535;
  • Максимальная длина community-строки: 32;
  • Максимальное число communities: 16384.

Пример использования:

  • # onesixtyone 192.168.4.0/24 public
  • # onesixtyone -c dect.txt -i hosts -o my.log -w 100

Особенности:

  • Перебор community-строк;
  • Сканирование диапазона IP-адресов;
  • Запись журнала в файл.

Рассмотрим его работу на примере маршрутизатора:

# onesixtyone 192.168.61.45

При помощи флага -i можем просканировать IP-адреса из файла:

# onesixtyone -i /usr/IP.lst

Далее добавим параметр и укажем файл со списком community-строк:

# onesixtyone -c /usr/password.lst 192.168.61.45

Эту команду можно повторить, используя опцию -d для подробного вывода действий в терминал:

# onesixtyone -c /usr/password.lst 192.168.61.45 -d

Результат

Выполним команду с выводом журнала в терминал, записью журнала в файл, сканированием заданного диапазона IP-адресов и последующим перебором community-строки в режиме отладки и временем ожидания между запросами в 70 миллисекунд.

# onesixtyone -o /usr/log.txt -i /usr/IP.lst -c /usr/password.lst -d -w 70

Результат

По итогу на IP-адресе 192.168.61.45 была найдена community-строка «secret». В зависимости от производителя, community-строки бывают public, которые позволяют только просмотреть настройки устройства, и private позволяющие изменять конфигурацию.

Перейдём к следующему инструменту.

snmpwalk

Snmpwalk — утилита для SNMP протокола, которая автоматически выполняет несколько запросов GetNext. Поддерживает подключение MIB библиотеки, упрощая навигацию по OID.

Установка:

# apt install snmp

Произведём установку утилит snmpget, snmpwalk, snmptrap, snmpinform.

Все параметры, которые можно получить от устройства по протоколу SNMP, можно увидеть с помощью команды:

# snmpwalk -c public -v2c 127.0.0.1

где 127.0.0.1 — IP-адрес устройства, -v2c — версия SNMP.

Чтобы получить значение конкретной ветки или параметра, нужно добавить его OID. Например, для получения описания всех портов коммутатора:

# snmpwalk -c public -v2c 127.0.0.1 1.3.6.1.2.1.2.2.1.2

Команда snmpwalk автоматически выполняет серию snmpnext-команд внутри заданного OID-диапазона.

OID — Object IDentification — цифровой код параметра системы, например, 1.3.6.1.2.1.2.2.1.1.7. Для каждого производителя коды OID разные, их вы можете найти на сайте производителя, к примеру для CISCO, VyOS и так далее.

Для того, чтобы OID-объекты отображались более читабельно, используем MIB библиотеки, которые мы взяли согласно документации. С их помощью можно настраивать и производить мониторинг SNMP на вашем устройстве.

Ранее, с помощью onesixtyone мы получили community-строку «secret», используем её с помощью snmpwalk.

# snmpwalk -c secret -v1 192.168.61.45

Результат

где параметр для установки community-строки. Он может быть как public так и private, -v1 версия SNMP v1.

В терминале отображается множество строк, которые являются выводом GetNext запросов, по умолчанию команда # snmpwalk -c secret -v1 192.168.61.45 выведет все GetNext запросы.

Поскольку вывод в терминал объемный, запишем его в файл:

# snmpwalk -c secret -v1 192.168.61.45 > /usr/result.txt

Теперь есть возможность исследовать полученный файл с помощью grep

# cat /usr/result.txt | grep root

Так же можно получать необходимую информацию по OID, что соответственно является запросом GetNext.

# snmpwalk -c secret -v1 192.168.61.45 iso.3.6.1.2.1.1.1.0

где iso.3.6.1.2.1.1.1.0 — является OID строкой, содержащей название операционной системы роутера и её версии.

Но разобраться с OID такого вида трудно, если не иметь соответствующей документации или опыта работы с SNMP. Используем MIB библиотеки, которые позволят преобразовать строки формата iso.3.6.1.2.1.1.1.0 в текст для более удобного анализа полученной информации. MIB библиотеки мы взяли согласно документации к роутеру VyOS из директории /usr/share/snmp/mibs.

Загруженные библиотеки нужно разместить в /usr/share/snmp/mibs. Теперь мы можем их использовать с помощью команды # snmpwalk -c secret -v1 192.168.61.45 -m ALL

Где -m это подключение библиотек, после которой указываете имя необходимой, ALL позволяет подключить их все.

Результат

И теперь мы видим вместо цифр текст. Мы можем получить имя ОС, где SNMPv2-MIB::sysDescr.0 является именем OID для названия ОС, с помощью следующей команды.

snmpwalk -c secret -v1 -Of 192.168.61.45 -m ALL SNMPv2-MIB::sysDescr.0

Примеры использования команд для SNMP v3:

# snmpwalk -v3 -l authPriv -u -a MD5 -A -x DES -X

# snmpwalk -v3 -l authPriv -u admin -a MD5 -A lslslsls1 -x DES -X ag66gaga 127.0.0.1

Опции:

  • -v3 — версия SNMP v3;
  • -l — уровень безопасности; (noAuthNoPriv | authNoPriv | authPriv)
  • -u — имя пользователя;
  • -a — (MD5 или SHA) протокол аутентификации;
  • -A — пароль;
  • -x — протокол конфиденциальности; (DES или AES)
  • -X — пароль.

С помощью команды snmpwalk -h возможно увидеть полный список ключей и параметров для snmpwalk.

Практика

Некорректная настройка протокола SNMP на устройстве может привести к его компрометации, в том числе получению учетных записей. Рекомендуется изменить пароль для community-строк, ограничить доступ к сервису или отключить его, если он не используется. Узнать больше об инструментарии для проведения тестирования на проникновение на программах практической подготовки Корпоративные лаборатории Pentestit.