Skip to content

Latest commit

 

History

History
192 lines (122 loc) · 17.7 KB

13_faq.md

File metadata and controls

192 lines (122 loc) · 17.7 KB

13. FAQ

В этом разделе собраны наиболее часто встречающиеся проблемы при работе с инструментами Natch и SNatch, раздел будет пополняться.


Проблема: хочется узнать срок действия лицензии

Решение: в случае с сетевым ключом откройте http://localhost:1947/_int_/products.html, далее кликните на Features напротив продукта Natch. При использовании аппаратного ключа следует открыть http://localhost:1947/_int_/devices.html и кликнуть на Features напротив записи, соответствующей вашему аппаратному ключу.


Проблема: настройка стенда происходит очень медленно

Решение: используйте команду natch kvm для работы QEMU в режиме аппаратной виртуализации. Чтобы проверить включен ли KVM в уже запущенной виртуальной машине -- введите в мониторе Natch команду info kvm.


Проблема: Natch не запускается

При запуске появляется сообщение "Sentinel LDK Protection System: Sentinel key not found"

Решение: проверьте наличие лицензии. Удостоверьтесь что используете подходящий вашему ключу дистрибутив, а так же что окружение для ключей Sentinel установлено и оно подходящей версии.


Проблема: Natch завершается с ошибкой illegal instruction (недопустимая инструкция)

При возникновении ошибки illegal instruction (недопустимая инструкция), следует проверить совместимость вашего процессора. Для этого выполните команду:

cat /proc/cpuinfo | grep -m1 flags | awk '/avx/ && /sse/ && /sse4_1/ && /sse4_2/'

Если вывод пустой, значит ваш процессор не подходит.

Решение: необходимо использовать процессор, поддерживающий расширения avx, sse, sse4_1, sse4_2.


Проблема: тюнинг работает слишком долго и ничего не происходит

Решение: подождите (чаще всего это и есть решение). Если ОС загрузилась, а настройка все еще идет, попробуйте поделать что-то, например, позапускать программы, чтобы спровоцировать возникновение системных вызовов. В случае если вы используете экзотическую ОС и тюнинг не может быть выполнен, он завершится по таймауту и вы получите сообщение о нештатном завершении настройки. В таком случае обратитесь к разработчику.

Так же тюнинг может быть выполнен не полностью, но если все обязательные параметры были обнаружены, настройки сформируются и инструмент будет работать.


Проблема: статистика помеченных данных показывает нули

Решение: чаще всего такая ситуация возникает, если источник помеченных данных был указан неверно (или не указан вовсе) или если работа с помеченными данными происходила до того как состояние машины было сохранено. Проверьте:

  • указали ли вы источники пометки в конфигурационном файле taint.cfg (natch edit taint)
  • выполнили ли команду savevm до того как поработали с помеченными данными

Если все верно, а статистика нулевая, возможно это баг :) Обратитесь к разработчику, пожалуйста.


Проблема: появилась необходимость перегенерировать task.cfg. Например, у вас есть проект и вы не хотите его пересоздавать, а версия конфигурационного файла task.cfg изменилась и Natch не запускается

Решение: выполните команду natch tuning, согласитесь с тем что хотите переписать существующий файл task.cfg, дождитесь окончания работы эмулятора.


Проблема: не установился SNatch

Решение: проверьте, что в названиях директорий, в которых вы находитесь, нет пробелов. Если есть, устраните проблему и перезапустите snatch_setup.sh.


Проблема: шкала прогресса "Processing surface" пропала до завершения обработки архива (например, после обновления страницы).

Решение: процесс обработки архива продолжается в фоне. При его завершении в консоли появится сообщение Processing ___ is done!


Проблема: Flame graph долго строится/завис

Решение: процесс построения флейм графа может занять очень длительное время, более часа.

При построении флейм графа выводится прогресс. Если же ждать все равно больше не хочется, процесс построения можно прервать с помощью кнопки Generate, которая краснеет при наведении мыши.


Проблема: во время экспорта проекта в PDF появляется сообщение об ошибке для какого-то из заданных параметров

Решение: вероятнее всего, сгенерированная для данного параметра (чаще всего это относится к ресурсам) таблица оказалась слишком большой для используемой библиотеки. В таком случае рекомендуется использование предлагаемых фильтров: включить "only tainted", чтобы в отчет попали только связанные с пометками данные, и отключить "include root", чтобы оставить только пользовательские процессы.


Проблема: на Alt Linux, во время создания проекта после тюнинга на этапе сборки отладочной информации, возникают ошибки FATAL: Error create mounted folder и FATAL: Error delete mounted folder

Решение: убедитесь в том, что учетная запись root добавлена в sudoers.


