Как найти и удалить скрытые LaunchDaemons и LaunchAgents на macOS

Понимание порядка запуска macOS
Когда вы включаете Mac, система проходит через привычную последовательность событий:
- Звук запуска (если включён).
- Появление логотипа Apple и индикатора загрузки.
- Появление экрана входа или рабочего стола (при автоматическом входе).
Фактически, за запуск и контроль процессов отвечает системный демон launchd. Он управляет запуском, остановкой и мониторингом всех процессов в системе, включая системные служебные процессы и процессы отдельных пользователей.
Откройте приложение Мониторинг активности (Activity Monitor) и выберите меню Вид > Все процессы. Вверху списка вы увидите два ключевых процесса: kernel_task и launchd, с PID 0 и 1 соответственно. Это показывает, что launchd — родительский процесс для всех остальных процессов при старте системы и последний завершает работу при выключении.
Основная задача launchd — запускать другие процессы по расписанию или по требованию. Для этого он читает описания задач в plist-файлах. Эти задачи делятся на две категории: LaunchDaemons и LaunchAgents.
Что такое LaunchDaemons и LaunchAgents?
LaunchDaemons обычно запускаются от имени root: они работают независимо от того, вошёл ли пользователь в систему, и не могут взаимодействовать с графическим интерфейсом. Они влияют на всю систему. Примеры системных демонов: locationd (определение геопозиции) и bluetoothd (управление Bluetooth).
Списки демонов находятся в следующих папках:
- /System/Library/LaunchDaemons — для встроенных компонентов macOS
- /Library/LaunchDaemons — для сторонних приложений, установленных для всей системы
LaunchAgents запускаются при входе пользователя. В отличие от демонов, агенты могут взаимодействовать с интерфейсом: показывать окна, уведомления и работать с элементами в меню. Примеры — напоминания календаря, приложения синхронизации и др.
Списки агентов находятся в:
- /Library/LaunchAgents — для всех пользователей
- ~/Library/LaunchAgents — для конкретного пользователя
- /System/Library/LaunchAgents — только для компонентов macOS (под защитой System Integrity Protection)
Перед входом в систему launchd загружает .plist-файлы из папки LaunchDaemons. После входа он проверяет LaunchAgents. Файлы в /System/Library защищены SIP, и их удалять нельзя.
Формат имён .plist-файлов обычно использует обратную доменную нотацию: имя компании, идентификатор приложения и расширение .plist — например co.clario.Clario.plist.
Почему простое удаление из “Объекты входа” недостаточно
Пользователь может удалить приложение из системных “Объектов входа” (Login Items), но остающиеся .plist-файлы в LaunchAgents или LaunchDaemons всё ещё будут запускать компоненты в фоновом режиме. Малварь и PUP (potentially unwanted programs) часто используют эти публичные папки для устойчивости: даже после удаления самого приложения компонент будет реинсталлироваться при старте системы или при входе.
Важно понимать разницу ролей:
- LaunchDaemons — служат для фоновой работы без интерфейса и запускаются до входа пользователя.
- LaunchAgents — могут взаимодействовать с пользователем и запускаются после входа.
Как обнаружить новые или подозрительные LaunchDaemons и LaunchAgents
Публичные папки LaunchDaemon и LaunchAgent доступны как легитимным, так и злонамеренным приложениям. Самый надёжный путь — настроить мониторинг этих папок и получать оповещения о добавлении новых файлов.
Ниже — ручной и автоматизированный подходы.
Настройка мониторинга через AppleScript Folder Actions
- Откройте приложение Редактор AppleScript (Script Editor). Через Spotlight найдите “Редактор скриптов”.
- В меню Настройки включите опцию Показывать меню скриптов в строке меню.
- В строке меню кликните значок меню скриптов и выберите Folder Actions > Включить действия папок.
- Выберите Attach Script to Folder (Привязать скрипт к папке) и добавьте скрипт “add - new item alert” (уведомление о новом элементе).
- Укажите первую папку: /Library/LaunchDaemons. Подтвердите выбор.
- Повторите шаги для каждой папки LaunchAgents: /Library/LaunchAgents и ~/Library/LaunchAgents. Для быстрой навигации используйте Finder > Перейти > Перейти к папке (Shift + Cmd + G) и введите ~/Library/LaunchAgents.
- В контекстном меню папки выберите Сервисы > Настройка действий папок, затем добавьте скрипт new item alert.scpt, если он отсутствует.
Теперь macOS будет показывать всплывающее окно при добавлении нового файла в отслеживаемые папки. Это простой и эффективный способ заметить попытки внедрения.
Важно: если вы видите появление .plist-файлов сразу после установки легитимного софта — это нормально. Однако неожиданные появления без вашей активности — повод для проверки.
Мониторинг с помощью сторонних приложений
Если нужен более удобный или визуальный мониторинг, используйте диагностические и защитные утилиты.
- EtreCheck: диагностический инструмент, который собирает и отображает информацию о системе, включая статус сторонних LaunchDaemons и LaunchAgents. Бесплатен для первых пяти отчётов, далее предлагается платная опция.
- Lingon X: позволяет запускать скрипты и команды по расписанию, а также просматривать и редактировать элементы в LaunchDaemons и LaunchAgents. Подходит для опытных пользователей.
- KnockKnock: анализирует места устойчивого присутствия приложений, показывает подписи, пути к файлам и результаты сканирования VirusTotal.
- BlockBlock: непрерывно отслеживает места устойчивости и оповещает при попытке записи новых компонентов.
- Malwarebytes: при сомнениях используйте бесплатную версию Malwarebytes для первичной проверки; при необходимости рассмотрите платную подписку для активной защиты.
Выбор инструмента зависит от вашего уровня комфорта: EtreCheck и KnockKnock хороши для диагностики, Lingon X подходит для ручного управления, а BlockBlock — для пассивного оповещения.
Как безопасно удалять подозрительные LaunchDaemons и LaunchAgents
Перед удалением всегда выполните эти шаги:
- Скопируйте подозрительный .plist-файл на рабочий стол (резервная копия).
- Посмотрите, от какого приложения он родом: обратная доменная нотация в имени .plist и путь к исполняемому файлу дают подсказки.
- Поиск в Google имени процесса и пути часто даёт полезные сведения. Оценивайте источники: форумы, блоги по кибербезопасности, страницы разработчиков.
- Не удаляйте элементы из /System/Library — они критичны для работы macOS.
Удаление:
- Перетащите .plist в Корзину (Trash) или переместите на рабочий стол.
- Перезагрузите компьютер, чтобы убедиться, что компонент больше не появляется и не запускается.
Если компонент не удаляется из-за прав, используйте sudo в терминале (только если вы понимаете последствия):
sudo rm /Library/LaunchAgents/имя.plist
И затем перезагрузите.
Примечание: удаление .plist-файла обычно достаточно, так как launchd перестаёт запускать компонент. Однако иногда вредоносная практика включает дополнительные установочные скрипты или двоичные файлы в других местах, поэтому ищите связанные исполняемые файлы по пути, указанному в .plist, и по имени процесса.
Когда не стоит удалять файл сразу
- Если .plist явно принадлежит знакомому приложению, которое вы используете — сначала удалите приложение стандартным способом через его собственный деинсталлятор или AppCleaner.
- Если файл появился после обновления macOS — он может быть системным компонентом.
- Если вы не уверены — временно переместите файл на рабочий стол и понаблюдайте за поведением системы несколько перезапусков.
Плейбук реагирования: что сделать при подозрительной активности
Этот короткий плейбук предназначен для домашнего или корпоративного пользователя, столкнувшегося с подозрительной автозагрузкой.
- Сохраните текущую сессию и завершите важные задачи.
- Сделайте резервную копию важных данных (Time Machine или вручную на внешний диск).
- Соберите доказательства: снимок экрана, имя .plist, путь, время появления.
- Отключите от сети, если подозреваете активную утечку данных.
- Используйте Malwarebytes и KnockKnock/BlockBlock для первичной диагностики.
- Переместите подозрительные .plist в карантин (папка на рабочем столе).
- Перезагрузите и проверьте, исчез ли процесс.
- Если проблема исчезла — удалите карантинную копию и проверьте систему ещё раз через 48–72 часа.
- Если проблема осталась — восстановите резервную копию, обратитесь в службу поддержки Apple или к специалисту по безопасности.
Инцидентный план и откат
Короткий план действий, если обнаружено вредоносное ПО, которое действует в фоне:
- Отключение: изолируйте Mac от сети (Wi‑Fi, Ethernet).
- Сбор данных: список процессов, записи в /var/log, списки автозагрузки (/Library/LaunchAgents, ~/Library/LaunchAgents, /Library/LaunchDaemons).
- Устранение: переместите .plist и связанные двоичные файлы в карантин.
- Тест: перезагрузите и проверьте наличие симптомов.
- Откат: если изменения привели к нежелательным эффектам, восстановите файлы из карантина или резервной копии.
- Коррекция: примените обновления системы, смените пароли и проверьте учётные записи на предмет компрометации.
Важно: при работе с корпоративными машинами координируйте действия с IT-службой и храните журнал всех изменений для последующего расследования.
Модель зрелости мониторинга автозагрузки
- Уровень 0 — Нет мониторинга: пользователь не проверяет автозагрузку.
- Уровень 1 — Ручная проверка: разовая проверка папок LaunchAgents/LaunchDaemons.
- Уровень 2 — Инструменты: использование EtreCheck/KnockKnock для периодических проверок.
- Уровень 3 — Автоматизация: Folder Actions или BlockBlock для оповещений в реальном времени.
- Уровень 4 — Централизованный мониторинг: корпоративные решения EDR/MDM с политиками удаления и расследования.
Цель — достичь уровня 2–3 для домашних пользователей и 3–4 для организаций.
Практические чек-листы по ролям
Для домашнего пользователя:
- Включить Folder Actions для ~/Library/LaunchAgents и /Library/LaunchAgents.
- Запустить KnockKnock или BlockBlock раз в месяц.
- Установить Malwarebytes и периодически проверять систему.
- Хранить резервные копии важных данных.
Для ИТ-администратора:
- Настроить централизованный сбор логов (syslog/EDR).
- Ограничить права установки через MDM/политику безопасности.
- Проводить регулярные аудиты /Library и /Users/*/Library.
- Обучать пользователей признакам PUP и фишинга.
Критерии приёмки
- Система не запускает неизвестных процессов после чистки.
- Новые файлы в LaunchAgents/LaunchDaemons фиксируются и отправляют оповещение.
- Пользователь или администратор подтвердил отсутствие побочных эффектов после удаления.
- Нет повторной репликации вредоносного компонента в течение 72 часов.
1‑строчный глоссарий
- launchd — системный менеджер процессов macOS.
- LaunchDaemon — фоновый сервис, запускающийся до входа пользователя.
- LaunchAgent — агент, запускающийся после входа и имеющий доступ к UI.
- .plist — Property List, файл конфигурации для задач launchd.
- SIP — System Integrity Protection, механизм защиты системных файлов.
Решения и альтернативные подходы
- Удаление вручную .plist и связанных двоичных файлов — простой и часто достаточный метод.
- Использование MDM/EDR в организациях для контроля политик автозапуска — масштабируемый и управляемый подход.
- Полный сброс macOS и восстановление из чистой резервной копии — крайняя мера при сильном заражении.
Примеры, когда ручное удаление не сработает:
- Вредоносный инсталлятор автоматически восстанавливает .plist при каждом запуске из другого места.
- Заражение включает системные расширения или kext-драйверы, которые действуют на уровне ядра.
В таких случаях рекомендуется обратиться к специалистам и рассмотреть полное восстановление системы.
Безопасность и профилактика
- Устанавливайте приложения только из App Store или доверенных источников.
- Избегайте «установщиков» с непроверенных сайтов — они часто содержат PUP.
- Используйте отдельную учётную запись без прав администратора для повседневной работы.
- Включите автоматические обновления macOS и приложений.
- Периодически просматривайте /Library/LaunchAgents и ~/Library/LaunchAgents.
Decision tree для действий при подозрении на автозапуск (Mermaid)
flowchart TD
A[Заметили подозрительную активность] --> B{Запуск происходит после входа?}
B -- Да --> C[Проверить ~/Library/LaunchAgents и /Library/LaunchAgents]
B -- Нет --> D[Проверить /Library/LaunchDaemons и /System/Library]
C --> E{Файл найден?}
D --> E
E -- Да --> F[Скопировать файл в карантин, выполнить поиск связанных двоичных файлов]
E -- Нет --> G[Запустить Malwarebytes и KnockKnock / EtreCheck]
F --> H{Связанный двоичный найден?}
H -- Да --> I[Переместить двоичный в карантин и перезагрузить]
H -- Нет --> I
I --> J[Мониторить 72 часа]
J --> K{Проявляется ли проблема снова?}
K -- Да --> L[Обратиться к специалисту или восстановить систему]
K -- Нет --> M[Удалить карантинные копии и продолжать мониторинг]Часто задаваемые вопросы
В: Можно ли удалить все файлы из /Library/LaunchAgents без вреда?
О: Нет. Там могут быть легитимные задачи системных приложений и сервисов. Удаляйте только те файлы, источник которых вам неизвестен или которые явно связаны с нежелательным ПО.
В: Как понять, какой .plist безопасен?
О: Анализируйте имя (обратная доменная нотация), путь к файлу и исполняемому компоненту, подпись разработчика и результаты поиска в интернете.
В: Что делать, если файл восстанавливается после удаления?
О: Это признак дополнительного установщика. Ищите процессы-установщики, скрипты автозапуска и связанные двоичные файлы. При необходимости изолируйте систему и обратитесь к специалистам.
В: Нужно ли отключать SIP перед удалением системных файлов?
О: Никогда не отключайте SIP без крайней необходимости и без чёткого понимания последствий. Файлы в /System/Library защищены по причине — большинство из них критичны для системы.
Рекомендации по проверке и тестам
- Тест 1: Создайте искусственный .plist в ~/Library/LaunchAgents и убедитесь, что Folder Actions или выбранное приложение оповещает вас о создании файла.
- Тест 2: Сделайте снимок списка процессов до и после удаления .plist, чтобы убедиться, что вредоносный процесс не запускается.
- Тест 3: Проверка восстановления — удалите .plist и следите за папкой 72 часа; если файл появляется вновь, ищите источник репликации.
Итог и краткое резюме
Мониторинг папок LaunchDaemons и LaunchAgents — эффективный способ раннего обнаружения нежелательных компонентов, которые поддерживают постоянную активность приложений и могут встраивать рекламу, перенаправления или фоновую утечку данных. Комбинация простых системных инструментов (Folder Actions), бесплатных утилит (KnockKnock, BlockBlock, Malwarebytes) и аккуратных ручных проверок позволяет защитить Mac без радикальных мер. Для организаций и продвинутых пользователей имеет смысл использовать централизованные EDR/MDM-решения.
Важно: не удаляйте файлы из /System/Library, прежде чем не убедитесь, что это не системный компонент. При серьёзных признаках заражения рассмотрите помощь специалиста.
Краткие шаги для быстрой проверки:
- Проверить папки /Library/LaunchAgents, ~/Library/LaunchAgents и /Library/LaunchDaemons.
- Настроить Folder Actions для оповещений.
- Просканировать систему KnockKnock/BlockBlock/Malwarebytes.
- Переместить подозрительные .plist в карантин и перезагрузить.
Спасибо за внимание. Если нужно, могу подготовить готовый скрипт Folder Action для автоматического оповещения и шаблон отчёта для IT-службы.