За окном опять сугробы 2020 год, а у меня $999 и желание прокачаться в информационной безопасности. Похоже, что это отличное время чтобы инвестировать его и деньги в обучение. Именно так я и купил курс Penetration Testing with Kali Linux (OSCP).

OSCP (Offensive Security Certified Professional) это самый известный экзамен по информационной безопасности.

Я много читал про OSCP и только волшебный пинок локдауна заставил меня купить курс. Он отличается от других сертификаций по информационной безопасности неоправданно сложным экзаменом. Ребята из Offensive Security бегают по интернету и пристально следит за тем, чтобы никакие подсказки или готовые решения не были доступны публично. И, похоже, им это успешно удается делать более 10 лет подряд.

Минимальная стоимость курса — $999. За эти деньги ты получишь «стартер кит молодого пентестера», который включает в себя:

  • Книжку на 850 страниц
  • 17+ часов видео лекций
  • 30 дней доступа к лаборатории
  • 1 попытку сдачи экзамена

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

Небольшая ремарка. Уже в процессе обучения я решил прочитать блоги людей, которые проходили курс, и оказалось, что большая часть из них подошли к обучению основательно и готовились за полгода/год. А для тренировки перед OSCP покупали доступы HTB и VulnHub. Я же ничего из этого не делал и курс был для меня черной коробкой.

После оплаты мне скинули ссылки на кастомизированный образ Kali (чем конкретно он отличается от обычного я не понял), а также архив для проверки VPN соединения, который действует 3 дня. За эти дни нужно было скачать VMware, поставить туда этот Kali и проверить свое подключение к VPN. Говорят, раньше все это присылали в день начала занятий, а теперь присылают заранее.

Вообще в 2020 году курс изрядно обновили и, как они сами пишут, увеличили в 2 раза размер материалов — раньше в книжке было всего 400 страниц, а также на 30% число машин в лаборатории. А еще добавили новые типы атак, вроде атаки на Active Directory или лекций по PowerShell Empire, репозиторий которого уже закрыт владельцем.

Курс состоит из 3х частей

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

Вторая часть курса — это время работы в лаборатории. Что это значит? Ты получаешь доступ в закрытый интранет, где располагается 4 виртуальных сети, связанных через шлюзы. На картинке из официального гайда можно посмотреть, как эти сети связаны между собой. Кроме того, в этой сети развернуто два полноценных Active Directory домена по 5 машин в каждом. Это, кстати, интересный момент, его я опишу чуть ниже.

Изначально доступ есть только в Student Network (она же Public), но по мере захвата машин можно попасть и в другие сети. В сети 66 хостов, на каждом из которых лежит файл proof.txt, который необходимо сдать в панели управления. Принцип чем-то похож на CTF, с той лишь разницей, что сам файл не так важен как понимание уязвимости через которую можно получить права администратора.

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

День Х

В день начала курса на почту прислали заветное письмо, а в нем ссылки: на книжку и архив с видео, а главное — конфигурацию для VPN. Можно было подключаться и хакать, но я пошел смотреть видео. Таков путь.

До 2020 года книжка и видео дублировали друг друга, но сейчас это не так. Некоторые векторы атак, показанные в видео, не раскрываются в книге, а дополнительных заданий из книги нет в видео. Я выбрал путь стримера: смотреть в консоль на экране и слушать закадровый голос было проще чем читать все 850 страниц.

Я смотрел лекции по 2-3 часа в день и потому мне потребовалась целая неделя для просмотра всех 17 часов от начала и до конца, попутно листая PDF.

Лабы

После теории у меня осталось 23 дня за которые я планировал получить доступ на все машины (ха-ха, как наивен я был тогда). Попав в лабораторную сеть у меня не было ничего, кроме адреса подсети /24, в которой расположены какие-то уязвимые хосты. Но именно так и построено обучение: в теории рассказали возможные вектора атак, а дальше все зависит от студента.

Большинство хостов в лаборатории как-то связаны между собой. Письмо в почтовом ящике на одной машине, может содержать доступ к другой. Некая симуляция реальной сети. Но бывают и незапланированные сценарии. Например, чтобы получить доступ к контроллеру домена Active Directory, нужно получить доступ к дочерним узлам и только потом получить администратора контроллера. Именно так задумали эту атаку, но если хорошо погуглить выясняется, что есть довольно свежий эксплойт позволяющий атаковать сразу контроллер, игнорируя всю цепочку. Сделано это намеренно или нет, я не знаю.

