- Что за зверь osce: разбираем на примере
- С чего всё началось
- Начало пути
- Сертификаты в области информационной безопасности: что актуально в рф и за рубежом
- Что мы знали о oscp
- Linux
- Oscp вызов
- Windows
- Буду ли я дальше сдавать экзамены offensive security?
- Как я сдавал экзамен
- Кому нужна это сертификация
- Курс oscp
- Лаба (не привилегированный шел доступ)
- Лаба (повышение привилегий)
- Обновление правил сертификации
- Отношение к другим тренингам или экзаменам по безопасности
- Повторная сертификация
- Подготовка к экзамену. тренировка. повышение привилегий
- Экзамен!
- Постэксплотация в лабе
- Итоги лабы
- Подготовка к экзамену. тренировка. сервисы
- Прием
- Решение
Что за зверь osce: разбираем на примере
Чтобы не перегружать статью техническими терминами и аббревиатурами, приведу типовой пример. Представьте, что у вас есть программное обеспечение (ПО), принимающее данные по TCP, и вам нужно провести эксплуатацию на удалённом сервере, где развернуто это ПО, чтобы получить возможность выполнять команды на уровне операционной системы.
С чего всё началось
Мой коллега c4n два года назад сказал, что надо бы сдать OSCP и я согласился, но как это часто бывает с хорошими идеями, мы
забили
отложили эту хорошую идею.
Спустя год в нашей компании появилась возможность бесплатного обучения полезным вещам для сотрудников (увы, моё понимание полезно не совпадает с руководством и курсы сомелье мне все ещё отказываются оплатить). К славной затее сдать OSCP подтянулся @GolovnyaD, сказал, что наши отговорки про занятость так себе и что надо приступать.
И мы приступили.
Начало пути
Как оказалось, доступ к лабе можно приобрести на 30, 60 или 90 дней стоит это 999$, 1199$, 1349$. Так как мы не хотели посвящать всё свободное время только OSCP, а разница между 30 днями и 90 всего 350$), мы выбрали доступ на 90 дней.
9 октября 2021 года, я оплатил курс, ожидая получить веселье на 3 месяца, как же я ошибался, мне досталось веселье на 5 месяцев. И вот почему:
первая подстава: нельзя начать обучение завтра. В моём случае ближайшая дата для старта была 20 октября (как пишут на форумах среднее время до старта после оплаты – 2 недели).
Тогда же 9 октября прислали тестовый пакет (Connectivity Pack) для подключения к VPN. У меня судя по их тестам не было проблем с VPN-подключением (как оказалось потом тест у них так себе, расскажу дальше). Тогда же прислали ссылку на их сборку Kali (на вид ничем не отличается от обычной), которая специально подготовлена для прохождения.
Старт курсаФормально курс начался у меня в 3:00 ночи 20 октября, но письмо с материалами курса мне пришли в 03:09 (заметил эту нестыковку только сейчас, когда писал статью). В письме с материалами курса содержатся ссылки на:
- пдфку на 380 страниц
- видеоматериалы к этой пдфке
- VPN Connectivity Pack
И тут нас ждёт вторая подстава:
Сертификаты в области информационной безопасности: что актуально в рф и за рубежом
Нерассмотренным остался класс сертификатов, которыми в большей мере пользуются технические ИБ-специалисты. Подтверждение квалификации в области администрирования и конфигурации какого-либо оборудования — основная задача сертификатов данного типа.
Поскольку вендоров на рынке представлено великое множество, сперва может показаться, что выбрать некое ограниченное множество действительно значимых сертификатов — задача непростая. В данном случае можно пойти по одному из двух путей:
1. Получить сертификат одного из «мастодонтов» рынка IT — к подобным можно отнести Cisco с сертификациями CCNA, CCNP и CCIE Security, Microsoft с сертификациями MCSA и MCSE, наконец, Red Hat c сертификациями RHCSA и RHCE. Два наиболее существенных плюса данного подхода: а) возможность получения работы в компании, выдавшей соответствующий сертификат; б) признание со стороны профессионального сообщества, как следствие — более высокий интерес со стороны большого числа компаний, находящихся в поиске нового сотрудника с определённым уровнем квалификации.
2. Получить узкоспециализированный сертификат — в качестве примера можно привести сертификат технического специалиста UserGate, аналогичный сертификат для специалиста по технологии ViPNet и так далее. Интерес к подобного рода сертификации обычно возникает в том случае, когда компании необходимо получить доступ к работе с продуктами некоторого вендора — для этого в штате выделяется сотрудник, который проходит необходимый обучающий курс, в результате чего компания достигает свою цель. Если говорить о получении подобного сертификата специалистом исключительно для себя, то в качестве одной из немногих возможных причин видится нацеленность на работу в компании, которой требуется технический специалист, знакомый с оборудованием конкретного вендора. В остальных случаях лучше будет присмотреться к предыдущему «пути».
В завершение хочется сказать о том, что, как и везде, «плохих», «ненужных» или «лишних» сертификатов в сфере ИБ нет — процесс обучения важен для сотрудника любого профиля, как важно и то, чтобы этот процесс был непрерывным. Но рынок, как известно, диктует свои правила, а значит путь ИБ-специалиста в некотором смысле предопределен.
Никита Мулаков
Руководитель направления аудита и консалтинга, Акрибия
Что мы знали о oscp
Мы знали, что OSCP состоит, по сути, из 3 частей: теоретический материал (дальше я буду называть его пдфка), доступ к лаборатории с виртуальными машинами (дальше буду называть лаба) и экзамен.
Linux
Но почти везде можно подняться через уязвимости в конфигурации, тут помогает LinEnum, а для ленивых linux-smart-enumeration
Вообще злоупотреблять уязвимостями ядра в лабе не стоит, если вы хотите подготовиться к экзамену, то лучше использовать уязвимости конфигураций, т.к. все машины на экзамене будут со свежими ядрами и установленными апдейтами (по крайне мере мне достались такие).
Oscp вызов
По окончании курса студенты получают право пройти сертификационный экзамен. Им дается 24 часа в незнакомой лаборатории для успешного выполнения требований экзамена. Документация должна включать использованные процедуры и доказательства успешного проникновения, в том числе специальные файлы маркеров, которые изменяются за каждое исследование. Результаты экзаменов рассматриваются аттестационной комиссией, и ответ дается в течение 10 рабочих дней.
Windows
Для windows машин я пользовался вот этим наборам сплойтов
Но на некоторых Windows машинах специально пропатчены все уязвимости «ядра» и приходилось придумывать, как подняться. Тут есть машины на любой вкус, сервисы, автозагрузки, шедулед таски, установленное ПО. Установленное ПО — это конечно большой провал, т.к. очевидно, что тачки подготовлены и если на системе установлено всего одно приложение, то через него можно подняться.
Буду ли я дальше сдавать экзамены offensive security?
Конечно, меня в целом устраивает подход «try harder», и интересны их новые курсы, а всё остальное можно пережить.
P. S. Спасибо коллегам и моей девушке, которые поддерживали меня!
Как я сдавал экзамен
Мне удалось сдать OSCE со второй попытки. В первый раз — это было в июне — у меня не получилось нормально подготовиться к экзамену из-за загруженности на проектах, но как «настоящий пентестер» я решил сделать всё «на лету». В итоге за 48 часов, 10 из которых ушло на сон, решил только 1,5 задачки.
В сентябре я принял волевое решение качественно со всем разобраться: изучить побольше тем, в том числе связанных с эксплуатацией (а это оказалась бесконечная дыра), проделать все лабораторные, пообщаться с другими экспертами, обдумать задачи с первой попытки сдать экзамен, подготовить различные скрипты для автоматизации.
В итоге вторая попытка была в ноябре: за 12 часов экзамена я выпил 7 стаканов чая, пару таблеток от головной боли, вкусно поужинал, прогулялся во дворе — и все 4 задания были решены. Благо, они были похожи на те, что мне попались при первой попытке. После приятного сна ещё часов 5 ушло на формирование отчёта, а спустя сутки мне сказали, что экзамен успешно сдан и можно просить повышение зарплаты у руководства.
Кому нужна это сертификация
У меня получился вот такой список (отсортированный по осмысленности получения и требования этого сертификата):
- студенты 4-5 курса. Для них это прям очень крутая практика.
- тем, кто решил перейти в безопасность из смежных отраслей. Все описывается на хорошем уровне, куча примеров, есть чему научиться.
- работодатель. Сертификат показывает, что человек что-то знает и что-то умеет делать руками (в наших вакансиях мы указываем это как плюс).
- людям в отрасли, которым хочется освежить/протестировать свои знания
- опытные пентестеры. Возможно, красивая корочка позволит им стать более интересными для работодателей.
Дальше в планах сдать OSWE (Offensive Security Web Expert). Как по мне, он интереснее, чем OSCE (Offensive Security Certified Expert). А для тех, кому интересно почитать про различные виды сертификации в области ИБ, мы написали отдельную статью.
Курс oscp
Курс, ведущий к сертификации OSCP, был впервые предложен в 2006 году под названием «Offensive Security 101». Студенты, ожидающие прохождения курса 101, не были подготовлены к тому уровню усилий, который требуется для курса, поэтому в декабре 2008 года название было изменено на «Пентестирование с помощью BackTrack» и снова на «Тестирование на проникновение с помощью Kali Linux», когда дистрибутив BackTrack был перестроен как Kali .
Курс охватывает общие векторы атак, используемые во время тестов на проникновение и аудита. Курс предлагается в двух форматах: онлайн или в режиме реального времени под руководством инструктора. Онлайн-курс представляет собой пакет, состоящий из видеороликов, PDF-файла, лабораторных заданий и доступа к лабораторным работам.
Курс под руководством инструктора представляет собой интенсивное живое обучение, охватывающее тот же материал, также с доступом к лаборатории. Лаборатории доступны через высокоскоростное подключение к Интернету и содержат множество операционных систем и сетевых устройств, на которых студенты выполняют свои задания.
Лаба (не привилегированный шел доступ)
В целом лаба хорошо соответствует тому, что было изложено в пдфке. В плане получения непривилегированного доступа, надо использовать различные техники (включая атаки на клиентов), собирать пароли со сломанных машин и их использовать повторно, запускать бруты и так далее. Наверное, хуже всего раскрыта тема SQL-инъекций и blind-инъекций — они не встречались ни разу.
Алгоритм получения доступа инициализирующего шела везде как в жизни:
- енумерация (Enumeration) портов и сервисов
- брут директорий для веба
- определение продуктов и версий
- поиск и модификация эксплойта
Пара машин требует написание собственных эксплойтов blackbox-ом, но ничего сложного – LFI/RFI. Больше всего меня радовало, что почти отсутствуют машины из разряда CTF, где есть картинка, внутри которой спрятана ещё картинка, внутри которой спрятан zip-архив и так далее.
Лаба (повышение привилегий)
Для меня это была самая интересная часть и она отнимала у меня большую часть времени (по началу).
Обновление правил сертификации
В октябре 2020 года Offensive Security
, что планирует обновить курс OSCE. Уже сейчас эту сертификацию нельзя оплатить, а статус OSCE по новым правилам можно будет получить только по результатам сдачи трёх экзаменов:
Отношение к другим тренингам или экзаменам по безопасности
Успешное завершение экзамена OSCP дает студенту право на получение 40 баллов (ISC) ² CPE .
В 2021 году доминирующий в Великобритании орган по аккредитации для тестирования на проникновение, CREST, начал признавать OSCP как эквивалент своей квалификации CREST Registered Tester (CRT) среднего уровня.
Повторная сертификация
OSCP не требует повторной сертификации.
Подготовка к экзамену. тренировка. повышение привилегий
Можно тренить на тех же машинах с hackthebox.eu, но в целом будет достаточно почитать врайтапы, чтобы понимать, какие техники есть, там есть примеры на все техники, которые вам могут пригодиться на экзамене.
Подготовка к экзамену. Организационная частьДля сдачи экзамена потребуется:
- заграничный паспорт (ваше имя и фамилия должны быть написаны на английском)
- веб-камера
- стабильный интернет
Хорошо иметь дополнительно:
- запасной интернет (я использовал мобильный)
- запасной компьютер (у меня рядом лежал запасной ноут полностью настроенный на сдачу экзамена)
- снепшот ВМ с Kali
- копия ВМ с Kali (я положил одну копию на жесткий диск, вторую — на внешний жесткий диск)
Экзамен!
Экзамен считается очным (Proctored Exam) поэтому он начинается за 15 минут до выбранного времени. Вы подключаетесь к специальной веб-платформе, шарите свои экраны, в текстовом чате вам начинают задавать задачи и вопросы:
- показать паспорт по веб-камере
- показать, что в комнате никого нет
- выдать результаты тестового скрипта для подключения
Тут у меня случился фейл и при попытке скопировать новый конекшен пак на виртуалку с Kali, она упала. Я был готов к этому, откатил виртуалку, скопировал пак, запустил и начал ждать 9 утра.
Доступ я получил в 9:01.
У меня был простой план действий:
- запустить инумерацию сервисов
- сделать тачку на переполнение буфера за 1 час
- сделать тачку на 10 баллов за 1 час
- сделать первую тачку на 20 баллов за 2 часа
- сделать вторую тачку на 20 баллов за 2 часа
- сделать тачку на 25 баллов за 3 часа
Как видно по моему плану мне требовалось 9 часов на прохождения экзамена, но всё пошло не по плану с самого начала 🙂 я забыл учесть важный тормозящий фактор – записывать по шагам всё что сделано со всеми скриншотами для отчета.
Итоговый результат у меня получился следующий:
- переполнение буфера – 2.5 часа. Час потерял, т.к. не заметил пару плохих символов, ещё 30 минут на отчёты
- тачка за 10 – 30 минут: 10 минут взлом, 20 минут скрины
- первая тачка за 20 – 2.5 часа: 1.5 часа взлом, 40 минут скрины и отчёт, 20 минут перерыв
- вторая тачка за 20 – 2 часа: 1.5 часа взлом, 30 минут скрины и отчёт.
- тачка за 25 – 3.5 часа: 3 часа взлом (с двумя перерывами), 30 минут скрины и отчёт
В целом экзамен куда интереснее лабы, уязвимости все достаточно свежие – 2021-2021 год. Повышения везде не через уязвимости ядра.
Дольше всего я сидел, ожидая повышения привилегий, все непривилегированные шелы были получены за 10-30 минут.
В экзамене сделано множество ложных путей, которые не приведут к успеху. Если для инициализирующего шела всё легко отбрасывается (например, эксплойт для переполнения буфера на Winodws XP SP2, хотя сам сервис запущен на Windows 10), то в повышении я пару раз погряз в этих ложных путях. Тут главное вовремя сказать себе, что этот вектор стоит изменить и выбрать новый.
Спустя 11 часов я закончил экзамен, сломав всё и отправился выпить пару пинт пива (всего пару, так как на следующий день надо ещё написать формальный красивый отчёт).
Написание и отправка отчётаВзял шаблон с того же репозитория где и шаблон по лабам и заполнил его часа за 4.
Дальше началось веселье с тем куда это отправлять и как. Сначала это надо зашифровать, используя 7z с паролем, пароль не случайный, а ваш айдишник в системе (5 цифр, брутится за 0.3 секунды на CPU). Дальше я долго искал информацию куда вкладывать отчёт по лабе в тот же архив или в другой (Ответ: надо вкладывать в тот же архив).
Полученный архив надо загрузить на сайт, получить ссылку и эту ссылку отправить на специальную почту! Зачем такие сложности в 2020 году, для меня загадка.
Спустя пару часов, вы получите ответное письмо, что: «Мы получили вашу ссылку, но не проверили, что там нормальный архив, что он расшифровывается и что в нём нужные данные. И о том, что результаты экзамена мы сообщим в течении 10 рабочих дней».
ИтогСпустя ровно неделю после экзамена, в воскресенье 1 марта я получил радостное письмо, что я составил архив правильно:
После этого я заполнил данные для отправки мне физического сертификата и карточки OSCP-сертификации.
Постэксплотация в лабе
Часть постэксплотации я оставил на потом, но вообще собрав все пароли и просмотрев все базы данных, файлы конфигураций и логов, вы сможете легко получить доступ ко многим машинам (особенно в непаблик сети).
Многие машины ломаются по цепочке, это важно понимать, особенно для атак на клиентов, если тачка называется mail, то возможно к ней кто-то будет цепляться почтовым клиентом), а если HELPDESK, то заходить на открытые тикеты.
Большая четвёркаВ лабе есть 4 машины, которые считаются самыми сложными и некоторые рекомендуют оставить их на конец, это: Pain, Sufferance, Gh0st and Humble. Я знал про их наличие с самого начала, но специально от них не сбегал или их не искал. К моменту, когда я решил вернуться к ним две из четырёх мной уже было сломано.
Моё впечатление от них:
- Pain – крутая тачка, сложная как и в получении инициализирующего шела, так и в повышении.
- Sufferance – сложный инициализирующий шел, в несколько этапов, что-то похожее мне досталось на экзамене. Простое повышение.
- Gh0st – начало и инициализирующий шел как на CTF машинах, но одно из самых красивых повышений во всей лабе.
- Humble – возможно самый сложный инициализирующий шел в лабе, но простое повышение.
В целом это крутые тачки, и я почти уверен, что если вы сломали их в лабе, то вы сдадите экзамен без проблем, один Humble я ломал дольше, чем сдавал экзамен.
В мой топ ещё бы вошли:
- Sherlock – пруф получается за пару минут, а над получением реверса можно долго посидеть.
- beta – очень жизненная машина как и в получении первичного доступа, так и повышения (ограниченный bash).
Итоги лабы
В целом лаба произвела хорошее впечатление, я сломал все машины, за которые брался (около 45 машин).
В целом вспомнилось много вещей, которыми не так часто приходится пользоваться.
Подготовка к экзаменуЗа несколько дней до окончания доступа к лабе, я решил, что пора записаться на экзамен. Тут я был не прав, лучше это сделать заранее. Ближайшая дата в выходной день была только через месяц на 23 февраля (и то на 9 утра).
Вывод и подстава три – если хотите сдавать экзамен в удобное время и на выходных записывайтесь заранее.
Так же я начал писать отчёт по лабе (надо описать 10 машин, если хотите получить 5 дополнительных балов), стандартный пример отчёта слишком заумен, поэтому я стал использовать вот этот. Для подробного описания я выбирал или интересные машины или случаи, где сразу получаешь рута.
Мне понадобилось сделать 10-15 дополнительных скриншотов, поэтому я рекомендую иметь доступ к лабе во время написания этого отчёта.
Подготовка к экзамену. Тренировка. БинарщинаВ экзамене одна из составных частей — это написание эксплойта на переполнение буфера, она даёт 25 балов, и, не умея это делать быстро и хорошо, идти на экзамен особо не имеет смысла, стоит набить руку.
Добрые люди уже собрали набор ПО, на которых можно потренироваться.
Я решил штук 7, и если на первую я потратил 2 часа времени, то седьмую я решил за 20 минут, по сути, со скоростью написания кода и ввода команд. Алгоритм, который меня не подводил:
- фазим на падение буквами A (на экзамене этот шаг уже будет сделан за нас)
- ищем офсет, стандартно через pattern_create.rb и pattern_offset.rb
- проверяем длину, стандартно меняем A на B в нужном месте, а после B вставляем много C, чтобы посмотреть возможный размер полезной нагрузки без прыжков внутрь наш0его буфера
- проверяем плохие символы (я сразу отрезаю x00, так как он будет плохим в 99% случаев)
- ищем “jmp esp” (самый сложный шаг, и техники могут быть разными)
- проверяем валидность найденного адреса, через брекпоинт в отладчике
- генерим пейлоад с реверс шелом (в начало добавляем 20 нопов — x90)
- профит
Подготовка к экзамену. тренировка. сервисы
В одном из врайтапов по процедуре экзамена я нашёл вот такую картинку:
На этой картинке показаны какие машины на hackthebox.eu похоже на тачки с экзамена (тачка brainfuck вообще не похожа, на ней рекомендую не тренить). Для активации тачек требуется платная подписка (10 баксов за месяц, сразу не забудьте её отменить).
Я потратил 8 часов и решил 10 машин, чередуя Windows и Linux. И решил, что с меня хватит, но, наверное, тут, как и с переполнением буфера надо доводить до автоматизма. Эти машины проще чем машины на экзамене, по крайне мере в плане повышения привилегий (некоторые копии машин из лабы, не знаю, кто у кого позаимствовал).
Прием
В статье «Kali Linux: Набор инструментов для тестирования на проникновение» Дж. М. Поруп назвал сертификацию OSCP «желанной», потому что для этого требовалось пройти сложный 24-часовой экзамен, демонстрирующий взлом. В пресс-релизе о новом главном операционном директоре компании, предоставляющей услуги безопасности, использование компанией профессионалов OSCP было названо сильной стороной.
В «Полном руководстве по началу работы с кибербезопасностью» Вишал Чавла из Analytics India Mag рекомендовал OSCP как один из двух «хорошо известных» сертификатов безопасности. В интервью генеральному директору Offensive Security Нин Вангу Адам Баннистер из The Daily Swig рассказал о «крупном обновлении» учебного курса «Тестирование на проникновение с Kali Linux (PWK)», которое приводит к сертификации OSCP для студентов, сдающих заключительный экзамен. Обучающие обновления подробно обсуждались в разделе «Безопасность хелпнета».
В книге «Основы веб-взлома: инструменты и методы атаки на Интернет» Джош Паули назвал OSCP «весьма уважаемым». Обучение кибербезопасности для осведомленности и соблюдения требований дало план учебного курса для OSCP. В книге «Темные воды фишинга: наступательная и защитная стороны вредоносных писем» соавтор Кристофер Хаднаги назвал OSCP одной из своих квалификаций.
В руководстве Certified Ethical Hacker (CEH) Foundation Guide протокол OSCP указан в качестве одного из двух сертификатов Offensive Security для «Программы тестирования безопасности». Sicherheit von Webanwendungen in der Praxis также включила OSCP в список рекомендуемых сертификатов.
В «Учебной программе бакалавриата по информационной безопасности: эволюция небольшой программы» Лайонел Мью из Университета Ричмонда сказал, что 35% должностей в области информационной безопасности требуют сертификации, и назвал OSCP «популярной сертификацией».
Решение
- Сначала разбираем протокол на сетевом уровне: необходимо проанализировать его составляющие и выделить все места, которые имеет смысл модифицировать. Потом пишем фаззер, который будет подставлять различные значения во все эти места и пытаться выслать их серверу.
- Спустя время определённый строковый буфер с определёнными символом и (или) длиной вызовет stack overflow, а это нарушит работу программы и приведёт к её критическому завершению.
- Дальше с помощью этого буфера следует разместить payload (полезную нагрузку) в виде ассемблерных команд в бинарном виде, но не просто разместить команды в стеке, а перехватить управление регистром EIP. Для этого можно либо просто найти корректное смешение в буфере, либо попытаться вызвать исключение SEH.
- После перехвата управление EIP необходимо передать на последовательность своих команд. Сложность тут в том, что данные в памяти располагаются каждый раз по новому адресу. Поэтому следует найти в оперативной памяти такой участок статичного адреса, который будет ссылаться на регистр, а тот в свою очередь — на адрес в памяти (с возможностью записи и выполнения), где можно будет также расположить свои данные.
Кажется, что осталось только разметить шелл-код, и всё очень просто. Но бывает так, что сначала нужно обойти механизм ASLR, если в памяти не удаётся найти статичный адрес, либо оказывается, что буфер в памяти ограничен алфавитом (разрешёнными символами), тогда необходимо собрать все допустимые символы и из них выстроить цепочку альтернативных команд.
А если буфер ограничен длиной, то надо найти другое место в памяти программы, где дополнительно можно разместить данные, найти их в памяти и сделать переход на них (техника egghunter) или вообще написать свой шелл-код, который выполнит то, что вы хотите, в представленных ограничениях.
Также бывает, что эти дополнительно размещённые данные частично повреждаются, поэтому следует оценить повреждения и придумать, как обойти это ограничение. Например, убрать badchars, разбить свой шелл-код на цепочку и сделать цепочку вызовов. Всё это усложняется тем, что отладчик (ваш основной инструмент) может некорректно работать с выделением памяти и неправильно отображать данные в памяти во время отладки — Bingo!
По сути, бинарная эксплуатация, да и пентест в целом — это игра с обходом кучи ограничений, использование различных методик и применение смекалки. Решение подобной задачи может занять от 6 часов до бесконечности, поэтому 48 часов на 4 задачи не кажутся мне избыточными.