Проблема: во время воспроизведения записанного сценария появляется ошибка natch-qemu-x86_64: ../plugins_isp/sources/common_plugins/utils/kernel_struct_utils.c:282: parse_param_recursive: Assertion '0' failed

Решение: вероятнее всего не был успешно завершен тюнинг для вашей гостевой ОС. Вы можете выполнить тюнинг отдельно для уже созданного проекта. См. natch tuning. В случае проблем с тюнингом вашей гостевой ОС, обратитесь в техническую поддержку.


Проблема: исследуемый продукт развернут в контейнере Podman. Во время создания проекта на этапе ROOT_PODMAN возникает вывод:

[Filling Docker Layers...]
Status: Found: 0
WARNING: [Errno 2] No such file or directory:
'/mnt/point3202315/var/lib/containers/storage/overlay-containers/containers.json' ROOT_PODMAN analysis will be skipped!

Решение: решения может быть два -- отредактировать конфигурационный файл debug_info.cfg или пересоздать проект.

Первый вариант: перейдите в рабочую директорию и выполните команду natch edit debug. В секции ContTools введите путь к Podman директории в соответствуюшем поле -- local_podman_path или root_podman_path. После этого выполните команду natch modules update.

Второй вариант: создайте проект заново, на этапе Do you want to set additional parameters? введите Y. Затем, если вы используете Podman под рутом, введите Y на этапе Do you want to analyze Root Podman, если вы используете Podman под обычным пользователем, введите Y на этапе Do you want to analyze Local Podman. На следующем шаге введите путь к Podman директории, содержащей containers.json.

В случае local Podman на Astra Linux нужная директория это /home/YourUser/.local/share/containers/.


Проблема: во время добавления архива в SNatch возникает ошибка Worker exited prematurely: signal 9 (SIGKILL) Job: XX

Решение: ошибка говорит о том, что скорее всего не хватает оперативной памяти для разбора архива. Для корректной работы SNatch с архивами в несколько сотен мегабайт и более рекомендуется не менее 32Гб оперативной памяти.


Проблема: нужно добавить опцию в командную строку запуска эмулятора

Решение: по умолчанию в командную строку попадает ограниченный набор опций, однако, пользователь может добавить все что необходимо в файл qemu_opts.ini, расположенный в рабочей директории. В файле предусмотрены метки для формирования строк для разных режимов -- [record], [replay], [rr], [tuning] и [kvm]. Если их не использовать -- опция будет применена во всех режимах. Подробнее в разделе Интерактивный режим создания проекта. Также несколько типичных случаев редактирования командной строки описаны в приложении Изменение командной строки эмулятора.


Проблема: в ходе анализа сценариев работы многопроцессного программного комплекса, предназначенного для работы на многоядерных (многопроцессорных) платформах, запись сценария происходит очень медленно

Решение: в настоящий момент и в обозримой перспективе отсутствует. Запись сценария требует запуска эмулятора QEMU в режиме полносистемной эмуляции, подразумевающем выполнение всего исполняемого кода анализируемого программного комплекса (включая код среды его функционирования - ОС, BIOS, эмулированных устройств и т. п.) в виртуальном процессоре -- программной модели процессора (эмулятор QEMU работает в данном режиме по умолчанию, в случае если не указан ключ enable-kvm).

Скорость выполнения исполняемого кода в режиме полносистемной эмуляции намного ниже по сравнению с выполнением на аппаратном процессоре, однако позволяет логировать любые изменения состояния виртуального процессора, оперативной памяти, а также взаимодействия с внешними по отношению к эмулированному пространству сущностями (сеть и т. п.). В том числе это позволяет записывать и в дальнейшем воспроизводить работу виртуальной машины, сохраняя в файл случайные и недетерминированные события, меняющие состояния виртуальной машины.

Добавление возможности надежного логирования работы даже двухядерной (двухпроцессорной) системы, требует записывать ещё и порядок обращения процессоров к памяти, чтобы избежать состояния гонки при воспроизведении. Такой лог будет на несколько порядков больше лога однопроцессорной машины, что делает запись/воспроизведение неприменимыми при существующих объёмах и скоростях накопителей.

Реализация данного механизма на программном уровне является фундаментальной проблемой, до сих пор не имеющей в мире эффективного решения. Некоторые попытки решить аналогичную задачу для архитектуры x86_64 делались разработчиками процессоров, в частности компанией Intel, однако во-первых они не завершились удачными конкретными решениями, во-вторых -- требовали доработки процессора за счёт внесения в него отдельного специализированного блока, отвечающего за корректное логирование всех операций доступа -- то есть создания отдельное процессорной линейки. Таким образом в настоящий момент увеличение числа ядер виртуального процессора QEMU и запись сценариев в многоядерном (многопроцессорном) режиме не представляется возможным технологически.