Коротко: нужно зафиксировать кто и когда именно удаляет файлы (процесс/сервис/драйвер/планировщик/GPO), а затем уже устранять источник. Ниже — практическая пошаговая инструкция с набором инструментов и команд, которые помогут найти виновника.
1) Первое правило — логировать действия ДО следующего удаления
- Запустите монитор файлоcистемы, который покажет процесс, выполняющий удаление. Лучшие варианты:
- Process Monitor (Sysinternals, Procmon). Настройте фильтр и оставьте его работать или включите логирование в файл.
- Рекомендуемые фильтры:
- Operation is SetDispositionInformationFile (это операция «пометить файл на удаление»)
- OR Operation is CreateFile AND (Desired Access contains DELETE OR Desired Access contains DELETE_CHILD)
- Path ends with .exe OR Path contains имя_вашего_файла.exe
- В Procmon включите автоскролл и сохраняйте лог в файл (Log > Save).
- Если удаление происходит при загрузке, используйте Procmon boot logging (File > Enable Boot Logging).
- Sysmon (Sysinternals): установить и включить логирование удалений (Event ID 23 — FileDeleteDetected) и создание процессов (ID 1). Используйте проверенную конфигурацию (например SwiftOnSecurity Sysmon config) и отдавайте логи в Центр событий / SIEM.
- Установка: sysmon -i -n -accepteula -h md5,sha256 (и загрузить конфигурацию).
- Sysmon даёт компактные события, удобно связывать процесс→удаление.
2) Если вы не хотите или не можете постоянно держать Procmon:
- Включите аудит доступа к файлам:
- auditpol /set /category:"Object Access" /success:enable /failure:enable
- На конкретной папке (или на корне диска) в свойствах → Security → Advanced → Auditing добавьте правило для Everyone (Success, Delete / Delete Subfolders and Files).
- После удаления смотрите журнал безопасности — события 4663 (доступ к объекту) и 4660 (удаление объекта). В этих событиях будет учтён SID/имя процесса/учётка, время и путь.
- Это даёт записи в Security log, которые можно использовать для корреляции с событиями создания процесса (4688).
3) Дополнительные средства диагностики
- Autoruns (Sysinternals) — просмотрите все автозапуски (Logon, Services, Scheduled Tasks, Winlogon, Image Hijacks и т.д.). В custom-сборках часто появляются скрытые автозапускающие скрипты/службы.
- Task Scheduler — проверьте все ветки: Task Scheduler Library и подпапки (особенно корень и vendor-папки). Иногда задачи создаются группой по GPO или скриптами установщика.
- SFC / DISM не помогут с удалением сторонних .exe, но проверьте целостность ОС если поведение странное:
- sfc /scannow
- DISM /Online /Cleanup-Image /RestoreHealth
- Проверьте SMART и целостность диска (chkdsk /f, CrystalDiskInfo). Иногда файлы «исчезают» из‑за проблем с накопителем.
4) Проверка на антивирус/управление
- Даже если Microsoft Defender «отключён», может быть сторонний EDR/AV/SCCM клиент/Intune или корпоративная политика, удаляющая неподписанные/неразрешённые приложения. Проверьте:
- Установленные Endpoint-агенты (EDR: CrowdStrike, SentinelOne, Carbon Black, Kaspersky, ESET и т. п.).
- Централизованные инструменты управления (SCCM/ConfigMgr, Intune, GPO), особенно «application whitelisting» (AppLocker, WDAC) и скрипты удаления.
- Логи этих агентов / серверов управления.
- Также проверьте, нет ли корпоративных GPO, выполняющих скрипты (Startup/Shutdown/Logon/Logoff). GPO могут удалять .exe при логоне.
5) Если подозреваете «чистильщик» в кастомной сборке
- Вы используете ноунейм‑сборки (лекс, санлекс, OneSmiLe). Часто такие сборки включают утилиты «оптимизации/очистки», которые удаляют «неподписанные» или «непонятные» .exe при загрузке. Проверьте:
- Есть ли в системе в папках типа C:\Windows\Temp, C:\Windows\Setup или C:\ProgramData какие‑то утилиты/скрипты, запуск которых вы не узнаёте.
- Посмотрите автозагрузки в Autoruns на элементы с подозрительными именами/локализацией (особенно в RunOnce, Scheduled Tasks, Services).
- По возможности попробуйте поставить чистую стандартную сборку Windows (или виртуальную машину) и проверить поведение — если в чистой системе проблема отсутствует, велика вероятность, что в кастомной сборке есть «удалятор».
6) Практические трюки для воспроизведения и обнаружения
- Поставьте тестовый файл с уникальным именем (например C:\temp\test_delete_12345.exe) и оставьте Procmon/Sysmon запущенным. Это часто быстрее, чем ждать пока удалится реальная программа.
- Измените NTFS-права файла: запретите Delete для Everyone/Users и оставьте только SYSTEM и нужную учётную запись. Если файл всё равно удаляют — значит удалитель работает под SYSTEM или как драйвер.
- Поменяйте расширение на .txt и посмотрите, удаляется ли — это покажет, ориентирован ли удалитель на расширение .exe или на конкретные имена.
- Посмотрите журнал событий "Application" и "System" на предмет ошибок, которые происходят в момент исчезновения (например, процесс завершился, драйвер выдал ошибку и т. п.).
7) Если Procmon/логи покажут процесс/службу
- Когда увидите имя процесса/путь — проверьте цифровую подпись (sigcheck) и местонахождение, проверьте соответствующий сервис/задачу и удалите/недопустите его запуск.
- Если это служба/драйвер — отключите и удалите через sc delete / pnputil / remove driver.
8) Малварь/скрипты/криптовыеящие
- Прогоните систему оффлайн-сканером (Kaspersky Rescue, Bitdefender Rescue или ESET Rescue) с загрузки с USB, чтобы исключить скрытые процессы.
- Проверьте автозапуск и запущенные процессы на предмет странных подключений/запросов в сеть.
9) Используйте USN Journal для ретроспективы (при желании)
- USN журнал фиксирует изменения файловой системы; с ним можно получить историю изменений/удалений — существуют утилиты для парсинга USN Journal. Это полезно, если файл уже удалён и у вас нет Procmon/Sysmon логов.
10) Что я рекомендую сделать прямо сейчас (краткая чек‑листа)
- Установите Procmon и включите логирование в файл. Настройте фильтр на имя/путь.exe и операции SetDispositionInformationFile / CreateFile с DELETE. Оставьте работать.
- Параллельно включите аудит файлов (Audit Object Access) и добавьте SACL на папку с проблемными exe.
- Запустите Sysmon с конфигурацией, включающей FileDelete и ProcessCreate.
- Просмотрите Autoruns и Task Scheduler полностью.
- Проверьте наличие EDR/AV/SCCM/Intune агента и политики GPO.
- При подозрении на кастомную сборку — сравните с чистой Windows в VM.
Если хотите, могу:
- Прислать точные фильтры Procmon и пример конфигурации Sysmon.
- Помочь проанализировать логи Procmon/Sysmon/Events (вы можете приложить их).
- Подсказать команды PowerShell / icacls для установки аудита и прав.
Скажите, как часто и в каких ситуациях пропадают .exe (сразу после установки, после перезагрузки, после логона, через N минут), и где именно находятся файлы (путь). Тогда дам более конкретные фильтры/команды.