личный блог

Статьи · security

Nyx: что на самом деле делает «чистильщик следов» и как от него защищаться

·5 мин чтения ·Статьи·

Nyx — открытый скрипт (shell для Linux/macOS, PowerShell для Windows), который позиционируется как «self-contained cleaner of forensic traces». Проект набрал популярность, и его часто советуют как «удобную чистку системы». Это неверное восприятие: по назначению Nyx — anti-forensics-инструмент. Ниже — что он делает, насколько безопасно его запускать и как защитнику замечать его следы.

Происхождение и наличие вредоносного поведения

Вывод: как малварь по поведению он не выглядит. Опасность — в его прямой функции.

Что он затрагивает

Для владельца системы важны не «логи», а побочные потери. Помимо журналов и истории команд, модули затрагивают:

То есть запуск на «своей» рабочей машине может стоить вам доступа к облаку, кошельку или VPN. Автор сам называет проект alpha.

Режим --dry-run: где он не защищает

Именно --dry-run многие считают страховкой. В Linux/macOS-версии он реализован через три обёртки (safe_remove, safe_remove_tree, truncate_file), которые при dry-run только печатают сообщение. Но в коде есть 28 мест, где деструктивные команды вызываются напрямую, мимо обёрток. Пять из них не защищены проверкой DRY_RUN, у остальных 23 проверка находится в нескольких строках выше по коду. Картина такая:

Место Что происходит при --dry-run
Модуль temp, поиск файлов core*, *.crash, *crash* в /tmp и /var/crash Удаляет реально. Защиты DRY_RUN нет, и счётчик «очищено» растёт. Это подтверждённый дефект
macOS: пустая корзина, unified logs, FSEvents, Notification Center Защиты DRY_RUN нет, но пути передаются в кавычках с * ("$dir/*"), поэтому шаблон не раскрывается и команда ничего не делает. Побочный эффект — модуль рапортует об очистке, которой не было
Остальные 23 прямых вызова Проверка DRY_RUN есть рядом

Отдельно: счётчики count в этих местах увеличиваются внутри конвейера find | while read — это подпроцесс, и итоговая статистика в отчёте занижена/некорректна.

PowerShell-версия. Примерно в 5 из ~74 деструктивных вызовов рядом нет проверки DryRun: очистка журналов событий двумя способами, файлы Prefetch и один вызов удаления по вычисляемому пути. Тестами не подтверждено: анализ проведён только по коду, и проверка может стоять выше по тексту скрипта. Перед любым запуском эти места нужно проверить отдельно.

Практический вывод: --dry-run нельзя считать гарантией неизменности системы. В Linux-версии он уже подтверждённо пропускает реальное удаление.

Что делать, если очень хочется попробовать

Защита: как заметить, что такой инструмент отработал

Nyx и подобные скрипты уничтожают локальные следы. Значит, защита строится на том, чтобы важные события покидали хост раньше, чем их успеют стереть.

  1. Централизованный сбор журналов. Пересылайте syslog/journald и журналы событий Windows на отдельный коллектор или в SIEM в реальном времени. Локальное усечение уже ничего не докажет и не спрячет.
  2. Алерты на сам факт очистки.
    • Windows: события об очистке журналов (Security 1102, System 104), об изменении политики аудита (4719), запуск утилит удаления теневых копий и работы с USN-журналом — по командной строке (Sysmon / Process Creation).
    • Linux: остановка auditd, сброс правил аудита, резкое обнуление размера файлов в /var/log при неизменном inode, массовое обнуление файлов *_history.
  3. Неизменяемость. На критичных хостах включайте неизменяемый режим правил auditd, задавайте append-only для журналов, используйте WORM/удалённое хранилище.
  4. Контроль целостности конфигураций (AIDE, Wazuh, osquery): массовое исчезновение файлов конфигурации VPN/облака — сигнал.
  5. Принцип минимальных прав. Инструмент бесполезен без root/Administrator; ограничивайте sudo, следите за повышением привилегий, разделяйте доступ к журналам и к работе на хосте.
  6. Резервные копии секретов. Кошельки и облачные ключи должны иметь резервные копии вне хоста — на случай, если «чистка» затронет их.

Итог

Олег Букатчук
Олег Букатчук
DevOps- и SRE-инженер. Строил отказоустойчивую инфраструктуру для классифайда, e-commerce и госсектора: cian.ru, aliexpress.ru, mos.ru.

// Рассылка

Раз в неделю — что сломалось
и почему это было видно заранее

Разборы аварий, заметки по эксплуатации и то, что не попадает в статьи. Без анонсов вебинаров и без «полезных подборок».

Отписаться можно одним кликом из любого письма. Адрес не передаётся третьим лицам.