Если Microsoft Defender принял ваше Windows-приложение за вирус — ложные срабатывания и влияние на производительность

· Обновлено: · · Microsoft Defender, Антивирусная защита, Ложные срабатывания, Подпись кода, SmartScreen, Распространение приложений, Безопасность, C#, .NET, Разработка под Windows, Техническая консультация

История изменений (1 обновлений, последнее 30 Aug 2026)

Журнал изменений этой статьи. Там, где версия до правки была заархивирована, она остаётся доступной для чтения по постоянной ссылке с DOI.

Русский текст переписан как полноценный технический перевод, а не калька с японского. Утверждения статьи не менялись.
Первая публикация
Цитирование статьи(DOI (зарегистрированный архив): 10.5281/zenodo.21620069)

Приведённые ниже DOI относятся к ранее зарегистрированным архивным версиям, которые могут отличаться от текущего текста. Для ссылки на текущий текст используйте URL этой страницы.

Го Комура (2026). Если Microsoft Defender принял ваше Windows-приложение за вирус — ложные срабатывания и влияние на производительность. KomuraSoft LLC. https://comcomponent.com/ru/blog/windows-defender-false-positive-guide/

DOI (зарегистрированный архив)
10.5281/zenodo.21620069
DOI (последняя зарегистрированная версия)
10.5281/zenodo.21620070

«На компьютере клиента наше приложение приняли за вирус и удалили» — если вы распространяете собственные или заказные Windows-приложения, такой звонок рано или поздно придёт. Бизнес-приложение, которое ещё вчера работало как обычно, после обновления определений Defender внезапно оказывается в карантине. На машине разработчика ничего не происходит, а в среде клиента — срабатывание. И вредоносный код вы не писали.

Это не редкий инцидент. Современные антивирусы оценивают «подозрительность» не только по совпадению с известным вредоносным ПО, но и с помощью машинного обучения, анализа поведения и облачной репутации. Поэтому легитимный двоичный файл без репутации оказывается под подозрением — это заложено в саму конструкцию. И в реакции на ложное срабатывание чётко разделены допустимые действия (сообщить Microsoft о ложном срабатывании, точечное исключение) и недопустимые (отключить антивирус, задать широкое исключение).

В этой статье с точки зрения разработчика разберём, почему возникают ложные срабатывания, что можно сделать до распространения приложения, каков штатный путь реакции при обнаружении, что такое исключения как экстренная мера в среде клиента и какие риски они несут, а также ещё одну типичную жалобу — «Defender (MsMpEng.exe) тормозит».

Статья длинная, поэтому сначала укажем вход по ситуации. ИТ-службе и поддержке, которым нужно действовать прямо сейчас, пока идёт разбор с клиентом, — с главы 4 (штатный путь реакции) и главы 5 (как задавать исключения и какие риски). Разработчикам, которые хотят снизить риск ложных срабатываний ещё до распространения, — с главы 3. Тем, кто разбирает жалобу «Defender тормозит», — с главы 6. Краткая таблица по симптомам — в главе 7.

1. Сначала выводы

  • Ложное срабатывание возможно и у легитимного приложения. С 2015 года Defender перешёл от движка вокруг статических сигнатур к предиктивной модели на базе машинного обучения и облачной защиты. Неизвестный файл могут пометить по «подозрительности», даже если он не совпадает ни с одним известным вредоносным образцом.12
  • Штатный путь к постоянному решению — отправка файла в Microsoft (заявка о ложном срабатывании). Отправьте его как разработчик через портал отправки образцов Microsoft Security Intelligence и отслеживайте вердикт. Если с решением не согласны, повторное рассмотрение запрашивают через контактную форму для разработчиков.34
  • Файл из карантина можно восстановить. Через «Журнал защиты» в «Безопасности Windows» или из командной строки командой MpCmdRun.exe -Restore.5
  • Исключение — временная мера до результата заявки. Исключение — это брешь в защите (protection gap). Microsoft прямо пишет: использовать умеренно, только для конкретной проблемы и с регулярным пересмотром. Если исключение всё же добавляете, ограничьте его минимумом по полному пути и зафиксируйте, зачем оно нужно.6
  • Опора профилактики — последовательная подпись кода. Программы предварительной регистрации для предотвращения ложных срабатываний у Microsoft нет. Официально рекомендованный способ ускорить установление происхождения и попадание в список известных — постоянно и последовательно подписывать файлы сертификатом доверенного корневого удостоверяющего центра.4
  • Собственное сканирование перед релизом и заблаговременная отправка образца снижают проблему «нулевой репутации». Дистрибутив можно проверить настраиваемым сканированием MpCmdRun.exe. Сама Microsoft указывает, что отправка образца неизвестного файла помогает начать формировать репутацию.78
  • «Defender тормозит» — начинайте с измерения. С помощью Performance analyzer (New-MpPerformanceRecording / Get-MpPerformanceReport) сначала выясните, какие файлы и процессы дают основную нагрузку на сканирование, и только потом думайте о мерах. Исключение и здесь — последний вариант.910

На схеме сплошная линия обозначает отношение, которое выполняется всегда, а пунктирная — условное отношение (условия указаны в пояснении к каждому отношению на странице сведений). Полный список отношений (всего 25, с доказательствами и степенью уверенности) и определения основных понятий собраны на странице сведений карты знаний (на японском). Данные: JSON-LD / Turtle

2. Почему легитимное приложение принимают за вирус

Если исходить из схемы «антивирус = сверка с известными сигнатурами вирусов», ложное срабатывание выглядит необъяснимым. Современный Defender устроен иначе. Microsoft прямо заявляет, что в 2015 году перешла от движка на статических сигнатурах к модели, которая использует предиктивные технологии: машинное обучение, прикладные науки и ИИ.1

