Гид по технологиям

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

10 min read Безопасность Обновлено 01 Jan 2026
Найти и удалить скрытые LaunchDaemons и LaunchAgents
Найти и удалить скрытые LaunchDaemons и LaunchAgents

Человек, сидящий за столом и смотрящий на экран MacBook

Понимание порядка запуска macOS

Когда вы включаете Mac, система проходит через привычную последовательность событий:

  • Звук запуска (если включён).
  • Появление логотипа Apple и индикатора загрузки.
  • Появление экрана входа или рабочего стола (при автоматическом входе).

Фактически, за запуск и контроль процессов отвечает системный демон launchd. Он управляет запуском, остановкой и мониторингом всех процессов в системе, включая системные служебные процессы и процессы отдельных пользователей.

Откройте приложение Мониторинг активности (Activity Monitor) и выберите меню Вид > Все процессы. Вверху списка вы увидите два ключевых процесса: kernel_task и launchd, с PID 0 и 1 соответственно. Это показывает, что launchd — родительский процесс для всех остальных процессов при старте системы и последний завершает работу при выключении.

Окно Мониторинга активности с выделенным процессом launchd

Основная задача launchd — запускать другие процессы по расписанию или по требованию. Для этого он читает описания задач в plist-файлах. Эти задачи делятся на две категории: LaunchDaemons и LaunchAgents.

Что такое LaunchDaemons и LaunchAgents?

LaunchDaemons обычно запускаются от имени root: они работают независимо от того, вошёл ли пользователь в систему, и не могут взаимодействовать с графическим интерфейсом. Они влияют на всю систему. Примеры системных демонов: locationd (определение геопозиции) и bluetoothd (управление Bluetooth).

Списки демонов находятся в следующих папках:

  • /System/Library/LaunchDaemons — для встроенных компонентов macOS
  • /Library/LaunchDaemons — для сторонних приложений, установленных для всей системы

Папка LaunchDaemons в macOS с элементами

LaunchAgents запускаются при входе пользователя. В отличие от демонов, агенты могут взаимодействовать с интерфейсом: показывать окна, уведомления и работать с элементами в меню. Примеры — напоминания календаря, приложения синхронизации и др.

Списки агентов находятся в:

  • /Library/LaunchAgents — для всех пользователей
  • ~/Library/LaunchAgents — для конкретного пользователя
  • /System/Library/LaunchAgents — только для компонентов macOS (под защитой System Integrity Protection)

Папка LaunchAgents в macOS с элементами

Перед входом в систему launchd загружает .plist-файлы из папки LaunchDaemons. После входа он проверяет LaunchAgents. Файлы в /System/Library защищены SIP, и их удалять нельзя.

Формат имён .plist-файлов обычно использует обратную доменную нотацию: имя компании, идентификатор приложения и расширение .plist — например co.clario.Clario.plist.

Выделенный элемент приложения в списке LaunchDaemons

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

Пользователь может удалить приложение из системных “Объектов входа” (Login Items), но остающиеся .plist-файлы в LaunchAgents или LaunchDaemons всё ещё будут запускать компоненты в фоновом режиме. Малварь и PUP (potentially unwanted programs) часто используют эти публичные папки для устойчивости: даже после удаления самого приложения компонент будет реинсталлироваться при старте системы или при входе.

Важно понимать разницу ролей:

  • LaunchDaemons — служат для фоновой работы без интерфейса и запускаются до входа пользователя.
  • LaunchAgents — могут взаимодействовать с пользователем и запускаются после входа.

Как обнаружить новые или подозрительные LaunchDaemons и LaunchAgents

Публичные папки LaunchDaemon и LaunchAgent доступны как легитимным, так и злонамеренным приложениям. Самый надёжный путь — настроить мониторинг этих папок и получать оповещения о добавлении новых файлов.

Ниже — ручной и автоматизированный подходы.

Настройка мониторинга через AppleScript Folder Actions

  1. Откройте приложение Редактор AppleScript (Script Editor). Через Spotlight найдите “Редактор скриптов”.
  2. В меню Настройки включите опцию Показывать меню скриптов в строке меню.

Включение меню скриптов в строке меню macOS

  1. В строке меню кликните значок меню скриптов и выберите Folder Actions > Включить действия папок.

Включение действий папок через меню скриптов на macOS

  1. Выберите Attach Script to Folder (Привязать скрипт к папке) и добавьте скрипт “add - new item alert” (уведомление о новом элементе).

Добавление нового скрипта уведомления о добавлении элемента

  1. Укажите первую папку: /Library/LaunchDaemons. Подтвердите выбор.

Выбор папки LaunchDaemons для привязки скрипта

  1. Повторите шаги для каждой папки LaunchAgents: /Library/LaunchAgents и ~/Library/LaunchAgents. Для быстрой навигации используйте Finder > Перейти > Перейти к папке (Shift + Cmd + G) и введите ~/Library/LaunchAgents.

Навигация в Finder к папке LaunchAgents

  1. В контекстном меню папки выберите Сервисы > Настройка действий папок, затем добавьте скрипт new item alert.scpt, если он отсутствует.

Выбор скрипта для привязки к папке в macOS

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

Важно: если вы видите появление .plist-файлов сразу после установки легитимного софта — это нормально. Однако неожиданные появления без вашей активности — повод для проверки.

