Как я сдавал OSCP
Периодически на хабре поднимается тема подготовки специалистов в различных областях информационной безопасности и получения соответствующих сертификаций. Уже обсуждали подготовку и сдачу CISSP, CISA, Security+, CEH\ECSA. Раз в две-три недели нас активно приглашают на курсы от пентестит.
В этом же топике я хочу познакомить читателей с еще одним вариантом обучения и поделиться собственным опытом прохождения курса Penetration Testing Training with Kali Linux от Offensive Security с последующей сдачей экзамена.
Об Offensive Security
Наверное, невозможно встретить человека, который бы целенаправленно занимался практической безопасностью и не слышал бы об этой компании. Backtrack, Kali Linux, Exploit-Database, Google Hacking Database — наиболее известные из продвигаемых ими проектов.
Ребята также занимаются пентестами и профессиональным обучением в онлайн режиме или вживую на площадках конференций. На текущий момент для обучения предлагаются следующие направления:
- Penetration Testing with Kali Linux (PWK) — сертификация OSCP
- Cracking The Perimeter (CTP) — OSCE
- Offensive Security Wireless Attacks (WiFu) — OSWP
Есть курсы, обучиться которым можно лишь физически присутствуя площадке конференции Black Hat USA:
- Advanced Windows Exploitation (AWE) — OSEE
- Advanced Web Attacks and Exploitation (AWAE) — OSWE (ранее обещали перевести этот курс в онлайн)
Я обучался на PWK, так что далее речь будет идти именно о нем.
О курсе
Как можно понять из названия, курс сугубо практический и собирает в себе базовые техники, используемые при проведении тестирований защищенности. После регистрации студент получает видео-лекции, pdf-файл c материалами (в моем случае, это 360 страниц и несколько часов видео) и, самое главное, VPN доступ к онлайн лаборатории. Эксплуатация хостов из лаборатории — это вообще самая фановая часть и покупать курс уже можно только ради нее. Также предоставляются всякие другие плюшки вроде доступа к закрытому форуму и возможности пообщаться с инструкторами в IRC«е.
Стоимость курса в существенной степени зависит от количества дней доступа к лабораторную сеть. На момент публикации, это:
- 800$ за 30 дней
- 1000$ за 60 дней
- 1150$ за 90 дней
Получается несколько дороговато, особенно с учетом текущего курса.
Документация содержит достаточно широкий список тем, которые соответствуют общепринятой методологии: сбор информации, перечисление, фаззинг, эксплуатация бинарных уязвимостей, использование готовых эксплойтов и написание своих, повышение привилегий, туннелирование соединений, базовые атаки на веб-приложения, автоматизация через написание python и bash-скриптов и т.п. Более подробное содержание можно глянуть на сайте. К большинству разделов есть набор заданий для выполнения в лаборатории и вопросы «со звездочкой», изучить которые предлагается самостоятельно.
Вообще, по ходу прохождения курса, многие проблемы решаются лишь после многочасового изучения вопроса, сбора информации с других ресурсов и попыток использовать самые различные подходы. Простого изучения предложенной документации, просмотра видео-материалов и перепечатывания примеров команд, скорее всего, будет недостаточно для взлома и половины хостов в лаборатории, не говоря уже об экзамене. И в этом весь OSCP, который в большей степени учит докапываться до сути уязвимости и искать решение самостоятельно, нежели бездумно перепечатывать команды в консоль.
С другой стороны, начальных знаний курс требует минимальных, так что во всем можно постепенно разобраться. Стоит также сказать, что в рамках обучения вы не получите специфичных навыков вроде написания ROP-цепочек или поиска race condition в веб-приложении. Для выполнения лаб и сдачи экзамена подобные знания в принципе не требуются, но так или иначе темы затрагиваются при выполнении лабораторных.
Например, как это все еще бывает в реальных системах, в лабах встретился хост, уязвимый к пресловутой MS08–067. Вроде бы все банально, можно использовать известный модуль из Metasploit и переходить к следующей цели. Но тут возникает проблема, на экзамене использовать фрэймворк практически запрещено, т.е. если возникнет такая ситуация, автоматическая эксплуатация не пройдет. Из тех эксплойтов, что были найдены в интернете, ни один работать не захотел, что послужило к дальнейшему исследованию самой уязвимости, изучению механизма работы DEP в разных системах с разными сервис-паками, написанию ROP-цепочек и т.д. Как итог — некоторое количество потраченного времени, море фана и готовый эксплойт для всех целей от WinXP SP0 до Windows Server 2003 SP2, использовать который, правда, так и не пришлось.
Лабы
При покупке можно заказать доступ к лабораторной сети на 30, 60 или 90 дней. Если вы новичок в области практической безопасности, либо планируете уделять обучению не более 3–4 часов в день, стоит взять выбрать максимальный вариант. По собственному опыту скажу, что там действительно есть чем заняться. Кроме того, первый месяц скорей всего уйдет на изучение теории и основного инструментария, можно поучиться писать shell-скрипты, разобраться с Wireshark«ом, составлением эксплойтов для различного ПО и т.д. Остальное время займут непосредственно эксплуатация и параллельное изучение различных техник и особенностей, которые в официальной документации не отражены.
Лабораторию стараются содержать в состоянии, максимально приближенном к реальному. Системы периодически обновляются, появляются уязвимые сервисы, которые часто встречаются в реальных пентестах.
Всего в вашем распоряжении будет около 60-ти виртуальных хостов с самыми разными конфигурациями. Сеть разбита на сегменты, связанные между собой: Public Network, Development Network, IT Department, Administrative Department. Напрямую доступна только публичная сеть, для доступа к остальным потребуется потрудиться в части проксирования соединений и проброса портов.
Каждый хост, так или иначе, уязвим. К некоторым машинам получить доступ крайне просто, а для других потребуется потратить часы, а то и дни. Взламывать все системы не обязательно, основная цель — получение как можно большего количества навыков. Но если есть возможность, я бы посоветовал разобраться и получить максимальные привилегии на всех машинах. А если успеете разобраться с PAIN, SUFFERENCE, GHOST и HUMBLE — будет вообще супер. Можно сразу добавлять строчку в резюме, знающие люди оценят :)
OSCP — это море веселья, восторга, боли и страданий одновременно. Нередко можно встретить вопросы на форуме или в чате вроде «я потратил неделю на работу над этим хостом, забыл как выглядит моя жена и как зовут мою собаку, попробовал все варианты, ничего не выходит. Что делать?». Чаще всего, ответом на подобный вопрос будет сухое «Try Harder», либо «Enumeration is the key».
Try Harder — это практически второе имя и философия курса. Это мантра, которая преследует тебя на протяжение всего обучения и становится девизом после. «Эксплойт X не компилируется, что делать?» — Try Harder. «Я получил доступ к Alice, Bob, Pedro, но как получить доступ к Cory» — Try Harder. «Я попробовал все эксплойты повышения привилегий к Y, но так и не получил root» — Try Harder. И так каждый раз.
И лишь после внушительного описания проведенных работ по исследованию цели, перечислению сервисов, всевозможных попыток атак, почувствовав все испытанные страдания, инструктор из IRC«а даст небольшую подсказку или задаст наводящий вопрос. И в этот момент возникают сомнения в правильности выбора профессии. Как можно было не заметить такую простую деталь или не попробовать банальный способ? Почему я сам не смог до этого догадаться?
В общем, OSCP также учит вниманию к мелочам и дает уверенность, что поломать можно все, просто надо найти ту самую, казалось бы, незначительную особенность.
Экзамен
Сдача экзамена — это тоже отличительная фишка курса. Студенту предоставляют VPN-доступ в закрытую сеть, на взлом которой дается 24 часа и еще 24 часа дается на написание итогового отчета, в который рекомендуется включить вводную часть, информацию для руководства, весь ход тестирования и технические детали, а также рекомендации по устранению. Еще стоит приложить отчет по лабораторным, чтобы в случае возникновения сомнений у экзаменаторов, иметь шанс переместить чашу весов в вашу сторону и успешно пройти сертификацию.
На экзамене действуют строгие требования: нельзя пользоваться сканерами уязвимостей (Nessus, Acutenix и т.п.) или автоматическими средствами эксплуатации (например, sqlmap). Как я писал выше, использование Metasploit в некоторых случаях допустимо, но жестко ограничено списком модулей.
В зависимости от уровня полученного доступа за взлом каждого хоста дается определенное количество баллов. Судя по отзывам, многие «валятся» именно на задаче повышения привилегий, так что при подготовке стоит уделить этому повышенное внимание. Цели также различаются по уровню сложности. Необходимый минимум — 70 баллов. Как мне показалось, по сложности экзаменационные хосты не особо отличались от лабораторных.
В моем случае, в сети оказалось 5 хостов от 10 до 25 баллов за каждый. Первые три часа были потрачены на сбор информации, сканирование портов и всевозможные перечисления. После этого, уже были более-менее определены варианты атак. Получен первый root за 20 очков, часа через 3 еще один. Еще через час удалось разобраться с хостом за 25. Дальше все пошло сложней, т.к. начала сказываться усталость, и часа 2 я перепрыгивал с одного хоста на другой, не зная за что зацепиться. Помог перерыв на прием пищи и небольшую прогулку, после чего удалось найти способ получить минимальные права на хосте за 25, а затем и поднять привилегии. Забавно, но последним поддался хост за 10.
Итого, на все ушло около 12–14 часов с учетом перерывов. На следюущий день итоговый отчет (экзамен+лабораторные) был отправлен организаторам. А через два дня я получил письмо об успешной сдаче и присвоении квалификации Offensive Security Certified Professional.
Что касается советов:
- Обязательно сразу начните составлять заметки по изученному материалу, документируйте весь путь получения доступа, делайте скриншоты в качестве доказательств. Во-первых, это поможет, когда придет время составления итогового отчета. Во-вторых, будет легче разобраться с экзаменом, если встретится что-то похожее.
- Большинство машин в сети можно взломать несколькими способами, если позволит время, попробуйте все.
- Некоторые хосты нельзя взломать сразу, не взломав какие-то другие. Если потрачено приличное количество времени, испробованы все техники, попробуйте задать вопрос в чате, можно ли получить доступ к хосту напрямую или же следует обратить внимание на другие цели.
- Неплохо иметь под рукой набор виртуальных машин с разными операционными системами и архитектурой — может пригодиться при написании или компиляции эксплойтов.
- Enumeration is the key. Если что-то не получается, еще раз проверьте, вся ли информация собрана. Может ли быть полезной информация из SNMP, проведено ли перечисление пользователей, все ли порты просканированы, просмотрен ли html код и т.д.
- После того, как вдоволь наигрались с метасплойтом, попробуйте повторить все проведенные атаки без него.
- На экзамене старайтесь работать по методологии, а не хвататься за все подряд. Это поможет сэкономить время и не пропустить важные моменты.
- Попробуйте еще до покупки курса потренироваться с уязвимыми системами по списку из https://www.vulnhub.com. Хорошим началом будет Kioptrix, Holynyx, Nebula, Metasploitable.
- Ознакомьтесь с трудами\подпишитесь на товарища @g0tmi1k. Помимо прочих крутых публикаций\проектов, у него также есть отличный гайд по повышению привилегий https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/
В качестве заключения
Практическая направленность во многом делает курс исключительным. Особенно радует нацеленность на получение реальных навыков, а не на заучивание\зазубривание правильных вариантов проставления крестиков в тестах. Две недели фана и погружения в любимое дело прошли незаметно и даже немного жалко, что все закончилось.
Всем, кто начинает свой путь в области практической ИБ, крайне рекомендую присмотреться. А тем, кто уже обучался на курсах, предлагаю поделиться впечатлениями в комментах, особенно интересует OSCE и AWAE.
Ну и приятное дополнение в завешении — «Offensive Security — Try Harder» Song