Обнаружение идёт в несколько слоёв. На устройстве работают лёгкие модели машинного обучения, анализ поведения и эвристика. Если устройство само не может вынести однозначный вердикт, метаданные файла уходят в службу облачной защиты и в большинстве случаев решение возвращается за миллисекунды. Если и этого мало, система запрашивает образец файла и прогоняет его в облаке через сканирование, детонацию (запуск в изолированной среде) и анализ больших данных. В средах с включённой функцией «block at first sight» (блокировка при первом обнаружении) открытие файла могут даже временно задержать, пока не придёт облачный вердикт.211

Смысл этой конструкции очевиден: в вердикт входит не только «совпадение с вредоносным», но и «репутация безвредности». В классификации Microsoft явно выделена категория «Unknown» (нераспознанное ПО). Предупреждения о неизвестных программах с малой историей загрузок рассматриваются как система раннего предупреждения о ещё не обнаруженном вредоносном ПО. Не всякая редкая программа вредоносна, но риск категории «неизвестное» для обычного пользователя высок — таково официальное объяснение.8

Иными словами, только что выпущенное собственное приложение с точки зрения защитных механизмов Windows выглядит как «двоичный файл с нулевой репутацией, который в мире ещё никто ни разу не запускал». Подозрение усиливается, если к этому добавляются следующие черты.

  • Структура, которая скрывает суть кода. В классификации вредоносного ПО у Microsoft есть тип «Obfuscator» (обфускация): код и намерение спрятаны, чтобы затруднить обнаружение. ПО, которое активно пытается обойти обнаружение защитными продуктами, также относят к потенциально нежелательным приложениям (PUA). Инструменты обфускации, самораспаковывающиеся форматы и упаковка среды выполнения в один exe внешне плохо отличаются от приёмов, которыми широко пользуется вредоносное ПО. Это зона, где даже легитимное приложение легко вызывает подозрение.8
  • Нет подписи, и происхождение не проследить. Как показано в следующей главе, последовательная подпись — главный ориентир, по которому команда расследования устанавливает происхождение.4
  • Установщик предлагает стороннее ПО. Установщик, который предлагает поставить ПО другого издателя или программы, не нужные для работы приложения, попадает в классификацию PUA как «Bundling software».8

Отдельно стоит синее предупреждение «Windows защитил ваш компьютер», которое появляется сразу после загрузки. Это другой механизм (Microsoft Defender SmartScreen), не связанный с обнаружением антивирусом Defender. В FAQ Microsoft для разработчиков прямо сказано, что SmartScreen не имеет отношения к антивирусу Defender.4 SmartScreen и репутацию подробнее разбирает статья «Почему Windows показывает „Windows защитил ваш компьютер“». Сначала определите, с каким из двух видов предупреждений вы имеете дело.

3. Что можно сделать до распространения

3.1. Последовательная подпись кода — программы предварительной регистрации нет

Идея «заранее зарегистрироваться в белом списке Microsoft, чтобы избежать ложных срабатываний» выглядит естественной, но ответ — нет. Microsoft не принимает от разработчиков заявки на внесение в список известных файлов и не ведёт программу предотвращения ложных срабатываний. Вместо этого официальный FAQ рекомендует постоянно и последовательно подписывать файлы программы сертификатом, выданным доверенным корневым удостоверяющим центром. Последовательная подпись позволяет команде расследования быстро установить происхождение программы и опереться на уже накопленные сведения. В результате программу иногда быстрее добавляют в список известных, а изредка и сам сертификат попадает в список доверенных издателей.4

Иными словами, эффект подписи в том, что она собирает «репутацию отдельного файла» в «репутацию издателя». Исполняемый файл, у которого при каждой сборке меняется хэш, сам по себе каждый раз оказывается «файлом, который видят впервые». Если он подписан тем же сертификатом, происхождение остаётся непрерывным. Практику подписи (типы сертификатов, Azure Artifact Signing, метка времени) разбирают упомянутая статья про SmartScreen и «Минимальный чек-лист безопасности при разработке Windows-приложений».

3.2. Сканируйте сборку сами до релиза

Проверить собственный результат сборки как часть релизного гейта обходится намного дешевле, чем узнать об обнаружении уже в среде клиента. У Defender есть инструмент командной строки MpCmdRun.exe; его можно запускать из скрипта или по расписанию. В PATH по умолчанию его нет, поэтому перед запуском перейдите в %ProgramData%\Microsoft\Windows Defender\Platform\<версия> (если такого пути нет — в %ProgramFiles%\Windows Defender).7

rem Выполнять из командной строки с правами администратора
cd /d "C:\ProgramData\Microsoft\Windows Defender\Platform\<папка с последней версией>"

rem Настраиваемое сканирование папки релиза (-ScanType 3)
rem -DisableRemediation: при обнаружении не помещать в карантин и не выполнять других действий, только показать результат в выводе команды
MpCmdRun.exe -Scan -ScanType 3 -File "C:\Release\MyApp" -DisableRemediation

Определены коды возврата 0 и 2, но при использовании как гейта легко упустить, что 0 означает не только «ничего не обнаружено», но и «обнаружено, но успешно устранено». С обычным -Scan возможно худшее сочетание: Defender находит что-то в результатах сборки, успевает поместить это в карантин, код возврата всё равно 0 — «чисто» — и релиз проходит конвейер. Для настраиваемого сканирования добавьте -DisableRemediation, чтобы при обнаружении ничего не устранялось (факт обнаружения виден в выводе команды). В гейт заложите не только «остановить выпуск и разобрать, если пришёл код 2», но и проверку вывода команды на обнаружения, и проверку, что ни один из выходных файлов не пропал.7

3.3. Заранее отправляйте неизвестные файлы

