Русский
Русский
English
Статистика
Реклама

Сдать OSCE вызов принят



Что бы вы ответили на такое предложение? Есть тема, которую большинство ИБ-шников обходят стороной, называется бинарная эксплуатация. Для начала нужно решить тестовое задание: всего-то отреверсить ассемблерный код и сгенерировать ключ за 60 дней на стенде 2000-ыx годов. Дальше готовиться можно по книге, но она поможет разобраться в теме лишь процентов на 20. Потом будет истощающий силы экзамен из четырёх задач на 48 часов, и сразу после него дадут 24 часа на подготовку отчёта на английском языке. И всё это удовольствие стоит 1800$.

Я сказал: Дайте два!

Итак, дальше я расскажу, как готовился и сдавал увлекательный экзамен на международный сертификат в области тестирования на проникновение Offensive Security Certified Expert, или сокращённо OSCE, от Offensive Security.

У этой организации есть ещё несколько сертификаций, но Expert предполагает подтверждение экспертных знаний сразу в нескольких областях: атаки на веб-приложения, атаки на сетевом уровне, фаззинг и разработка эксплойтов под Windows x86. Несмотря на то, что курс часто критикуют за устаревший подход, азы эксплуатации не изменились, и в итоге можно многому научиться:

  1. находить и эксплуатировать веб-уязвимости, например, XSS или Path Traversal, с развитием до полной компрометации операционной системы;
  2. проводить сетевые атаки GRE Sniffing, SNMP, обходить Access Lists, используя Spoofed SNMP Requests;
  3. находить с помощью фаззинга места переполнения (buffer overflow) и использовать их для входа в программу, обходить механизмы защиты (stack overflow, bypassing ASLR, egghunter, bad characters и т. п.), а также обходить статические механизмы защиты антивируса.

Что за зверь OSCE: разбираем на примере


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

Решение


  1. Сначала разбираем протокол на сетевом уровне: необходимо проанализировать его составляющие и выделить все места, которые имеет смысл модифицировать. Потом пишем фаззер, который будет подставлять различные значения во все эти места и пытаться выслать их серверу.
  2. Спустя время определённый строковый буфер с определёнными символом и (или) длиной вызовет stack overflow, а это нарушит работу программы и приведёт к её критическому завершению.
  3. Дальше с помощью этого буфера следует разместить payload (полезную нагрузку) в виде ассемблерных команд в бинарном виде, но не просто разместить команды в стеке, а перехватить управление регистром EIP. Для этого можно либо просто найти корректное смешение в буфере, либо попытаться вызвать исключение SEH.
  4. После перехвата управление EIP необходимо передать на последовательность своих команд. Сложность тут в том, что данные в памяти располагаются каждый раз по новому адресу. Поэтому следует найти в оперативной памяти такой участок статичного адреса, который будет ссылаться на регистр, а тот в свою очередь на адрес в памяти (с возможностью записи и выполнения), где можно будет также расположить свои данные.

Кажется, что осталось только разметить шелл-код, и всё очень просто. Но бывает так, что сначала нужно обойти механизм ASLR, если в памяти не удаётся найти статичный адрес, либо оказывается, что буфер в памяти ограничен алфавитом (разрешёнными символами), тогда необходимо собрать все допустимые символы и из них выстроить цепочку альтернативных команд. А если буфер ограничен длиной, то надо найти другое место в памяти программы, где дополнительно можно разместить данные, найти их в памяти и сделать переход на них (техника egghunter) или вообще написать свой шелл-код, который выполнит то, что вы хотите, в представленных ограничениях.

Также бывает, что эти дополнительно размещённые данные частично повреждаются, поэтому следует оценить повреждения и придумать, как обойти это ограничение. Например, убрать badchars, разбить свой шелл-код на цепочку и сделать цепочку вызовов. Всё это усложняется тем, что отладчик (ваш основной инструмент) может некорректно работать с выделением памяти и неправильно отображать данные в памяти во время отладки Bingo!

По сути, бинарная эксплуатация, да и пентест в целом это игра с обходом кучи ограничений, использование различных методик и применение смекалки. Решение подобной задачи может занять от 6 часов до бесконечности, поэтому 48 часов на 4 задачи не кажутся мне избыточными.

