Фреймворки для обхода антивируса и EDR

Фреймворк обход антивируса EDR

Ан­тивиру­сное ПО и сис­темы защиты EDR ста­новят­ся более наворо­чен­ными и даже начали исполь­зовать машин­ное обу­чение для лучшего детек­тирова­ния. Но у авто­ров вредоносов по‑преж­нему имеются спо­собы обохода. Сегодня рассмотрим два фреймворка, которые используют хакеры для обхода антивирусов и EDR.

Еще по теме: Обход антивируса в Meterpreter

Фреймворки для обхода антивирусов и EDR

Для этой статьи я использовал Kaspersky Endpoint Detection Response и его Linux вари­ацию (KESL), Антивирус ClamAV, Антивирус McAffee, Защитник Microsoft Defender Advanced и VirusTotal.

Материал предназначен для специалистов по пентестам и аналитиков SoC, чтобы помочь им понять, как хакеры могут проникать в системы, обходя Антивирусы EDR. При написании статьи использовались личные устройства автора. Использование инструментов для обхода антивирусов без письменного разрешения на проведения пентеста является незаконным. Ни редакция spy-soft.net, ни автор не несут ответс­твен­ности за ваши действия.

Обход антивирусов с помощью фреймворка NimBlackout

NimBlackout поз­воля­ет уда­лить AV/EDR при помощи уяз­вимого драй­вера. Драй­вер GMER исполь­зует­ся для вза­имо­дей­ствия с ядром опе­раци­онной сис­темы и дает воз­можность обна­ружи­вать и ана­лизи­ровать скры­тые вре­донос­ные эле­мен­ты.

Прог­рамма написа­на на Nim, давайте ском­пилиру­ем ее на Linux:

На выходе получи­ли PE, в который нуж­но передать про­цесс с анти­виру­сом.

Да­лее надо уста­новить уяз­вимый драй­вер в ОС и запус­тить наш исполня­емый файл.

Установка драйвера и запуск .exe:

Установка фреймворка для обхода антивируса NimBlackout

Эта ата­ка нацеле­на на Microsoft Defender. Одна­ко тут есть одно но: вер­сия GMER из это­го PoC может не сра­ботать на Windows 11 и пос­ледних вер­сиях Windows 10. Более того, для запус­ка нам нуж­но иметь при­виле­гии локаль­ного адми­нис­тра­тора.

Обход антивирусов с помощью фреймворка EntropyReducer

Как вы, воз­можно, зна­ете, энтро­пия — это сте­пень слу­чай­нос­ти в задан­ном наборе дан­ных. Сущес­тву­ют раз­ные спо­собы изме­рять энтро­пию, в нашем кон­тек­сте под этим тер­мином мы будем под­разуме­вать энтро­пию Шен­нона, которая дает зна­чение от 0 до 8. С уве­личе­нием уров­ня слу­чай­нос­ти в наборе дан­ных уве­личи­вает­ся и зна­чение энтро­пии.

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

Для при­мера пос­чита­ем энтро­пию от обыч­ного meterpreter/reverse_tcp. Сна­чала сге­нери­руем файл:

Для под­сче­та энтро­пии мы будем исполь­зовать PeStudio.

Подсчет энтропии файла entropy.bin:

Фреймворк для обхода антивируса EntropyReducer

Ре­зуль­тат неуте­шитель­ный — 6,265, и, как мы видим, PeStudio сра­зу может пре­дос­тавить информа­цию о том, какие анти­виру­сы клас­сифици­рова­ли .bin как вре­донос­ный файл.

Ес­ли чис­ло бли­зит­ся к 8, зна­чит, с огромной веро­ятностью файл вре­донос­ный. Это отме­чено в гис­тограм­ме ниже.

Гистограмма энтропии файлов:

Обход антивирусов фреймворк

Как нам сни­зить это зна­чение? Тут поможет инс­тру­мент EntropyReducer.

EntropyReducer сна­чала про­веря­ет, кра­тен ли раз­мер полез­ной наг­рузки BUFF_SIZE (эта перемен­ная ука­зыва­ет на количес­тво бай­тов в полез­ной наг­рузке, пос­ле которых будут добав­лены пус­тые бай­ты, NULL_BYTES). Если нет, он уве­личи­вает его до необ­ходимо­го зна­чения.

За­тем он берет каж­дый блок BUFF_SIZE из полез­ной наг­рузки и соз­дает для него узел связ­ного спис­ка с помощью фун­кции InitializePayloadList.

У соз­данно­го узла пус­той буфер раз­мером NULL_BYTES. Этот буфер будет при­менять­ся для сни­жения энтро­пии.

За­тем EntropyReducer про­дол­жает слу­чай­ным обра­зом менять порядок каж­дого узла в связ­ном спис­ке, нарушая порядок исходной полез­ной наг­рузки. Этот шаг выпол­няет­ся с помощью алго­рит­ма сор­тиров­ки сли­янием, который реали­зован в фун­кции MergeSort.

От­сорти­рован­ный связ­ный спи­сок хра­нит­ся в слу­чай­ном поряд­ке, потому что зна­чение, по которо­му он сор­тиру­ется, — это зна­чение XOR пер­вых трех бай­тов исходной полез­ной наг­рузки. Имен­но оно опре­деля­ет позицию в реор­ганизо­ван­ном связ­ном спис­ке.

Пос­коль­ку сох­ранение спис­ка в фай­ле невоз­можно из‑за того, что он уже свя­зан ука­зате­лями, при­ходит­ся делать сери­али­зацию с помощью фун­кции Obfuscate. Пос­ле это­го выпол­няет­ся запись в output_file.

Вот что выда­ет VirusTotal при ана­лизе.

Проверка вредоноса после фреймворка на VirusTotal

Те­перь модифи­циру­ем файл через EntropyReducer.

За­пуск EntropyReducer

Те­перь обна­руже­ние зна­читель­но ниже.

Под­счет энтро­пии фай­ла

Результаты проверки на VirusTotal:

Ре­зуль­таты про­вер­ки на VirusTotal

Вот так выг­лядит изме­нен­ный шелл‑код с умень­шен­ной энтро­пией:

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

Заключение

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

ПОЛЕЗНЫЕ ССЫЛКИ:

Дима (Kozhuh)

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

Добавить комментарий