Microsoft прямо пишет, что отправка образца неизвестного или подозрительного ПО «помогает пройти проверку системой и начать формировать репутацию».8 То есть портал отправки образцов — не только средство на случай уже случившегося обнаружения, но и профилактика: новый двоичный файл без репутации получает первую историю. Для крупных релизов — мажорной версии, смены способа упаковки, внедрения инструмента обфускации и других моментов, когда внешний вид дистрибутива существенно меняется, — образец стоит отправить ещё до начала распространения.

4. Штатный путь реакции при ложном срабатывании

4.1. Сначала факты — журнал защиты и журнал событий

Сначала проверьте, действительно ли «пропало» или «перестало запускаться» из-за обнаружения Defender. В графическом интерфейсе записи об обнаружениях и карантине лежат в «Безопасности Windows»: «Защита от вирусов и угроз» → «Журнал защиты». Там же можно отфильтровать список по элементам в карантине.5

Если нужен журнал или удалённая проверка, используйте журнал событий. События Defender пишутся в «Журналы приложений и служб → Microsoft → Windows → Windows Defender → Operational»; их также получают через PowerShell-командлет Get-WinEvent.12 Само обнаружение фиксируется как событие с ID 1116 (обнаружено вредоносное или нежелательное ПО), а последующее действие — например помещение в карантин — как ID 1117.13

# События обнаружения (1116) и действий (1117) Defender, от новых к старым
# Фильтрацию выполняет журнал событий (-FilterHashtable). Это быстрее, чем Where-Object после конвейера
Get-WinEvent -FilterHashtable @{
    LogName = 'Microsoft-Windows-Windows Defender/Operational'
    ID      = 1116, 1117
} -MaxEvents 10 |
    Select-Object TimeCreated, Id, Message

На этом этапе зафиксируйте имя угрозы (например, имя обнаружения вроде Trojan:Win32/Wacatac.B!ml) и путь с версией помеченного файла. И заявка в Microsoft, и объяснение клиенту начинаются с этих двух сведений. Структура имени обнаружения (тип / платформа / семейство) следует соглашению об именовании вредоносного ПО CARO (Computer Antivirus Research Organization) — объединения исследователей антивирусов, чьё соглашение широко используют в отрасли. По суффиксу вроде завершающего !ml иногда можно предположить происхождение обнаружения.14

4.2. Сообщите Microsoft о ложном срабатывании

Это постоянное решение. Отправьте ошибочно помеченный файл через портал отправки образцов Microsoft Security Intelligence (microsoft.com/wdsi/filesubmission). Для отправки нужен вход в систему; после входа статус рассмотрения можно отслеживать. Образцы по электронной почте не принимают.3

В первый раз легко запутаться, поэтому ниже — скелет процедуры в том объёме, в каком его описывает официальная документация.3415

  1. Войдите в систему. Без входа портал отправки образцов заявку не примет. С 20 мая 2024 года вход на этот портал переведён на Microsoft Entra ID. Если в тенанте организации для доступа требуется согласие администратора, попросите ИТ-администратора выдать разрешение на нужное приложение.
  2. Загрузите файл, который сработал ложно. Одновременно подробно опишите продукт, которым пользовались (например, антивирус Microsoft Defender), и в какой ситуации вы с этим файлом столкнулись. Эти сведения сразу идут в материал анализа, поэтому приложите имя обнаружения, путь и версию файла, которые вы зафиксировали в 4.1.
  3. Укажите категорию отправителя software developer (разработчик ПО). При этой категории к результату заявки прилагается контактная форма для разработчиков на случай, если вы не согласитесь с вердиктом.
  4. Если есть Software Assurance ID (SAID), введите его. Портал принимает SAID; заявки клиентов с действующим SAID идут с более высоким приоритетом. Если SAID есть у компании клиента, иногда быстрее, чтобы заявку отправили с их стороны.
  5. После отправки следите за состоянием на странице истории заявок (microsoft.com/wdsi/submissionhistory). Состояний три: Submitted (заявку приняли) / In progress (аналитик начал проверку) / Closed (вынесен окончательный вердикт). Чтобы проверить, не обновился ли вердикт, на странице сведений о заявке выберите повторное сканирование (rescan).
  6. Дождитесь окончательного вердикта; если не согласны — запросите повторное рассмотрение. Дождитесь, пока решение зафиксируют. Если результат вас не устраивает, свяжитесь с Microsoft через контактную форму для разработчиков, которая прилагается к результату заявки.

Имена и порядок полей на экране могут меняться; если что-то неочевидно, сверьтесь с официальной документацией. Отправленный файл сначала сразу сканирует автоматическая система; если файл уже обрабатывали, вердикт приходит рано. Ещё не обработанные заявки анализируют с приоритетом для файлов с широким охватом воздействия и для заявок корпоративных клиентов с Software Assurance ID.15

Если Microsoft обновит определения, признав файл ложным срабатыванием, он больше не будет обнаруживаться. Иначе говоря, пока вы не сообщите, исключение в одной среде не остановит обнаружение у остальных клиентов. Есть путь и для поведенческого обнаружения, после которого файла не остаётся: можно отправить диагностический файл (MpSupportFiles.cab), который собирает MpCmdRun.exe -GetFiles, и запросить анализ.157

Если у клиента развёрнут Microsoft Defender for Endpoint (EDR), есть и административный путь: администратор безопасности клиента подаёт заявку со страницы Submissions портала Microsoft Defender и одновременно ставит индикатор «Разрешить», чтобы подавить ложное срабатывание внутри организации.15 В этом случае не пытайтесь закрыть всё своими силами — работайте с ИТ-отделом клиента.

4.3. Восстановление файла из карантина

Файл, в котором вы уверены как в ложном срабатывании, можно восстановить из карантина. В графическом интерфейсе выберите элемент в журнале защиты и нажмите «Восстановить». Из командной строки используйте MpCmdRun.exe.5

rem Список элементов в карантине
MpCmdRun.exe -Restore -ListAll

