The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project The BrandLinks Project

Тестирование на проникновение SNMP-устройств

BlackPope

Местный
Регистрация
27.04.2020
Сообщения
242
Реакции
34
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-строк, ограничить доступ к сервису или отключить его, если он не используется.
 
Верх