Offensive Security Certified Professional

Полгода минуло с момента получения мной звания Offensive Security Wireless Professional. Нужно было идти дальше и направление было совершенно очевидно. Сегодня я получил очередное приятное письмо, которое начинается следующим образом:

«Dear Dmitry,

We are happy to inform you that you have successfully completed the Penetration Testing with Kali Linux certification exam and have obtained your Offensive Security Certified Professional (OSCP) certification.»

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

Итак, посмотрим, что же собой являет курс Penetration Testing with Kali Linux (PWK), завершающийся сертификацией под названием Offensive Security Certified Professional.

Бэкграунд

Для начала поговорим о бэкграунде. Я самообразованный ИБ-шник, чуть более полутора лет проработавший в отделе защиты информации Центрального Банка России. Там я был неким сисадмином-безопасником, которому и сервера приходилось конфигурить и, время от времени, операционки админить. Это помимо всего прочего.

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

Конечно, я перечитал кучу райтапов людей, прошедших данное испытание. Многие из них рекомендуют браться за PWK буквально «каждому, кто интересуется практической информационной безопасностью». Давайте спросим осуждающего кота, согласен ли он с этими людьми.

Спасибо, осуждающий кот. Я с тобой полностью солидарен. Послать людей с околонулевым бэкграундом за OSCP — это совершенно некрасиво. Да, человек, что-то понимающий в программировании и операционных системах, скорее всего, сможет осилить нехитрый обучающий курс, который прилагается к сертификации. О нём мы поговорим подробно в соответствующем разделе. Если вы хотите получить представление о техниках, которые описаны в гайдах PWK, то скачайте эти гайды и почитайте их самостоятельно. Не поймёте — попросите кого-нибудь помочь с этим.

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

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

Ну а если Вы всё же считаете, что это именно то, что Вам нужно, то перечислю вкратце, о чём следует быть осведомлённым, прежде чем попасть в лабу:

  • Основы администрирования ОС. И Linux и Windows. В лабе не отдаётся предпочтений ни одному из семейств операционок, оба представлены в равной степени. Следует понимать, как посмотреть открытые порты и процессы, их занявшие; как быстро отключить файрволл; как добавить пользователя и наделить его администраторскими полномочиями. И всякое такое. Ах да — всё вышеперечисленное Вы должны уметь делать при помощи терминала. Забудьте про графический интерфейс, при ограниченном доступе на сервер это излишества и роскошь;
  • Понимание основ повышения привилегий в ОС. Не надейтесь на обучающие материалы, в них нет достаточных сведений для того, чтобы справиться даже с половиной машин из лаборатории. Курс серьёзным образом завязан на самоподготовке и чтобы ей не пришлось заниматься в оплаченное лабораторное время — начните заранее. Например, повесьте над кроватью данный читшит и гуглите все слова, которые на нём написаны;

  • Инструменты Kali Linux. Освойтесь с основными из них. Как минимум, топ-10. В гайде научат пользоваться специфическими для протокола или сервиса (типа onesixtyone или enum4linux), рекомендую по ходу дела искать более современные аналоги, которые остались за пределами гайдов (например, nullinux). Освойте searchsploit и его более крутые аналоги — getsploit и findsploit;
  • Bash и Powershell. Вам придётся повторять одни и те же операции много, много, много и много раз. Следует научиться их автоматизировать. Гипертрофированный пример — Vanquish. Можно не упарываться по автоматизации настолько (ну или использовать уже готовое решение), но всё же стоит научиться понимать, как избавиться от копипаста на постоянной основе. Банальный пример скрипта для полного сканирования всех адресов из файла, с записью результатов в каталог по каждой машине, с таймштампами;

  • Компиляция кода в Linux. Научитесь компилировать C при помощи gcc и иже с ним, научитесь решать проблемы, возникающие по ходу этого нелёгкого, временами, дела. Если нижеприведённая команда Вам ни о чём не говорит, то стоит разобраться в этом вопросе до того, как лаборатория грубой силой заставит Вас сделать это.

