Reverse engineering

Научитесь находить и исправлять уязвимости своих систем и приложений Единственный практический курс на российском рынке

24 апреля

5 месяцев

Онлайн

Пн/Ср 19:00 Мск

Для кого этот курс?

    • Для системных программистов, разрабатывающих низкоуровневый софт. Вы поймете, как код работает изнутри после компиляции, и сможете повысить качество своих решений.
    • Для начинающих вирусных аналитиков и специалистов ИБ. Вы научитесь всем must have практикам реверс-инжиниринга и получите комплексное представление о вредоносном ПО.

Необходимые навыки:

      • Знание архитектуры ЭВМ на начальном уровне
      • Базовые знания внутреннего устройства Windows
      • Преимуществом будет опыт программирования на языке C/C++ (это необязательное условие)

Минимальные системные требования для комфортного прохождения курса:

    • Процессор с тактовой частотой 2,0 ГГц или больше, от 8 ГБ ОЗУ
    • 100 ГБ свободного места на жестком диске

Как проходит практика?

Студенты заранее получают стенды и разворачивают их у себя локально до начала занятия.

На курсе вас ждет:

  • Практика по распаковке файлов
  • Практический разбор PE формата (таблица импорта, таблица экспорта, таблица релокаций)
  • Практический анализ шифровальщиков, банковских троянов, ботов.
  • Проектная работа, в рамках которой вы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.
Реверс-инжиниринг кода (обратная разработка кода) — это процесс анализа машинного кода программы, который ставит своей целью понять принцип работы, восстановить алгоритм, обнаружить недокументированные возможности программы, и т.п. Основные методы реверс-инжиниринга — это статический или динамический анализ кода. При статическом анализе исследователь дизассемблирует код программы, используя специальное ПО, и далее анализирует ассемблерный код. При динамическом анализе исследователь запускает код в изолированной среде (песочнице) или отладчике и анализирует код в динамике.

Процесс обучения

Вы освоите на практике важнейшие приемы реверс-инжиниринга: статический и динамический анализ. Познакомитесь с низкоуровневым и системным программированием, подробно разберете аспекты внутреннего устройства Windows. Вам предстоит изучить и классифицировать вредоносное ПО на примерах реальных malware, выловленных в сети.

Трудозатраты:

4 академических часа на занятия в неделю и 2-4 академических часа на домашнюю работу раз в 2 недели. Первый месяц занятия будут проходить в режиме 1 раз в неделю, для плавного погружения в процесс обучения.

Трудоустройство

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


  • Разместите свое резюме в базе OTUS и сможете получать приглашения на собеседования от партнеров
  • Карьерные мероприятия в сообществе: получите рекомендации, как искать работу, и советы по прохождению собеседования

Работодатели курса

Программа

Низкоуровневое программирование на ассемблер под x8086/x64

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

Тема 1: Регистры процессора, работа с памятью

Тема 2: Представление данных: знаковые и беззнаковые числа, символы. Основные команды ЯА

Тема 3: Представление кода: формат и опкоды команд

Тема 4: Арифметические и логические команды

Тема 5: Цепочечные операции

Тема 6: Подпрограммы

Тема 7: Дополнительное занятие: Представление данных

Тема 8: Прерывания BIOS

Тема 9: Написание кастомного MBR

Тема 10: RISС-архитектура на примере MIPS-процессоров

Защищённый режим процессора

Важный модуль, без которого невозможно будет понять принцип работы руткитов. Модуль включает в себя фундаментальные принципы работы процессора

Тема 1: Режимы работы процессоров. Принцип работы процессора в PM. Сегментная организация памяти

Тема 2: Страничная организация памяти

Тема 3: Типы дескрипторов

Внутреннее устройство Windows

Данный модуль включает в себя изучение строения OS Windows. Модуль обязателен для успешного анализа руткитов.

Тема 1: Объекты ядра

Тема 2: Менеджер памяти

Тема 3: Диспетчер ввода-вывода

Тема 4: Настройка рабочей среды для отладки драйверов режима ядра

Системное программирование