rem Восстановление в исходное место по пути файла на момент карантина
MpCmdRun.exe -Restore -FilePath "C:\Program Files\Contoso\ContosoApp\ContosoApp.exe"

Параметром -Path можно указать другую папку для восстановления (в этом случае элемент также остаётся в карантине).7 Однако восстановление до обновления определений, разумеется, может привести к повторному обнаружению. На практике безопаснее идти в порядке: заявка о ложном срабатывании → при необходимости временное исключение → восстановление.

4.4. Если сработало не Defender, а сторонний антивирус

Обнаружение не в Defender, а в EDR или стороннем антивирусе обращением в Microsoft не решается. Нужна отдельная заявка в канал приёма сообщений о ложных срабатываниях (false positive submission) того производителя, чей продукт сработал. У большинства производителей есть отдельная форма: найдите её запросом «название производителя + false positive submission» и отправьте заявку с тем же именем обнаружения, файлом и сведениями о подписи, что и для Defender. Если срабатывание идёт сразу в нескольких продуктах, это ещё и повод подозревать причину на стороне сборки — обфускацию, пакер или сторонние компоненты.

5. Экстренные меры в среде клиента — исключения и их риски

5.1. Место исключений — не постоянное решение

Если бизнес клиента стоит, пока ожидается вердикт по заявке о ложном срабатывании, экстренной мерой становится исключение (exclusion) в Defender. Но нельзя ошибаться в том, чем оно является. Как неоднократно предупреждает сама Microsoft, исключение технически представляет собой брешь в защите (protection gap). Официальные принципы: (1) использовать умеренно, (2) применять только для конкретной проблемы — например производительности или совместимости приложения, (3) зафиксировать, почему исключение понадобилось, и регулярно пересматривать.6 Описанное здесь исключение — это исключение из сканирования антивирусом Defender (по расписанию, по требованию и в режиме реального времени). В среде с Microsoft Defender for Endpoint даже для исключённого файла по-прежнему могут срабатывать оповещения EDR и другие обнаружения.16 «Добавили исключение, а оповещения всё равно приходят» — это заложенное поведение, а не сбой.

И даже если исключение добавляете, предлагать отключить саму защиту в режиме реального времени или Defender целиком недопустимо. Защита этого устройства падает целиком, в том числе от угроз, никак не связанных с вашим приложением. Факт, что вы просили клиента отключить функцию безопасности под предлогом борьбы с ложным срабатыванием, на последующем аудите безопасности обязательно всплывёт как проблема.

5.2. Как правильно добавить исключение — полный путь, минимальный охват

Исключение можно добавить и через графический интерфейс «Безопасности Windows» (параметры защиты от вирусов и угроз → Исключения), но если это оформляется как инструкция, надёжнее PowerShell. Списком исключений управляют Add-MpPreference (добавить), Remove-MpPreference (удалить) и Set-MpPreference (заменить весь список). Set-MpPreference перезаписывает существующий список исключений, поэтому для добавления всегда используйте Add-MpPreference, чтобы случайно не стереть уже существующие у клиента исключения.16

# Выполнять из PowerShell с правами администратора

# Исключение по файлу (минимум: полный путь к исполняемому файлу, а не папка)
Add-MpPreference -ExclusionPath "C:\Program Files\Contoso\ContosoApp\ContosoApp.exe"

# Текущие настройки исключений
Get-MpPreference | Select-Object ExclusionPath, ExclusionProcess, ExclusionExtension

# Снять после устранения ложного срабатывания
Remove-MpPreference -ExclusionPath "C:\Program Files\Contoso\ContosoApp\ContosoApp.exe"

-ExclusionPath можно указать и для отдельного файла, и для папки, но при указании папки под исключение попадают и все вложенные подпапки, поэтому сначала рассмотрите исключение по файлу.16 Другой параметр, -ExclusionProcess, из-за названия легко понять неверно: он не исключает сам указанный процесс, а исключает из сканирования файлы, которые этот процесс открывает. Официальная формулировка: если нужно исключить сам исполняемый файл процесса, используйте -ExclusionPath.17 Если обнаружения или проблемы производительности возникают из-за того, что приложение открывает много файлов данных, берите -ExclusionProcess; если ложно обнаруживается сам исполняемый файл — -ExclusionPath.

Сработало ли исключение так, как задумано, проверяют командой MpCmdRun.exe -CheckExclusion -Path <путь>.7 В управляемой среде исключения задают централизованно через Intune или групповую политику (Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Антивирусная программа Microsoft Defender → Исключения), а не вручную на каждой конечной точке. Microsoft рекомендует определять и править исключения именно через Intune.1615

5.3. Какие исключения задавать нельзя

Исключённая папка становится и местом, которое злоумышленники используют как «то, куда Defender не заглядывает». Microsoft прямо перечисляет то, что «не следует исключать, даже если вы уверены в его безобидности».18

  • Исключение универсальных папок вроде C:\, C:\Temp, C:\Users\ или %Windir%\Temp. Исключить всю временную папку ради собственного приложения — значит дать безопасную зону всему вредоносному ПО сразу.
  • Исключение по расширению, например .exe, .dll, .tmp, .zip.
  • Исключение универсальных процессов, таких как cmd.exe, powershell.exe, msbuild.exe, java.exe.
  • Исключение только по имени файла без пути (например, ContosoApp.exe). Вредоносное ПО с тем же именем будет исключено, где бы его ни положили, поэтому всегда указывайте полный путь.

Итого: исключение — «по полному пути, минимальным охватом, с записью и со сроком». Факт добавления и причину сообщите ИТ-администратору клиента. Когда вердикт по заявке вынесен и обнаружение прекратилось, снимите исключение.

6. Как работать с влиянием на производительность — «MsMpEng.exe тормозит»

