Проходил 13 июня в 20:00

Открытый вебинар
Исследование руткита

Открытый вебинар онлайн

С помощью методов статического и динамического анализа кода выявляем функционал пойманного в «дикой природе» руткита, определяем его влияние на операционную систему и уровень риска для пользователя.
Преподаватель
Артур Пакулов

Запись

О курсе

Реверс-инжиниринг
40 000 ₽
4 месяца
Начало 26 июня

ЧТО ТАКОЕ РЕВЕРС-ИНЖИНИРИНГ? Реверс-инжиниринг кода (обратная разработка кода) - это процесс анализа машинного кода программы, который ставит своей целью понять принцип работы, восстановить алгоритм, обнаружить недокументированные возможности программы, и т.п. Основные методы реверс-инжиниринга - это статический или динамический анализ кода. При статическом анализе исследователь дизассемблирует код программы, используя специальное ПО, и далее анализирует ассемблерный код. При …

Программа курса
Модуль 1
Низкоуровневое программирование на ассемблер под x8086/x64
Модуль 2
Низкоуровневое программирование на ассемблер под MIPS
Модуль 3
Защищённый режим процессора
Модуль 4
Внутреннее устройство Windows
Модуль 5
Системное программирование
Модуль 6
Написание простейших драйверов
Модуль 7
Обратная разработка программ
Модуль 8
Проектная работа
Низкоуровневое программирование на ассемблер под x8086/x64
Регистры процессора, работа с памятью
26 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Установка софта. Необходимо установить следующий софт:
Emu 8086
FASM
x64Dbg
Ida Pro 7
Hiew
Far Manager
ConEmu
Представление данных, кода, опкоды команд.
29 июня, 11:00 — 12:30
Домашние задания: 1
ДЗ
Одинаковые команды - разные опкоды. 1. Неодходимо составить список как можно больших команд, которые будут иметь один и тот же смысл, но разные опкоды. Пример:
xor ax, ax | 33 c0
xor ax, ax | 31 c0
2. Модифицировать файл в HEX редакторе ex.exe так, чтобы MessageBox показывался два раза.
Арифметические, логические команды. Команды условного/безусловного перехода
3 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Написать keygen к программам CRACKME.EXE (66f573036f8b99863d75743eff84f15d) и Otus_Crackme_01.exe (fb42bfad815a9563b9f6fdd362b47f70). Необходимо дизассемблировать программу и написать генератор валидных пар login:password.
Прерывания BIOS
6 июля, 11:00 — 12:30
Домашние задания: 1
ДЗ
Калькулятор суммы. Написать программу, принимающую на вход два слагаемых в виде hex цифр, считает сумму и выводит её не экран тоже, в hex виде.
Низкоуровневое программирование на ассемблер под MIPS
Регистры процессора. Работа с памятью
10 июля, 20:00 — 21:30
Арифметические, логические команды. Команды условного/безусловного перехода
13 июля, 11:00 — 12:30
Домашние задания: 1
ДЗ
Crc32. Переписать программу с MIPS ассемблера на 8086.
Опкоды команд
17 июля, 20:00 — 21:30
Защищённый режим процессора
Сегментная организация памяти
20 июля, 11:00 — 12:30
Страничная организация памяти
24 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Стек в PM. 1. Написать программку (лучше на python, но можно и на других ЯП), которая на вход будет принимать: адрес сегмента, лимит сегмента, права (чтение/запись/исполнение) и будет возвращать сформированный дескриптор сегмента
2. Добавить дескриптор сегмента, для стека в segmodel.asm
Внутреннее устройство Windows
Объекты ядра
27 июля, 11:00 — 12:30
Менеджер памяти
31 июля, 20:00 — 21:30
Диспетчер ввода-вывода
3 августа, 11:00 — 12:30
Системное программирование
PE формат
7 августа, 20:00 — 21:30
WinApi функции. Перехваты WinApi функций
10 августа, 11:00 — 12:30
Домашние задания: 1
ДЗ
Pe Loader. Реализовать простейший Pe Loader, который будет считывать с диска Pe (exe) из памяти и запускать его.
Pe файл брать тот, который выдаёт MessageBox и скомпилирован на FASMЕ.
Программирование Native приложений
14 августа, 20:00 — 21:30
Способы добавления в автозагрузку
17 августа, 11:00 — 12:30
Программирование служб
21 августа, 20:00 — 21:30
Настройка рабочей среды для отладки драйверов режима ядра
24 августа, 11:00 — 12:30
Написание простейших драйверов
28 августа, 20:00 — 21:30
Обратная разработка программ
Динамический анализ кода
WinDbg, Sysinternels Tools, WireShark
31 августа, 11:00 — 12:30
Статический анализ кода
Ida Pro
4 сентября, 20:00 — 21:30
Разработка shell кодов
7 сентября, 11:00 — 12:30
Metasploit
11 сентября, 20:00 — 21:30
Внедрение реверс шела в некоторые прошивки роутеров
14 сентября, 11:00 — 12:30
Поиск и эксплуатация уязвимостей Buffer Overflow/UAF
18 сентября, 20:00 — 21:30
Проектная работа
Вместе с участниками группы по ходу курса мы «разревёрсим» несколько реальных вредоносных программ, определим их функционал и в качестве выпускного проекта напишем программу для лечения.
Вводное занятие по проектной работе
21 сентября, 11:00 — 12:30
Домашние задания: 1
ДЗ
Проектная работа.
Консультации и обсуждения проектной работы
25 сентября, 20:00 — 21:30
Консультации и обсуждения проектной работы
28 сентября, 11:00 — 12:30
Итоговое занятие. Обсуждение проектной работы
2 октября, 20:00 — 21:30

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

Артур Пакулов
Вирусный аналитик в Kaspersky Lab.

Специалист в области низкоуровневого программирования, обратной разработки и анализа вредоносного программного обеспечения. В период 12.2015 - 05.2017 - специалист по образовательным программам и преподаватель Образовательного департамента “Лаборатории Касперского”. Преподаватель и методист-разработчик курсов и программ по направлениям: “Защита информации от вредоносного ПО”, “Низкоуровневое программирование”, “Профессиональный пентестинг”. Программы, разработанные Пакуловым, включены в учебные планы российских и зарубежных Университетов, в том числе МГТУ им. Н.Э. Баумана, МГУ им. М.В. Ломоносова. Преподаватель международных магистерских программ по информационной безопасности.


Навыки:
Низкоуровневое программирование,
Системное программирование,
Реверс-инжиниринг,
Анализ вредоносного ПО,
Веб-безопасность,
Программирование: Assembler, C/C++, Delphi, Python
Преподаватель курсов:
Реверс-инжиниринг