Разобрать, чтобы понять
Реверс-инжиниринг — анализ готовой программы без исходного кода, чтобы понять, как она работает.
При чём тут безопасность: так изучают вредоносные программы: что они крадут, куда отправляют данные, как их обнаружить и обезвредить. Так же ищут уязвимости в закрытом ПО.
Статический анализ
Программу изучают без запуска: смотрят строки, импортируемые функции, структуру файла.
Дизассемблер превращает машинный код в ассемблер, декомпилятор пытается восстановить код, похожий на исходный. Популярные инструменты — Ghidra (открытый, от АНБ США) и IDA.
Динамический анализ
Программу запускают в изолированной среде — песочнице или виртуальной машине без доступа к рабочей сети — и наблюдают: какие файлы создаёт, к каким адресам обращается, что меняет в системе.
Отладчик позволяет выполнять программу по шагам и смотреть содержимое памяти.
Препятствия
Авторы вредоносных программ мешают анализу:
- обфускация — запутывание кода;
- упаковка — сжатие или шифрование кода, который распаковывается только при запуске;
- проверка, не запущена ли программа в виртуальной машине, чтобы в ней вести себя «прилично».
Результат анализа
Из реверса получают индикаторы компрометации (IoC): хеши файлов, адреса управляющих серверов, имена процессов. Их добавляют в системы защиты, чтобы находить заражения по всей компании.
Анализ вредоносного ПО проводят только в изолированной лаборатории, никогда — на рабочем компьютере.
Главное за урок
- Реверс — анализ программы без исходного кода.
- Статический анализ — без запуска, динамический — в изолированной среде.
- Результат — индикаторы компрометации для защиты всей компании.