28.07.2020 @ 14:11 Тестирование на проникновение SNMP-устройств network security, onesixtyone, snmpwalk, безопасность сетевого периметра 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. pentestit-team 18867 Network security Читать дальше >>