Модуль включает в себя информацию, которая необходима для анализа большинства вредоносных программ.

Тема 1: PE формат

Тема 2: Таблица импорта

Тема 3: Таблица экспорта/Таблица релокаций

Тема 4: Решение crackme

Тема 5: Ловушки Windows

Тема 6: Перехват WinApi функций

Тема 7: Программирование Native приложений

Тема 8: Способы добавления в автозагрузку

Тема 9: Программирование служб

Обратная разработка программ

Данный модуль посвящён изучению практических навыков анализа программ.

Тема 1: Динамический анализ кода

Тема 2: Статический анализ кода

Тема 3: Разработка shell-кодов

Тема 4: Практическое занятие: ручная распаковка

Тема 5: Практическое занятие: анализ эксплойта

Тема 6: Практическое занятие: анализ вредоносного образца

Тема 7: Уязвимость Buffer Overflow

Тема 8: Уязвимость UAF

Тема 9: Буткиты

Проектный модуль

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

Тема 1: Выбор темы и организация проектной работы

Тема 2: Консультация по проектам и домашним заданиям

Тема 3: Защита проектных работ

Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит

Курс завершается выпускным проектом. Вместе с участниками группы по ходу курса мы «разревёрсим» несколько реальных вредоносных программ, определим их функционал и в качестве выпускного проекта напишем программу для лечения.

Преподаватель

Руководитель курса

Артур Пакулов

6 лет в Otus
524 занятия
621 студент

Специалист в области низкоуровневого программирования, обратной разработки и анализа вредоносного программного обеспечения. В период 12.2015 - 05.2017 — специалист по образовательным программам и преподаватель Образовательного департамента «Лаборатории Касперского». Преподаватель и методист-разработчик курсов и программ по направлениям: «Защита информации от вредоносного ПО», «Низкоуровневое программирование», «Профессиональный пентестинг». Программы, разработанные Пакуловым, включены в учебные планы российских и зарубежных университетов, в том числе МГТУ им. Н.Э. Баумана, МГУ им. М.В. Ломоносова. Преподаватель международных магистерских программ по информационной безопасности. Навыки: Низкоуровневое программирование, Системное программирование, Реверс-инжиниринг, Анализ вредоносного ПО, Веб-безопасность, Программирование: Assembler, C/C++, Delphi, Python

Преподает на курсах

  • Reverse engineering
  • Информационная безопасность. Basic

Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания

Ближайшие мероприятия

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

Техника инжектов "atom bombing"
Артур Пакулов
На уроке мы затронем тему атомов в OS Windows и APC инжектов. Эта тема особенно актуальна т.к данная техника уже используется сложными банковскими троянами. В процессе занятия мы разберём как определяется поток, находящийся в сигнальном состоянии и зачем это нужно. Это будет интересно вирусным аналитикам, разработчикам и всем тем, кому интересна тема технологий, используемых во вредоносных программах. Для успешного прохождения занятия вам понадобится VS и любой отладчик....
27 марта в 17:00
Открытый вебинар
Reflective DLL injection
Артур Пакулов
На уроке мы затронем тему простых техник инжектов и сравним её с данной. Эта техника активно используется в современных троянских программах, а также в шелл кодах. Мы напишем тестовый пример, который будет инжектить код подобным образом. Урок будет интересен вирусным аналитикам, разработчикам и всем тем, кому интересна тема технологий, используемых во вредоносных программах. Для успешного прохождения занятия вам понадобится VS и любой отладчик....
15 апреля в 17:00
Открытый вебинар

Прошедшие
мероприятия

Артур Пакулов
Открытый вебинар
Анализ стиллера на .NET
Артур Пакулов
Открытый вебинар
Методы перехвата API функций.
Для доступа ко всем прошедшим мероприятиям необходимо пройти входное тестирование
Возможность пройти вступительное тестирование повторно появится только через 3 дня
Результаты тестирования будут отправлены вам на email, указанный при регистрации.
Тест рассчитан на 30 минут, после начала тестирования отложить тестирование не получится!

Корпоративное обучение для ваших сотрудников

Отус помогает развивать высокотехнологичные Команды. Почему нам удаётся это делать успешно:
  • Курсы OTUS верифицированы крупными игроками ИТ-рынка и предлагают инструменты и практики, актуальные на данный момент
  • Студенты работают в группах, могут получить консультации не только преподавателей, но и профессионального сообщества
  • OTUS проверяет знания студентов перед стартом обучения и после его завершения
  • Простой и удобный личный кабинет компании, в котором можно видеть статистику по обучению сотрудников
  • Сертификат нашего выпускника за 5 лет стал гарантом качества знаний в обществе
  • OTUS создал в IT более 120 курсов по 7 направлениям, линейка которых расширяется по 40-50 курсов в год

Отзывы

Виктория Камардина

01.11.2022
На данный момент нахожусь в процессе обучения на курсе Reverse-Engineering, в будущем планирую брать курс по DevSecOps. 1. По реверсу не так уж много обучений, а направление непростое и разобраться самостоятельно действительно с нуля нелегко. И мной было выбрано данное обучение, потому, что для физических лиц цена гораздо меньше. 2. C тобой занимается действительно настоящий специалист, который работает в этом направлении, а не просто обучает. У меня преподаватель Пакулов Артур, ex-вирусный аналитик Kaspersky Lab. Классный! Не всегда всё понятно с первого раза, но зато потом информация укладывается в голове надолго. 3. Уроки не в записи, а ведется диалог вживую! И для меня это большой плюс. 4. Когда у меня возникают вопросы, я могу задавать их и по уже проведенным урокам и по домашке, сдачу которой я просрочила. Преподаватель всё корректно разъясняет. Домашнее задание лучше сдавать вовремя, но если произошел конфуз, то все всё понимают, сдаете позже. 5. Есть Куратор, к которому тоже можно обращаться по общим вопросам. Куратор очень переживающий, расскажет даже как сделать налоговый вычет на госуслугах после оплаты курса)) 6. В сертификате будет написано количество выполненных работ, тема проекта, и для меня это является также стимулом хорошо закончить курс. Плюсы: 1.Практически нет аналогов обучения по этой теме в формате онлайн с преподавателем 2.Цена 3.Преподаватель является экспертом, рассказывает интересные нюансы 4.Платформа, в которой можно отслеживать свои успехи 5.Для физ. лиц есть помощь с трудоустройством при желании Минусы: Знания никто в голову не кладет. Иногда сложно воспринимать новую информацию, но, наверное, если бы не было сложностей, не было радости и гордости за себя, когда ты их преодолел.

Александра Киба

27.08.2021
Очень качественный курс. Хотя я уже была знакома с изрядной долей материала, все равно понравилось. Больше всего впечатлил разбор того, как хранятся аргументы/локальные переменные с точки зрения ассемблера (т.е. как их найти и понять, что код к ним обращается) и работа с крэкми и идой Немного поленилась выполнять домашку, не уверена, что это ключевой момент для освоения, но ковыряться в иде - давняя мечта

Вадим Демьянов

17.03.2021
Я инженер-программист АСУТП, часто сталкиваюсь с задачами низкоуровневого программирования, программирования embedded-устройств. Иногда интересуюсь онлайн-обучением в этих областях, даже начинал один курс на Coursera, но забросил. В целом я не видел интересного обучающего курса, который стоило бы начать, ведь вся информация и так есть в сети, можно самостоятельно все изучать. Случайно узнал про данный курс по реверс-инжинирингу, видимо попалась реклама, до этого даже не слышал, что есть такая специальность как реверс-инженер. Это показалось мне возможностью глубже понять, как все работает внутри компьютера, научиться анализу скомпилированного кода, изучить какую-то совсем новую интересную предметную область. Конечно всю информацию по реверсу также можно найти в сети, но для начала нужно понимать, что искать. Проблема в том, что информации слишком много, и конечно наличие базы в виде такого курса сильно экономит время, дает какое-то структурированное понимание. Сам курс для меня оказался довольно сложным, часто приходилось пересматривать лекции чтобы понять, что же мы вообще делали. Домашние задания также оказались сложнее, чем я думал и некоторые требовали довольно много времени. В своей практике я никогда не сталкивался с дебаггерами, дизасемблерами и прочими утилитами, которые применяются на курсе, все программы были для меня совершенно новыми, это тоже создавало некоторые трудности. Но в целом курсом я очень доволен, наверно именно потому, что он оказался таким сложным. Однозначно хочется дальше продолжать изучение реверс-инжиниринга. Отдельная благодарность преподавателю – Артуру Пакулову, за интересный курс и готовность отвечать на все вопросы. Есть пара моментов, которые я бы хотел добавить. Во-первых, уделить какое-то время изучению используемых программ, даже в рамках существующих лекций и домашних заданий. Во-вторых, выделить больше времени на итоговый проект, т.к. запланированного явно недостаточно.

Константин Козулин

19.10.2020
Курс больше подходит для вирусных аналитиков, но мне был интересен этот курс с точки зрения разработки операционных систем. Едва ли где-то есть курсы по этой тематике, да и книг немного. Но здесь даются знания об ассемблере (я хочу писать именно на ассемблере). Мне интересен реверс-инжиниринг, поскольку при разработке операционных систем нужно разрабатывать и драйверы. А многие драйверы имеют закрытый код и чтобы их понять, нужны навыки реверс-инжиниринга. Этот курс даёт хорошие знания о строении операционной системы Windows, что мне тоже очень пригодится. Я узнал больше про режимы процессора, устройство памяти, научился работать с дизассемблерами, отладчиками и шестнадцатиричными редакторами. Из недостатков - очень малое внимание к ОС Linux. В курсе не разбираются отладчики и дизассемблеры под эту систему: GDB, Ghidra. Но курс прекрасный! Задания сложные: CrackMe, внедрение кода в прошивку маршрутизатора, работа с загрузочным сектором... Они помогут мне значительно продвинуться в движении к мечте. Спасибо!

Марсель

26.09.2020
Здравствуйте, Во-первых, хочется отметить отзывчивость ваших менеджеров. Когда проходил курс в первый раз я был вынужден остановиться на половине. Когда стал свободнее решил продолжить курс. Менеджер закинул меня в след группу без оплаты первой половины курса и я продолжил заниматься Во-вторых, Артур очень компетентный специалист и классный препод. Пройдя примерно 3/4 курса я нашёл работу реверсера. Очень много из того, что говорил Артур было на собесах. Буду рекомендовать ваш курс. Спасибо!

Артем НН

31.07.2019
Отличный курс. Описывает самые необходимые основы по реверсу. Достаточно подробно рассказывается о многих важных аспектах обратной разработки. Дается полноценное объяснение функционирования вредоносных программ. Мне очень понравился. А главное - все по теме

Сертификат о прохождении курса

OTUS осуществляет лицензированную образовательную деятельность.
В конце прохождения специализации вы получите сертификат OTUS и официальный диплом о получении новой специальности

После обучения вы

  • получите материалы по всем пройденным занятиям (видеозаписи курса, дoполнительные материалы, финальный проект для добавления в портфолио)
  • научитесь читать ассемблерный код
  • научитесь работать в специализированном ПО для обратной разработки (IDA Pro, WinDBG, OllyDbg, Hiew)
  • освоите в теории и на практике основные приемы статического и динамического анализа кода
  • повысите свою ценность и конкурентоспособность как специалиста
  • получите сертификат об окончании курса

Частые вопросы

Что, если в середине курса я не смогу продолжать обучение?
У вас есть право одного бесплатного трансфера в другую группу
Обязательно ли защищать выпускной проект?
Для получения сертификата OTUS необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем.
С какого момента я смогу заниматься трудоустройством?
Получить карьерную консультацию вы сможете уже в начале обучения. Остальные опции: помощь с резюме, добавление резюме в нашу базу специалистов и т.д. будут доступны после окончания обучения.
Я могу вернуть деньги?
Да, вы можете сделать возврат средств пропорционально оставшимся месяцам обучения.