Чему вы научитесь
- Распознавать истинный тип подозрительного файла, используя 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, используя те же инструменты и методы, что применяются в реальных расследованиях инцидентов информационной безопасности.
Проще говоря, вы получите готовую методологию: с чего начать, какие инструменты использовать и как интерпретировать результаты.
Почему стоит выбрать именно этот курс?
- Упор на практику. Никаких лекций ради лекций: все инструменты изучаются в контексте решения реальных задач.
- Детективный сюжет. Теорию и практику пронизывает один детективный сюжет про сисадмина Алексея, который нашёл на сервере подозрительный процесс.
- Проблемно-ориентированный подход. В курсе сначала столкнётесь с проблемой, а затем через призму теории сами найдете ее решение. Вас никто не будет заставлять читать скучную теорию – у вас самих появится это желание.
- Реалистичные кейсы. Вы не будете решать абстрактные и далекие от реальности задачи. В курсе вы столкнетесь с реальными сигнатурами, вшитыми ELF-файлами, stripped-бинарниками и динамическими библиотеками.
- Плавный переход от простого к сложному. Вы начнете с базового анализа файлов с помощью
fileиstrings, затем перейдете к более низкоуровневымxxdиdd. После чего глубоко погрузитесь в структуру формата ELF и статический анализ с помощьюreadelfиobjdump. И только в конце курса вы познакомитесь с динамическим анализом подозрительных исполняемых файлов в Linux.
Что приобретете после освоения курса?
После освоения курса вы сможете:
- Распознавать истинный тип любого файла, даже если он замаскирован под картинку или лог.
- Вытаскивать скрытые IP-адреса, домены, пароли, команды и другую информацию из бинарных файлов.
- Находить и извлекать исполняемые программы, вшитые внутрь изображений.
- Восстанавливать испорченные заголовки файлов.
- Читать ELF-заголовок и находить точку входа даже в stripped-бинарниках.
- Отслеживать системные вызовы и библиотечные функции, чтобы увидеть, что программа делает на самом деле.
- Проводить полный анализ подозрительного файла: от первичного осмотра и до динамической трассировки.
Что нужно будет делать
В курсе вы будете:
- Исследовать подозрительные файлы с помощью инструментов командной строки Linux.
- Извлекать вшитые данные из различных файлов с целью дальнейшего анализа.
- Анализировать структуру ELF-файлов: заголовки, секции, символы, релокации.
- Дизассемблировать программы и сравнивать ассемблерный код.
- Выполнять трассировку выполнения программ для поиска скрытой логики.
- Находить скрытые пароли, флаги и вредоносную активность.
- Восстанавливать испорченные файлы вручную.
Разделы курса
Модуль 1. Знакомство с курсом
Вы познакомитесь с историей Алексея, узнаете, какие инструменты и навыки предстоит освоить, повторите базовые команды Linux и подготовите лабораторную среду: виртуальную машину с Ubuntu и всеми необходимыми инструментами.
Модуль 2. Первичный осмотр файла
Вы научитесь определять истинный тип файла (file), находить скрытые строки (strings), читать hex-дамп (xxd) и извлекать фрагменты файлов (dd).
Практикум: три загадочных файла, для которых нужно определить тип, найти флаг в нестандартной кодировке и восстановить испорченное изображение.
Модуль 3. Внутреннее устройство формата ELF
Вы глубже познакомитесь с форматом ELF: изучите заголовок (readelf), секции, дизассемблирование (objdump) и символы (nm). Научитесь находить функцию main даже в stripped-бинарниках.
Практикум: анализ неизвестного файла из сетевого дампа, извлечение вшитых ELF-файлов и поиск флага.
Модуль 4. Динамический анализ
Вы узнаете, как загружается ELF-файл в память, научитесь отслеживать системные вызовы (strace) и библиотечные функции (ltrace), разберётесь с релокациями, PLT и GOT.
Практикум: возвращение к программе из предыдущего модуля, поиск недостающей библиотеки и получение второго флага.
Модуль 5. Итоги курса
Вы повторите ключевые темы и пройдёте финальное тестирование, которое закрепит знания.
Для кого этот курс
Начальные требования
Для комфортного прохождения курса необходимо умение открывать терминал в Linux и запускать в нем команды. Желательно иметь базовое знакомство с командной строкой Linux (навигация по директориям, работа с файлами).
Всему остальному научитесь в процессе обучения. Курс не требует знаний ассемблера, опыта реверс-инжиниринга или владения сложными инструментами.
Наши преподаватели
Как проходит обучение
Курс состоит из 5 модулей, которые последовательно ведут вас от первичного осмотра файла до полного динамического анализа. Все уроки в текстовом формате.
В каждом модуле вас ждут:
- Короткие теоретические шаги: только те, которые необходимы для практики.
- Интерактивные задания: выбор ответа, сопоставление, ввод чисел, строк и команд.
- Практикумы с флагами: вы будете анализировать реальные (но безопасные) файлы и искать флаги в формате
FLAG{...}. Флаг – это доказательство, что вы всё сделали правильно.
В конце курса финальный тест, который проверяет понимание, а не запоминание.
Что нужно для прохождения:
- Любой компьютер с выходом в интернет.
- VirtualBox (бесплатно) для запуска Linux на домашнем компьютере (если вы работаете на Windows).
- Желание разбираться, а не просто кликать «далее».
Никаких лекций на часы: вы сразу начнете решать задачи.
Программа курса
Что вы получаете
- Инструментарий и осознанное использование file, strings, xxd, dd, diff, readelf, objdump, nm, strace и ltrace.
- Аналитическое мышление – умение читать hex-дампы, находить сигнатуры, извлекать вшитые файлы, находить функции в stripped-бинарниках, поиск флагов в условиях неполной информации, формулирование гипотез и их проверка.
- Методологию – понимание границ статического анализа и того, когда пора переходить к динамическому.
- Пет-проект для портфолио – вы сможете показать работодателю: «Я анализировал такие-то файлы, находил такие-то артефакты, использовал такие-то инструменты и сделал такие-то выводы».
- Фундамент для дальнейшего роста – после курса вы будете готовы к более глубокому изучению реверса, анализу сложных вредоносных программ и поиску уязвимостей в программном обеспечении.