Рядом с ложными срабатываниями стоит ещё одна типичная жалоба — производительность. Симптомы: в диспетчере задач MsMpEng.exe (Antimalware Service Executable) грузит процессор, вывод файлов приложением или сборка идут медленно. MsMpEng.exe — это служба антивируса Defender. Поведение защиты в режиме реального времени по умолчанию — синхронное сканирование в момент открытия файла («open now, scan now»).19 Чем чаще нагрузка открывает и закрывает множество мелких файлов — сборка, частая построчная запись журналов, интенсивное использование временных файлов, — тем больше сканирований. Такая структура особенно чувствительна к этой нагрузке.

6.1. Сначала измерение — Performance analyzer

Прежде чем от «тормозит» сразу переходить к «исключить», измерьте, что именно даёт основную нагрузку на сканирование. У Defender есть отдельный Performance analyzer: PowerShell-командлет New-MpPerformanceRecording снимает запись производительности сканирования (ETL), Get-MpPerformanceReport её агрегирует.9

# Выполнять из PowerShell с правами администратора

# Начать запись, воспроизвести тяжёлую операцию (сборку, пакетную обработку и т. п.), затем остановить нажатием Enter
New-MpPerformanceRecording -RecordTo .\Defender-scans.etl

# Показать файлы с наибольшим временем сканирования и разбивку сканирований по каждому из них
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopFiles 3 -TopScansPerFile 10

Помимо -TopFiles / -TopScansPerFile можно получить агрегацию по процессам и расширениям. Так вы конкретно видите, какой доступ к файлам со стороны собственного приложения провоцирует сканирование.

Содержимое вывода сильно зависит от среды, поэтому здесь важно что именно выводится и куда смотреть. По официальной документации в отчёте есть следующие сведения.9

Что выводится Что это значит Как смотреть, если ищете кандидатов на исключение
Число сканирований Сколько раз этот объект сканировали Если число резко выделяется, проблема не в «одном тяжёлом сканировании», а в частоте. Её часто можно снизить паттерном записи на стороне приложения
Длительность (сумма / мин. / средн. / макс. / медиана) Сводка времени, которое ушло на сканирование Большая сумма при малых среднем и медиане указывает, что причина в числе раз, а не в тяжести одного прохода
Путь Сканированный файл или каталог Не вышли ли в верх списка каталог вывода вашего приложения и место для временных файлов
Процесс Процесс, который спровоцировал сканирование Ваше приложение, средство сборки или другая постоянно работающая программа
Причина сканирования Из-за чего запустилось это сканирование Защита в режиме реального времени или сканирование по требованию
SkipReason Почему сканирование пропустили. Not Skipped / Optimization (из соображений производительности) / User skipped (из-за исключения, которое задал пользователь) Если часто встречается User skipped, в этой среде исключения уже заданы

Все отчёты идут по убыванию длительности. Порядок чтения: сначала смотрите верх списка в -TopFiles или -TopProcesses, когда появится кандидат — откройте отдельные сканирования этого файла через -TopScansPerFile. Если строк слишком много, отсеките шум нижней границей вроде -MinDuration 100ms.10 Если запись нужно обработать другим инструментом, её можно выгрузить в CSV.9

# Сырые данные по сканированиям, до 1000 верхних записей, в CSV
(Get-MpPerformanceReport -Path .\Defender-scans.etl -TopScans 1000).TopScans |
    Export-Csv -Path .\Defender-scans.csv -Encoding UTF8 -NoTypeInformation

Решение после этого просмотра сводится к вопросу: «вверху списка — порождения вашего приложения или нет». Если верх занимают временные файлы и журналы вашего приложения, сначала смотрите, нельзя ли снизить это на стороне приложения, как в 6.2. Если верх — вывод сборки или кэш пакетов на машине разработчика, помогает Dev Drive из 6.3. Исключение рассматривайте только если ни то ни другое проблему не сняло. Важная оговорка: официальная документация прямо предупреждает, что этот инструмент нужен, чтобы понять проблемные файлы, а не для того, чтобы предлагать исключения.10

6.2. Что можно сделать на стороне приложения до исключения

Если измерение показало, что основную часть сканирования даёт большое число временных файлов, которые пишет само приложение, паттерн записи ещё можно пересмотреть до исключения. Защита в режиме реального времени срабатывает по факту открытия файла19, поэтому такие изменения в устройстве приложения сокращают само число сканирований.

  • Свести обработку, которая открывает и закрывает тысячи мелких промежуточных файлов, к дозаписи в небольшое число файлов или к обработке в памяти
  • Сократить цикл «записать временный файл, затем переименовать или удалить его»
  • Перестать открывать и закрывать журнал на каждую строку; писать в уже открытый поток

Чтобы измерить, какой процесс какие файлы и с какой частотой трогает, подходит Process Monitor. Порядок действий — в статье «Практическое руководство по Process Monitor (ProcMon)».

6.3. На машине разработчика — режим производительности Dev Drive

Если речь о медленной сборке на машине разработчика, первый кандидат — Dev Drive и режим производительности в Windows 11. На Dev Drive (томе для разработки на базе ReFS) защита в режиме реального времени у Defender работает в асинхронном «режиме производительности». Вместо синхронного сканирования в момент открытия файла используется схема «open now, scan later»: сканирование откладывается до завершения открытия. По официальной позиции это улучшает производительность, сохраняя существенно более высокий уровень защиты, чем полное исключение папки из сканирования.19 Обычная практика — перенести на Dev Drive дерево исходного кода, кэш пакетов и вывод сборки.20

