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
# onesixtyone 192.168.4.0/24 public
# onesixtyone -c dect.txt -i hosts -o my.log -w 100
Особенности:
# 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 разные, их вы можете найти на сайте производителя, к примеру для , и так далее.
Для того, чтобы 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 библиотеки мы взяли согласно документации к роутеру из директории /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
Опции:
Вывод
Некорректная настройка протокола SNMP на устройстве может привести к его компрометации, в том числе получению учетных записей. Рекомендуется изменить пароль для community-строк, ограничить доступ к сервису или отключить его, если он не используется.
Информация предоставлена исключительно в ознакомительных целях. Не нарушайте законодательство!
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 разные, их вы можете найти на сайте производителя, к примеру для , и так далее.
Для того, чтобы 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 библиотеки мы взяли согласно документации к роутеру из директории /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 — пароль.
Вывод
Некорректная настройка протокола SNMP на устройстве может привести к его компрометации, в том числе получению учетных записей. Рекомендуется изменить пароль для community-строк, ограничить доступ к сервису или отключить его, если он не используется.