Чему вы научитесь
- Распознавать истинный тип подозрительного файла, используя file и анализ магических чисел, чтобы не пропустить замаскированный исполняемый файл.
- Обнаруживать скрытые IP-адреса, домены и подозрительные строки в бинарном файле с помощью strings с разными опциями.
- Читать hex-дамп файла и идентифицировать по первым байтам его формат (ELF, PDF, PNG), чтобы вручную подтвердить или опровергнуть выводы утилиты file.
- Находить и извлекать программы, вшитые внутрь других (например, ELF внутри PNG), комбинируя xxd для поиска сигнатур, dd для вырезания и diff/cmp для сравнения.
- Восстанавливать заголовки испорченных файлов, проанализировав его hex-дамп и сверив с эталонной сигнатурой.
- Определять точную точку входа программы, проанализировав ELF-заголовок (с учётом порядка байт).
- Вычислять точный размер вшитого файла внутри другого файла, используя readelf для анализа сегментов и секций.
- Находить функцию main в stripped-бинарнике (с удалёнными символами), проанализировав дизассемблированный код в objdump.
- Запускать извлечённую программу и диагностировать причину скрытой ошибки запуска.
- Прослеживать системные вызовы подозрительных программ с помощью strace, для обнаружения скрытой файловой активности, создания процессов или сетевых подключений.
- Перехватывать вызовы библиотечных функций через ltrace.
- Выявлять подозрительное поведение программ (самокопирование, запуск в фоне, сетевые запросы), комбинируя strace и ltrace.
- Объяснять, почему программа не может найти адрес функции до запуска, и демонстрировать работу механизма релокаций и PLT на примере.
О курсе
Для кого этот курс
Начальные требования
Для комфортного прохождения курса необходимо умение открывать терминал в Linux и запускать в нем команды. Желательно иметь базовое знакомство с командной строкой Linux (навигация по директориям, работа с файлами).
Всему остальному научитесь в процессе обучения. Курс не требует знаний ассемблера, опыта реверс-инжиниринга или владения сложными инструментами.
Преподаватели курса
Как проходит обучение
Курс состоит из 5 модулей, которые последовательно ведут вас от первичного осмотра файла до полного динамического анализа. Все уроки в текстовом формате.
В каждом модуле вас ждут:
- Короткие теоретические шаги: только те, которые необходимы для практики.
- Интерактивные задания: выбор ответа, сопоставление, ввод чисел, строк и команд.
- Практикумы с флагами: вы будете анализировать реальные (но безопасные) файлы и искать флаги в формате
FLAG{...}. Флаг – это доказательство, что вы всё сделали правильно.
В конце курса финальный тест, который проверяет понимание, а не запоминание.
Что нужно для прохождения:
- Любой компьютер с выходом в интернет.
- VirtualBox (бесплатно) для запуска Linux на домашнем компьютере (если вы работаете на Windows).
- Желание разбираться, а не просто кликать «далее».
Никаких лекций на часы: вы сразу начнете решать задачи.
Что вы получите
- Инструментарий и осознанное использование file, strings, xxd, dd, diff, readelf, objdump, nm, strace и ltrace.
- Аналитическое мышление – умение читать hex-дампы, находить сигнатуры, извлекать вшитые файлы, находить функции в stripped-бинарниках, поиск флагов в условиях неполной информации, формулирование гипотез и их проверка.
- Методологию – понимание границ статического анализа и того, когда пора переходить к динамическому.
- Пет-проект для портфолио – вы сможете показать работодателю: «Я анализировал такие-то файлы, находил такие-то артефакты, использовал такие-то инструменты и сделал такие-то выводы».
- Фундамент для дальнейшего роста – после курса вы будете готовы к более глубокому изучению реверса, анализу сложных вредоносных программ и поиску уязвимостей в программном обеспечении.