- Кто такой реверс-инженер?
- Что делают реверс-инженеры и чем занимаются?
- Что должен знать и уметь реверс-инженер?
- Востребованность и зарплаты реверс-инженеров
- Как стать реверс-инженером и где учиться?
- 3 лучших курсов для обучения реверс-инженера: подробный обзор
- 1 место. Курс «Reverse-Engineering» — OTUS
- 2 место. Курс «Reverse Engineering and Exploit Development» — Udemy
- 3 место.Курс «2MC: Reverse Engineering» — Coursera
Кто такой реверс-инженер?
Реверс-инженер (reverse engineer) — это специалист по обратной разработке, который исследует готовое устройство/программу и документацию для того, чтобы понять принцип работы или найти уязвимости, а в последующем сделать изменение или воспроизвести устройство, программу или иной продукт с такими же функциями, но без прямого копирования.
Что делают реверс-инженеры и чем занимаются?
Обязанности на примере одной из вакансий:
- Поиск уязвимостей в ПО различных устройств;
- Реверс-инженеринг;
- Работа с фазером;
- Работа с дизассеблерами и отладчиками;
- Написание небольших программ и сценариев;
- Работа с firmware, загрузчиками, ПО и ядром Linux;
Что должен знать и уметь реверс-инженер?
Требования к реверс-инженерам:
- Знание типов уязвимостей в бинарном коде, причин их появления, способов обнаружения и эксплуатации;
- Опыт тестирования на проникновение и исследования уязвимостей ПО;
- Уверенное владение инструментами дизассемблирования и отладки (IDA Pro, WinDBG, etc.);
- Знание современных процессорных архитектур x86/64, ARM, PowerPС
- Уверенное понимание принципов работы ОС Linux;
- Уверенное знание языков программирования С/С++/Python;
- Понимание технологии фаззинга;
Востребованность и зарплаты реверс-инженеров
На сайте поиска работы в данный момент открыто 197 вакансий, с каждым месяцем спрос на реверс-инженеров растет.
Количество вакансий с указанной зарплатой реверс-инженера по всей России:
- от 95 000 руб. 65
- от 155 000 руб. 45
- от 215 000 руб. 12
- от 275 000 руб. 10
- от 335 000 руб. 6
Вакансий с указанным уровнем дохода по Москве:
- от 105 000 руб. 17
- от 165 000 руб. 8
- от 280 000 руб. 5
- от 340 000 руб. 4
Вакансий с указанным уровнем дохода по Санкт-Петербургу:
- от 95 000 руб. 13
- от 155 000 руб. 7
- от 215 000 руб. 5
- от 275 000 руб. 3
- от 335 000 руб. 2
Как стать реверс-инженером и где учиться?
Варианты обучения для реверс-инженера с нуля:
- Самостоятельное обучение – всевозможные видео на YouTube, книги, форумы, самоучители и т.д. Плюсы – дешево или очень недорого. Минусы – нет системности, самостоятельное обучение может оказаться неэффективным, полученные навыки могут оказаться невостребованными у работодателя;
- Онлайн-обучение. Пройти курс можно на одной из образовательных платформ. Такие курсы рассчитаны на людей без особой подготовки, поэтому подойдут большинству людей. Обычно упор в онлайн-обучении делается на практику – это позволяет быстро пополнить портфолио и устроиться на работу сразу после обучения.
Ниже сделали обзор 3 лучших онлайн-курсов.
3 лучших курсов для обучения реверс-инженера: подробный обзор
Вы освоите на практике важнейшие приемы реверс-инжиниринга: статический и динамический анализ. Познакомитесь с низкоуровневым и системным программированием, подробно разберете аспекты внутреннего устройства Windows. Вам предстоит изучить и классифицировать вредоносное ПО на примерах реальных malware, выловленных в сети.
Реверс-инжиниринг кода (обратная разработка кода) — это процесс анализа машинного кода программы, который ставит своей целью понять принцип работы, восстановить алгоритм, обнаружить недокументированные возможности программы, и т.п. Основные методы реверс-инжиниринга — это статический или динамический анализ кода. При статическом анализе исследователь дизассемблирует код программы, используя специальное ПО, и далее анализирует ассемблерный код. При динамическом анализе исследователь запускает код в изолированной среде (песочнице) или отладчике и анализирует код в динамике.
Для кого этот курс?
- Для системных программистов, разрабатывающих низкоуровневый софт. Вы поймете, как код работает изнутри после компиляции, и сможете повысить качество своих решений.
- Для начинающих вирусных аналитиков и специалистов ИБ. Вы научитесь всем must have практикам реверс-инжиниринга и получите комплексное представление о вредоносном ПО.
Как проходит практика?
Студенты заранее получают стенды и разворачивают их у себя локально до начала занятия. Практику вы будете выполнять у себя на виртуальной машине во время вебинара под руководством преподавателя. На курсе вас ждет:
- Практика по распаковке файлов
- Практический разбор PE формата (таблица импорта, таблица экспорта, таблица релокаций)
- Практический анализ шифровальщиков, банковских троянов, ботов.
- Проектная работа, в рамках который вы напишите свою программу для лечения вредоносных программ.
Программа обучения:
Модуль 1. Низкоуровневое программирование наассемблер под x8086/x64.
- Тема 1. Регистры процессора, работа с памятью
- Тема 2. Представление данных, кода, опкоды команд. Основные команды ЯА
- Тема 3. Арифметичесие и логические команды
- Тема 4. Цепочечные операции
- Тема 5. Подпрограммы
- Тема 6. Прерывания BIOS
- Тема 7. Написание кастомногоMBR
Модуль 2. Низкоуровневое программирование наассемблер под MIPS.
- Тема 8. Регистры процессора. Работа с памятью
- Тема 9. Арифметические, логические команды. Команды условного/безусловного перехода
- Тема 10. Опкоды команд
Модуль 3. Защищённый режим процессора
- Тема 11. Режимы работы процессоров. Принцип работы процессора в PM. Сегментная организация памяти
- Тема 12. Страничная организация памяти
- Тема 13. Типы дескрипторов
Модуль 4. Внутреннее устройство Windows
- Тема 14. Объекты ядра
- Тема 15. Менеджер памяти
- Тема 16. Диспетчер ввода-вывода
Модуль 5. Системное программирование
- Тема 17. PE формат
- Тема 18. Таблица импорта
- Тема 19. Таблица экспорта/Таблица релокаций
- Тема 20. Ловушки Windows
- Тема 21. Перехват WinApi функций
- Тема 22. Программирование Native приложений
- Тема 23. Способы добавления в автозагрузку
- Тема 24. Программирование служб
- Тема 25. Настройка рабочей среды для отладки драйверов режима ядра
Модуль 6. Обратная разработка программ
- Тема 26. Динамический анализ кода
- Тема 27. Статический анализ кода
- Тема 28. Разработка shell кодов
- Тема 29. Практика: ручная распаковка
- Тема 30. Практика: анализ эксплойта
- Тема 31. Практика: анализ вредоносного образца
- Тема 32. Уязвимость Buffer Overflow
- Тема 33. Уязвимость UAF
- Тема 34. Буткиты
Модуль 7. Проектный модуль
- Тема 35. Выбор темы и организация проектной работы
- Тема 36. Консультация по проектам и домашним заданиям
- Тема 37. Защита проектных работ.
Выпускной проект:
Вместе с участниками группы по ходу курса мы «разревёрсим» несколько реальных вредоносных программ, определим их функционал и в качестве выпускного проекта напишем программу для лечения.
После обучения вы
- получите материалы по всем пройденным занятиям (видеозаписи курса, дoполнительные материалы, финальный проект для добавления в портфолио)
- научитесь читать ассемблерный код
- научитесь работать в специализированном ПО для обратной разработки (IDA Pro, WinDBG, OllyDbg, Hiew)
- освоите в теории и на практике основные приемы статического и динамического анализа кода
- повысите свою ценность и конкурентоспособность как специалиста
- получите сертификат об окончании курса.
Чему вы научитесь:
- Узнаете больше о различных инструментах реверсирования
- Узнаете больше о распространенных уязвимостях и о том, как их найти
- Вы лучше познакомитесь с простыми эксплойтами, использованием веб-ресурсов и использованием ARM.
Материалы курса
12 разделов, 70 лекций
- Getting Started
- Reversing Compiled Windows Applications
- Reversing Compiled OS X Applications
- Reversing Compiled Linux Applications
- Reversing Android Applications
- Finding Other Vulnerabilities
- Simple Exploits
- Exploit Payloads
- Making Exploits Harder To Detect
- Web Exploitation
- ARM Exploitation
- Future Directions.
Программа курса:
- Ориентация курса
Вы познакомитесь с курсом, своими одноклассниками и нашей учебной средой. Ориентация также поможет вам получить технические навыки, необходимые для прохождения курса. - Неделя 1: Становление лидером
Узнайте, каково это — перейти на руководящую роль. Узнайте, как ваши ценности и брендинг важны в этот переходный период. - Неделя 2: Влияние, Убеждение и переговоры
Узнайте, как влияние и убеждение являются ключом к лидерству и некоторым основным концепциям и навыкам ведения переговоров. Узнайте больше об эффективной коммуникации. - Неделя 3: Трудные разговоры в качестве лидера
Развивайте навыки ведения сложных разговоров, включая предоставление и получение обратной связи, а также обработку жалоб. - Неделя 4: Это Твоя Жизнь — Живи хорошо
Соберите воедино навыки и знания, полученные на всех курсах, изучая важность вашего соответствия и соответствия организации. Подумайте о важности обучения в качестве лидера и спланируйте, что произойдет дальше.