Имеет смысл держать под рукой и способ создания. Предпосылки и шаги официальная документация описывает так.20

  • Предпосылки: Windows 11 (сборка 10.0.22621.2338 и новее), свободное место не меньше 50 ГБ (минимальный размер Dev Drive — 50 ГБ), память от 8 ГБ, рекомендуется 16 ГБ, права локального администратора. В корпоративной среде может понадобиться настройка групповой политики администратором безопасности.
  • Через графический интерфейс: Параметры > Система > Память > Дополнительные параметры хранилища > Диски и тома, затем «Создать диск разработки». Есть три варианта: создать новый VHD, сжать существующий том, использовать нераспределённое пространство.
  • Из командной строки: с правами администратора Format D: /DevDrv /Q (командная строка / PowerShell) или Format-Volume -DriveLetter D -DevDrive (PowerShell). Для нескольких машин этот путь удобнее.
  • Ограничения: существующий том в Dev Drive преобразовать нельзя. Признак Dev Drive задаётся только в момент форматирования; повторное форматирование существующего тома уничтожит содержимое. Диск C: сделать Dev Drive нельзя. Официальная схема: сами средства разработки и SDK остаются на C:, на Dev Drive кладут исходный код, кэш пакетов и вывод сборки.
  • Сделать доверенным: режим производительности работает только на «доверенном» (trusted) Dev Drive. Обычно при создании том становится доверенным сам; проверить и задать заново можно командами fsutil devdrv query D: и fsutil devdrv trust D: (если VHD перенесли на другой ПК, доверие нужно задать снова).

Режим производительности работает только на Dev Drive и только при включённой защите в режиме реального времени. Кроме того, симптом «высокая нагрузка CPU/памяти у MsMpEng.exe» в задачу режима производительности не входит: в этом случае официальная рекомендация — сузить наиболее нагруженные процессы и пути через Performance analyzer, как выше.19

Отдельно: если сканирование по требованию (регулярная полная проверка и т. п.) тяжело ложится на рабочие часы, полезно знать про ключ -CpuThrottling у MpCmdRun.exe -Scan. С ним к загрузке CPU при сканировании применяется верхняя граница (по умолчанию 50%).7 Это не формат, где ключу передают число с произвольным процентом. Само значение границы задаёт параметр политики (ScanAvgCPULoadFactor), и это не жёсткий предел, а ориентир для движка сканирования: «в среднем не превышать этот процент».21

7. Таблица решений — действия по симптомам

Ситуация Что делать в первую очередь Постоянное решение
Обнаружение сразу после собственной сборки, на машине разработчика или в CI Проверить имя обнаружения и путь в журнале защиты и журнале событий (1116/1117)13. Проверить изменения в сборке (обфускация, пакер, сторонние компоненты) Отправить заявку на портал отправки образцов как разработчик3. Пересмотреть схему подписи. Встроить сканирование перед релизом в CI
Обнаружение и карантин в среде клиента Проверить имя обнаружения, файл и то, Defender это или сторонний продукт. Подать заявку о ложном срабатывании; если простой бизнеса критичен — по согласованию с ИТ-отделом клиента исключение по полному пути и восстановление5 После подтверждения вердикта и обновления определений снять исключение. У клиентов с EDR дополнительно использовать административный путь (заявка через портал, индикатор «Разрешить»)15
Обнаружение в стороннем антивирусе Получить у клиента название и версию продукта, имя обнаружения Подать заявку в канал приёма ложных срабатываний этого производителя. Если срабатывание идёт в нескольких продуктах — подозревать причину на стороне сборки
Появляется «Windows защитил ваш компьютер» (SmartScreen) Убедиться, что это не обнаружение вируса (механизм отдельно от Defender)4 Наладить подпись кода и канал распространения (см. статью про SmartScreen)
Defender (MsMpEng.exe) тормозит / медленный ввод-вывод Измерить через Performance analyzer, определить наиболее нагруженные файлы и процессы9 Улучшить паттерн записи приложения. На машинах разработчиков — Dev Drive и режим производительности19. Исключение — последний вариант, минимальным охватом6

Во всех случаях общие три пункта: «сначала установить факты (имя обнаружения, объект, обнаруживший продукт)», «обязательно запустить постоянное решение — заявку» и «исключение и восстановление — временная мера минимального охвата».

8. Итог

  • Современный Defender выносит вердикт не сверкой сигнатур, а на основе машинного обучения, облачной защиты и репутации. Подозрение к новому двоичному файлу без репутации — следствие конструкции. Структуры, которые «скрывают суть», — обфускация и самораспаковка — вызывают подозрение ещё сильнее.
  • Опора профилактики — последовательная подпись кода сертификатом доверенного удостоверяющего центра. Программы предотвращения ложных срабатываний через предварительную регистрацию нет. Работают также собственное сканирование через MpCmdRun.exe перед релизом и заблаговременная отправка образца для релизов, которые существенно меняют внешний вид дистрибутива.
  • При обнаружении установите имя обнаружения и объект через журнал защиты и журнал событий (ID 1116/1117) и отправьте заявку на портал отправки образцов Microsoft Security Intelligence как разработчик. Файл из карантина восстанавливают через журнал защиты или командой MpCmdRun.exe -Restore.
  • Исключение — временная мера до результата заявки. Полный путь, минимальный охват, запись, снять после устранения. Исключать временные папки, расширения или универсальные процессы нельзя: это укрытие для вредоносного ПО.
  • Проблемы производительности сначала измеряйте через Performance analyzer, рассмотрите улучшение паттерна записи приложения и режим производительности Dev Drive, и только если этого мало — точечное исключение. Просить клиента отключить защиту в режиме реального времени недопустимо.

Похожие статьи

Смежные направления консультаций

KomuraSoft LLC занимается выработкой политики реагирования на ложные срабатывания и предупреждения SmartScreen для распространяемых приложений, проектированием схемы распространения и обновления с учётом подписи кода, а также измерением и диагностикой проблем производительности, которые вызывает антивирусное ПО.

