Версия 3 протокола SNMP (Simple Network Management Protocol) появилась довольно давно в ответ на слабые возможности 2 версии с точки зрения безопасности.
Однако, несмотря на доступность и широкое распространение описаний протокола версии 3[1], описаний реализаций на базе SNMP v3 немного.
В текущем посте отражено исследование дампов обмена «GUI Element Manager» (далее EM) и Multi-Haul Transport Platform (далее MHTP).
Мы рассмотрим серию запросов на получение и установку SNMP, выдаваемых EM при запуске и аутентификации приложения, а также ответы MHTP на эти запросы.
Прежде чем углубляться в последовательность и содержание запросов, необходимо обратить внимание на следующее: 1) Клиент (EM) для успешной аутентификации должен иметь информацию о следующих параметрах USM (RFC 3414): • Имя пользователя – например.
'Администратор' • Протокол аутентификации – MD5, • Ключ аутентификации – например.
'12345', • Протокол конфиденциальности – AES, • Ключ конфиденциальности – например.
'12345', • Имя контекста – «tnms».
2) При создании UDP-соединения на стороне клиента операционная система выделяет «исходный порт» (не путать с «портом назначения», который по умолчанию равен 161 для получения/установки SNMP).
Значение «исходный порт» может меняться при разных запусках клиентского приложения.
В рассматриваемой реализации значение «порт-источник» используется при динамической генерации OID. Например, при выборе «исходного порта» = 60583 мы имеем побайтовые 0xEC и 0xA7, а также динамический суффикс как часть OID вида «.
236.167».
3) Собственный IP-адрес известен клиентской стороне и используется при динамическом формировании OID. Например, для IP-адреса клиента «10.60.1.5» OID некоторых запросов будет содержать часть «.
10.60.1.5.».
4) Упомянутое выше значение имени пользователя также используется при создании OID. Например, для «Администратора» OID некоторых запросов будет содержать часть «.
65.100.109.105.110.105.115.116.114.97.116.111.114.» (ASCII).
Теперь обратимся к последовательности и содержимому запросов get и set при запуске EM, аутентификации и создании сессии (часть дампа ниже не приведена): Запросы 1 и 2. В соответствии с RFC 5343 выполняем «обнаружение» параметров EngineID, EngineBoots и EngineTime, Запрос: данные: get-запрос, msgData: открытый текст, привязки переменных: - Отвечать: данные: отчет, msgData: открытый текст, привязки переменных: (1 элемент) 1.3.6.1.6.3.15.1.1.4 ( usmStatsUnknownEngineIDs )(Целое32) ==> 1. Интересно, что полученные значения EngineBoots и EngineTime используются начиная с Запроса 4, но в Запросе 3 их нужно обнулить.
Запрос 3. usmStatsNotInTimeWindows запрос Запрос: данные: get-запрос, msgData: зашифрованныйPDU, привязки переменных: - Отвечать: данные: отчет, msgData: зашифрованныйPDU, привязки переменных: (1 элемент) 1.3.6.1.6.3.15.1.1.2.0 ( usmStatsNotInTimeWindows )(Целое число32) ==> 0. Общее количество пакетов, полученных механизмом SNMP за пределами авторитетного окна.
Запрос 4. Запросить snmpAgentState. Запрос: данные: get-запрос, msgData: зашифрованныйPDU, привязки переменных: (1 элемент) 1.3.6.1.4.1.42229.1.1.1.7.128.6.0 Отвечать: данные: получить-ответ, msgData: зашифрованныйPDU, привязки переменных: (1 элемент) 1.3.6.1.4.1.42229.1.1.1.7.128.6.0 (snmpAgentState)(Integer32) ==> 3(ВКЛЮЧЕНО).
Состояние агента.
Запрос 5. Запросить sysDescr Запрос: данные: get-запрос, msgData: зашифрованныйPDU, привязки переменных: (1 элемент) 1.3.6.1.2.1.1.1.0 (sysDescr) Отвечать: данные: получить-ответ, msgData: зашифрованныйPDU, привязки переменных: (1 элемент) 1.3.6.1.2.1.1.1.0 (sysDescr)==> '--------- Авторские права 2019 ******.
Все права защищены.
» (OctetString) Запрос 6. Запрос InterfaceVersion структурно аналогичен запросам 4 и 5. Запрос 7. Запросить usmXUserLastSuccessfulLogin Запрос: данные: get-запрос, msgData: зашифрованныйPDU, привязки переменных: (1 элемент) 1.3.6.1.4.1.42229.1.1.1.9.2.1.13.13.65.100.109.105.110.105.115.116.114.97.116.111.114 Отвечать: данные: получить-ответ, msgData: зашифрованныйPDU, привязки переменных: (1 элемент) 1.3.6.1.4.1.42229.1.1.1.9.2.1.13.13.65.100.109.105.110.105.115.116.114.97.116.111.114 (usmXUserLastSuccessfulLogin) ==> 07:e3:09:0a:06:1f:36:00:2b:00:00(октетная строка) ==> 10 сентября 2019 г.
и т. д. Непосредственно в OID включено имя пользователя («Администратор») -’.
65.100.109.105.110.105.115.116.114.97.116.111.114.’, для которого запрашивается время его последней успешной аутентификации.
Запрос 8. Запрос на создание сеанса Запрос: данные: set-запрос, msgData: зашифрованныйPDU, привязки переменных: (4 элемента) 1.3.6.1.4.1.42229.1.1.1.9.6.1.2.6.10.60.1.5.236.167==> 4(Integer32)==> createAndGo 1.3.6.1.4.1.42229.1.1.1.9.6.1.5.6.10.60.1. 5.236.167==> 2(Integer32)==> sessionRemoteLogin 1.3.6.1.4.1.42229.1.1.1.9.6.1.3.6.10.60.1.5.236.167==> 41646d696e6973747261746f72(OctetString)==> sessionUserName('Администратор') 1.3.6.1.4.1.42229.1.1.1.9.6.1.4.6.10.60.1.5.236.167==> 4043542020(OctetString)==> sessionManager ==> 'root' Отвечать: данные: получить-ответ, msgData: зашифрованныйPDU, привязки переменных: (4 элемента) 1.3.6.1.4.1.42229.1.1.1.9.6.1.2.6.10.60.1.5.236.167==> 4(Integer32)==> createAndGo 1.3.6.1.4.1.42229.1.1.1.9.6.1.5.6.10.60.1. 5.236.167==> 2(Integer32)==> sessionRemoteLogin 1.3.6.1.4.1.42229.1.1.1.9.6.1.3.6.10.60.1.5.236.167==> 41646d696e6973747261746f72(OctetString)==> sessionUserName('Администратор') 1.3.6.1.4.1.42229.1.1.1.9.6.1.4.6.10.60.1.5.236.167==> 4043542020(OctetString)==> sessionManager ==> 'root' IP-адрес и порт источника включены непосредственно в OID: «.
10.60.1.5.236.167».
Пост кратко иллюстрирует особенности реализации SNMP v3, присущие MHTP. [1] Дуглас Р.
Мауро и Кевин Дж.
Шмидт «Основной SNMP» (второе издание).
[2] gtacknowledge.extremenetworks.com/articles/How_To/How-to-decrypt-SNMPv3-packets-in-Wireshark [3] labs.spritelink.net/talking-snmpv3-with-nsn-hit7300 Теги: #интерфейсы #Развлекательные головоломки #безопасность #SNMPv3
-
Digitimes: Windows Rt Больше Не Будет
19 Oct, 24 -
Руководство По Внутренней Модификации Eeepc
19 Oct, 24