Информационная безопасность
Reverse Engineering
Декабрь 2019. Команда Kaspersky Lab анализирует семпл нового APT вредоноса. 50 000 строк обфусцированного x64 ассемблера. Три эксперта, IDA Pro, 2 недели работы - восстановлена полная цепочка атаки, C2 протокол, механизм persistence. Reverse engineering превратил непонятные байты в actionable intelligence. Именно так нейтрализуются nation-state атаки - и именно этому учат Red Team на Pwn2Own.
- **Kaspersky RE практика:** анализ Stuxnet (2010) занял несколько недель командной RE - IDA + custom scripts для расшифровки 4 zero-day эксплоитов
- **Pwn2Own 2023:** Chrome V8 escape через UAF - RE V8 engine JIT compiler для поиска уязвимости. Выплата 180 000 USD
- **Android malware (2022):** RE banking trojan показал зашифрованный C2 протокол через XOR с rolling key - обнаружено только через Ghidra + Frida
Дизассемблирование: от байт к ассемблеру
Бинарный файл - это последовательность байт. Процессор интерпретирует их как инструкции. **Дизассемблер** переводит байты обратно в мнемоники ассемблера: `0x55` -> `push rbp`, `0x48 0x89 0xe5` -> `mov rbp, rsp`. Это не исходный код - переменные, имена функций потеряны при компиляции - но структура алгоритма восстанавливается.
| Инструмент | Тип | Платформы | Особенности |
|---|---|---|---|
| objdump | CLI дизассемблер | Linux/Mac | Встроен, простой, нет CFG |
| IDA Pro | Интерактивный | Все | Лучший автоанализ, дорогой (USD 3000+) |
| Ghidra | Интерактивный | Все | Open source (NSA), декомпилятор |
| Binary Ninja | Интерактивный | Все | API для автоматизации, (USD 500) |
| radare2 | CLI/GUI фреймворк | Все | Open source, Frida интеграция |
Binary stripped (символы удалены). Ghidra анализирует main() и показывает FUN_00401234. Как найти функцию проверки пароля?
Dynamic Analysis: отладка в runtime
Статический анализ показывает код, но не поведение. Обфускация, packed/encrypted code, dynamic dispatch - скрывают логику. **Dynamic analysis** - запуск и наблюдение в runtime: breakpoints, memory dumps, syscall tracing. Истина открывается в исполнении.
**Anti-debugging techniques:** IsDebuggerPresent() (Windows), ptrace detection (Linux), timing checks (rdtsc), debugger-specific memory patterns. **Bypass:** patch IsDebuggerPresent return value через memory edit в debugger, NtSetInformationThread для скрытия threadа от debugger.
Приложение проверяет пароль и выводит 'Access Granted' или 'Invalid'. Самый быстрый метод найти правильный пароль?
IDA Pro: промышленный стандарт RE
IDA Pro - де-факто стандарт для профессионального reverse engineering: анализ malware в антивирусных компаниях, исследование firmware, vulnerability research. 30 лет развития. FLIRT (Fast Library Identification and Recognition Technology) распознаёт статически слинкованные библиотеки. Hexrays decompiler восстанавливает псевдо-C код.
**IDA Free** - бесплатная версия IDA для x86/x64 без Hex-Rays decompiler. **Hex-Rays** лицензия отдельно - тысячи долларов. Для большинства CTF и исследований достаточно Ghidra (free) или Binary Ninja + Hex-Rays аналог (nina-decompiler).
IDA показывает функцию sub_40100 вызываемую из main. Функция возвращает 0 или 1. Как быстро понять её назначение?
Ghidra: NSA открыла свой инструмент
2019 год. NSA открывает исходный код Ghidra на RSA Conference. Security community в шоке - качественный промышленный RE инструмент, бесплатно. За первые недели: GitHub stars быстрее чем у любого другого NSA релиза. Основная альтернатива IDA Pro для тех, кто не может или не хочет платить USD 3000+.
**Collaborative RE в Ghidra:** Ghidra имеет встроенный сервер для командной работы над одним проектом. Несколько аналитиков одновременно анализируют разные части malware - rename функций, комментарии синхронизируются. IDA требует сторонние плагины для коллаборации (idat, IDA sync).
Reverse engineering требует знания ассемблера и применим только для malware
Современные RE инструменты с декомпиляторами значительно снижают порог. RE применяется в: уязвимость research, IoT firmware analysis, legacy code (нет source), interoperability, CTF, malware analysis.
Hex-Rays и Ghidra decompiler восстанавливают псевдо-C из ассемблера. Опытный аналитик читает декомпилированный код быстрее чем asm. Но базовое понимание x86/ARM инструкций ускоряет работу при неточностях декомпилятора.
Команда из 5 аналитиков анализирует сложный malware. Что предпочтительнее: IDA Pro или Ghidra?
Ключевые идеи
- **Дизассемблирование:** objdump/r2 для базового анализа. strings + xrefs - первый шаг для stripped binary. .rodata strings -> jump to usage
- **Dynamic Analysis:** GDB/pwndbg для ассемблера, Frida для runtime hooking, strace/ltrace для syscalls. Frida-hook strcmp -> пароль за секунды
- **IDA Pro:** промышленный стандарт, лучший декомпилятор (Hex-Rays). FLIRT распознаёт библиотеки. IDAPython автоматизирует анализ
- **Ghidra:** NSA open source, встроенный декомпилятор, collaborative RE server. Лучший бесплатный выбор для команд
Связанные темы
Reverse Engineering - фундамент для exploit development и malware analysis:
- Exploit Development — RE для поиска уязвимостей, gadgets, понимания memory layout
- Malware Analysis — RE - основной метод понимания поведения malware
- Инструменты пентеста — RE дополняет динамические инструменты (Burp, Metasploit) для полного анализа
Вопросы для размышления
- Есть ли в организации сотрудники с навыками RE? Кто анализирует подозрительные файлы перед запуском?
- Ghidra установлена и настроена для команды? Есть ли shared server для командного анализа?
- Если получен suspicious EXE от клиента - какой процесс безопасного анализа? sandbox -> strings -> Ghidra -> Frida?
Связанные уроки
- sec-22 — Buffer overflow требует понимания дизассемблера для поиска gadgets
- sec-24 — Malware analysis использует RE инструменты для анализа вредоносного кода
- sec-30 — Пентест инструменты включают RE как часть assessment процесса
- os-15-syscalls