Онлайн-практикум для освоения инструментов тестирования на проникновение
Выполните все задания и научитесь работать
с уязвимостями систем так, чтобы
обезопасить себя и компанию в
современном высокотехнологичном мире!
Проходите, когда вам удобно
актуальных вакансий специалистов по безопасности на hh.ru требуют навык проведения тестирования на проникновение и анализа инцидентов
телефонных номеров было заблокировано ФинЦЕРТ из-за попытки использования украденных персональных данных за 2020 год
выросла доля шпионского ПО за 2020 год
Вы своими руками сможете
проводить атаки и защищаться
от них в реальном времени
если есть вопрос по заданию, спросите у
авторов практикума и экспертов в закрытом
чате Telegram
быстрая проверка заданий инженерами,
максимальное время проверки – 24 часа
живые мастер-классы от
действующих специалистов
поэтапно проходите более 45 заданий,
к каждому прилагаются необходимые
материалы для его выполнения
и действующими
специалистами в
облачной архитектуре
решите реальную задачу в рамках
облачной инфраструктуры Amazon
реальные кейсы атак
на инфраструктуру
В предыдущем задании Вы познакомились с основами проведения разведки (Reconnaissance), сбором информации о цели из открытых источников и использованием онлайн сканеров. Сегодня Вы познакомитесь с основами сканирования хостов, различными типами сканирования и получения информации от сетевых сервисов целевой организации.
Однако, здесь потребуется еще одно небольшое пояснение, так как некоторым может показаться, что идентификация работающих в сети машин — задача слишком простая и не требует отдельного внимания, достаточно запустить сетевой сканер, и работающие в данный момент хосты будут обнаружены. На самом деле в локальных сетях достаточно часто используется фильтрация сетевого трафика и межсетевое экранирование, в результате далеко не каждый сетевой сканер обнаружит все работающие в данный момент узлы. Без тонкой настройки средств сканирования эти узлы так и останутся «невидимыми». О способах такой доработки и пойдет речь далее.
Для идентификации активных узлов в локальной сети можно использовать различные протоколы сетевого и транспортного уровня, такие как ICMP, TCP и UDP.
Сетевая модель — теоретическое описание принципов работы набора сетевых протоколов, взаимодействующих друг с другом. Модель обычно делится на уровни так, чтобы протоколы вышестоящего уровня использовали бы протоколы нижестоящего уровня (точнее, данные протокола вышестоящего уровня передавались бы с помощью нижележащих протоколов — этот процесс называют инкапсуляцией, процесс извлечения данных вышестоящего уровня из данных нижестоящего — декапсуляцией). Модели бывают как практические (использующиеся в сетях, иногда запутанные и/или не полные, но решающие поставленные задачи), так и теоретические (показывающие принципы реализации сетевых моделей, приносящие в жертву наглядности производительность/возможности).
Наиболее известные сетевые модели:
Модель OSI, она же Модель ВОС, Взаимосвязь открытых систем. Эталонная модель. — теоретическая модель, описанная в международных стандартах и ГОСТах.
Модель Department of Defense (DOD) (Модель TCP/IP) — практически используемая модель, принятая для работы в Интернете.
Далее следует разбор указанных выше моделей и основных используемых протоколов.
Теперь давайте разберем основные инструменты исследования сети.
Протокол ICMP служит для выявления проблем, связанных с сетевым уровнем. Как правило, в локальных сетях его не блокируют, так как он часто используется самими администраторами для поиска неполадок в сети (это не всегда так, см. далее). Благодаря этому с помощью ICMP можно производить исследование работающих в сети сервисов.
Сообщения ICMP передаются в виде IP-датаграмм, то есть к ним прибавляется заголовок IP. Подробнее протокол передачи команд и сообщений об ошибках описан здесь.
Все типы сообщений ICMP можно условно поделить на 2 группы:
Наилучшим методом определения доступности узла является посылка сообщения ICMP Echo Request (Type 8). Если система работает и отсутствует фильтрация трафика данного типа, то в ответ придет сообщение ICMP Echo Reply (Type 0). Идентификация (обнаружение) сетевых устройств с помощью протокола ICMP может быть выполнена двумя способами:
В основу идентификации заложен следующий принцип. Узел, отправляющий ICMP-запрос, устанавливает значения полей Identifier, эти значения позволяют определить ответы, пришедшие от разных узлов. А для того чтобы отличить несколько ответов, пришедших от одного узла, используется поле Sequence Number. В поле Code записывается ноль, поле данных произвольно (например, алфавит). Отвечающая сторона должна заменить значение поля Type на 0 и отправить датаграмму обратно. Для выполнения обнаружения узла обычно используется утилита ping, входящая в состав большинства ОС. в качестве параметра ping указывается IP/имя хоста(ов), в результате будет получен ответ удаленной системы. Однако у нее есть существенный недостаток — все узлы опрашиваются последовательно, что существенно увеличивает продолжительность опроса.
Обращение сразу к нескольким узлам (диапазону адресов) с использованием ICMP-запросов (Echo) называется ICMP Sweep, или Ping Sweep. Для исследования большой сети потребуется утилита, способная посылать ICMP-запросы параллельно. Однако, говоря о Ping Sweep, стоит отметить, что из-за параллельной отправки множества ICMP-запросов системы обнаружения атак легко определят такое сканирование.
Рассмотрим несколько из них в качестве примера.
Утилита fping позволяет производить исследование сети при помощи протокола ICMP, также возможен параллельный опрос сразу нескольких узлов, список которых может быть задан непосредственно пользователем или получен из файла.
Синтаксис:
fping [опции ] [узлы... ]
Список наиболее используемых опций:
Пример:
Сканирование сети 192.168.1.0/24
Сканирование сети класса С можно осуществить с помощью задания маски fping -g 192.168.1.0/24
а можно с помощью задания диапазона сканируемых адресов:
fping -g 192.168.1.1 192.168.1.254
Также с помощью данной утилиты можно осуществить сканирование с использованием посылки одного пакета:
fping -g 192.168.1.1 192.168.1.254 -c 1 > alive-hosts
Такой способ сканирования менее заметен для систем обнаружения вторжений и анализаторов трафика.
Метод Ping-разведки является наиболее универсальным методом обнаружения сетевых узлов, однако по ряду причин данный метод может оказаться неэффективным. Например, в случае, когда обследуемая сеть защищена межсетевыми экранами, блокирующими ICMP-сообщения, или если пользователи защищены персональными межсетевыми экранами.
Кроме Ping-разведки существуют другие методы получения списка сетевых узлов. Рассмотрим некоторые из них более подробно.
Для поиска живых хостов, сканирования портов и идентификации версий ОС и сервисов можно использовать утилиту nmap.
Пример. Сканирование сети 192.168.1.0/24 на наличие живых хостов будет выглядеть:
nmap -sn 192.168.1.1-254 или же nmap -sn 192.168.1.0/24
Ключ -sn указывает nmap не сканировать какие-либо порты, заставляя его полагаться в первую очередь на пакеты ICMP Echo (или запросы ARP в локальной сети, если nmap запущен с помощью sudo или напрямую от имени пользователя root) для определения доступности хостов. В дополнение к эхо-запросам ICMP, ключ -sn также заставит nmap отправить TCP SYN-пакет на 443-й порт цели, а также пакет TCP ACK (или TCP SYN, если запускается не от имени root) на 80-й порт цели.
Ниже приведена таблица дополнительных параметров, которые помогут провести сканирование намного эффективнее. Эта таблица содержит не все возможные параметры, а только самые основные. Более подробную информацию можно получить в документации к данной утилите.
Далее следует таблица с описанием различных вариантов сканирования сети и разбор других подходов к сканированию сети...
Данный метод позволяет обнаружить и получить информацию об устройствах, работающих по протоколу CDP (Cisco Discovery Protocol — протокол обнаружения Cisco) и находящихся в одном сетевом сегменте. Информацию о CDP-узлах можно получать, непосредственно подключаясь к консоли активного сетевого устройства производства фирмы Cisco Systems, либо перехватывая CDP-объявления (например, с использованием утилиты cdpr от MonkeyMental.com).
Данный метод заключается в перехвате сетевых пакетов из некоторого сетевого сегмента и в последующем анализе используемых IP-адресов. Для реализации данного метода можно использовать утилиту Wireshark
Собственно, набор средств защиты от сканирования сети не слишком обширен. Это фильтрация трафика и использование систем обнаружения вторжений. Фильтрация трафика основывается на запрете всех протоколов, которые не используются для работы легальных служб и приложений. Это относится прежде всего к UDP-пакетам для экзотических приложений. Вряд ли в пользовательских сегментах на компьютерах пользователей применяются Syslog или SNMP. поэтому такой трафик можно отфильтровывать, оставив лишь DNS.
Что касается систем обнаружения вторжений, то лучше всего протестировать на практике те программы, которые приводятся в разделе, и настроить свои IDS на обнаружение сканирования.
В прошлом задании вы узнали об основных видах WEB уязвимостей, познакомились с OWASP Top 10, научились основам работы с Burp Suite. Пришло время приходить к практике! В данном задании вы подробно узнаете о том, что такое SQL инъекции, какие они бывают, как и где их искать, а также как их эксплуатировать.
Для тех, кто не очень хорошо знаком с данной технологией, SQL (Structured Query Language) - язык структурированных запросов, позволяющий управлять данными в реляционных базах данных. Для управления базами данных используются системы управления базами данных(СУБД). Наиболее популярными СУБД являются:
Базы данных используются для эффективного хранения данных, и SQL как раз используется для их управления.
Данные в реляционных БД хранятся в объектах, которые представляют собой таблицы. Каждая таблица состоит из полей, а поле - это колонка таблицы, предназначенная для хранения информации о записи в таблице. Пример:
Таблица Users
user_id | user_login | user_pass | user_name | user_surname | user_role |
---|---|---|---|---|---|
1 | admin | admin | Ivan | Dorn | 1 |
2 | user1 | pass1 | Petr | Pankov | 2 |
3 | user2 | pass2 | Irina | Chernova | 2 |
Таблица Roles
role_id | role_name |
---|---|
1 | administrator |
2 | subscriber |
Так, у нас есть 2 таблицы Users и Roles. Как видно, таблица Users содержит информацию о пользователях, в ней есть поля user_id, user_login, user_pass, user_name, user_role. Причем поле user_role ссылается на таблицу Roles. Так будет выглядеть команда на SQL для создания этих двух таблиц в MySQL.
Для извлечения данных из БД используется оператор SELECT. Например, чтобы получить всю информацию из таблицы users, необходимо выполнить следующую команду
SQL запросы должны заканчиваться ; , комментарии в разных СУБД обозначают разные символы. Практически везде -- обозначает строчный комментарий. Знак * указывает, что мы хотим получить все поля из таблицы. Но мы можем задать только определенные поля для получения.
Также можно задавать условия для выборки, например
С помощью оператора UNION можно объеденить результат двух запросов. Например:
выведет
user_id | user_login | user_pass | user_name | user_surname | user_role |
---|---|---|---|---|---|
1 | admin | admin | Ivan | Dorn | 1 |
2 | user1 | pass1 | Petr | Pankov | 2 |
Необходимо, чтобы количество полей, которые возвращают запросы, совпадало, иначе произойдет ошибка.
SQL инъекция - очень часто встречаемая уязвимость веб приложений, возникающая по причине недостаточной фильтрации пользовательского ввода, используемого в SQL запросах. С помощью подачи специально сформированных данных, мы можем выбраться из оригинального запроса, созданного разработчиками и выполнить собственные.
SQL инъекции - достаточно серьезная уязвимость, которая может привести к утечке конфиденциальных данных, а в некоторых случаях и к полной компрометации системы.
Разберем пример, как разработчики допускают подобные ошибки.
Например, в нашей базе данных хранится информация о продуктах в магазине, и наше приложение должно осуществлять поиск товаров и вывод информации о них.
Пример таблицы Products
product_id | product_name | product_price | product_count |
---|---|---|---|
1 | apple | 60 | 100 |
2 | banana | 55 | 92 |
3 | oranges | 70 | 84 |
Для реализации данной функции, разработчик при получении GET запроса /search?name=<искомое имя> должен выполнить запрос к базе данных и вернуть его результат. Для этого разработчик пишет следующий код на псевдоязыке:
Оператор LIKE позволяет осуществлять поиск по маске, данный запрос вернет все строки, в которых поле name содержит product_name
Таким образом, если не фильтровать пользовательские данные, злоумышленник может отправить следующий запрос
Тогда, при подставлении получится следующий запрос
То есть мы изменили саму структуру запроса, который написал программист и можем получить практически любые доступные данные из БД. О том, как эксплуатировать данную уязвимость, расскажем дальше.
Для того, чтобы обнаружить SQL инъекцию, необходимо понять, где происходит запрос к базе данных и как мы можем на него повлиять. Интуитивно понятно, что наверняка обращения к БД происходят при авторизации, получении списка постов, продуктов, билетов, сохранении пользовательских данных и так далее, список можно продолжать бесконечно. Теперь появляется вопрос, как обнаружить, существует ли в данном месте уязвимость или нет. Для этого необходимо использовать технику фазинга, то есть подавать на вход такие данные, которые сервер не ожидает увидеть и анализировать нестандартное поведение сервера на запрос. Например, сервер может выдать SQL ошибку, время ответа может увеличиться, сайт может начать тормозить и так далее. Для фазинга потенциальной SQL инъекции используются специальные словари, содержащие команды SQL для разных СУБД. Примеры подобных словарей вы можете найти в полезных ссылках
Существует 3 типа SQLi
**In-Band SQLi **
Стандартный и легко эксплуатируемый тип SQLi. Характеризуются тем, что для извлечения данных, атакующий использует тот же канал, что и для взаимодействия.
У данного типа существует 2 подтипа
Blind SQLi
Более сложный для эксплуатации тип SQLi, отличетсся от In-Band тем, что атакующий не видит никаких ошибок и не может увидеть вывод SQL запроса. Таким образом, для эксплуатации уязвимости необходимо анализировать ответы сервера и пытаться восстановить структуру базы данных. Хоть эксплуатация Blind SQLi и более сложна, занимает значительно больше времени, ее критичность не ниже чем у In-Band SQLi.
Есть 2 подтипа Blind SQLi
Out-of-band SQLi
Наиболее редко встречаемый тип SQLi, так как может сработать только при определенных настройках сервера. Смысл данной техники заключается в выполнении с помощью SQL команды HTTP или DNS запроса на внешний сервер и выкачивания информации с помощью этих запросов.
Вы узнали, что такое SQL, что такое SQLi, какие типы бывают. Теперь научимся их экспуатировать.
Вернемся к нашему примеру. Допустим, у нас есть еще одна таблица Users
user_id | user_login | user_pass |
---|---|---|
1 | admin | super_secret_uncracked_password |
2 | user | UllNeverGetMyP@ss!!11 |
Рассматриваем данную ситуации с точки зрения атакующего. Мы не знаем, какой запрос к БД выполняется на сервере, не знаем структуру таблиц и их названия, но исходя из логики работы приложения мы можем предположить, что существует таблица с информацией о продуктах и сущесвует таблица, в которой хранятся пользовательские данные.
Мы обнаружили, что при подставлении ' в запрос /search?name=<параметр>, сервер возвращает ошибку Invalid SQL syntax. Нам необходимо вытащить пользовательские данные.
Из того что при отправке ', нарушается синтаксис SQL, можно предположить появление незакрытой пары ' в SQL запросе. В данном случем у нас UNION-based SQLi, так как с помощью оператора UNION, мы можем добавить результат любого другого запроса к нашему выводу. Для того, чтобы правильно применить оператор UNION, нам нужно знать следующее:
Для определения числа столбцов можно пользоваться следующими методами
В обоих случаях смысл заключается в подборе такого параметров во втором запросе, чтобы оно совпало с первым и не возникла ошибка. В ручную это удобно делать с помощью Burp Suite Intruder. В нашем случае в таблице Products 4 колонки и следующие запросы не выдадут ошибку команды UNION:
Определив количество столбцов в запросе, мы можем извлечь имена таблиц. В каждой СУБД есть стандартные служебные таблицы, содержащие информацию о существующих базах данных. Например, в MySQL в БД INFORMATION_SCHEMA есть таблица Tables, которая содержит информацию о всех таблицах в БД. Таким образом, мы можем сделать второй запрос к INFORMATION_SCHEMA.TABLES и получить имена таблиц.
Зачастую сервер возвращает пользователю не все данные, полученные из БД. Например, сервер может возвращать только названия продуктов. В таком случае нужно менять номер колонки, в которой возвращаются запрашиваемые данные.
Информацию о колонках таблицы можно также получить из стандартных таблиц. Например,
Если сейчас вам кажется это очень сложным, то не переживайте, в задании вам предстоит самостоятельно проэксплуатировать UNION-based SQLi и вы поймете, что ничего в этом сложного нет.
Тему Blind SQLi и автоматического поиска и эксплуатации SQLi мы затронем в следующем задании
Не секрет, что современные системы могут быть очень сложными и сильно распределёнными. При общении компонентов инфраструктуры между собой бинарные данные уже могут быть не идеальным вариантом. Здесь на помощь приходит сериализация и десериализация.
Сериализация - процесс перевода структуры данных в последовательность байтов(как правило в строку). Обратной операцией сериализации является десериализация - создание структуры данных из битовой последовательности.
Сериализация зачастую используется в архитектурах, которые используют API, микросервисы и архитектурах типа MVC. Когда данные, которые сериализуются и десериализуются, являются доверенными(находятся под полным контролем веб-приложения), вероятность риска минимальна.
Как только данные, которые подвергаются сериализации и десериализации, могут быть модифицированы пользователем, как правило возникает уязвимость небезопасной десериализации. Уязвимость возникакет в тот момент, когда происходит операция восстановления данных из сериализованного вида(строки). Чаще всего, данная уязвимость приводит к исполнению кода на целевой системе.
Программисты при написании веб-приложений могут думать, что вводя дополнительные проверки на десериализованные данные, они могут обезопасить себя от данного типа атаки и свободно десериализовать вводные данные пользователей.
Но это суждение в корне не верно, т.к. зачастую исполнение кода во время данного типа атаки возникает ещё до того, как проверки начинают свою работу ещё до того, как код злоумышленника уже исполнен в системе.
Также из-за огромного количества зависимостей в веб-приложении бывает достаточно сложно понять какой именно вредоносный код запустил атакующий, т.к. это может быть целая череда из множества вызовов различных библиотек.
Самым важным стоит понять одно - никогда нельзя десериализовать данные, над которыми обычные пользователи имеют контроль.
В отличие от других уязвимостей, достаточно сложно обнаружить уязвимости данного типа без знания кода приложения. В режиме "чёрного ящика" достаточно сложно понять, какие именно из данных будут десериализованы в дальнейшем. Но даже если тестирование происходит "вслепую", можно попробовать догадаться, какие из входных данных выглядят как сериализованные и попровать их протестировать.
Давайте рассмотрим несколько примеров из различных языков программирования.
PHP достаточно прочно закрепился в лидерах языков разработки веб-приложений, хоть уже и по-тихоньку начинает устаревать. В данном языке программирования используется наиболее "читаемый" формат сериализованных данных. Предположим, у нас существует объект Book со следующими атрибутами:
Сериализованные данные будут выглядеть следующим образом:
Расшифровывается данная запись достаточно просто:
Стандартные методы PHP работающие с данным функционалом называются serialize() и unserialize(). Если есть доступ к исходному коду, то первым делом нужно искать именно метод unserialize().
Давайте представим, что некоторое веб-приложение для отображения необходимого функционала пользователю опирается на его cookie. В качестве cookie хранится сериализованный объект User под Base64, в котором находятся основные поля, открывающие пользователю доступ к тем или иным полям:
Код, разбирающий данный тип cookie:
Всё, что необходимо сделать атакующему в данном случае для получения административного доступа к приложению это снять Base64 с cookie, изменить значение поля is_admin в True и, навесив Base64 на получившуюся строку, подставить в свой запрос к веб-приложению.
Подобные уязвимости называются манипуляцией атрибутов объекта, что даёт атакующему возможность измененять критические параметры различных объектов и управлять ходом веб-приложения в своих интересах.
Ещё один интересный трюк, связанный с десериализацией в PHP связан с подстановкой неправильных типов данных. Такие уязвимости чаще всего возникают, когда в критически важных местах, вместо типизированного сравнения === разработчик использует обычное ==.
Работает в данном языке программирования это следующим образом - выражение 5 == 5 очевидно вернёт true. Но при этом выражение 5 == "5" также вернёт true. Работает это потому, что интерпретатор пытается конвертировать строку "5" в число, начиная с начала строки. Таким образом, выражение 5 == "5 и ещё какая-то странное продолжение строки" также будет равняться true. Самое забавное то, что выражение 0 == "строка без цифр" также будет равняться true, т.к. интерпретатор считает, что раз цифр нет, то "строка без цифр"равняется числу 0.
Таким образом, допустим, приложение сверяет введённый пароль следующим образом:
То атакующий может изменить вводимые данные так, что в поле password будет содержаться число 0. Это означает, что для любого пользователя можно обойти аутентификацию и продолжить свою работу в веб-приложении от него.
Самый интересный сценарий, это определять магические методы для объекта. Магические методы (magic methods) - специальные методы, которые переопределяют действие PHP по умолчанию, когда над объектом выполняются определённые действия. Самым простым примером в PHP будет __construct() - метод, который выполняется при инициализации объекта класса (конструктор). Данный метод переопределяется разработчиками для первоначальной инициализации атрибутов объекта. Если у атакующего появляется возможность переопределять магические методы для объекта, то можно переопределить метод __wakeup(), который ищет функция unserialize(), и записать в него любой код, который может нести за собой критические последствия на системе. Данный сценарий открывает огромную дверь в мир куда более сложных эксплойтов.
В целом, при смене языка программирования не меняются подходы к эксплуатации небезопасной десериализации - меняются лишь названия функций и некоторые нюансы. Например, в Python стандартным средством для сериализации и десериализации объектов является библиотека pickle. Соответственно первым делом, имея перед собой код приложения стоит поискать использование данной библиотеки и её метода picke.loads(). Также в Python достаточно популярны такие методы сериализации данных как JSON и YAML. Для них в коде нужно искать yaml.load() и json.loads() соответственно.
Главным отличием здесь будет то, какой именно будет выходная строка после сериализации. Например, при сериализации объекта simple мы получим следующие результаты:
Также как и в PHP, при нахождении критических данных в сериализованном виде, которые атакующий может контролировать и изменять, можно начинать тестировать веб-приложение на проверку входных данных.
Как и в PHP, для Python объектов можно переопределять магические методы, которые будут вызываться на стадии десериализации объектов. Например, для pickle магический метод класса называется __reduce__(self). Этот метод возвращает строку или кортеж и не принимает никаких аргументов, что позволяет атакующему подставить в десериализатор что-то на подобие:
Далее данная строка подаётся на вход веб-приложению, которое отправляет её в функцию pickle.loads() и в момент десериализации выполнится системная функция whoami.
Для YAML формата есть специальный метод yaml.safe_load(), который считается безопасным. При нахождении обычного метода yaml.load() можно использовать следующую нагрузку:
Веб-приложения на Java также подвержены данной уязвимости. Стандартный интерфейс для работы с сериализацией в Java называется java.io.Serializable. Для сериализации и десериализации используются методы writeObject() и readObject() соответственно.
Как правило, сериализованные данные в Java начинаются со строки AC ED 00 05 или rO0 под Base64. При этом же, если сериализованные данные будут отправлены в качестве параметров HTTP запроса, то заголовок Content-typeбудет выставлен в application/x-java-serialized-object. При поиске сериализованных данных в веб-приложениях на Java стоит учитывать, что сериализованный объект содержит множество спецсимволов, поэтому может быть закодирован различными способами, чтобы быть доставленным по протоколу HTTP.
Для того, чтобы перевести уязвимость Insecure Deserialization в Remote Code Execution, иногда не получается просто передать необходимый код на исполнение. Для этого создаются цепочки из гаджетов (относится не только к Java). Гаджет это машинные инструкции, которые уже присутствуют в оперативной памяти сервера(Более подробно рассмотрим в одном из следующих модулей). Для автоматизации генерации нагрузки в java существует инструмент ysoserial. Она использует известные цепочки гаджетов в популярных стандартных библиотеках Java. Генерация пейлоада может выглядеть следующим образом:
Для защиты от небезопасной десериализации может помочь только один совет - никогда не десериализуйте данные, которые могут контролировать обычные пользователи. Если же это необходимо, то данные стоит проверять ещё на стадии строки, а не после того, как объект был создан. Чтобы предотвратить данную уязвимость через куки, сохраняйте состоянии сессии на сервере, вместо того, чтобы полагаться на заголовки в пакетах пользователей.
Познакомиться с основами проведения аудита безопасности, его основными понятиями в рамках тестирования на проникновение
Научиться работать с уязвимостями различных систем и протоколов разного уровня OSI
Выяснить типы атак на системы и людей
Понять, что есть возможность предотвращения вышеуказанных атак
Разобрать известные уязвимости, которые нанесли глобальный урон
Развить профессиональные навыки, которые однозначно пригодятся в работе
По окончании практикума вам выдается электронный
именной сертификат, подтверждающий, что вы
успешно прошли все задания
Доступ к теоретической части практикума останется с вами навсегда
Вернем средства без объяснения причин
Доступ к теоретической части практикума останется с вами навсегда
Вернем средства без объяснения причин
В 2018 году мы провели 3 потока по системе 2-3 лекции в неделю + домашка. Со всех 3-х потоков мы собирали обратную связь, чтобы сделать практикум более эффективным и удобным для пользователей. И в каждом потоке мы видели, что ребятам недостаточно практики. Как дело доходит до ДЗ, сразу же возникает куча вопросов и непонятно, как выполнить задание. Тогда мы и пришли к тому, что двигаемся от практики, но подкрепляем это лекционным форматом. Поэтому ответ - Да, мы считаем наш формат практикума самым эффективным и подходящим для всех. Если вдруг формат вам не подойдет, в первые две недели вы можете полностью вернуть средства без объяснения причин.
При загрузке 4-6 часов в неделю вы пройдете все задания за 7 месяцев. Вы занимаетесь онлайн в удобное для вас время, без привязки к конкретной дате и получаете обратную связь кураторов по вашим заданиям в течение 24 часов. Смотреть теоретические видеоматериалы можно по очереди или все сразу.
Да, вы оплачиваете практикум полностью официально, с договором публичной оферты можно ознакомиться внизу страницы.
Мы предоставляем 2 рассрочки от банков-партнеров - Тинькофф и Альфа, у них идентичные условия: 0 рублей первоначальный взнос, ежемесячный платеж на 10 месяцев 3800 рублей (после окончания скидки – 6000 рублей), комиссий, штрафов и скрытых платежей нет. Все расходы на обслуживание мы берем на себя. Полностью внести остаток и закрыть рассрочку можно в любой момент, также без штрафов. Чтобы оформить рассрочку нажмите на кнопку «Рассрочка» в блоке «Стоимость».
Да, конечно, мы полностью белая организация. Для того, чтобы оплатить практикум от юридического лица, вам необходимо отправить ваши реквизиты с помощью формы «Плачу от организации» на сайте.
Мы понимаем, что мы все разные, и кому-то может не подойти наш формат, поэтому мы даем возможность в первые 14 дней практикума сделать возврат средств без объяснения причин. Причем вернуть можно и при единовременной оплате и при оформлении рассрочки от банка.
Да, вы проходите задания на нашей инфраструктуре. Вам не потребуется ничего докупать дополнительно.
Мы разработали инновационную модель онлайн-практикумов для
IT-специалистов.
Через полное погружение в практику
и решение реальных кейсов мы
помогаем ребятам из любой точки мира
получить востребованную профессию.
Международное агентство Devops-практик. Занимаемся
проектированием и обслуживанием
IT-инфраструктур с 2012 года.
Наши клиенты:
IMPROVE MEDIA, КупиКупон,
CRYPTO EXCHANGE, NEWS360 и др.
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie и других похожих технологий в соответствии с настоящим Уведомлением.
Отзывы
Юрий / 28 лет
Digital marketing >>> Junior DevOps
@youmedv
До практикума я работал в сфере Digital Marketing - удаленно занимался рекламой, маркетингом. Ранее работал инженером связи, от механика и до ведущего инженера, поэтому IT мне близко, и я всегда хотел развиваться в этом направлении и вернуться в профессию. Потому заинтересовался открытым уроком по DevOps, который предложила мне таргетная реклама. После урока желание изучать DevOps усилилось - привлекли перспективы и сложная, но интересная работа. Так я решил пойти дальше на практикум. И уже в середине курса устроился в аутсорсинговую компанию по администрированию инфраструктуры и дорос до Junior DevOps.
Сам практикум - бомба! Намного круче классического формата с лекциями. Когда есть лекции, ты привязан к группе, ко времени. Здесь же отстать невозможно: включайся, когда удобно, и получай на любом этапе быструю обратную связь по всем заданиям. Выходит, как формат индивидуального практикума, но только еще и с возможностью постоянно находиться в сообществе - общаться, развивать кругозор.
После практикума меня позвали в команду REBRAIN как одного из лучших выпускников. И это тоже очень крутой опыт. Сейчас я курирую практикум - отвечаю на вопросы ребят, вместе разбираем задачи, что помогает укреплять знания и разбираться в нюансах.
Сам формат практикума с упором именно на выполнение заданий - именно то, что нужно, чтобы сформировать достаточный кругозор и базис для развития. Так что, если тема DevOps или развития Operations вам близка - практикум это именно то, что нужно!
Сергей / 32 года
Junior DevOps
@KernelVrn
Учиться пошел, чтобы повысить уже имеющиеся знания в области Девопс, у меня вообще цель совершенствовать свои знания всю жизнь)) Посмотрел пару стримов с Василием, понравилось, до этого ещё знакомый практиковался на других курсах, я видел задания там. А тут мне идея понравилась, формат с практикой.
В целом ожидания оправдались, я особо нигде в таком формате не практиковался.
Очень удобен формат без привязки к конкретному времени сдачи заданий и участия в вебинарах, т.к. на работе бывает вообще нет времени, я чаще всего могу начать заниматься после 23. Приезжаю в 20, потом надо с ребенком поиграть. Ну а на себя время только ночью нахожу)
Наталья / 32 года
Support Engineer
@Natalia_mm
Практикум я решила проходить как дополнение к текущей работе. Хотелось изучить все инструменты DevOps в целом. Например, по работе мне был нужен Docker. Мой коллега проходил практикум DevOps by Rebrain, и он рассказывал, как это круто, и что можно в случае, если не подойдет, вернуть деньги в течение 2 недель. Я заинтересовалась и решила попробовать.
Я очень боялась, что не пройду по стартовым знаниям, все-таки я совсем не системный администратор. Но проблем у меня не было. Все есть в гугле. Если нужно что-то сделать и не знаю как, то просто открываю гугл и ищу. Считаю, что это необходимость такого формата, как практикум. За то время, что его прохожу, уже добавила себе определенную базу знаний по разным темам. Сейчас прохожу практикум не спеша, 1-2 задания в неделю, периодически делаю перерывы. Очень нравится за счет того, что это практика, нет скучных лекций. Василий Озеров проводит позитивные, классные мастер-классы. На мой взгляд, цена практикума совершенно адекватна.
Из пожеланий - хотелось бы улучшить SLA. И есть некоторые задания в модуле DevOps, где сложно понимать формулировки. Из моментов, что нравятся, это - очень большое количество инструментов, которое нужно при работе с практикумом. То, что задачи близки к “боевым”. Хорошо, что могу заниматься, когда хочется, без привязки ко времени. Мне не подходит время мастер-классов, чтобы смотреть их онлайн, тут есть возможность посмотреть их в записи.
Отдельно хочется отметить обаяние Василия. Он так просто рассказывает сложные вещи, что кажется, и я, и любой другой так сможет.
Я рекомендовала бы практикум системным администраторам, заинтересованным в автоматизации.
Руслан / 34 года
Системный администратор
@Ruslan Zuiev
Решил изучать Linux т.к. мне нравится открытая идеология этой ОС и я давно хотел работать на должности, связанной с настройкой ОС.
На практикуме Rebrain в итоге остановился, в первую очередь, благодаря менеджеру Александре, которая дала мне профессиональную консультацию относительно практикума, чётко отвечала на все вопросы. Также, в сравнении с конкурентами, Rebrain позволил мне самому выстраивать график обучения, а не как у других, выдавать информацию маленькими порциями, чтобы растянуть курс на длительный срок.
Но я не был уверен в состоятельности практикума, т.к. ни один человек на тот момент не прошел его полностью. В итоге, я настолько доволен практикумом, что считаю, что там всё так и должно быть. Только сертификат хотелось бы более презентабельный, чтобы можно было на стену повесить. Особенно отмечу возможность выполнять сразу несколько заданий в день, отзывы кураторов, саму структуру практикума.
Рекомендовал бы практикум людям, которые любят решать «загадки» и им нравится работать за компьютером.
Спустя пару недель подготовки подготовки к собеседованиям и составления резюме (с этим, кстати, опять же очень помог Rebrain!) я получил 2 оффера от международных компаний. В итоге, из них я выбрал ту, работа в которой более связана с моим запланированным направлением - DevOps. Как оказалось, не зря я дополнительно занимался английским языком, это стало дополнительным и очень важным скилом в поиске работодателя.
На этом не планирую останавливаться и хочу уже в скором времени приобрести курс DevOps by Rebrain, чтобы поскорее освоится на новом рабочем месте и ускорить свой прогресс. Тем более, если я не ошибаюсь, Rebrain предоставляет скидку "постоянным покупателям" :)
Айгерим
@baigabul
Можно я скажу большое человеческое спасибо за ваш труд и практикумы.
Не могу молчать уже 😂 Ещё мне далеко до конца их, но блин, благодаря им кучу нового узнала и уже сижу девопсом.
Спасибо ребятам, которые запросто отвечают на вопросы, даже если не по заданиям.
Купила их просто так, от нечего делать, немного заскучав в дба. А теперь вот сижу много на работе, но очень круто и интересно. Многие многие вещи с практикума и вебинаров очень пригодились. Спасибо))
Сергей
Архитектор по информационной безопасности
@SergeyErmakov
На практикум пошел, потому что захотелось уложить в голове разрозненные знания по современным информационным технологиям типа Kubernetes, Docker. Сначала увидел статью на хабре, посмотрел один открытый практикум с Василием. После него мне начали регулярно приходить письма с предложением пройти практикум. Сначала мне это было неактуально, но письма с седьмого я все таки решил записаться. Из плюсов для меня - то, что используется реальная инфраструктура и приближенность заданий к реальности.
Многие вещи я уже знал, практикум помог их систематизировать. Но могу сказать что кривая практикума в некоторых заданиях все же крутовата. Из разряда - вот тебе винтик и гаечка, теперь собери из них самолет, иногда не хватает промежуточных шагов. Я уже и так знаю, как сделать быстро и неправильно, а хотелось бы узнать правильные пути.
Хотелось бы больше обратной связи и более прямой помощи от кураторов. Иногда их объяснения в чате слишком непрямые и недостаточно подробные. Я понимаю, что таким образом кураторы пытаются всеми силами подтолкнуть к поиску решения самостоятельно, но иногда все таки стоит указать прямо в ответ, ученик меньше времени потеряет.
В целом, практикум полезен мне для работы - лучший способ взаимодействовать с DevOps инженерами и администраторами, понимать подробности их деятельности. Рекомендовал бы практикум человеку, который с технологиями представленными в нем, напрямую не работал, - он будет полезен эникейщикам, безопасникам, сисадминам.
Иван
Системный администратор >>> Junior DevOps Engineer
@Skensel
Я перешел на Junior DevOps Engineer меньше месяца назад. До этого был системным администратором. Практикум дал большой толчок для моего роста как технического специалиста.
Раньше увлекался программированием, но понял, что это не мое, меня больше интересовала работа с инфраструктурой и автоматизацией. Два года назад начал узнавать что же это такое "DevOps". А год назад уже взялся за изучение инструментов и практик.
Сперва занимался саморазвитием, но зашёл в тупик и не мог понять как применять полученные знания. На Ютубе наткнулся на открытые практикумы Василия Озерова. Понравилось, как Василий рассказывает лекции и сразу показывает живые примеры. Позже начал искать информацию о практикуме. Примерно месяц думал, потом купил доступ.
Преимущества формата практикума - то, что это именно практикум, задания чисто практические. Можно заниматься, когда тебе удобно. Нет жестких рамок в виде лекций. Когда возникает проблема, можно спросить у куратора. Если задаю вопрос, обратная связь приходит быстро. Сейчас я прежде всего делаю упор на вещи, которые пригождаются в работе.
Практикум подойдет как программистам так и системным администраторам желающим получить новые навыки или карьерные движения. Практикум стоит своих денег и уже окупается:)
Сергей / 47 лет
Начальник отдела ИТ >>> DevOps-инженер
@rasdva3
В первый раз я наткнулся на открытый практикум Rebrain примерно в начале 2019 года. Первые впечатления: круто, мало что понятно, нужно разбираться, хочу еще. Направление выбрал из-за личного интереса и денежной мотивации. Работал я тогда начальником отдела информационных технологий в одной коммерческой организации и первой мыслью у меня было — надо брать, а лучше затаскивать на этот курс еще как минимум одного из моих бойцов. Но руководство обучение не поддержало, а стоимость единственного тогда курса DevOps была выше моей месячной зарплаты. Тогда я взял паузу на несколько месяцев… Регулярно смотрю открытые практикумы, облизываюсь на суммы зарплат, которые мелькают на hh.ru. И вот в последнюю пятницу июля 2019 года я решил — беру практикум DevOps! Квалификацию нужно повышать, а спасение утопающих — дело рук самих утопающих. Тем более на мой взгляд, альтернатив практикуму DevOps by Rebrain просто нет. Главное его преимущество — много практики.
Прошло почти полтора года с тех пор, как я впервые сделал пуш в свой репозиторий на gitlab.rebrainme.com, и каковы результаты:
- DevOps: 60%
- Docker: 100%
- Kubernetes: 80%
- Резюме на hh.ru, профиль на LinkedIn, регулярно читаю @devops_jobs
И вот оно! — «Здравствуйте, ваш опыт нас заинтересовал». Созваниваемся с HR, затем с руководителем департамента программных решений, на следующий день мне говорят, что меня берут, и на пятый день после первого звонка я уже работаю в проекте, с оплатой почти в четыре раза большей, чем на прошлом месте работы. И вот уже полтора месяца я фигачу как полноценный devops engineer (одна штука) в команде разработки.
Александр / 33 года
Ведущий инженер-программист
@berem
Большую часть своей карьеры я провел в админах. Сейчас догоняю знания - и по программированию, и по технологиям.
Почему выбрал Девопс? Так сошлись звезды. Эта сфера мне интересна, хочу в ней развиваться.
Когда выбирал практикум, сомнения были, и финансовые, и определенный скепсис к онлайн-практикуму. Поэтому присматривался к практикуму очень давно, был на бесплатных практикумах Василия Озерова. После них и решил, что это мое. К покупке подтолкнуло появление рассрочки, тогда и понял, что пора вкладываться в свое образование.
Практикум очень сильно нравится. Меня очень сильно заинтересовал формат. До этого был на курсах, где только лекции. А здесь именно практические занятия. Теория без практики - это ничто.
Начальных знаний для старта практикума хватило, влился быстро и мне было интересно.
Сейчас иногда удивляюсь людям, которые не нравится такой формат. Я наоборот рад, что нужно много копаться самому. Ищешь информацию и сам развиваешься в процессе поиска. Мне кажется, иначе ничего не запоминается и когда столкнешься с задачей в работе, начнешь все искать с “чистого листа”.
Замечательно, что в практикуме нет ограничения по времени и ограниченных сроков. Хотя кому-то это может быть сложно - ведь тут контролируешь себя сам.
Конечно, встречаются задачи, которые прямо не хочется делать. Ходишь вокруг нее день-два, а потом соберешься и делаешь за час. Если бывают какие-то недопонимания по заданиям, то кураторы всегда подскажут.
Из пожеланий - хотелось бы больше заданий по облакам, Google Cloud и Amazon Cloud.
Практикум прохожу с июня, сейчас прошел почти до конца. В сентябре ходил на собеседование на DevOps-инженера. Мне сказали, что нужно подтянуть знания по технологиям и английский язык. В январе сходил повторно и получил оффер на зарплату в два раза большую, чем у меня сейчас. Поэтому финансовыми вложениями в прохождение практикума доволен. Осталось получить 1 сертификат и буду переходить на новую работу.
Практикум подойдет админам и программистам, заинтересованным в автоматизации рутинных операций.
Илья / 28 лет
Старший системный администратор >>> DevOps-инженер
@ilbka
Хотел изучить Кубернетес, так как эта технология очень востребована. Увидел рекламу бесплатного практикума Rebrain, поучаствовал в нем. До этого уже был опыт обучения от mail.ru, поэтому был поражен, насколько выше уровень Rebrain, даже на бесплатных занятиях.
Для моего региона цена практикума достаточно высокая. Но теперь совершенно не жалею потраченных денег, жалею только, что не пошел на практикум раньше.
Понравилось, что материал составлен грамотно, были интересные кейсы, практикум полностью готовит к сдаче экзамена по куберу. Хотелось бы субтитры к материалу (так как много материала на английском) и более развернутой обратной связи от кураторов.
Практикум будет полезен любому сисадмину, который хочет достичь чего-то большего.
Анатолий / 34 года
Системный администратор >>> Системный архитектор
tolik8621@list.ru
DevOps-практиками заинтересовался за счет необходимости иметь широкий кругозор. А так же нравиться их идеология, то есть необходимость плотного взаимодействия различных команд.
Практикум Rebrain выбрал из-за уклона в практическую часть. Сомневался, пригодятся ли полученные знания и не потрачу ли я время в пустую. Это сомнение отмел, так как любые инвестиция в себя полезны. Было сомнение о качестве заданий. Будет ли они достаточно хорошо проработаны. Его так же отмел, все хорошо. Думал, стоит ли связываться с рассрочкой, ну это сугубо личное не желание связываться с кредитами и т.п. Сейчас рассрочку уже закрыл, сомнение снято.
Практикум нравится. Особенно уклон в практику, видео от Василия Озерова, получается строго лаконично и по делу. И то, что проверяющие заинтересованы в качественной проверке, дополняют твои ответы комментариями
Мне кажется, стоит SLA для повторных попыток сделать 12 часов, но по всей видимости сейчас это не реализуемо. Проверяющих не хватает и так.
Ну а так в общем все хорошо, к формулировкам заданий вопросов нет. Мне кажется это сделано намеренно чтобы посмотреть как человек мыслит и до чего дойдет в своих рассуждениях. Можно так же задать уточняющий вопрос проверяющему, не вижу проблем, либо обсудить с ним спорный момент, это работа с людьми и это нормально.
Рекомендовал бы практикум наверное администраторам, для расширения кругозора, да в общем и программистам тоже.