Точкой входа стала уязвимость SQL-инъекции в публичном Java-приложении, запущенном на Apache Tomcat . Функция автодополнения в строке поиска не фильтровала пользовательский ввод, что позволило атакующим внедрять SQL-команды через JDBC-соединение с базой данных Oracle . Как отмечают исследователи Huntress, это не новый класс уязвимостей — SQL-инъекции существуют десятилетиями и обычно являются результатом некорректной обработки пользовательских данных, направляемых к SQL-серверу . Простая неспособность приложения очистить поле поиска запустила цепочку компрометации.
Вместо развертывания традиционных файлов вредоносного ПО на скомпрометированном сервере атакующие использовали встроенную JVM Oracle и оператор CREATE JAVA SOURCE для компиляции и хранения всего пост-эксплойт-инструментария в виде Java-объектов схемы внутри базы данных Oracle . Этот подход сделал инструментарий невидимым для стандартных защит уровня ОС, так как EDR и антивирусы ориентируются на процессы, бинарные файлы и файлы на операционной системе — они, как правило, не проверяют Java-классы и PL/SQL-обертки, хранящиеся внутри Oracle .
Инструментарий khunt включал следующие компоненты, каждый из которых хранился как объект базы данных:
| Компонент | Функция |
|---|---|
| KhuntCmd | Загружает cmd.exe и выполняет произвольные команды ОС, встраивая их в SQL-запросы |
| KhuntHash | Извлекает имена пользователей и хэши паролей из внутренних таблиц Oracle и сохраняет в файл |
| KhuntFS / KhuntFS2 | Файловые менеджеры для просмотра, чтения, поиска и проверки размера файлов |
| KhuntT | Простой инструмент "ping" для проверки установки и доступности инструментария |
| KhuntUnzip | Утилита для распаковки файлов |
| khunt_* PL/SQL-обертки | Процедуры-обертки PL/SQL для вызова соответствующих Java-методов |
Атакующие не ограничились доступом к БД. Они использовали инструментарий khunt для перехода от уровня базы данных к операционной системе Windows в несколько шагов:
cmd.exe /c whoami, что подтвердило наличие привилегий SYSTEM на сервере Windows, установив удаленное выполнение кода (RCE) от БД к ОС .reg.exe и скопировали кусты реестра SECURITY и SYSTEM, сохранив их как khuntSECURITY.hiv и khuntSYSTEM.hiv в F:\Oracle\ .tasklist /svc и сохранили вывод как khunttasks.txt .esentutl.exe для копирования SAM и второй копии SECURITY, сохранив их как khuntSAM.hiv и khunt_SECURITY.hiv .Извлеченные кусты реестра могут быть использованы офлайн для извлечения и декодирования хэшей паролей всех локальных учётных записей .
Расследование Huntress выявило несколько критических слепых зон, позволивших атаке пройти незамеченной:
Основываясь на этой атаке, Huntress рекомендует :
Эта атака служит суровым напоминанием: движки баз данных со встроенными средами программирования (как JVM Oracle) могут стать незаметными атакующими платформами, если их сочетать с единственным непроверенным полем ввода. Командам безопасности необходимо расширять мониторинг за пределы ОС, включая слой объектов базы данных.