Категория > Новости > F#ck AMSI! Как обходят Anti-Malware Scan Interface при заражении Windows - «Новости»
F#ck AMSI! Как обходят Anti-Malware Scan Interface при заражении Windows - «Новости»9-09-2021, 00:02. Автор: Маргарита |
Если тебе знакома фраза «Этот сценарий содержит вредоносное содержимое и был заблокирован антивирусным программным обеспечением», то сегодняшняя статья — для тебя. Такое сообщение генерирует встроенный в Windows 10 механизм AMSI, блокирующий выполнение вредоносных сценариев и скриптов. Можно ли его обойти? Запросто, и сейчас я расскажу, как это сделать.warningСтатья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону. Аббревиатура AMSI расшифровывается как Anti-Malware Scan Interface. Эту технологию Microsoft разработала в качестве метода защиты пользователей от вредоносных программ и впервые внедрила в Windows 10. AMSI в реальном времени перехватывает скрипты и команды PowerShell, jаvascript, VBScript, VBA или .NET и отсылает на проверку антивирусному программному обеспечению (это необязательно Defender, более десяти вендоров поддерживают AMSI). Но в наших примерах мы рассмотрим все же Defender. Как это работаетКогда пользователь запускает скрипт или инициализирует процесс PowerShell (либо PowerShell_ISE), в процесс автоматически загружается библиотека Примерно так работает AMSI На приведенной выше схеме обозначены две функции — Экспорты библиотеки amsi.dll Однако значительная часть этого списка нам сегодня не пригодится. Итак, мы запустили PowerShell. До того как мы сможем вводить какие‑либо команды, будет загружена AMSI.DLL и произойдет вызов
HRESULT AmsiInitialize(
LPCWSTRappName,
HAMSICONTEXT *amsiContext
);
Тут используются два аргумента: имя приложения и указатель на структуру После того как мы ввели команду или попытались выполнить скрипт, происходит вызов
HRESULT AmsiOpenSession(
HAMSICONTEXT amsiContext,
HAMSISESSION *amsiSession
);
Тут тоже передаются два аргумента: Далее в дело вступают те самые
HRESULT AmsiScanBuffer(
HAMSICONTEXT amsiContext,
PVOIDbuffer,
ULONGlength,
LPCWSTRcontentName,
HAMSISESSION amsiSession,
AMSI_RESULT *result
);
HRESULT AmsiScanString(
HAMSICONTEXT amsiContext,
LPCWSTRstring,
LPCWSTRcontentName,
HAMSISESSION amsiSession,
AMSI_RESULT *result
);
Defender проверяет буфер или строку и возвращает результат. Если ответ от Defender — 32768, то малварь обнаружена, единичка сигнализирует, что все чисто. Малварь обнаруженаМалварь не обнаружена Ну и после всех перечисленных выше проверок текущая сессия закрывается с использованием Как обойти проверкуМеханизм AMSI использует сигнатурное (rule-based) детектирование угроз. Зная этот факт, можно придумывать разные тактики и техники. Некоторые известные способы уже не сработают, но, используя модификацию кода, обфускацию и криптование, можно добиться интересных результатов. infoДля верификации детекта я буду использовать строки AmsiUtils либо Invoke-Mimikatz. Разумеется, сами по себе эти слова безобидны, но на них срабатывает детект, так как они ловятся сигнатурами. Если уж на AmsiUtils нет детекта, то можно смело грузить, например, PowerView и использовать его возможности по максимуму. Итак, поехали. PowerShell downgradeПервый способ, который иногда срабатывает, тривиален. PowerShell 2.0 устарел, но Microsoft не спешит удалять его из операционной системы. У старой версии PowerShell нет таких защитных механизмов, как AMSI, поэтому для обхода детекта иногда достаточно использовать команду Используем PowerShell 2.0 Перейти обратно к новости |