Как я сдавал экзамен


Мне удалось сдать OSCE со второй попытки. В первый раз это было в июне у меня не получилось нормально подготовиться к экзамену из-за загруженности на проектах, но как настоящий пентестер я решил сделать всё на лету. В итоге за 48 часов, 10 из которых ушло на сон, решил только 1,5 задачки.

В сентябре я принял волевое решение качественно со всем разобраться: изучить побольше тем, в том числе связанных с эксплуатацией (а это оказалась бесконечная дыра), проделать все лабораторные, пообщаться с другими экспертами, обдумать задачи с первой попытки сдать экзамен, подготовить различные скрипты для автоматизации.

В итоге вторая попытка была в ноябре: за 12 часов экзамена я выпил 7 стаканов чая, пару таблеток от головной боли, вкусно поужинал, прогулялся во дворе и все 4 задания были решены. Благо, они были похожи на те, что мне попались при первой попытке. После приятного сна ещё часов 5 ушло на формирование отчёта, а спустя сутки мне сказали, что экзамен успешно сдан и можно просить повышение зарплаты у руководства.

Обновление правил сертификации


В октябре 2020 года Offensive Security заявила, что планирует обновить курс OSCE. Уже сейчас эту сертификацию нельзя оплатить, а статус OSCE по новым правилам можно будет получить только по результатам сдачи трёх экзаменов:

  1. Advanced Web Attacks and Exploitation (AWAE)
  2. Evasion Techniques and Breaching Defenses (PEN-300)
  3. Windows User Mode Exploit Development (WUMED) будет анонсирован в 2021

Выходит, что я зря старался и теперь имею устаревший сертификат? А вот и нет, компания придерживается позиции Anyone who has earned an OSCE will always retain it, что означает Любой, кто получил OSCE, сохранит его навсегда. Наверное, многие за это и выбирают Offensive Security. Да, дорого, да, методички слабые, да, экзамен изматывает и содержит много подводных камней, но хоть раз что-то сдав, ты несёшь этот титул до конца своих дней! В отличие от кучи других сертификаций, где каждые 2-3 года придётся и дальше платить деньги за продление и новые экзамены.

FAQ


Что в итоге мне дала сертификация?


  • Самое главное я вышел из зоны комфорта и глубже познакомился с базой по бинарной эксплуатации. Даже мой опыт вирусного аналитика и сдача OSCP не дали такого толчка, позволяющего чувствовать себя комфортно при изучении очередного эксплойта.
  • Теперь не боюсь термина шелл-код и понимаю множество нюансов.
  • Научился самостоятельно эксплойтить, конечно, на уровне обхода средств защиты 2010-ых годов, но это только первый шаг.
  • Я эксперт, а чего добился ты?

Что дальше?


  • Вместе с командой буду использовать полученные знания на проектах по тестированию на проникновение: модификация эксплойтов, обход средств защиты.
  • Продолжу изучать уже актуальные техники.
  • Углублюсь в архитектуру операционных систем.
  • Буду получать новые полезные и красивые бумажки.

Стал бы я сдавать экзамен за свой счёт?


Наша компания уделяет большое внимание развитию hard и soft скиллов команды, поэтому мне удалось пройти сертификацию за счёт работодателя. В противном случае, пожалуй, я бы решился на такой челлендж только ради самого сертификата. Для получения только знаний (и экономии личных финансов) разумнее было бы изучить утёкшие материалы и блоги других пентестеров на medium.com, воссоздать и пройти стенд, а также обратить внимание на другие курсы, например, SLAE.

Буду ли я дальше сдавать экзамены Offensive Security?


Конечно, меня в целом устраивает подход try harder, и интересны их новые курсы, а всё остальное можно пережить.

P. S. Спасибо коллегам и моей девушке, которые поддерживали меня!
Источник: habr.com
К списку статей
Опубликовано: 21.12.2020 12:20:35
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании инфосистемы джет

Информационная безопасность

Карьера в it-индустрии

Pentest

Osce

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru