Постер курса

OTUS

Reverse-Engineering

  • Начальный уровень
  • Наставник: Нет
  • Сертификат: Нет
  • Формат: Online
  • Рассрочка: Нет
  • Язык: Русский
  • Осталось мест: Неограничено
Записаться

Reverse-Engineering

Что даст вам этот курс


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

ЧТО ТАКОЕ РЕВЕРС-ИНЖИНИРИНГ?

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

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


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

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

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


Студенты заранее получают стенды и разворачивают их у себя локально до начала занятия. Практику вы будете выполнять у себя на виртуальной машине во время вебинара под руководством преподавателя. На курсе вас ждет:

Практика по распаковке файлов

Практический разбор PE формата (таблица импорта, таблица экспорта, таблица релокаций)

Практический анализ шифровальщиков, банковских троянов, ботов.

Проектная работа, в рамках который вы напишите свою программу для лечения вредоносных программ

Выпускной проект


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

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


Трудозатраты: 4 академических часа на занятия в неделю и 2-4 академических часа на домашнюю работу раз в 2 недели.
Первый месяц занятия будут проходить в режиме 1 раз в неделю (по четвергам), для плавного погружения в процесс обучения.
Программа обучения
Низкоуровневое программирование на ассемблер под x8086/x64
  • Тема 1. Регистры процессора, работа с памятью
  • Тема 2. Представление данных, кода, опкоды команд. Основные команды ЯА
  • Тема 3. Арифметические и логические команды
  • Тема 4. Цепочечные операции
  • Тема 5. Подпрограммы
  • Тема 6. Дополнительное занятие: Представление данных
  • Тема 7. Прерывания BIOS
  • Тема 8. Написание кастомного MBR
Низкоуровневое программирование на ассемблер под MIPS
  • Тема 9. Регистры процессора. Работа с памятью.
  • Тема 10. Арифметические, логические команды. Команды условного/безусловного перехода.
  • Тема 11. Опкоды команд
Защищённый режим процессора
  • Тема 12. Режимы работы процессоров. Принцип работы процессора в PM. Сегментная организация памяти
  • Тема 13. Страничная организация памяти
  • Тема 14. Типы дескрипторов
Внутреннее устройство Windows
  • Тема 15. Объекты ядра
  • Тема 16. Менеджер памяти
  • Тема 17. Диспетчер ввода-вывода
Системное программирование
  • Тема 18. PE формат
  • Тема 19. Таблица импорта
  • Тема 20. Таблица экспорта/Таблица релокаций
  • Тема 21. Ловушки Windows
  • Тема 22. Перехват WinApi функций
  • Тема 23. Программирование Native приложений
  • Тема 24. Способы добавления в автозагрузку
  • Тема 25. Программирование служб
  • Тема 26. Настройка рабочей среды для отладки драйверов режима ядра
Обратная разработка программ
  • Тема 27. Динамический анализ кода
  • Тема 28. Статический анализ кода
  • Тема 29. Разработка shell-кодов
  • Тема 30. Практическое занятие: ручная распаковка
  • Тема 31. Практическое занятие: анализ эксплойта
  • Тема 32. Практическое занятие: анализ вредоносного образца
  • Тема 33. Уязвимость Buffer Overflow
  • Тема 34. Уязвимость UAF
  • Тема 35. Буткиты
Проектный модуль
  • Тема 36. Выбор темы и организация проектной работы
  • Тема 37. Консультация по проектам и домашним заданиям
  • Тема 38. Защита проектных работ
Что нужно знать?
  • Знание архитектуры ЭВМ на начальном уровне
  • Базовые знания внутреннего устройства Windows
  • Преимуществом будет опыт программирования на языке C/C++ (это необязательное условие)
  • Требования к "железу": процессор с тактовой частотой 2,0 ГГц или больше, от 8 ГБ ОЗУ, 100 ГБ свободного места на жестком диске
Знания и навыки, которые приобретете
  • Создадите своё портфолио проектов, которое поможет при прохождении собеседований;
  • Заберете с собой полный комплект обучающих материалов: видеозаписи всех вебинаров, презентации к занятиям, а также решение задач и проектов в виде кода на GitHub и другие дополнительные материалы
  • Освоите язык Python
  • Научитесь применять Python для разработки серверных приложений, сайтов, API и анализа данных
  • Сможете самостоятельно разрабатывать приложения под IOS
  • Пройдете карьерную консультацию и получите помощь с оформлением резюме
Партнеры

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

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

    Ex-вирусный аналитик в Kaspersky Lab.

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