Курс «Реверсивный инжиниринг ПО под ОС Windows»
Для чего курс
Курс позволяет подробно изучить основные направления реверсинга приложений под ОС Windows. В курсе подробно рассматриваются команды языка Ассемблер, проводится детальный разбор приложений различных уровней сложности, начиная от специальных задач типа crackme и заканчивая рабочими приложениями 32/64 битной архитектуры и .NET. В курсе разбираются различные техники, используемые исследователями для поиска уязвимостей в приложениях и эксплуатации этих уязвимостей. Также рассматриваются примеры вредоносных приложений различных типов и методы заражения машин жертв, используемые разработчиками вредоносного ПО. По завершению курса слушателям предлагается выполнить и защитить итоговую проектную работу.
Старт курса 16 декабря 2024 года
Бесплатный доступ на 7 дней можно получить здесь
Кому будет полезен курс
- Специалистам по тестированию на проникновение, желающим лучше изучить направление реверсинга приложений;
- Вирусным аналитикам и исследователям кода занимающимся изучением вредоносного ПО;
- Программистам, разрабатывающим продукты в области Информационной безопасности или занимающимся разработкой ПО с повышенными требованиям к защищенности (промышленное, банковское ПО и т.д.);
- Программистам, занимающимся реверсингом уже существующих приложений в рамках задач по импортозамещению.
- Специалистам по ИБ и программистам, желающим освоить профессию реверс-инженер ПО.
- Продолжительность обучения: 6,5 месяцев
- В неделю уроков: 2
- В месяц уроков: 8
- Форма обучения: дистанционная, без отрыва от трудовой деятельности
Стоимость для физических лиц
Возможна оплата в рассрочку на 3 - 24 месяца.
Программа курса «Реверсивный инжиниринг ПО под ОС Windows»
- Общее представление о языке ассемблера и реверсивном инжиниринге программ. Зачем это нужно в информационной безопасности. Примеры того, чему мы должны научиться.
- Обзор инструментария: компиляторы, дизассемблеры отладчики. Решения для Windows.
- Основы языка ассемблер: команды и директивы, структуры программ. Регистры процессора, работа с памятью. Разные способы написания программ.
- Модели управления памятью в различных типах процессоров, адресация логическая и физическая. Страничная организация памяти. Команды для работы с памятью.
- Флаги и команды перехода. Представление данных в памяти. Представление команд. Опкоды. Методы написания программ с помощью различных опкодов. Простейшие механизмы обхода сигнатурных антивирусов.
- Работа со строками. Сравнение строк, поиск в строке, пересылка строк. Как выглядят типовые ошибки при работе с памятью.
- Подпрограммы и соответствующие регистры. Стек наше все. Отличия JMP от RET. Особенности реализации в 64-битной архитектуре.
- Арифметические операции и необходимые команды. Логические операции и команды. Написать программу для шифрования/дешифрования вводимых данных.
- Становимся исследователями кода: что такое крякмикс и где его взять. Разбор нескольких crackme начального уровня.
- Прерывания BIOS. Вывод на экран. Работа с файлами. Чтение/запись.
- Учимся решать крякмиксы различной сложности для освоения работы с дизассемблерами и отладчиками. Патчинг и написание кейгенов.
- Основы вирусной аналитики: Перехват прерывания. Подмена и реализация нового обработчика.
- Механизмы антиотладки. Process Environment Block, NtGlobalFlag, отладочные регистры. Разбор примеров. Плагины к отладчикам.
- Основы вирусной аналитики: Master Boot Record. Что это такое, зачем нужно. Написание кастомного MBR. Подготовка виртуалки к возможным падениям.
- Самомодифицирующийся код. Вирусный стиль программирования. Как это было на x86 и что можно сделать сейчас. Не/применимость данных технологий на современном оборудовании и ОС.
- Специфика ассемблера ОС Windows. Вызов функций API. Структура программ, создание окон. Цикл обработки очереди сообщений. Ассемблер MASM.
- Многозадачное программирование. Процессы и потоки. Взаимодействие потоков, семафоры. События. Взаимоисключения.
- Сетевое программирование. Стек TCP/IP. Модель OSI. IP адресация. Написание простейшего клиент-серверного приложения для обхода IDS.
- Криптография и ассемблер. Какие криптоалгоритмы существуют. Краткий разбор исходного кода основных криптоалгоритмов.
- И снова крякмиксы. Анализируем crackme с оконными интерфейсами и рассматриваем особенности перехватов вызовов API функций.
- Кольцевая архитектура защиты в ОС Windows. Драйверы ядра рабочей среды ОС. Объекты ядра. Настройка среды разработки. Написание простейшего драйвера.
- Диспетчер ввода-вывода. РЕ-формат файлов. MZ, Rich и Dan. Учимся анализировать заголовки файлов с помощью специальных утилит. Механизмы сокрытия кода в чужих выполнимых файлах.
- Основы вирусной аналитики. Таблица импорта. Внедрение кода в PE файл. Практикуемся во внедрении своего кода в чужие реальные приложения.
- Сообщения и ловушки в Windows. Перехват API функций. Учимся перехватывать вызовы различных функций.
- Native приложения. Работа с библиотекой ntdll.dll.
- Программирование сервисов и DLL на ассемблере.
- Основы вирусной аналитики. Различные методы добавления приложений в автозагрузку. Не только реестр. Получаем права System без входа в систему (не EthernalBlue).
- Основы багхантинга. Виды уязвимостей. Как их правильно искать. Автоматизируем фаззинг оконных приложений с помощью скриптов.
- Основы вирусной аналитики. Тестовые среды для анализа работы приложений. Cuckoo и Sandboxie. Как вредонос может попытаться переиграть песочницу.
- Основы багхантинга. Разработка shell кода. Особенности написания, неправильные байты. Примеры.
- Основы вирусной аналитики. Все о вредоносах. Напоминание о ст. 273 УК РФ. Разбор исходного кода вируса.
- Основы вирусной аналитики. Напоминание о ст. 273 УК РФ. Обсуждение червей. Разбор исходного кода червя, особенности.
- Основы вирусной аналитики. Напоминание о ст. 273 УК РФ. Обсуждение шифровальщиков. Разбор исходного кода шифровальщика.
- Основы вирусной аналитики. Напоминание о ст. 273 УК РФ. Обсуждение загрузчиков. DGA и механизмы взаимодействия с C&C.
- Основы вирусной аналитики. Код без кода. Возвратно-ориентированное программирование. Преимущества и недостатки.
- Основы вирусной аналитики. Буткиты. Разбор примера.
- Учимся обнаруживать запуск под виртуальной машиной, песочницей или в контейнером. Основные методы.
- Обсуждение тем проектных работ. Постановка задачи.
- Консультации по проектным работам.
- Защита проектной работы.
- Заключительное занятие. Рекомендации по дальнейшему самостоятельному развитию.