Информационная безопасность

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`. Это не исходный код - переменные, имена функций потеряны при компиляции - но структура алгоритма восстанавливается.

ИнструментТипПлатформыОсобенности
objdumpCLI дизассемблерLinux/MacВстроен, простой, нет CFG
IDA ProИнтерактивныйВсеЛучший автоанализ, дорогой (USD 3000+)
GhidraИнтерактивныйВсеOpen source (NSA), декомпилятор
Binary NinjaИнтерактивныйВсеAPI для автоматизации, (USD 500)
radare2CLI/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
Reverse Engineering

0

1

Войти