Мониторинг с помощью сторонних приложений

Если нужен более удобный или визуальный мониторинг, используйте диагностические и защитные утилиты.

  • EtreCheck: диагностический инструмент, который собирает и отображает информацию о системе, включая статус сторонних LaunchDaemons и LaunchAgents. Бесплатен для первых пяти отчётов, далее предлагается платная опция.

EtreCheck при выполнении сканирования

  • Lingon X: позволяет запускать скрипты и команды по расписанию, а также просматривать и редактировать элементы в LaunchDaemons и LaunchAgents. Подходит для опытных пользователей.

Скриншот Lingon X с элементами автозапуска

  • KnockKnock: анализирует места устойчивого присутствия приложений, показывает подписи, пути к файлам и результаты сканирования VirusTotal.

KnockKnock показывает список постоянных компонентов

  • BlockBlock: непрерывно отслеживает места устойчивости и оповещает при попытке записи новых компонентов.

BlockBlock показывает уведомление о попытке добавить компонент в автозапуск

  • Malwarebytes: при сомнениях используйте бесплатную версию Malwarebytes для первичной проверки; при необходимости рассмотрите платную подписку для активной защиты.

Malwarebytes сканирует систему

Выбор инструмента зависит от вашего уровня комфорта: EtreCheck и KnockKnock хороши для диагностики, Lingon X подходит для ручного управления, а BlockBlock — для пассивного оповещения.

Как безопасно удалять подозрительные LaunchDaemons и LaunchAgents

Перед удалением всегда выполните эти шаги:

  1. Скопируйте подозрительный .plist-файл на рабочий стол (резервная копия).
  2. Посмотрите, от какого приложения он родом: обратная доменная нотация в имени .plist и путь к исполняемому файлу дают подсказки.
  3. Поиск в Google имени процесса и пути часто даёт полезные сведения. Оценивайте источники: форумы, блоги по кибербезопасности, страницы разработчиков.
  4. Не удаляйте элементы из /System/Library — они критичны для работы macOS.

Удаление:

  • Перетащите .plist в Корзину (Trash) или переместите на рабочий стол.
  • Перезагрузите компьютер, чтобы убедиться, что компонент больше не появляется и не запускается.

Если компонент не удаляется из-за прав, используйте sudo в терминале (только если вы понимаете последствия):

sudo rm /Library/LaunchAgents/имя.plist

И затем перезагрузите.

Примечание: удаление .plist-файла обычно достаточно, так как launchd перестаёт запускать компонент. Однако иногда вредоносная практика включает дополнительные установочные скрипты или двоичные файлы в других местах, поэтому ищите связанные исполняемые файлы по пути, указанному в .plist, и по имени процесса.

Когда не стоит удалять файл сразу

  • Если .plist явно принадлежит знакомому приложению, которое вы используете — сначала удалите приложение стандартным способом через его собственный деинсталлятор или AppCleaner.
  • Если файл появился после обновления macOS — он может быть системным компонентом.
  • Если вы не уверены — временно переместите файл на рабочий стол и понаблюдайте за поведением системы несколько перезапусков.

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

Этот короткий плейбук предназначен для домашнего или корпоративного пользователя, столкнувшегося с подозрительной автозагрузкой.

  1. Сохраните текущую сессию и завершите важные задачи.
  2. Сделайте резервную копию важных данных (Time Machine или вручную на внешний диск).
  3. Соберите доказательства: снимок экрана, имя .plist, путь, время появления.
  4. Отключите от сети, если подозреваете активную утечку данных.
  5. Используйте Malwarebytes и KnockKnock/BlockBlock для первичной диагностики.
  6. Переместите подозрительные .plist в карантин (папка на рабочем столе).
  7. Перезагрузите и проверьте, исчез ли процесс.
  8. Если проблема исчезла — удалите карантинную копию и проверьте систему ещё раз через 48–72 часа.
  9. Если проблема осталась — восстановите резервную копию, обратитесь в службу поддержки 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, прежде чем не убедитесь, что это не системный компонент. При серьёзных признаках заражения рассмотрите помощь специалиста.

Краткие шаги для быстрой проверки:

  1. Проверить папки /Library/LaunchAgents, ~/Library/LaunchAgents и /Library/LaunchDaemons.
  2. Настроить Folder Actions для оповещений.
  3. Просканировать систему KnockKnock/BlockBlock/Malwarebytes.
  4. Переместить подозрительные .plist в карантин и перезагрузить.

Спасибо за внимание. Если нужно, могу подготовить готовый скрипт Folder Action для автоматического оповещения и шаблон отчёта для IT-службы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

curl для HTTP: GET, POST, PUT, DELETE
Инструменты

curl для HTTP: GET, POST, PUT, DELETE

Как найти IP‑адрес принтера
Сеть

Как найти IP‑адрес принтера

Частые сетевые ошибки — быстрое решение
Сеть

Частые сетевые ошибки — быстрое решение

Как написать Ping Sweeper на Python
Python, Сеть

Как написать Ping Sweeper на Python

Найти IP DHCP‑сервера в Linux
Linux

Найти IP DHCP‑сервера в Linux

geoiplookup в Linux: найти местоположение сайта
Linux

geoiplookup в Linux: найти местоположение сайта