Де взяти логіни або VoIP на допомогу

Тестування на проникнення завжди починається зі збору інформації про інфраструктуру. Доступні вузли з відкритими портами і вразливими сервісами, валідні облікові дані та інша інформація, що дозволяє «просунутися» і скомпрометувати систему цікава в першу чергу. При проведенні тестування методом black-box дуже часто постає питання: «де взяти логіни?». У статті я хочу розповісти, звідки ще можна отримати логіни на етапі збору інформації. Ласкаво просимо під кат.

Проводячи аудит методом black-box, ми не знаємо про інфраструктуру абсолютно нічого. Так і цього разу: надано доступ тільки до внутрішнього сегменту мережі компанії без будь-якої додаткової інформації. Просканувавши мережу було виявлено багато доступних хостів, де потрібно було ввести облікові дані для входу. Але їх же у нас немає - це логічно на початковому етапі. Де ж брати логіни для подальшого підбору паролів? Способів кілька, кожен вибирає до смаку. Наприклад, можна скористатися вже готовими словниками або пошукати інформацію в загальнодоступних джерелах - на сайті компанії, найімовірніше, розміщуються деякі поштові адреси співробітників. На їх основі можна скласти словник логінів. Або, все ж, заглянути в корпоративний каталог телефонів?

На ресепшен у секретаря у вільному доступі стояв телефонний апарат усіма відомою компанією «Cisco». Побіжно погортавши меню апарату знайдено доступний корпоративний каталог телефонів. Залишивши порожніми поля «Ім'я», «Прізвище» і «Номер» я виконав пошук по каталогу і телефон слухняно видав інформацію про абонентів. Діставати інформацію з телефону, стоячи на ресепшен - некомільфо, тому з сусідньої вкладки меню я дізнався URL CUCM-сервера, звідки підтягується каталог телефонів.

Повернувшись за ноутбук і перейшовши за URL

https://XXXXXXXXXXXXX:8443/ccmcip/xmldirectorylist.jsp

я отримав XML-документ з іменами абонентів і їх внутрішніми номерами телефонів.

Доступними параметрами були «l» (lastname), «f» (firstname) і «n» (number). Параметр «start» дозволяє переходити за каталогом. Всього за 1 запит можна отримати 30 значень.

Необхідна інформація знаходилася в «Prompt», «Name» і «Telephone». Кількість записів (показаних і всього):

Прізвище, ім'я та номер абонента:

Залишилася справа за малим - витягнути все це з каталогу. Для цього був підготовлений невеликий скрипт на Python, який парсит XML-документ за заданими параметрами.

У результаті роботи скрипту я дізнався прізвища та імена користувачів, що дозволило мені створити точний словник логінів. Номери телефонів можна задіяти при генерації паролів.

Вишенька на торті: крім прізвищ та імен користувачів я також отримав імена службових облікових записів, які якимось чином опинилися на іншому (другому) CUCM-сервері, а це вже набагато цікавіше.

Як резюме

Загальнодоступний корпоративний телефонний каталог надає зловмиснику непоганий набір вхідних даних, за допомогою яких він може скомпрометувати цільову систему.

Скрипт

Python скрипт для парсингу XML на github: Download