Стоит ли говорить, что для компиляции некоторых эксплоитов придётся выкачать из глубин интернета античные образы целевых операционных систем?

  • Знание основ взаимодействия с сервисами. Проверьте, способны ли Вы скачать файл при помощи терминального подключения по FTP; способны ли проверить письма в почтовом ящике пользователя через telnet-подключение по протоколу POP3; способны ли зайти из терминала Linux на SMB-шару Windows-сервера. Не надейтесь на графический интерфейс в данных ситуациях, его не будет;
  • Metasploit и meterpreter. Да, на экзамене есть ограничения на применение Metasploit, но курс предполагает, что Вы будете использовать его в лабе и научитесь им пользоваться. Не нужно избегать применения Metasploit. Конечно, в равных ситуациях лучше использовать публичный эксплоит, написанный на C или Python, отредактировав его вручную, а не пробивать машину подходящим модулем MSF (зачастую машины настроены так, чтобы MSF не отработал, но всё же достаточное число машин можно пробить как с применением так и без применения Metasploit), но ловить шелл по возможности лучше при помощи handler’а и изучать обширные возможности meterpreter (hashdump, portfwd и т.д.). Было бы полезно освоить это заранее. В идеале также воспроизводить эксплуатацию как полностью в MSF, так и полностью без него, но на это уйдёт огромное количество времени;
  • Чтение и редактирование кода на Python и C. Придётся разбираться с кучей проблем. Многие эксплоиты недостаточно просто направить на свой IP-адрес и ждать с ведром у сокета, пока польются шеллы. Некоторые эксплоиты устарели и требуют изменений в коде просто от старости. Некоторые машины сконфигурированы так, чтобы их не пробивали публичные эксплоиты без необходимости вникнуть в код и понять причину фейла. В общем, подбор и ковыряние эксплоитов станет обыденностью и лучше бы это прошло максимально безболезненно;
  • Pivoting. Netcat, ncat, socat и прочие породы сетевых кошек. Нужно научиться пивотиться, пробрасывать порты и вот это вот всё. Рекомендую употребить данный гайд.

Материалы

Материалы по курсу представляют собой PDF-ный учебник и видео. Учебник интересно читается, даже если хорошо знаешь, о чём идёт речь. Видео практически полностью повторяет основное содержание учебника, делая это очень понятно и наглядно. Учебник содержит внушительный список упражнений, которые лично мне показались довольно скучными (например, проведите DNS zone transfer по отношению к такому-то домену; напишите bash-скрипт, который пингует все машины из файла и т.п.).

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

Особое внимание стоит уделить разделу с переполнениями. Даже если Ваш бэкграунд содержит эксплуатацию бинарных уязвимостей. Если же нет — стоит читать втрое внимательней. Убедитесь, что отработали процесс эксплуатации примитивного переполнения до полуавтоматизма. Убедитесь, что понимаете все этапы и не забудете в ответственный момент очистить полезную нагрузку от 0x00, 0x0a, 0x09 и им подобных.

В целом, порекомендовал бы не повторять мою ошибку и не оставлять упражнения на конец курса. В ходе работы в лаборатории всё время будет не до них — то тут, то там нужно проверить зацепки по уже снящимся в кошмарах серверам, а потратить несколько часов на простые упражнения кажется расточительством. Так что если бы я начал этот процесс с самого начала — первым делом выполнил бы все упражнения. Курс выстроен так, что в ходе их выполнения Вы уже сломаете пару машин из лаборатории и настроите (и, если требуется, освоите) основной инструментарий. Что касается видео и учебника — я шёл по ним параллельно. Местами они совпадают чуть ли не слово в слово, местами учебник дополняет тему из видео. Так что лучше держать их открытыми и листать учебник по ходу продвижения по видеокурсу.

Железо

Ничего особенного тут не потребуется. В отличие от OSWP, в данном курсе всё лежит на плечах Offensive Security. Вам потребуется только хостить у себя 32-битную виртуалку Kali, которую сами же OffSec’и и предоставят.

Неплохо было бы располагать видеокартой, при помощи которой hashcat мог бы быстро брутить хэши. Хэшей в лаборатории будет очень, очень много.

Лаборатория

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

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

Ни в коем случае не рекомендую 30 дней. Нет, не стоит. Абсолютный минимум — это 60. Более того, даже после успешной сдачи экзамена, у меня там остались дела и я намерен их завершить.

