Опис протоколу SNMP (Simple Network Management Protocol)
Через 20 років в дитячому саду (або в дитячому чаті) хлопчик запитує дівчинку: - A твої батьки в якому чаті познайомилися?
Всі серйозні системи управління мережами використовують для своєї роботи простий мережевий протокол управління (Simple Network Management Protocol, SNMP). Насправді SNMP - це не просто протокол, а ціла технологія, покликана забезпечити управління і контроль за пристроями і додатками в мережі. З її допомогою можна контролювати абсолютно будь-які пристрої, підключені до комп'ютерної мережі, наприклад датчики пожежогасіння або навіть світлофори. Зрозуміло, SNMP можна використовувати (і це активно роблять) для управління мережевими компонентами: концентраторами, серверами, маршрутизаторами і т. П. Користуючись інформацією SNMP (такий, як показник числа пакетів в секунду і коефіцієнт мережевих помилок), мережеві адміністратори можуть більш просто управляти продуктивністю мережі і виявляти і вирішувати мережеві проблеми.
Три складові частини технології SNMP: структура керуючої інформації (Structure of Management Information, SMI) бази керуючої інформації (Management Information Base, MIB) сам протокол SNMP
Модель управління SNMP
Агентами в SNMP є програмні модулі, які працюють в керованих пристроях. Агенти збирають інформацію про керовані пристроях, в яких вони працюють, і роблять цю інформацію доступною для систем управління мережами (network management systems - NMS) за допомогою протоколу SNMP.
Протокол SNMP v1
SNMP реалізований в 1988 практично у всіх широко поширених мережевих середовищах: TCP / IP, IPX / SPX, AppleTalk і ін. Основною концепцією протоколу є те, що вся необхідна для керування пристроєм інформація зберігається на самому пристрої - будь то сервер, модем або маршрутизатор - в так званій Адміністративній Базі Даних (MIB - Management Information Base). SNMP як безпосередньо мережевий протокол надає тільки набір команд для роботи зі змінними MIB. Цей набір включає наступні операції:
- get-request Використовується для запиту одного або більше параметрів MIB
- get-next-request Використовується для послідовного читання значень. Зазвичай використовується для читання значень з таблиць. Після запиту першого рядка за допомогою get-request get-next-request використовують для читання залишилися рядків таблиці
- set-request Можна встановити однієї або більше змінних MIB
- get-response Повертає відповідь на запит get-request, get-next-request або set-request
- trap надішле повідомлення про події типу cold або warm restart або "падінні" деякого link'а.
Для того, щоб проконтролювати роботу деякого пристрою мережі, необхідно просто отримати доступ до його MIB, яка постійно оновлюється самим пристроєм, і проаналізувати значення деяких змінних.
Повідомлення SNMP складаються з 2 частин: імені спільноти (community name) і даних (data). Назва спільноти призначає середу доступу для набору NMS, які використовують це ім'я. Інформаційна частина повідомлення містить специфічну операцію SNMP (get, set, і т.д.) і пов'язані з нею операнди. Операнди позначають реалізації об'єктах, які включені в дану транзакцію SNMP.
Structure of Managment Information. RFC 1208
Managment Information Base (MIB, MIB-II). RFC 1213
MIB являє собою набір змінних, що характеризують стан об'єкта управління. Ці змінні можуть відображати такі параметри, як кількість пакетів, оброблених пристроєм, стан його інтерфейсів, час функціонування пристрою і т.п. Кожен виробник мережевого устаткування, крім стандартних змінних, включає в MIB будь-які параметри, специфічні для даного пристрою (в поддерево private enterprise).
За своєю структурою MIB вдає із себе дерево.Каждому елементу відповідає чисельний і символьний ідентифікатор. В ім'я змінної включається повний шлях до неї від кореневого елемента root.
Наприклад, час роботи пристрою з моменту перезавантаження зберігається в змінної, що знаходиться в розділі system під номером 3 і називається sysUpTime. Відповідно, ім'я змінної буде включати весь шлях: iso (1) .org (3) .dod (6) .internet (1) .mgmt (2) .mib-2 (1) .system (1) .sysUpTime (3) ; або на мові чисел: 1.3.6.1.2.1.1.3. Слід зауважити, що при цьому вузли дерева поділяються точками.
Існує стандартна гілка MIB, що відноситься до розділу управління mgmt, яку зазвичай підтримують всі мережеві пристрої.
Тестування мережі за допомогою SNMP
За допомогою SNMP можна виконувати різні тести функціональних можливостей мережевих пристроїв, певні знову ж на самих пристроях. Це буває корисно, оскільки просто спостереження статистики найчастіше не дає повної картини того, що відбувається.
Так, наприклад, для розділу, що відноситься до інтерфейсів Ethernet, визначений тест TDR (Time-domain reflectometry), що дозволяє визначати приблизну відстань до пошкодження в коаксіальному кабелі. Для того, щоб запустити TDR тест необхідно встановити значення змінної ifExtnsTestTypе (1.3.6.1.2.1.12.2.1.4), що містить тип виконуваного тесту, так, щоб вона містила ідентифікатор тесту TDR в MIB: 1.3.6.1.2.1.10.7.6.1.
Результатом тесту буде, по-перше, значення змінної ifExtnsTestResult (1.3.6.1.2.1.12.2.1.5), що характеризує результат тесту:
- відсутність результату
- успіх
- виконується
- не підтримується
- неможливо запустити
- припинений
- невдале завершення
І по-друге, значення змінної ifExtnsTestCode (1.3.6.1.2.1.12.2.1.6) буде містити ідентифікатор змінної MIB, що містить результат тесту. Результат тесту визначений як часовий інтервал в 100-наносекундних одиницях між початком передачі тестового пакета і виявленням колізій в несучій. В принципі, на підставі даного значення можна визначити необхідну відстань.
Фундаментальним нововведенням в SNMPv2 є те, що елемент адміністрування мережі може працювати в якості менеджера, агента або менеджера і агента одночасно. Дана концепція дає можливість користувачам застосовувати SNMP в ієрархічній структурі, в якій локальні менеджери звітують перед менеджерами середньої ланки, які, в свою чергу, контролюються менеджером вищого рівня. Чимало місця відводиться проблемам захищеності SNMP, мабуть, найбільш вразливою точки протоколу.
Безпека SNMP. RFC 1352.
Один з найбільш помітних недоліків SNMP v1 - відсутність розвиненої системи захисту даних на рівні, необхідному для мереж масштабу підприємства.
Як сказав Mike Warfield: "SNMP stands for Security Not My Problem".
У SNMPv1 захист адміністративної інформації трактувалася занадто спрощено: вона базувалася на використанні колективного імені (Community Name), яке, перебуваючи в заголовку SNMP, несло в собі всі можливості захисту повідомлень. Даний засіб (відоме під назвою тривіальний протокол) вимагало, щоб програма-агент і менеджер впізнали один і той же колективне ім'я, перш ніж продовжити виконання операцій мережевого адміністрування. В результаті багато адміністраторів мереж обмежувалися у своїй роботі тільки функціями моніторингу, забороняючи видачу команди SET, здатної змінювати параметри конфігурації віддаленого пристрою. Це призвело до того, що користувачі уникали команд SET: таке примітивне засіб захисту, як колективне ім'я, могло дати можливість особам, які не наділеним відповідними повноваженнями, змінювати параметри, про що користувачі могли навіть і не впізнати. До того ж вся критично важлива інформація передавалася у відкритому вигляді, тому в інтернеті доступний навіть snmp sniffer
Стандартами захисту SNMPv2 визначаються методи аутентифікації (DAP - Digest Authentication Protocol) і забезпечення конфіденційності (SPP -Symmetric Privacy Protocol) інформації адміністративного характеру. В основі лежить концепція учасника (party) - унікального набору параметрів захисту, який може включати розташування мережі, протоколи аутентифікації і забезпечення конфіденційності, використовувані між агентом і менеджером.
Проблеми впровадження SNMPv2
SNMPv2 обіцяє вигоди в плані захисту та продуктивності, що важливо для користувачів. Але деякі компанії напевно запропонують свої власні ідеї, особливо в частині захисту та зв'язків між менеджерами. Крім того, фірми, розширили функціональні можливості своїх баз даних MIB в середовищах з SNMPv1, навряд чи будуть поспішати з випуском продуктів під SNMPv2.
Інший варіант - двомовний менеджер, який одночасно підтримує обидва протоколи (SNMPv1 і SNMPv2) і не вимагає перетворень. Двомовний менеджер SNMP визначає, з яким форматом працює агент - версії 1 або версії 2, і спілкується на відповідному діалекті. Таким чином, вибір версії протоколу повинен бути прозорий для приймаючих пристроїв.
На жаль, друга версія SNMP так до сих пір і не затверджена, тому в стані мережевого управління спостерігається розбрід і хитання.
Доступні реалізації агентів і менеджерів
Epilogue пропонує ПЗ, що реалізує підтримку SNMP, що включає:
- Envoy, Epilogue's compact, fast, portable SNMP solution for OEMs
- Emissary, an SNMP MIB compiler that allows SNMP implementors to extend standard SNMP variables to support extensions to the MIBs in each managed device;
- Ambassador, a complete, portable implementation of the RMON (FastEthernet) remote monitoring agent.
- The IBM Netview for AIX feature of SystemView provides distributed or centralized management of large heterogeneous networks.
- ACE * COMM WinSNMP supports SNMPv1 SNMPv2u in v2.0 of its industry-leading Win16 and Win32 WinSNMP implementations.
- Digital Unix POLYCENTER Manager on NetView provides client / server management of multivendor enterprise networks.
- The PowerFlag tool - агент для UPS MIB джерел безперебійного живлення компанії Victron B.V.
- WS_Ping ProPack v.2.10 дозволяє переглядати MIB таблиці, вказувати піддерева. Для скачаванія свіжих версій з сервера Ipswitch можна використовувати наступні дані:
- User Name: 0000037181
- Password: CQWSC
- Serial Number: WP-101333
- Openly-Available Implementations
- CMU SNMP agent (source)
- an agent that support both SNMPv1 and SNMPv2u
- a number command line based applications that support both SNMPv1 and SNMPv2u.
- Carnegie-Mellon University SNMP Development Kit supporting SNMPv1 / v2
- NetSCARF is a Network Statistics Collection and Reporting Facility. It allows ISPs to collect and report data about their part of the Internet, supports both SNMP version 1 and USEC.
- Scotty is a network management extension for the Tool Command Language (Tcl) which includes a portable implementation of the SNMPv1, SNMPv2c and SNMPv2u protocol. The Scotty Tcl extension includes the network management platform (Tkined) which provides a MIB browser, a network map editor as well as status monitoring, troubleshooting, network discovery and event filtering scripts.
- snmptcp v1.3 is a extensible platform for management applications which seemlessly implements SNMPv1, SNMPv2c, and SNMPv2u.
- The package runs under the X Window System on UNIX and is built from Tool Command Language (Tcl7.3 / Tk3.6) .In addition to a MIB compiler, the package contains some minimal applications for a number of standard MIB modules.
Атака на Windows SNMP.
Сервіс працюють на наступних UDP порти (/ etc / services)
- snmp 161 / udp snmp
- snmp-trap 162 / udp snmp
Цікаві SMI Network Management Private Enterprise Codes:
- 2 IBM
- 4 Unix
- 9 cisco
- 32 Santa Cruz Operation
- 42 Sun Microsystems
Невелике поширення сканерів UDP портів під Windows, SNMP менеджерів, а також відсутність знань про самому протоколі є, по всій видимості, єдиною причиною нечисленність атак на пристрої під управління SNMP v1, так як в реалізаціях цього протоколу в деяких операційні системи допущені серйозні помилки. Підтвердження цьому раз у раз з'являються в списках розсилки bugtraq
Уразливість в стандартній конфіругаціі Windows NT SNMP Сервісу.
Дозволяє віддалено конфігурувати мережеві парамерти, які впливають на безпеку і правильне функціонування системи (якщо адміністратор сам запустив SNMP Service)
При конфігурації за замовчуванням, SNMP service відповідає на стандартне community (ім'я) "public", яке володіє права на читання і запис. Community - це ім'я, яке володіє такими ж функціями, як логін і пароль в системах.
Протокол SNMP надає два рівня повноважень. read-only and read-write, проте до виходу SP4 Windows NT SNMP Service не дозволяв конфігурувати communities з доступу, відмінному від read-write!
Завдяки сконфігурованої за замовчуванням Windows NT SNMP Сервісу ми можемо витягти з допомогою SNMP менеджера наступну інформацію.
- the LAN Manager domain name
- a list of users
- a list of shares
- a list of running services
Як рекомендувалося в ISS scanner'е, можна вимкнути цю порцію SNMP mibs таким способом:
- Відкрити HKLM \ System \ CurrentControlSet \ Services \ SNMP \ Parameters \ ExtensionAgents
- знайти значення, яке містить SOFTWARE \ Microsoft \ LANManagerMIB2Agent \ CurrentVersion
- і видалити його.
- a list of active TCP connections
- a list of active UDP connections
- a list of network interfaces and their associated IP and hardware addresses
- the IP routing table and the ARP table as well as a number of networking performance statistics.
Встановлюючи змінні, крякери може модифікувати таблицю роумінгу, ARP таблицю, вимкнути мережеві інтерфейси, збити істотні мережеві параметри типу default IP, час життя пакетів (TTL), IP forwarding (дозволить крякери перенаправляти мережевий трафік). Це особливо небезпечно, якщо атакують машина є фаєрволом.
За прикладами далеко ходити не треба, наприклад, якщо машина є domain controller або server, але отримати список всіх користувачів в домені можна командою C: \ NTRESKIT> snmputil walk public .1.3.6.1.4.1.77.1.2.25
Якщо вам хочеться видалити всі записи в базі даних WINS (що призведе до повної відмови WinNT), то для цього необхідно виконати
$ Snmpset -v 1192.178.16.2 public .1.3.6.1.4.1.311.1.2.5.3.0 a 192.178.16.2 з набору CMU SNMP development kit under Unix.
Також є дуже цікава деталь при установки SNMP community names в Windows NT 4.0 (SP3). Якщо сервіс включений, а імена не сконфігуровані, то будь-яке ім'я буде давати read / write привілеї. Як виявилося, це зазначено ще в специфікації SNMP (RFC 1157)!
Четвертий сервіспак (SP4) надає таке рішення проблеми: додавання контролю доступу community як READ ONLY, READ WRITE або READE CREATE. Однак за замовчуванням SP4 встановлює READ CREATE доступ, який все ще дозволяє атакувати машини. Мікрософт явно піклуватися про зручність WinNT для хакерів :)
Кращий спосіб захисту за рекомендацією M $: заблокувати SNMP access на firewall'е.
Проблема в OS Solaris версії до 2.6.
Для доступу до MIB-інформації існує прихована "undocumented community string", яка дозволить атакуючому змінити більшість системних параметрів.
На жаль, саме це community не називається, проте ISS Internet Scanner і ISS RealSecure real-time intrusion detection можуть детектувати цю проблеми, тобто подивитися можна і в їх исходниках