Независим изследовател на зловреден софтуер документира неоткривана досега задна врата (backdoor) за Windows, наречена SLEEPWALKER. Тя остава неактивна в паметта, докато специално оформен мрежов пакет не достигне машината, след което изпълнява команди, написани на разработен от нейните автори език с 23 инструкции.

Анализираната проба е неподписана 64-битова Windows динамична библиотека (DLL) с размер 59 904 байта, създадена да бъде заредена чрез странично зареждане (side-loading) в ERAAgent.exe – изпълнимия файл за Windows на ESET Management Agent.

Библиотеката имитира легитимната системна библиотека на Microsoft dpapi.dll, като експортира същите седем функции за защита на данните и съдържа ресурс за версията, копиран от ESET Management Agent.

Във файла няма вградени домейни, IP адреси или URL адреси и той не осъществява собствени изходящи връзки. Поради това компрометираният хост може да изглежда чист за инструментите за сигурност, които следят за връзки с известна зловредна инфраструктура.

Командите пристигат като байткод, а не като четим текст. Поради това възстановяването на ключа за шифроване разкрива операционни кодове във формат, който не съществува никъде другаде освен в този конкретен файл. Доминик Райхел, бивш изследовател на зловреден софтуер в Palo Alto Networks Unit 42, споделя, че този подход е „съвместим с насочена операция с добри ресурси, а не с просто опортюнистична атака“.

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

Вградената ѝ конфигурация се декриптира чрез AES-256-CCM до една инструкция, която указва на задната врата да наблюдава неограничено време всеки мрежов интерфейс за този конкретен пакет.

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

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

Следователно задната врата е имплант за фазата след компрометиране (post-compromise implant), а не точка за първоначално проникване, като остава неизвестно как атакуващият първоначално е достигнал до машината и е записал DLL файла в тази директория.

Страничното зареждане е и единственият ѝ механизъм за поддържане на присъствие (persistence), като DLL файлът се зарежда отново при всяко стартиране на услугата ESET Management Agent.

Страничното зареждане разчита на реда за търсене на DLL файлове в Windows, а не на грешка в софтуера на ESET, така че няма какво да се коригира като уязвимост. Реакцията при потвърдено съвпадение е разследване на инциденти и цялостно преинсталиране на системата.

Продуктите на ESET са били злоупотребявани за странично зареждане и преди, включително от групата ToddyCat, която според Kaspersky е експлоатирала уязвимост в реда за търсене в скенера за команден ред на компанията, за да зареди зловреден DLL в ESET.

Медията The Hacker News се свърза с ESET за коментар дали разполагат с телеметрия за тази проба, като материалът ще бъде обновен при получен отговор.

Към 26 август ESET не е публикувала предупреждение или официално изявление относно този зловреден софтуер.

Общо 23-те инструкции обхващат планиране на задачи, няколко начина за прехвърляне на данни, поетапно доставяне на файлове с проверка на SHA-256 хеш преди изпълнение и стартиране на код директно в паметта. Те се пренасят чрез шест транспорта: TCP, UDP, ICMP, SMB именовани канали (named pipes) с компрометирано странично движение (lateral movement), сурово прихващане в общ режим (promiscuous mode) и Virtual Machine Communication Interface (VMCI) на VMware.

VMCI трафикът преминава през слоя за виртуализация, а не през мрежов адаптер, така че прихващането на пакети между две машини го пропуска напълно. Групата UNC3886 използва VMCI сокети за поддържане на присъствие между компрометирани ESXi хостове и техните виртуални машини гост при прониквания, документирани от Mandiant.

Нито една инструкция в езика на задната врата не записва данни на диска, така че всичко, което тя очаква да намери на компрометираната машина, трябва да бъде поставено там от друг компонент.

Две от инструкциите следят за задействащия пакет. Операционният код, съхраняван в анализираната проба, активира само слушателя за сурови пакети. В същото време втори операционен код позволява и базирано на DNS задействане, което е имплементирано в двоичния файл, но не е активно в тази конкретна компилация.

За да позволи на неудостоверени потребители да достигнат до нейния именован канал, SLEEPWALKER задава стойността в регистъра EveryoneIncludesAnonymous и добавя името на своя канал в NullSessionPipes. Нейната процедура за почистване отчита дали собственият ѝ запис в NullSessionPipes е бил успешен, а не дали вече е съществувал запис, поради което премахването ѝ може да изтрие легитимен запис, съществувал преди заразяването.

Изследователят Райхел публикува следните индикатори за компрометиране на хоста:

  • Неочакван файл dpapi.dll до ERAAgent.exe
  • Неочакван файл dpapisvc.dll в същата директория
  • SHA-256: d347170752a28e2b8c4b8b9f3cab2e3a6541ba11682c94498d26eb9002779d60
  • MD5: 2318327b29bb1c0e2d2b5f0211fc7fac
  • EveryoneIncludesAnonymous със стойност 1
  • Неочакван запис в NullSessionPipes

Двете стойности в регистъра имат значение само при сравнение с известна базова конфигурация за сигурност.

Материалът съдържа YARA правило и инструмент на PowerShell за проверка.