1. Устройство процесса подготовки к атаке: Правила игры
Перед началом любого пентеста проводится этап Pre-engagement (Подготовка). Это самая важная часть с юридической и организационной точки зрения.
Scope of Work (SoW) — Определение границ
Вы с заказчиком подписываете документ, который четко определяет:
- Цели: Что мы пытаемся достичь? (Например, "Получить права администратора домена" или "Получить доступ к базе данных клиентов").
- Границы (Scope): Какие IP-адреса, подсети, приложения можно атаковать? Что находится за границами (out of scope)?
- Правила взаимодействия (Rules of Engagement): Что можно и чего нельзя делать? Можно ли использовать DoS-атаки? В какое время можно проводить активное сканирование? Нужно ли останавливаться после получения первого доступа?
- Контакты: Кто ваш контакт со стороны заказчика для экстренной связи 24/7?
Никогда не выходите за рамки Scope! Атака на хост, не указанный в договоре — это преступление, а не пентест.
Подготовка инструментария
Ваша рабочая станция — это Kali Linux или аналог (Parrot OS), запущенный на виртуальной машине. Перед началом вы должны убедиться, что все инструменты обновлены (sudo apt update && sudo apt upgrade -y
) и настроены.
2. Сбор информации о цели атаки (внутренняя сеть)
Сценарий: вы подключили свой ноутбук к порту в переговорке офиса клиента. Вы ничего не знаете о сети. Ваша первая задача — составить карту.
Шаг 1: Определение своей подсети
Сначала нужно понять, где вы находитесь.
ip a
Допустим, вы получили IP 192.168.10.123
с маской /24
. Это значит, ваша цель — вся подсеть 192.168.10.0/24
.
Шаг 2: Поиск "живых" хостов
Используем Nmap для "пинг-сканирования", чтобы найти все активные устройства в подсети.
sudo nmap -sn 192.168.10.0/24
Шаг 3: Глубокое сканирование и перечисление сервисов
Сохранив список живых хостов в файл `targets.txt`, запускаем на них детальное сканирование для определения ОС, портов и сервисов.
sudo nmap -A -iL targets.txt -oN nmap_scan_results.txt
Шаг 4: Пассивный анализ трафика
Пока идет сканирование, можно запустить инструменты вроде Responder
или Wireshark
для пассивного прослушивания сети. Это может выдать нам имена хостов, доменов и даже хэши учетных данных без единого активного запроса.
3. Цепочка атаки (Cyber Kill Chain)
Kill Chain — это модель, описывающая этапы, которые проходит злоумышленник для достижения своей цели. В контексте внутреннего пентеста она выглядит так:
Recon -> Foothold -> Escalate -> Lateral Movement -> Persistence -> Domain Dominance (Разведка -> Плацдарм -> Эскалация -> Боковое перемещение -> Закрепление -> Захват домена)
Давайте пройдем по этому пути шаг за шагом.
3.1. Получение начального доступа (Initial Foothold)
Проанализировав результаты сканирования, мы ищем самую простую точку входа. Это может быть:
- Уязвимый веб-сервер: Старая версия Jenkins, Apache Tomcat с дефолтными паролями, уязвимость в самописном приложении.
- Протокол SMB: Анонимный доступ к файловым шарам, уязвимость MS17-010 (EternalBlue).
- Слабые пароли: Подбор паролей к SSH, RDP, FTP, используя популярные комбинации (Password Spraying).
- Перехваченные хэши: Использование хэшей, полученных с помощью Responder, для аутентификации на других машинах (Pass-the-Hash).
Пример: Nmap показал, что на 192.168.10.50
открыт порт 8080 с Apache Tomcat. Мы проверяем в браузере и видим стандартную страницу входа. Пробуем стандартные пароли (`admin:admin`, `tomcat:s3cret`) и получаем доступ к панели администратора, откуда можем загрузить веб-шелл.
3.2. Закрепление и повышение привилегий (Persistence & Escalation)
Итак, у нас есть доступ к системе, но обычно с правами низкопривилегированного пользователя (например, `www-data`). Наша цель — стать root
или `NT AUTHORITY\SYSTEM`.
Закрепление (Persistence)
Нужно обеспечить себе доступ к системе даже после перезагрузки. Это можно сделать, добавив себя в автозагрузку, создав задачу в cron/планировщике задач или установив бэкдор.
Повышение привилегий (Privilege Escalation)
Это поиск уязвимостей и мисконфигураций внутри самой ОС.
- Автоматизированный поиск: Скрипты LinPEAS (для Linux) и WinPEAS (для Windows) ищут сотни известных векторов для повышения привилегий.
- Частые векторы:
- Уязвимости ядра (Kernel Exploits): Устаревшая версия ядра. Опасно, может привести к "синему экрану".
- Неправильные права на файлы/папки: Возможность перезаписать системный файл.
- SUID-бинарники (Linux): Поиск программ с SUID-битом, которые можно проэксплуатировать.
- Слабые пароли в файлах конфигурации.
3.3. Боковое перемещение (Lateral Movement)
Мы захватили одну машину и стали на ней администратором. Но наша цель — контроллер домена. Теперь мы используем скомпрометированную машину как плацдарм для атаки на другие хосты в сети.
Сбор учетных данных
Став администратором, мы можем запустить Mimikatz (на Windows), чтобы извлечь из памяти пароли и хэши всех пользователей, которые когда-либо логинились на этой машине, в открытом виде!
Pass-the-Hash (PtH) и Pass-the-Ticket (PtT)
Используя полученные хэши и Kerberos-билеты, мы можем аутентифицироваться на других машинах от имени других пользователей, не зная их паролей. Набор утилит Impacket идеально для этого подходит.
# Пример использования PsExec из Impacket для получения удаленной консоли
# с помощью NTLM-хэша администратора
psexec.py -hashes : administrator@192.168.10.20
3.4. Захват домена (Domain Dominance)
Цель близка. Мы перемещаемся по сети от машины к машине, собирая все больше учетных данных. Рано или поздно мы найдем хэш пароля одного из администраторов домена.
BloodHound — наш главный навигатор. Он строит граф, который показывает самый короткий путь для получения прав Domain Admin от нашего текущего положения.
Получив права администратора домена, мы можем выполнить финальные атаки:
- DCSync: Заставить контроллер домена "поделиться" хэшами паролей всех пользователей в домене, включая учетную запись `krbtgt`.
- Golden Ticket: Используя хэш `krbtgt`, создать "золотой билет" Kerberos, который дает нам права администратора домена на 10 лет и практически не обнаруживается.
На этом этапе цель пентеста достигнута. Мы получили полный контроль.
4. Финальный отчет: Продукт вашей работы
Эксплуатация — это весело, но заказчик платит не за это. Он платит за отчет. Это самый важный результат вашей работы. Хороший отчет должен быть понятен как техническому специалисту, так и топ-менеджеру.
Структура отчета:
- Резюме для руководства (Executive Summary): 1-2 страницы. Никаких технических терминов. Описывает общую оценку защищенности, ключевые риски для бизнеса и стратегические рекомендации.
- Техническая часть:
- Описание методологии и области тестирования.
- Детальное описание каждой найденной уязвимости:
- Название и оценка по CVSS.
- Описание: что это за уязвимость и где найдена.
- Доказательство (Proof of Concept): скриншоты, команды, которые вы выполняли.
- Оценка бизнес-риска.
- Рекомендации по устранению.
- Приложения: Полные выводы сканеров, логи и т.д.
5. Ваше итоговое задание: Разработка плана атаки
Вы — пентестер, которому поручили провести внутренний пентест сети `10.10.0.0/24`. Заказчик предоставил вам физический доступ. Ваша задача — не провести атаку, а составить детальный **план работ (Methodology of Work)**.
Опишите ваши действия по следующему плану:
- Подготовка: Какие 3 ключевых пункта вы бы обязательно включили в "Правила взаимодействия" (RoE)? Какие основные инструменты должны быть готовы на вашей Kali-машине?
- Сбор информации: Какую первую команду Nmap вы выполните, оказавшись в сети? Что вы будете делать с ее результатами?
- Цепочка атаки (первые шаги): Опишите гипотетический сценарий, как бы вы получили первоначальный доступ, основываясь на "типичных" результатах сканирования (например, вы нашли открытый SMB и веб-сервер).
- Повышение привилегий: Получив доступ к Linux-хосту под пользователем `www-data`, какие 3 вещи вы проверите в первую очередь для повышения привилегий?
- Отчетность: Назовите 3 главных раздела, которые должны быть в вашем финальном отчете.
Этот план покажет, что вы не просто знаете отдельные команды, а понимаете целостную методологию и способны мыслить как профессиональный пентестер.