Системной подход к сдаче OSWE в 2025

от автора

Введение

Offensive Security Web Expert (OSWE) – продвинутая сертификация offsec по безопасности WEB приложений. Причем ключевым отличием от менее известного Offensive Security Web Assessor (OSWA) является упор на анализ исходного кода приложения, то есть поиск уязвимостей в формате «белого» ящика.

Окончательное решение сдавать этот экз я принял на бизнес съезде в Турции, когда познакомился с предпринимателем, который проходил ironman (ссылка) дважды.  Мой поздний достигатель сразу загорелся идеей о стремительной подготовке. Однако товарищ председатель кооператива задал мне закономерный вопрос: «А OSWE сдать ты не хочешь?».

9 апреля 2025 года, в своём телеграм-канале PathSecure я опубликовал новость о приобретении курса 🙂

Письмо счастья

Письмо счастья

Сам серт я получил со второго раза. В этой статье расскажу о подготовке и процессе сдачи.

2. Подготовка

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

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

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

Матрица Эйзенхауэра

Матрица Эйзенхауэра

Хронометраж лаб. Отличный способ понять укладываешься ли ты в срок или нет. Курс ограничен тремя месяцами и хочется успеть пройти весь материал.  Поэтому я считал всё время, потраченное на лабы, отмечал паузы, на чем остановился/застрял, а в конце подводил суммарный итог по времени. Какие-то лабы занимали 2-3 часа, какие-то 10-11 часов чистого времени. Алгоритм оценки трудозатрат примерно такой:

  1. Хронометрируем несколько лаб от начала до конца

  2. В каждой считаем время на выполнение

  3. Считаем среднее между ними, например так, (2 часа + 11 часов)/2 и получаем, что в среднем лаба занимает 6.5 часов.

  4. Умножаем 6.5 на оставшиеся, допустим, 8 лаб, получаем, что необходимо инвестировать еще 52 часа.

  5. Берем еще какой-то запас на всякие форс-мажоры, например, 30% 

  6. Получили, что для завершения курса нам нужно еще 52 * 1.3 ~= 67 часов

  7. Смотрим на наш календарь, где в неделю выделено 3 часа на обучения и понимаем, что 67/3 ~= 22 недели и мы вполне успеваем или вполне не успеваем и корректируем наше расписание по модели PDCA

Мой пример хронометража

Мой пример хронометража

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

3. Ретро по завершению курса (до экзамена)

Итак, три месяца подписки пролетели незаметно. Я прошел весь материал курса и прорешал с конспектированием почти все лабы (кроме двух).  Какими же выводами я могу поделиться:

TLDR:

1) Лабы хорошие;

2) Материал хороший;

3) Хронометраж важен и полезен;

4) Жестко выделяйте время на обучение;

5) Ведите свой конспект;

6) Подготовьтесь перед тем, как взять курс.

— — —

1) Лабы реально годные. В комментариях в телеграм канале писали обратное, но мне действительно понравилось. У меня не было сложностей с их разворачиванием, поиском и эксплуатацией уязвимостей. В целом всё достаточно гладко.

2) Материал реально годный. Я не специализируюсь на вебе, а особенно на белом ящике, поэтому почти всё мне было в новинку. Особенно дебаг и всякие продвинутые техники SQL-инъекций или подноготная SSTI, или Prototype Pollution (я о таком даже не слышал), или скрейпинг админской страницы через XSS.

3) Я хронометрировал время выполнения каждой лабы. В среднем уходило 8 часов. Это позволило мне в какой-то момент осознать, что сроки горят и надо больше вкладываться. Порешал несколько лаб в отпуске.

4) У меня несколько плотный график из роли тимлида хакеров и помимо проектной деятельности у меня есть стратегирование, встречи 1-1, встречи с проектной командой, пресейлы, разборы входящих, всяческие синхронизации между другими командами. Короче важно-срочных дел много, но так далеко не уедешь. Необходимо жестко бронировать слоты в течении недели на подготовку. Именно так у меня и было — по часу в день. Не всегда удавалось и большую часть я решал на выходных.

5) Я веду конспект теоретического материала (это поможет быстро освежить знаний), а также формирую чеклист с готовыми командами, чтобы быстро что-то реализовать.

6) Курс реально не новичковый. Требует от вас детальное понимание HTTP протокола; навыков работы с командной строкой; программирование на питоне, js; опыт работы с СУБД;

7) Не скажу, что многое было новым для меня. Скорее лишь некоторые более продвинутые техники.

При планировании экзамена может возникнуть сложность с выбором времени. Экзамен долгий (48 часов), много кто его сдает по всему миру, следовательно, слоты достаточно сильно ограничены. Поэтому очень важно заранее забронировать период, примерно за недели 3. 

4. Во время экзамена

Сам процесс экзамена достаточно стандартный, кроме того, что активная часть занимала 48 часов, а не 24 (как на OSCP). Также существует прокторинг – это требование offsec в чате сдачи экзамену, по которому ты обязан пошарить экран и включить вебку. Перед началом экзамены ты показываешь  в камеру паспорт и показываешь что находится вокруг тебя. Забавно, но проктор стригерился на плазму, которая весела передомной. Сначала попросил снять её, но мне удалось договориться на том, что я просто закрою экран простыней.

48 часов – это правда много. Я смотрел в окно и ощущал себя хиккой, который сидел дома неделю.  Конечно, в такие моменты стоит сходить на 15 минут и подышать воздухом. На дистанции в 48 часов такая пауза погоды не сделает, зато поможет проветрить голову. Известно, что во время сна или отдыха наш мозг продолжает обрабатывать задачи, но уже в другом режиме, поэтому работа продолжается. Возможно, кому-то это поможет подраслабить FOMO.

Жиза

Жиза

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

Еще один ключевой совет – это употреблять пищу, спать, пить, разминаться. Базовые физические штуки помогают оставаться в фокусе. Так как активная часть размазана на 48 часов, важно не ломать привычный ритм жизни.

Для успешного прохождения экзамена необходимо проэксплуатировать цепочку уязвимостей в WEB-приложении и автоматизировать её на любом доступном языке программирования. Нужно уметь прогать. Для себя я выбрал питон (так как знаю только его) и в целом особых сложностей с разработкой PoC не возникло. Базовая рекомендация здесь – это хорошо владеть библиотекой requests, а также использовать бурповый прокси для дебага. В целом хорошей практикой является писать PoC на лабы в ходе обучения, какие-то паттерны в коде будут прослеживаться и переиспользоваться.

5. Заключение (после экзамена)

Итак, курс и экзамен мне понравились. Есть, конечно, что-то притягательное в этом процессе обучения. В сфере наступательной безопасности обучение примерно бесконечное: множество направлений, новых уязвимостей, подходов. Думается мне, что в эпоху AI-агентов множество техник будет автоматизировано, но агентами же должен кто-то управлять? А значит, что фундаментальные знания и умение учиться будут актуальны еще долго.

В заключение хочется пожелать успехов всем, кто начинает/продолжает свой путь в профильные сертификации.  А я на днях стартую трехмесячное приключение по сдаче OSEP 🙂

 Вопросы задавайте в комментариях или в личке в телеге t.me/curiv.
 
 Мой личный телеграм канал: t.me/pathsecure.

ссылка на оригинал статьи https://habr.com/ru/articles/1024100/