heartbleed-vulnerability-exploitation
Описание
практическое исследование уязвимости Heartbleed (CVE-2014-0160).
Резюме
в этой лабораторной работе документируется практическое исследование уязвимости Heartbleed — критической ошибки в реализации расширения TLS heartbeat в OpenSSL. Целью было понять, как уязвимость работает на уровне протокола, и проэксплуатировать её в контролируемой среде, чтобы наблюдать её воздействие, отрабатывая навыки, непосредственно относящиеся к анализу в SOC (оценка уязвимостей и анализ воздействия).
Цель
- понять первопричину Heartbleed (некорректная проверка границ в расширении heartbeat в OpenSSL).
- выявить уязвимый сервис OpenSSL с помощью инструментов разведки и сканирования.
- проэксплуатировать уязвимость в контролируемой лабораторной среде, чтобы наблюдать утечку данных.
- задокументировать стратегии устранения с точки зрения SOC/аналитика.
Среда и инструменты
- Цель: уязвимый веб-сервер (nginx 1.15.7 на порту 443), работающий на устаревшей версии OpenSSL, изолированная лабораторная виртуальная машина.
- Машина атакующего/аналитика: среда анализа на базе Linux.
- Использованные инструменты:
nmap — перечисление сервисов и обнаружение уязвимостей.
Metasploit — модуль auxiliary/scanner/ssl/openssl_heartbleed для эксплуатации.
Методология
1. Разведка
- выполнен полный скан TCP-портов с определением сервисов/версий (nmap -sS -vv -p-p -A )
- выявлены открытые порты: 22 (SSH), 111 (rpcbind), 443 (SSL/HTTP).
- порт 443 определён как работающий под nginx 1.15.7 поверх SSL/TLS (кандидат на устаревший OpenSSL)
2. Идентификация уязвимости
- выполнен (nmap -sV --script vuln ) для проверки всех обнаруженных сервисов по известным скриптам уязвимостей.
- цель подтверждена как УЯЗВИМАЯ к Heartbleed через NSE-скрипт ssl-heartbleed, помечена как высокий риск.
3. Эксплуатация
- запущен metasploit framework (msfconsole) и найден соответствующий модуль с помощью (search heartbleed).
- выбран auxiliary/scanner/ssl/openssl_heartbleed и просмотрены опции модуля.
- настроены RHOSTS, RPORT 443 и verbose true, затем запущен модуль.
- модуль отправил некорректный TLS heartbeat-запрос и захватил увеличенный ответ сервера, что привело к утечке соседней памяти процесса.
Результаты
- цель (nginx 1.15.7, порт 443) была подтверждена как уязвимая к CVE-2014-0160 как через скрипт ssl-heartbleed в nmap, так и через сканер openssl_heartbleed в Metasploit.
- эксплуатация успешно привела к утечке памяти кучи с сервера, вернув печатаемые строки вместе с бинарными данными.
- утёкшая память содержала фрагменты тела предыдущего HTTP-запроса, включая параметры "user_name, user_email, and user_message", что демонстрирует, что Heartbleed может раскрывать данные прикладного уровня, случайно оказавшиеся в соседней памяти.
- для эксплуатации уязвимости не требовалась аутентификация, что делает её эксплуатируемой любым атакующим, имеющим сетевой доступ.
Устранение
- обновить OpenSSL до исправленной версии.
- отозвать и перевыпустить любые SSL-сертификаты/приватные ключи, потенциально скомпрометированные до установки исправления.
- принудительно сбросить пароли для учётных записей с активными сессиями в течение уязвимого периода.
- полностью отключить расширение heartbeat, если установка исправления невозможна немедленно.
Продемонстрированные навыки
- полномасштабное сканирование портов и перечисление сервисов (nmap).
- сканирование уязвимостей с помощью NSE-скриптов (vuln, ssl-heartbleed)
- настройка и выполнение модуля эксплуатации в Metasploit framework.
- анализ первопричины уязвимости безопасности памяти.
- составление отчётов по безопасности и планирование устранения.
Ссылки