Источники

  1. Microsoft Learn, Microsoft Defender Antivirus in Windows Overview. О переходе в 2015 году от движка на статических сигнатурах к предиктивной модели на базе машинного обучения, прикладных наук и ИИ, а также об обнаружении аномалий и защите на основе поведения.  2

  2. Microsoft Learn, Cloud protection and sample submission at Microsoft Defender Antivirus. О моделях машинного обучения на устройстве, анализе поведения и эвристике, отправке метаданных в облачную защиту (вердикт часто приходит за миллисекунды) и многослойной структуре: отправка образца, детонация и анализ больших данных.  2

  3. Microsoft Learn, Submit files for analysis. О возможности отправить ошибочно обнаруженный файл через портал отправки образцов (microsoft.com/wdsi/filesubmission); о необходимости входа и отслеживании статуса заявки; о том, что с 20 мая 2024 года вход переведён на Microsoft Entra ID и в организации может понадобиться согласие администратора; о подробном описании использовавшегося продукта и ситуации обнаружения; об отправке как software developer и запросе повторного рассмотрения через контактную форму для разработчиков, если вердикт не устраивает; о приёме SAID и более высоком приоритете заявок держателей действующего SAID; о странице истории заявок (microsoft.com/wdsi/submissionhistory) со состояниями Submitted / In progress / Closed и проверке обновления вердикта через rescan на странице сведений; об отсутствии приёма образцов по электронной почте.  2 3 4

  4. Microsoft Learn, Software developer FAQ. Об отсутствии внесения в список известных файлов и программы предотвращения ложных срабатываний; о том, что последовательная подпись сертификатом доверенного корневого удостоверяющего центра ускоряет установление происхождения и добавление в список известных; об отправке заявки как разработчика и оспаривании вердикта через контактную форму для разработчиков; о том, что SmartScreen — механизм отдельно от антивируса Defender.  2 3 4 5 6 7

  5. Microsoft Learn, Restore quarantined files in Microsoft Defender Antivirus. О просмотре и восстановлении элементов карантина через «Журнал защиты» в «Безопасности Windows» и о просмотре списка карантина и восстановлении через MpCmdRun.  2 3 4

  6. Microsoft Learn, Configure custom exclusions for Microsoft Defender Antivirus. О том, что исключение — брешь в защите (protection gap), которую следует использовать умеренно, только для конкретной проблемы, а не заранее «на всякий случай», с фиксацией причины и регулярным пересмотром.  2 3

  7. Microsoft Learn, Configure and manage Microsoft Defender Antivirus with the MpCmdRun command-line tool. О расположении MpCmdRun.exe и требовании прав администратора; о параметрах -Scan (настраиваемое сканирование через -ScanType 3, параметр -File, код возврата 0, который включает и «ничего не обнаружено», и «обнаружено, но успешно устранено», и код 2 — «обнаружено, не устранено / требуется действие пользователя / ошибка сканирования»; -DisableRemediation, который при обнаружении не выполняет действий и показывает результат в выводе команды; значение по умолчанию 50 для -CpuThrottling); -Restore (-ListAll/-Name/-FilePath/-Path); -CheckExclusion; -GetFiles.  2 3 4 5 6 7

  8. Microsoft Learn, How Microsoft identifies malware and potentially unwanted applications. О том, что предупреждения о категории «Unknown» (нераспознанное ПО) рассматриваются как система раннего предупреждения о ещё не обнаруженном вредоносном ПО, что отправка образца помогает начать формировать репутацию, и о классификациях Obfuscator, Evasion software и Bundling software.  2 3 4 5

  9. Microsoft Learn, Performance analyzer for Microsoft Defender Antivirus. О снятии записи через New-MpPerformanceRecording, воспроизведении операции и порядке анализа через -TopFiles/-TopScansPerFile и другие параметры Get-MpPerformanceReport; о том, что в отчёте есть число сканирований, длительность (сумма / мин. / средн. / макс. / медиана), путь, процесс и причина сканирования; о значениях столбца SkipReason (Not Skipped / Optimization / User skipped); о выгрузке TopScans в CSV через Export-Csv.  2 3 4 5

  10. Microsoft Learn, Microsoft Defender Antivirus Performance Analyzer reference. О том, что Performance analyzer нужен, чтобы понять проблемные файлы, а не чтобы предлагать исключения; что исключения снижают защиту и их нужно задавать осторожно; о требовании прав администратора; о том, что отчёты Top идут по убыванию длительности; что -MinDuration задаёт нижнюю границу в записи вроде 100ms; что -Raw даёт машиночитаемый вывод.  2 3

  11. Microsoft Learn, Turn on block at first sight. О том, как облачный сервер оценивает неизвестные подозрительные файлы эвристикой, машинным обучением и автоматическим анализом и блокирует их за секунды, и о том, что открытие файла могут задержать до вердикта. 

  12. Microsoft Learn, Troubleshoot Microsoft Defender Antivirus scan issues. О расположении журнала событий Defender (Журналы приложений и служб → Microsoft → Windows → Windows Defender → Operational) и получении через Get-WinEvent. 

  13. Microsoft Learn, Review event logs and error codes to troubleshoot issues with Microsoft Defender Antivirus. О списке идентификаторов событий Defender, включая ID 1116 (обнаружение) и 1117 (действие: карантин, удаление и т. п.).  2

  14. Microsoft Learn, Malware names. О том, что имена обнаружений следуют соглашению об именовании CARO (тип / платформа / семейство и т. п.). 

  15. Microsoft Learn, Address false positives/negatives in Microsoft Defender for Endpoint. О том, что отправленный файл сначала сразу сканирует автоматическая система; что приоритет при анализе получают файлы с широким охватом воздействия и заявки держателей Software Assurance ID; об отправке MpSupportFiles.cab при поведенческом обнаружении; об административной подаче заявок и индикаторе «Разрешить»; о рекомендации задавать исключения через Intune.  2 3 4 5 6

  16. Microsoft Learn, Configure and validate exclusions based on file extension and folder location. О различии Set-MpPreference (перезапись списка), Add-MpPreference (добавление) и Remove-MpPreference (удаление); о том, что ExclusionPath задают на уровне файла или папки (включая подпапки); о настройке через групповую политику, Intune и подобные средства; о проверке исключения через MpCmdRun; о том, что даже для файла с исключением из антивирусного сканирования могут по-прежнему срабатывать оповещения EDR и другие обнаружения.  2 3 4

  17. Microsoft Learn, Configure exclusions for files opened by processes. О том, что ExclusionProcess исключает «файлы, которые открывает указанный процесс», а чтобы исключить сам процесс, нужно файловое исключение (ExclusionPath). 

  18. Microsoft Learn, Common mistakes to avoid when defining exclusions. О том, что не следует исключать C:\ и подобные временные папки, расширения вроде .exe/.dll/.tmp, универсальные процессы вроде cmd.exe/powershell.exe/msbuild.exe или имя файла без пути, и о том, что исключённый элемент может стать укрытием для угрозы. 

  19. Microsoft Learn, Protect Dev Drive using performance mode. О том, что защита в режиме реального времени по умолчанию выполняет синхронное сканирование «open now, scan now»; что режим производительности даёт существенно более высокую защиту, чем исключение папки, за счёт асинхронного сканирования «open now, scan later»; что он работает только на Dev Drive и только при включённой защите в режиме реального времени; что при высокой нагрузке CPU/памяти у MsMpEng.exe (WinDefend, Antimalware Service Executable) следует пользоваться Performance Analyzer.  2 3 4 5

  20. Microsoft Learn, Set up a Dev Drive on Windows 11. О том, что Dev Drive — том для разработки на базе ReFS; что рекомендуется переносить на него код проекта, кэш пакетов и вывод сборки; что на доверенном Dev Drive режим производительности включён по умолчанию; о предпосылках (Windows 11, сборка 10.0.22621.2338 и новее, свободное место не меньше 50 ГБ, память от 8 ГБ, рекомендуется 16 ГБ, права локального администратора, в корпоративной среде — групповая политика); о создании через «Параметры > Система > Память > Дополнительные параметры хранилища > Диски и тома»; о создании из командной строки через Format D: /DevDrv /Q и Format-Volume -DriveLetter D -DevDrive; о том, что существующий том преобразовать нельзя и признак задаётся только при форматировании; что диск C: нельзя сделать Dev Drive; о проверке и задании доверия через fsutil devdrv query / fsutil devdrv trust 2

  21. Microsoft Learn, Microsoft Defender Antivirus full scan considerations and best practices. О том, что ограничение CPU при сканировании (ScanAvgCPULoadFactor) — не жёсткий предел, а ориентир для движка сканирования не превышать это значение в среднем, и что по умолчанию оно применяется к сканированиям по расписанию (и по желанию к настраиваемым сканированиям). 

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