Подсказок, как ломать, нет в принципе. Можно пойти на закрытый форум, только для студентов, но это отдельный цирк. Обсуждать можно все, но давать прямые подсказки запрещено. А потому местные посетители упражняются в аллегориях, например вместо упоминания smb пишут brazilian dance, а вместо dirtycow используют well-know exploit.

На форумах ходит поверье о 4 машинах (pain, sufferance, humble, gh0st) которые не обязательно ломать, так как они какие-то особенно сложные. Забавно, что узнал я об этом много позже, получения доступа к каждой из них. По мне, так это обычные, ничем не примечательные машины, которые встречаются на любом CTF-соревновании.

Спустя 3 недели я закрыл всего 23 из 66 машин. В этот момент у меня заканчивался 30-дневный доступ в лабораторию, и я купил дополнительные 30 дней (покупать дополнительные дни можно бесконечно). За следующие 30 дней я закрыл все машины, получив доступ ко всем подсетям.

Исходя из тредов на форуме можно сделать вывод, что типичный студент закрывает около 40 машин, так как взлом машин через SSH-туннелирование — это развлечение не для всех.

Экзамен

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

Экзамен занимает полные 48 часов, из которых первые 24 дается на взлом 5 серверов, а вторые 24 часа — на написание отчета о том, как был получен доступ к каждому из них.

А чтобы было совсем весело, первые 24 часа за тобой через веб-камеру будут наблюдать специально обученные люди. Твой экран они тоже будут видеть. А потому, даже если захочется отойти в туалет, нужно будет написать об этом в специальном чате.

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

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

  • 1 машина на написание эксплойта с переполнением буфера за 25 очков
  • 1 комплексная машина со множеством ложных векторов атаки за 25 очков
  • 2 обычные машины по 20 очков
  • 1 совсем простая за 10

Максимум можно получить 100 очков. Плюс еще можно заработать 5 очков, конспектируя работу в лаборатории, но это вариант для параноиков. Лишние 5 очков точно не спасут, а выполнение и конспектирование всех заданий занимает очень много времени.

Так как экзамен — это рулетка, то и соотношение Windows/Linux может быть любым. Мне попались 3 машины на Linux и 2 на Windows.

Первый полученный доступ стал на машине за 25 очков. Мне повезло: она была очень близка к стеку технологий, с которым я привык иметь дело.

Затем, чтобы расслабится, я получил доступ к машине за 10 очков, часто ее называют low-hanging fruit. Для атаки требовалось просто найти один публичный эксплойт, который дает доступ к учетной записи с правами администратора.

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

После этих упражнений у меня было 60 очков в кармане. Оставшееся от экзамена время я потратил на одновременную атаку на 2 оставшиеся машины. На одной из них я быстро получил непривилегированного пользователя, а вот с эскалацией привилегий вышло сложнее. На второй же кроме LFI не получалось прощупать ничего. Ближе к вечеру я получил привилегированный доступ на первой из машин, а на вторую решил просто забить и лечь спать.

Я читал о смельчаках, которые не спали по 24 часа и все равно проваливали экзамен. Примыкать к их числу я не хотел. Проснувшись за 3 часа до окончания экзамена, я проверил хватает ли мне скриншотов и логов для заполнения отчета. А после этого попытался еще раз копнуть оставшуюся машину, но так ничего и не вышло.

Отчет

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

Написание такого отчета может отпугнуть неподготовленного русскоязычного обывателя. Но и у англоязычных студентов это вызывало приступы паники. Некоторые «счастливчики» писали отчеты по 200+ страниц. Сказу скажу, что мой отчет содержал всего 68 и это с учетом того, что я вставлял по одному скриншоту на лист.

Вообще бояться этого смысла нет, писать эссе там точно не надо. Достаточно взять шаблон и вставлять в нужные места скриншоты с одним предложением что-же скриншот значит. Использовать стандартный шаблон тоже не обязательно. Для своего отчета я использовал альтернативный вариант в Markdown.

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

Результат

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

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