Offensive Security Certified Professional отличается от других сертификаций по информационной безопасности адски сложным экзаменом. Ребята из Offensive Security бегают по интернету и пристально следят за тем, чтобы никакие подсказки или готовые решения не были доступны публично. И, похоже, им успешно удаётся это делать более 10 лет подряд. Сдавая экзамен, люди не спят по двое суток, тестируя инфраструктуру на проникновение с постоянно включенной видеокамерой и спрашивают в специальном чате разрешения отойти в туалет. Я прошёл этот путь и сейчас расскажу, как всё устроено. Я много читал про OSCP, но только волшебный пинок локдауна заставил меня купить курс. За окном был 2020, а у меня — $999 и желание прокачаться в информационной безопасности. «Похоже, это отличное время, чтобы инвестировать деньги в обучение», — подумал я и купил курс Penetration Testing with Kali Linux. Минимальная стоимость курса — $999. За эти деньги ты получишь «стартер кит молодого пентестера», который включает в себя: Книжку на 850 страниц. 17+ часов видеолекций. 30 дней доступа к лаборатории. 1 попытку сдачи экзамена. Сложности начинаются уже при покупке. Нельзя купить курс и сразу начать заниматься: можно только выбрать дату начала обучения в будущем. В моём случае датой стало начало октября 2020, через месяц после покупки. Небольшая ремарка. Уже в процессе обучения я решил почитать блоги людей, которые проходили курс, и оказалось, что большая часть из них подошли к нему основательно и готовились за полгода или даже год. А для тренировки перед OSCP покупали доступы к HTB и VulnHub. Я же ничего из этого не делал, и курс был для меня чёрной коробкой. После оплаты мне скинули ссылки на кастомизированный образ Kali (чем конкретно он отличается от обычного я не понял), а также архив для проверки VPN-соединения, который действует 3 дня. За эти дни нужно было скачать VMware, поставить туда этот Kali и проверить своё подключение к VPN. Говорят, раньше всё это присылали в день начала занятий, теперь присылают заранее. Вообще в 2020 году курс изрядно обновили и, как они сами пишут, увеличили в два раза размер материалов — раньше в книжке было всего 400 страниц, — а также на 30% число машин в лаборатории. А ещё добавили новые типы атак, вроде атаки на Active Directory или лекций по PowerShell Empire, репозиторий которого уже закрыт владельцем. Первая часть — это теория. За неё отвечает та самая книжка на 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. На форумах ходит поверье о четырёх машинах (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 может быть любым. Мне попались три машины на Linux и две на Windows. Первый полученный доступ стал на машине за 25 очков. Мне повезло: она была очень близка к стеку технологий, с которым я привык иметь дело. Затем, чтобы расслабиться, я получил доступ к машине за 10 очков, часто её называют low-hanging fruit. Для атаки требовалось просто найти один публичный эксплойт, который даёт доступ к учетной записи с правами администратора. Большинство экзаменуемых начинают с переполнения буфера, а я оставил его на середину, чтобы разгрузить мозги. Кому-то это может показаться сложным, но по факту дают примитивное приложение и заранее подготовленный PoC в котором нужно дописать только «мясо». Берём любую инструкцию и следуем всем шагам. После этих упражнений у меня было 60 очков в кармане. Оставшееся от экзамена время я потратил на одновременную атаку на 2 оставшиеся машины. На одной из них я быстро получил непривилегированного пользователя, а вот с эскалацией привилегий вышло сложнее. На второй же кроме LFI не получалось прощупать ничего. Ближе к вечеру я получил привилегированный доступ на первой из машин, а на вторую решил просто забить и лечь спать. Я читал о смельчаках, которые не спали по 24 часа и всё равно проваливали экзамен. Примыкать к их числу я не хотел. Проснувшись за 3 часа до окончания экзамена, я проверил, хватает ли мне скриншотов и логов для заполнения отчёта. А после этого попытался ещё раз копнуть оставшуюся машину, но так ничего и не вышло. После выполнения практической части даётся 24 часа на написание и отправку подробного отчёта на английском с последовательностью шагов, необходимых для получения доступа к каждой из машин. Туда также входят советы администратору сервера, чтобы обезопасить его. Написание отчёта может отпугнуть неподготовленного русскоязычного обывателя. Но и у англоязычных студентов оно вызывало приступы паники. Некоторые «счастливчики» писали отчёты по 200+ страниц. Сказу скажу, что мой отчёт содержал всего 68 и это с учётом того, что я вставлял по одному скриншоту на лист. Бояться этого смысла нет, писать эссе точно не надо. Достаточно взять шаблон и вставлять в нужные места скриншоты с одним предложением о том, что значит скриншот. Использовать стандартный шаблон тоже не обязательно. Для своего отчёта я использовал альтернативный вариант в Markdown. После заполнения отчёта его нужно было запаковать в 7z и отправить на специальной странице. До 2020 надо было ещё и паролем шифровать, но теперь от этой практики отказались. Спустя неделю мне пришло заветное письмо, где сообщалось, что я сдал экзамен и теперь мне необходимо заполнить информацию о моём местонахождении для отправки физической копии сертификата. На этом я заканчиваю свой рассказ. А на вопрос, стоит ли сдавать OSCP ответ однозначный — да, если есть много свободного времени и лишние $999. ex-Разработчик НЛО