Nyx — открытый скрипт (shell для Linux/macOS, PowerShell для Windows), который позиционируется как «self-contained cleaner of forensic traces». Проект набрал популярность, и его часто советуют как «удобную чистку системы». Это неверное восприятие: по назначению Nyx — anti-forensics-инструмент. Ниже — что он делает, насколько безопасно его запускать и как защитнику замечать его следы.
Происхождение и наличие вредоносного поведения
- Автор — Simone Margaritelli (evilsocket), известный по bettercap. Лицензия GPLv3, репозиторий небольшой: два основных скрипта, cmd-обёртка, тесты в Docker и один CI-воркфлоу.
- Сети нет. Нет вызовов
curl/wget//dev/tcp,Invoke-WebRequest,DownloadStringи сокетов. Строки с «http» относятся к именам журналов веб-серверов. - Обфускации нет. Нет
base64,eval,iex,-EncodedCommand. Код читается линейно. - Скрипт ничего не отправляет наружу и не закрепляется в системе.
Вывод: как малварь по поведению он не выглядит. Опасность — в его прямой функции.
Что он затрагивает
Для владельца системы важны не «логи», а побочные потери. Помимо журналов и истории команд, модули затрагивают:
- Секреты и ключи: облачные конфиги и креды (AWS, Azure, Kubernetes), хранилища и конфиги криптокошельков (в том числе каталоги ключей Ethereum и кошельки Electrum);
- Сетевую конфигурацию: конфиги VPN (OpenVPN, WireGuard), профили NetworkManager, сохранённые правила iptables;
- Средства защиты и наблюдения: аудит ядра и службу auditd, журналы IDS/IPS (Snort, Suricata, OSSEC, Fail2ban), журналы EDR/AV и Windows Defender;
- Восстановимость: теневые копии Windows, USN-журнал, BitLocker-материалы во временных каталогах.
То есть запуск на «своей» рабочей машине может стоить вам доступа к облаку, кошельку или 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-версии он уже подтверждённо пропускает реальное удаление.
Что делать, если очень хочется попробовать
- Только в одноразовой виртуальной машине без реальных данных и без привязки к облачным учёткам.
- Перед этим прочитать исходник целиком и зафиксировать коммит, а не скачивать ссылку
rawс веткиmain. - Не запускать на рабочих станциях, серверах, машинах с кошельками или чужих системах: на корпоративной технике очистка журналов может нарушать политику компании и закон.
Защита: как заметить, что такой инструмент отработал
Nyx и подобные скрипты уничтожают локальные следы. Значит, защита строится на том, чтобы важные события покидали хост раньше, чем их успеют стереть.
- Централизованный сбор журналов. Пересылайте syslog/journald и журналы событий Windows на отдельный коллектор или в SIEM в реальном времени. Локальное усечение уже ничего не докажет и не спрячет.
- Алерты на сам факт очистки.
- Windows: события об очистке журналов (Security 1102, System 104), об изменении политики аудита (4719), запуск утилит удаления теневых копий и работы с USN-журналом — по командной строке (Sysmon / Process Creation).
- Linux: остановка auditd, сброс правил аудита, резкое обнуление размера файлов в
/var/logпри неизменном inode, массовое обнуление файлов*_history.
- Неизменяемость. На критичных хостах включайте неизменяемый режим правил auditd, задавайте append-only для журналов, используйте WORM/удалённое хранилище.
- Контроль целостности конфигураций (AIDE, Wazuh, osquery): массовое исчезновение файлов конфигурации VPN/облака — сигнал.
- Принцип минимальных прав. Инструмент бесполезен без root/Administrator; ограничивайте sudo, следите за повышением привилегий, разделяйте доступ к журналам и к работе на хосте.
- Резервные копии секретов. Кошельки и облачные ключи должны иметь резервные копии вне хоста — на случай, если «чистка» затронет их.
Итог
- Nyx — не вредоносная программа по поведению, но по назначению это разрушительный anti-forensics-инструмент.
- Он затрагивает секреты, VPN-конфиги, ключи кошельков и защитные механизмы, а не только «мусор».
--dry-runв Linux-версии подтверждённо неполон: одно реальное удаление при пробном запуске, несколько мест-«пустышек» из-за кавычек, некорректная статистика.- Для защитников главный урок: журналы, которые остаются только на самом хосте, — слабое доказательство. Собирайте их снаружи и алертите на попытки очистки.