500/udp - Pentesting IPsec/IKE VPN
Група з безпеки Try Hard
Основна інформація
IPsec широко визнаний як основна технологія для захисту зв'язків між мережами (LAN-to-LAN) та від віддалених користувачів до мережевого шлюзу (віддалений доступ), що служить основою для корпоративних рішень щодо VPN.
Встановлення асоціації з безпекою (SA) між двома точками керується IKE, який працює в рамках ISAKMP, протоколу, призначеного для аутентифікації та обміну ключами. Цей процес розгортається у кілька фаз:
Фаза 1: Між двома кінцевими точками створюється безпечний канал. Це досягається за допомогою Попередньо встановленого ключа (PSK) або сертифікатів, використовуючи або головний режим, який включає три пари повідомлень, або агресивний режим.
Фаза 1.5: Хоча ця фаза, відома як Розширена фаза аутентифікації, не є обов'язковою, вона перевіряє ідентичність користувача, який намагається підключитися, вимагаючи ім'я користувача та пароль.
Фаза 2: Ця фаза присвячена узгодженню параметрів для захисту даних за допомогою ESP та AH. Вона дозволяє використовувати алгоритми, відмінні від тих, що в Фазі 1, для забезпечення Передачі ключів з перфектною таємницею вперед (PFS), підвищуючи безпеку.
Порт за замовчуванням: 500/udp
Виявлення сервісу за допомогою nmap
Знаходження дійсного перетворення
Конфігурацію IPSec можна підготувати лише для прийняття одного або кількох перетворень. Перетворення - це комбінація значень. Кожне перетворення містить кілька атрибутів, таких як DES або 3DES як алгоритм шифрування, SHA або MD5 як алгоритм цілісності, попередньо встановлений ключ як тип аутентифікації, Діффі-Геллман 1 або 2 як алгоритм розподілу ключа та 28800 секунд як тривалість життя.
Отже, перш за все вам потрібно знайти дійсне перетворення, щоб сервер почав з вами спілкуватися. Для цього ви можете використовувати інструмент ike-scan. За замовчуванням Ike-scan працює в основному режимі та відправляє пакет на шлюз з заголовком ISAKMP та одним пропозицією з восьми перетвореннями всередині.
Залежно від відповіді ви можете отримати деяку інформацію про кінцеву точку:
Як ви можете побачити в попередньому відповіді, є поле під назвою AUTH зі значенням PSK. Це означає, що VPN налаштований за допомогою попередньо встановленого ключа (і це дійсно добре для пентестера). Значення останнього рядка також дуже важливе:
0 повернутий handshake; 0 повернутий notify: Це означає, що ціль не є IPsec шлюзом.
1 повернутий handshake; 0 повернутий notify: Це означає, що ціль налаштована для IPsec і готова виконати переговори IKE, і один або декілька запропонованих трансформацій прийнятні (дійсна трансформація буде показана в виводі).
0 повернутий handshake; 1 повернутий notify: Шлюзи VPN відповідають повідомленням notify, коли жодна з трансформацій не є прийнятною (хоча деякі шлюзи цього не роблять, у такому випадку слід провести подальший аналіз і спробувати переглянути пропозицію).
Тоді, в цьому випадку у нас вже є дійсна трансформація, але якщо ви опинилися в 3-му випадку, вам потрібно трохи підбирати дійсну трансформацію:
Спочатку вам потрібно створити всі можливі трансформації:
І потім перебрати кожен за допомогою ike-scan (це може зайняти кілька хвилин):
Якщо перебір паролів не працює, можливо, сервер відповідає без рукостискань навіть на дійсні трансформації. Тоді ви можете спробувати той самий перебір паролів, але використовуючи агресивний режим:
Надіюсь, дійсне перетворення повертається. Ви можете спробувати той самий атаку за допомогою iker.py. Ви також можете спробувати перебрати перетворення за допомогою ikeforce:
У Групі DH: 14 = 2048-бітний MODP і 15 = 3072-бітний
2 = HMAC-SHA = SHA1 (у цьому випадку). Формат --trans
- $Enc,$Hash,$Auth,$DH
Cisco вказує уникати використання груп DH 1 та 2, оскільки вони недостатньо міцні. Експерти вважають, що країни з великими ресурсами можуть легко розшифрувати дані, які використовують ці слабкі групи. Це робиться за допомогою спеціального методу, який готує їх до швидкого розкриття кодів. Навіть якщо це коштує багато грошей для налаштування цього методу, це дозволяє цим потужним країнам читати зашифровані дані в реальному часі, якщо вони використовують групу, яка не є міцною (наприклад, 1,024-бітна або менша).
Відбиток сервера
Потім ви можете використовувати ike-scan, щоб спробувати виявити виробника пристрою. Інструмент надсилає початкову пропозицію та припиняє повторне відтворення. Потім він аналізує різницю часу між отриманими повідомленнями від сервера та відповідним шаблоном відповіді, пентестер може успішно встановити відбиток виробника VPN-шлюза. Більше того, деякі VPN-сервери будуть використовувати необов'язковий полезний навантаження ідентифікатора виробника (VID) з IKE.
Вкажіть дійсне перетворення, якщо потрібно (використовуючи --trans)
Якщо IKE виявить, який виробник, він виведе його:
Це також можна досягти за допомогою сценарію nmap ike-version
Пошук правильного ідентифікатора (назви групи)
Для того, щоб мати можливість захопити хеш, вам потрібно мати дійсне перетворення, яке підтримує агресивний режим та правильний ідентифікатор (назву групи). Ймовірно, ви не будете знати дійсну назву групи, тому вам доведеться виконати перебір. Для цього я рекомендую вам 2 методи:
Перебір ID за допомогою ike-scan
Спочатку спробуйте зробити запит зі штучним ідентифікатором, намагаючись зібрати хеш ("-P"):
Якщо хеш не повертається, то, ймовірно, цей метод брутфорсу буде працювати. Якщо повертається якийсь хеш, це означає, що для фальшивого ідентифікатора буде відправлено фальшивий хеш, тому цей метод не буде надійним для брутфорсу ідентифікатора. Наприклад, може бути повернений фальшивий хеш (це стається в сучасних версіях):
Але, як я вже сказав, якщо хеш не повертається, то вам слід спробувати брутфорсити загальні назви груп за допомогою ike-scan.
Цей скрипт спробує брутфорсити можливі ідентифікатори і поверне ідентифікатори, де повернеться дійсний "handshake" (це буде дійсна назва групи).
Якщо ви виявили конкретне перетворення, додайте його у команду ike-scan. І якщо ви виявили кілька перетворень, не соромтеся додати новий цикл, щоб спробувати їх всі (ви повинні спробувати їх всі, поки одне з них не працюватиме належним чином).
Ви можете використовувати словник ikeforce або той, що в seclists зі загальними назвами груп для брутфорсу їх:
Відкриття ID за допомогою Iker
iker.py також використовує ike-scan для перебору можливих назв груп. Він використовує власний метод для знаходження дійсного ID на основі виводу ike-scan.
Відкриття ID за допомогою ikeforce
ikeforce.py - це інструмент, який можна використовувати для перебору ID також. Цей інструмент буде намагатися використати різні вразливості, які можуть бути використані для відрізнення між дійсним та недійсним ID (може бути помилкові позитиви та помилкові негативи, тому я віддаю перевагу використанню методу ike-scan, якщо це можливо).
За замовчуванням ikeforce відправить спочатку деякі випадкові ідентифікатори, щоб перевірити поведінку сервера та визначити тактику використання.
Перший метод полягає в переборі назв груп шляхом пошуку інформації Dead Peer Detection DPD систем Cisco (ця інформація відтворюється лише сервером, якщо назва групи вірна).
Другий доступний метод - перевірка кількості відправлених відповідей на кожну спробу, оскільки іноді більше пакетів відправляються, коли використовується правильний ідентифікатор.
Третій метод полягає в пошуку "INVALID-ID-INFORMATION" у відповідь на неправильний ID.
Нарешті, якщо сервер не відповідає на перевірки, ikeforce спробує перебороти сервер та перевірити, чи сервер відповідає на правильний ідентифікатор якимось пакетом. Очевидно, метою перебору ідентифікатора є отримання PSK, коли у вас є дійсний ідентифікатор. Потім, з ідентифікатором та PSK вам доведеться перебрати XAUTH (якщо він увімкнений).
Якщо ви виявили конкретне перетворення, додайте його у команду ikeforce. І якщо ви виявили кілька перетворень, не соромтеся додати новий цикл для спроби всіх них (ви повинні спробувати всі до тих пір, поки одне з них не працюватиме належним чином).
Підслуховування ID
(З книги Оцінка мережевої безпеки: Знайомтесь з вашою мережею): Також можна отримати дійсні імена користувачів, підслуховуючи з'єднання між клієнтом VPN та сервером, оскільки перший пакет режиму агресивного режиму, що містить ідентифікатор клієнта, відправляється відкрито
Захоплення та розшифрування хешу
Нарешті, якщо ви знайшли дійсне перетворення та назву групи і якщо режим агресивного режиму дозволений, то ви можете дуже легко захопити розкривний хеш:
Хеш буде збережено всередині hash.txt.
Ви можете використовувати psk-crack, john (використовуючи ikescan2john.py) та hashcat для взлому хешу:
XAuth
Агресивний режим IKE, поєднаний з Pre-Shared Key (PSK), зазвичай використовується для групової аутентифікації. Цей метод доповнюється XAuth (Extended Authentication), який служить для введення додаткового рівня аутентифікації користувача. Така аутентифікація зазвичай використовує послуги, такі як Microsoft Active Directory, RADIUS або подібні системи.
Перехід до IKEv2 призводить до помітного зсуву, де використовується EAP (Extensible Authentication Protocol) замість XAuth для аутентифікації користувачів. Ця зміна підкреслює еволюцію практик аутентифікації в безпечних протоколах зв'язку.
Локальна атака Man-in-the-Middle для захоплення облікових даних
Таким чином, ви можете захопити дані входу, використовуючи fiked і переглянути, чи є які-небудь стандартні імена користувачів (Вам потрібно перенаправити трафік IKE на fiked
для підслуховування, що можна зробити за допомогою ARP-підроблення, додаткова інформація). Fiked буде діяти як кінцева точка VPN і захоплюватиме облікові дані XAuth:
Також, використовуючи IPSec, спробуйте здійснити атаку типу "людина посередині" і заблокуйте весь трафік на порт 500, якщо тунель IPSec не може бути встановлений, можливо, трафік буде відправлений відкрито.
Brute-forcing XAUTH username ad password with ikeforce
Для перебору XAUTH (коли ви знаєте дійсне ім'я групи id та psk), ви можете використовувати ім'я користувача або список імен користувачів та список паролів:
Цим чином, ikeforce спробує підключитися, використовуючи кожну комбінацію імені користувача: пароля.
Якщо ви знайшли один або кілька дійсних трансформацій, просто використовуйте їх, як у попередніх кроках.
Аутентифікація з IPSEC VPN
У Kali для встановлення тунелів IPsec використовується VPNC. Профілі повинні бути розташовані в каталозі /etc/vpnc/
. Ви можете ініціювати ці профілі за допомогою команди vpnc.
Наступні команди та конфігурації ілюструють процес налаштування підключення до VPN за допомогою VPNC:
У цьому налаштуванні:
Замініть
[VPN_GATEWAY_IP]
на фактичну IP-адресу шлюзу VPN.Замініть
[VPN_CONNECTION_ID]
на ідентифікатор підключення до VPN.Замініть
[VPN_GROUP_SECRET]
на секретну групу VPN.Замініть
[VPN_USERNAME]
та[VPN_PASSWORD]
на облікові дані аутентифікації VPN.[PID]
символізує ідентифікатор процесу, який буде призначено при ініціалізаціїvpnc
.
Переконайтеся, що для налаштування VPN використовуються фактичні, безпечні значення для заміни заповнювачів.
Джерела матеріалів
Оцінка безпеки мережі, 3-тє видання
Shodan
port:500 IKE
Try Hard Security Group
Last updated