Несколько заметок исключительно по тому, как это всё работает:

  • Иногда правильного ответа нет. Да, все машины в лаборатории можно взломать, но не все — прямо сейчас. Смиритесь с этим. Порой для компрометации машины нужна какая-то частичка информации, которую Вы упустили на другом хосте или ещё не имели шанса раздобыть. Такая амбивалентность временами серьёзно угнетает;
  • Иногда правильного ответа всё ещё нет. И не потому что Вы чего-то не знаете или делаете что-то не так. Просто другой студент своими действиями привёл машину в состояние, не позволяющее Вам провести эксплуатацию даже в случае, если Вы уже разобрались с машиной до этого и знаете, как это делается. Не забывайте, что Вы не единственный в лаборатории и откатывайте машины в исходное состояние, если уже многое попробовали, а результата всё ещё нет;
  • Не довольствуйтесь одним только добытым флагом. Не стоит забывать про постэксплуатацию и обрывать бэкконнект едва раздобыв заветный хэш — на некоторых машинах запрятана уйма информации. Что-то из этого — пустая трата места на диске, а что-то позволит Вам получить ограниченный шелл на том сервере, к которому уже пять дней не получается подобрать подходящий эксплоит;
  • Несмотря на то, что я написал ранее про терминальный доступ — научитесь добывать графический доступ к машинам на Windows, если на момент эксплуатации его у Вас нет. Иногда информацию на поломанной машине можно извлечь только запустив графический интерфейс какой-либо программки;
  • Некоторые машины можно захватить более чем одним способом. Держите это в голове, когда эксплоит, который подходит по всем параметрам, не отрабатывает;
  • Делайте скриншоты сразу. На сайте Offensive Security найдите раздел по оформлению отчёта о взломе лабораторных хостов. На скрине Вы должны продемонстрировать не только файл, содержащий флаг-индикатор компрометации машины, но и вывод команды ipconfig/ifconfig. Обидно потратить в конце курса несколько часов на повторный сбор флагов с десятков хостов только потому что вовремя не прочитали гайд по оформлению;
  • Заполняйте отчёт по ходу дела. Описание свежевыполненной эксплуатации даётся проще и позволяет структурировать мысли, которые всё ещё спутаны после увиденного в терминале uid=0(root) gid=0(root). Описывать пробивы в конце двух-, а то и трёхмесячного пребывания в лаборатории — такое себе удовольствие;
  • Не зазнавайтесь, даже если всё получается очень легко. История знает людей, которые за несколько месяцев получали полный доступ к каждому хосту в лаборатории и всё равно несколько раз пересдавали экзамен (некоторые ещё год не могли пройти сертификацию). Помните, что у Offensive Security более 30 тысяч таких, как Вы, они умеют сбивать даже самую высоко летящую самооценку.

Экзамен

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

Итого

PWK — нечто невероятное. Когда ты находишься на одной волне с целями и задачами курса, он является сплошным потоком удовольствия и бесценного опыта. В конечном итоге забываются многочасовые тупняки, а остаются только моменты, когда злосчастная машина наконец-то показала NT AUTHORITY\SYSTEM. Для меня это турне ещё не закончилось, в скором времени я намерен вернуться в лабораторию (кажется, это возможно даже после получения сертификата) и свести счёты с несколькими уже близко знакомыми машинами.

Ну а дальше — естественно OSCE.

Offensive Security Certified Professional: 5 комментариев

  1. Как жаль, что я не наткнулся на эту статью раньше… сижу и повторно ломаю машины, чтобы сделать скрины с ifconfig’ом… и упражнения не задокументированы у меня. Эх…
    Спасибо за пост!

  2. Здравствуйте ! Спасибо за статью. Возник вопрос — почему именно 32х битная кали ? 64х битная имеет ряд ограничений и с ее использованием прохождение некоторых лаб будет затруднительно ? В чем разница между ними для достижения основной цели ?
    Спасибо

    1. Добрый день. В моём понимании, 32-битная система используется по единственной причине — одно из упражнений курса, а именно бинарное переполнение в Linux, выполняется прямо на учебном образе Kali (чтобы не задействовать ради одного упражнения ещё один лишний дистрибутив). Соответственно, для простоты примера система должна быть 32-битной. Помимо этого, я не заметил никаких ограничений, связанных именно с 32-битностью ОС. Ничто не помешает подключиться со своей ОС, однако Offensive Security гарантируют возможность прохождения курса только на предоставленном образе и только в случае, если его не будут обновлять.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *