Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
| Помогли мы вам |
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Аббревиатура AMSI расшифровывается как Anti-Malware Scan Interface. Эту технологию Microsoft разработала в качестве метода защиты пользователей от вредоносных программ и впервые внедрила в Windows 10. AMSI в реальном времени перехватывает скрипты и команды PowerShell, jаvascript, VBScript, VBA или .NET и отсылает на проверку антивирусному программному обеспечению (это необязательно Defender, более десяти вендоров поддерживают AMSI). Но в наших примерах мы рассмотрим все же Defender.
Когда пользователь запускает скрипт или инициализирует процесс PowerShell (либо PowerShell_ISE), в процесс автоматически загружается библиотека AMSI.. Она‑то и предоставляет необходимый API для взаимодействия с антивирусным ПО. Прежде чем выполниться, скрипт или команда при помощи удаленного вызова процедур (RPC) отправляется Microsoft Defender, он, в свою очередь, анализирует полученную информацию и отсылает ответ обратно AMSI.. Если обнаружена известная сигнатура, выполнение прерывается и появляется сообщение о том, что скрипт заблокирован антивирусной программой.
На приведенной выше схеме обозначены две функции — AmsiScanString( и AmsiScanBuffer(, они, по сути, главные в цепочке AmsiInitialize, AmsiOpenSession, AmsiScanString, AmsiScanBuffer и AmsiCloseSession. Если глянуть Exports для amsi., то мы увидим следующее.
Однако значительная часть этого списка нам сегодня не пригодится.
Итак, мы запустили PowerShell. До того как мы сможем вводить какие‑либо команды, будет загружена AMSI.DLL и произойдет вызов AmsiInitialize(.
HRESULT AmsiInitialize( LPCWSTRappName, HAMSICONTEXT *amsiContext);Тут используются два аргумента: имя приложения и указатель на структуру CONTEXT. Параметр amsiContext будет использоваться в каждом последующем вызове AMSI API.
После того как мы ввели команду или попытались выполнить скрипт, происходит вызов AmsiOpenSession():
HRESULT AmsiOpenSession( HAMSICONTEXT amsiContext, HAMSISESSION *amsiSession);Тут тоже передаются два аргумента: amsiContext, полученный на шаге AmsiInitialize(, и указатель на структуру SESSION. Параметр amsiSession будет использоваться в каждом последующем вызове AMSI API внутри этой сессии.
Далее в дело вступают те самые AmsiScanString( и AmsiScanBuffer(. По названию, в принципе, понятно, какие параметры они передают для проверки, да и синтаксис у них почти одинаков.
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, то малварь обнаружена, единичка сигнализирует, что все чисто.
Ну и после всех перечисленных выше проверок текущая сессия закрывается с использованием AmsiCloseSession.
Механизм AMSI использует сигнатурное (rule-based) детектирование угроз. Зная этот факт, можно придумывать разные тактики и техники. Некоторые известные способы уже не сработают, но, используя модификацию кода, обфускацию и криптование, можно добиться интересных результатов.
Для верификации детекта я буду использовать строки AmsiUtils либо Invoke-Mimikatz. Разумеется, сами по себе эти слова безобидны, но на них срабатывает детект, так как они ловятся сигнатурами. Если уж на AmsiUtils нет детекта, то можно смело грузить, например, PowerView и использовать его возможности по максимуму.
Итак, поехали.
Первый способ, который иногда срабатывает, тривиален. PowerShell 2.0 устарел, но Microsoft не спешит удалять его из операционной системы. У старой версии PowerShell нет таких защитных механизмов, как AMSI, поэтому для обхода детекта иногда достаточно использовать команду powershell .
|
|
|