Natch -- это инструмент для определения поверхности атаки, основанный на полносистемном эмуляторе QEMU. Natch предназначен для поиска поверхности атаки (приложений, модулей, функций) в объекте оценки, который может состоять из множества библиотек, программ, контейнеров. Инструмент можно использовать для поиска функций для тестирования, библиотек, которые загружают исследуемые приложения, файлов, в которые попадают заданные входные данные.
Для анализа объект оценки помещается в образ виртуальной машины (ВМ), которая запускается в эмуляторе. Пользователь выбирает интересующие его входные данные, а Natch отслеживает их распространение в виртуальной машине во время её работы. При этом фиксируется, какой код занимался обработкой этих данных. Обнаруженные участки кода средствами интроспекции соотносятся с процессами, программными модулями и функциями. Информация о них записывается в наборе файлов, описывающих поверхность атаки.
Файлы с поверхностью атаки загружаются в инструмент SNatch, входящий в поставку Natch, для отображения в виде веб-страниц и генерации отчётов в pdf.
Анализ объекта оценки делится на следующие этапы:
- Создание проекта на основе образа виртуальной машины и объекта оценки
- Запись сценария работы объекта оценки в виртуальной машины
- Выбор входных данных для отслеживания (файлы, сетевые подключения)
- Воспроизведение сценария и сохранение поверхности атаки
- Загрузка полученной поверхности атаки в SNatch
- Изучение поверхности атаки с помощью интерактивных отчётов в браузере
- Генерация отчётов в виде pdf
Шаги с записью и воспроизведением сценария необходимы по двум причинам. Первая, это борьба с замедлением виртуальной машины во время определения поверхности атаки. На записанный сценарий не будут влиять задержки от механизмов анализа, что очень важно для корректной работы часов реального времени и при взаимодействии с сетью.
Вторая причина, это возможность повторять анализ уже записанного сценария, изменяя помечаемые входные данные. Так можно многократно повторять анализ, изучая разные компоненты объекта оценки.
Установка Natch описана в разделе Установка и настройка Natch, запуск тестовых примеров для ознакомления с инструментом -- в разделе Запуск тестовых примеров Natch, подготовка образа исследуемой системы -- в разделе Настройка окружения для работы с Natch, описание команд для работы с инструментом -- в разделе Командный интерфейс Natch, запись и воспроизведение сценариев работы с исследуемым ПО -- в разделе Запись и воспроизведение сценариев, описание источников пометки -- в разделе Определение источников пометки, анализ и оценка результатов в SNatch -- в разделе Анализ поверхности атаки с помощью SNatch.
- Анализ потоков помечаемых пользовательских данных (сетевых пакетов, файлов, данных из проброшенных USB-устройств) внутри виртуальной машины
- Сбор информации о процессах: командная строка, исполняемые модули, запускаемые скрипты, открываемые файлы и сокеты
- Определение процессов, запущенных в docker-контейнерах
- Сохранение сетевого трафика между виртуальной машиной и внешним миром
- Отображение потоков помеченных данных между модулями и процессами в виде графовых диаграмм
- Построение стеков вызовов для функций, обрабатывающих помеченные данные
- Получение списка работающих в каждом процессе скриптов на Python
- Построение стеков вызовов для Python и Java-функций, обрабатывающих помеченные данные
- Отображение вызванных функций процессов в виде флейм-диаграмм
- Построение дерева процессов с указанием UID для каждого из них
- Работа под 64-битной ОС на основе Linux
- Желательно наличие отладочной информации в формате dwarf (или Go) для бинарных файлов объекта оценки
- Python-интерпретаторы и Java-машины, не входящие в поставку ОС, нужно извлечь из ВМ. Интерпретаторы обязательно должны быть с отладочной информацией
Рекомендации по подготовке объекта оценки приведены в разделе Рекомендации по подготовке и анализу объекта оценки.