Японский календарь, праздники и даты закрытия в бизнес-приложениях — устойчивость к смене эры, JapaneseCalendar и расчёт рабочих дней

Разбираем обработку дат, характерную для японских бизнес-приложений: вывод по японскому календарю, расчёт рабочих дней без праздников и д...

Эти страницы показывают тему статьи в более широком контексте услуг и решений.

Статья напрямую связана со следующими услугами.

Частые вопросы

Вопросы, которые часто возникают при консультациях по теме статьи.

Моё приложение Microsoft Defender определил как вирус. Что делать?
Не бросайтесь сразу добавлять исключения или отключать Defender. Штатный путь к постоянному решению — отправить файл через портал отправки образцов Microsoft Security Intelligence (sample submission) как разработчик ПО (software developer). После входа можно отслеживать статус рассмотрения; если файл признают ложным срабатыванием, после обновления определений он перестанет обнаруживаться. Файл, уже попавший в карантин, восстанавливают через «Журнал защиты» в «Безопасности Windows» или командой MpCmdRun.exe -Restore.
Как сообщить Microsoft о ложном срабатывании?
Отправьте файл через портал отправки образцов Microsoft Security Intelligence (microsoft.com/wdsi/filesubmission). Для отправки нужен вход в систему; после него статус рассмотрения можно отслеживать на портале. Отправленный файл сначала сразу сканирует автоматическая система, при необходимости его дополнительно разбирает аналитик. Отправляйте заявку как разработчик; если вы не согласны с вердиктом, повторное рассмотрение запрашивают через контактную форму для разработчиков, которая прилагается к результату проверки.
Уместно ли просить клиента задать исключение в своей среде?
Как временную меру до результата заявки о ложном срабатывании — да, это допустимый вариант, но постоянным решением оно быть не должно. Исключение технически открывает брешь в защите Defender, и сама Microsoft прямо пишет: использовать умеренно, только для конкретной проблемы и с регулярным пересмотром. Если исключение всё же добавляете, ограничьте его минимумом — полным путём к исполняемому файлу, — зафиксируйте, кто, зачем и до какого срока его ввёл, и снимите сразу после устранения ложного срабатывания. Широкие исключения вроде целой папки, C:\Temp или расширения .exe равносильны тому, чтобы оставить вредоносному ПО укрытие.
Устраняет ли подпись кода ложные срабатывания?
Гарантии нет, но эффект заметный. У Microsoft нет программы предварительной регистрации в списке известных файлов для предотвращения ложных срабатываний — вместо этого рекомендуется постоянно и последовательно подписывать файлы сертификатом доверенного корневого удостоверяющего центра. Последовательная подпись позволяет команде расследования быстро установить происхождение программы, и это иногда ускоряет попадание в список известных. Наоборот, неподписанный двоичный файл без признаков происхождения от сборки к сборке каждый раз проверяют заново как неизвестный файл без репутации.

Об авторе

Страница с профилем автора статьи.

Го Комура

Представитель KomuraSoft LLC

Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.

Публичные ссылки

Вернуться в блог