Найти в Дзене
Сисадмин

Что такое AMSI-защита и нужна ли она?

Представь себе: ты пришёл в бар (то есть включил PowerShell), заказал коктейль (выполнил скрипт), а тут рядом стоит тот самый чел с бейджем "Antimalware Scan Interface" — AMSI. Он не ворчит, не орёт, но нюх у него чисто полицейский: он приносит твой заказ на проверку в кухню антивирусов, и шеф-повар (твой антивирус) решает — можно ли это подавать гостю, или пусть лучше вернётся на кухню к разделочной доске. AMSI — это интерфейс Windows, придуманный, чтобы перехватывать и проверять скриптовый контент и динамически исполняемый код до того, как он начнёт буянить у тебя в памяти. По-русски: он подсовывает антивирусу то, что ты собираешься выполнить, и спрашивает: «Дядь, это норм или нет?» AMSI нацелен прежде всего на скрипты и сценарии — PowerShell, WSH, макросы Office, JavaScript в некоторых движках, — в общем, на всё то, что злой программист может написать прямо в текстовом виде и заставить работать в памяти. Он умеет: То есть AMSI — это не антивирус сам по себе, это курьер между исполня
Оглавление
Что такое AMSI-защита и нужна ли она?
Что такое AMSI-защита и нужна ли она?

Представь себе: ты пришёл в бар (то есть включил PowerShell), заказал коктейль (выполнил скрипт), а тут рядом стоит тот самый чел с бейджем "Antimalware Scan Interface" — AMSI. Он не ворчит, не орёт, но нюх у него чисто полицейский: он приносит твой заказ на проверку в кухню антивирусов, и шеф-повар (твой антивирус) решает — можно ли это подавать гостю, или пусть лучше вернётся на кухню к разделочной доске.

AMSI — это интерфейс Windows, придуманный, чтобы перехватывать и проверять скриптовый контент и динамически исполняемый код до того, как он начнёт буянить у тебя в памяти. По-русски: он подсовывает антивирусу то, что ты собираешься выполнить, и спрашивает: «Дядь, это норм или нет?»

Чем он жрёт и кого контролирует

AMSI нацелен прежде всего на скрипты и сценарии — PowerShell, WSH, макросы Office, JavaScript в некоторых движках, — в общем, на всё то, что злой программист может написать прямо в текстовом виде и заставить работать в памяти. Он умеет:

  • поднимать содержимое скрипта (строку/буфер) и отправлять на сканирование;
  • работать с зарегистрированными антивирусными провайдерами (Windows Defender и сторонние решения);
  • логировать сессии и взаимодействовать с движками (PowerShell, например).

То есть AMSI — это не антивирус сам по себе, это курьер между исполняемым текстом и антивирусным поваром.

Как это работает — кратко и без скучных терминов

Когда скрипт собирается исполняться, движок (сценарный интерпретатор) спрашивает: «Хэй, AMSI, не хочешь ли глянуть?» AMSI мутузит содержимое (текст или буфер) и шлёт его подключённому антивирусу через стандартные вызовы. Антивирус говорит «норм» или «опасно» — и уже на базе этого решения можно логировать, блокировать или поднять тревогу. Но и тут фишка: сам AMSI не стреляет в упор — он даёт инфу, решение принимает антивирус/политики системы.

Почему это круто (и почему не совсем волшебство)

Круто потому что:

  • AMSI ловит не только файлы на диске, но и то, что живёт в памяти — а это хитрые кейсы, когда злоумышленник прячет вредню в RAM и думает: «Ха-ха, диска нет — поймать меня не сможете».
  • Интеграция с PowerShell позволяет замечать подозрительный код до того, как он разведёт пожар.
  • Работает с разными антивирусами — интерфейс стандартизирован, и защитники могут дружно выносить вердикт.

Но не верь рекламе: AMSI — не чудо. Это не замок от всех бед. Он предотвращает определённые сценарии, но не остановит полностью опытного злоумышленника, который пришёл подготовленным.

Где AMSI бессилен?

Нет, я не буду давать инструкции злоумышленникам, но скажу честно: есть способы, которыми вредоносный код может пытаться обмануть проверяющего. Некоторые подходы — использование нативного двоичного кода, который не идёт через скриптовые движки, или сильная динамическая обфускация, шифрование и расшифровка на лету. Плюс, если у тебя в системе стоят старые/испорченные антивирусы или AMSI отключён, то привет — праздник для троянов.

Так что не стой на пороге и не думай: «А давайте-ка мы AMSI-обойдём» — это плохая идея, как пить литр дешёвой водки перед важным совещанием.

Практические, честные и полезные советы для админа (что сделать, чтобы AMSI работал как надо)

Если хочешь, чтобы AMSI выполнял роль нормального бармена, а не клоуна, делай так:

  • Включи и поддерживай актуальные антивирусные решения. AMSI — это интерфейс; без хорошего провайдера он как кастрюля без супа.
  • Обновляй Windows и компоненты PowerShell. Новые версии движков лучше интегрируются и меньше дыр.
  • Включи журналирование скриптов (ScriptBlockLogging, PowerShell Transcription) — это как камеры в баре: видно, кто и что лепил.
  • Применяй политики ограниченного исполнения (Constrained Language Mode, AppLocker, WDAC) — не давай скриптам ходить по кабакам.
  • Подпись скриптов: заставь персонал носить бейджи. Подписанные скрипты легче доверять.
  • Минимизируй права пользователей — меньше прав = меньше шансов, что вредня сможет сильно навредить.
  • Эндпоинт-детект (EDR) и сетевые политики. AMSI — звено в цепочке, но лучше иметь всю цепь защиты.

AMSI — это твой спокойный цифровой бульдог, который нюхает скрипты до их исполнения. Он не герой-одиночка, но зато отличный напарник в борьбе с бытовым злом: фишинговыми макросами, непроверенными PowerShell-командами и прочей мерзостью. Хочешь жить спокойно — следи за обновлениями, включай логирование, не давай никому запускать чужие скрипты и не оставляй порты открытыми.