Вопрос или проблема
В сентябре 2021 года Black Lotus Labs (BLL) опубликовали пост в блоге, обсуждающий загрузчик полезной нагрузки, который:
- был написан на Python
- собран в ELF exe с использованием PyInstaller в Debian в WSL
- и “внедрён в запущенный процесс с использованием вызовов Windows API”
BLL утверждают, что смогли разработать доказательство концепции. Однако пост 2015 года на Stack Exchange утверждает, что невозможно выполнять вызовы к Windows API из-за архитектуры процессов pico (я думаю, это то, что они имели в виду).
Какие подходы могут быть использованы для разработки такого доказательства концепции или могут быть полезны для разработки мер защиты или обнаружения.
Хотя я буду рад принять другие ответы на случай, если мой неправильный, я просто пришёл к этому ответу, посетив сайт WSL и посмотрев видео.
Хотя я планирую провести больше исследований по различиям между WSL и WSL2, видео утверждает, что WSL предоставляет разработчикам возможность взаимодействовать с процессами Windows, используя сокеты AF Unix, и что приложение может работать как в процессе Linux, так и в процессе Windows одновременно.
Думаю, с 2015 года произошло много изменений :).
Ответ или решение
Вопрос о том, как ELF бинарник может вызвать Windows API из WSL (Windows Subsystem for Linux) 2, представляет особый интерес для специалистов в области информационных технологий и кибербезопасности. Ситуация усложняется тем, что существует определенное недоразумение относительно возможности межпроцессного взаимодействия между Linux и Windows в WSL, которое было отмечено в исследованиях, как, например, выводы Black Lotus Labs (BLL) в их блоге от сентября 2021 года.
Понимание WSL и WSL2
WSL (особенно версия 2) предоставляет возможность запускать полноценные Linux-окружения в Windows, что позволяет разработчикам использовать инструменты и библиотеки Linux для разработки и тестирования. Версия WSL2, в отличие от старой версии WSL, использует виртуальную машину на базе Hyper-V, что делает взаимодействие между Windows и Linux более гибким и простым.
Взаимодействие между ELF и Windows API
Согласно информации из блога BLL и недавним материалам, ELF исполняемые файлы могут взаимодействовать с Windows-программами, используя промежуточные методы, такие как сокеты и команды через API Windows. Основные моменты для реализации такого взаимодействия следующие:
-
Использование Python в WSL: Разработчики могут использовать Python и библиотеки, такие как
ctypes
илиctypes.windll
, которые позволяют вызывать функции из динамических библиотек Windows непосредственно. Это возможно, когда Python идёт через слой совместимости WSL, что позволяет во многом обходить ограничения традиционных вызовов с ELF бинарников. -
AF_UNIX Сокеты: Как вы правильно заметили, WSL поддерживает AF_UNIX сокеты, которые могут использоваться для создания каналов коммуникации между Linux и Windows. Это может быть использовано для передачи команд или данных между исполняемым файлом ELF и приложением, запущенным на платформе Windows.
-
Инъекция в работающие процессы: В блоге BLL обсуждается возможность инъекции кода в работающие процессы с помощью вызовов Windows API. Это может быть осуществлено через механизм remote thread creation или другие аналогичные методы. При этом необходимо тщательно управлять контекстом процессов.
Подходы для создания proof-of-concept
Для разработки доказательной концепции (proof-of-concept) можно рассмотреть следующие шаги:
-
Создание ELF бинарника: Разработайте ELF бинарник, который может по вашим указаниям выполнять команды или взаимодействовать с другими процессами. Это можно реализовать, используя PyInstaller или другие подобные инструменты.
-
Интеграция с Windows API: Вместе с вызовами API Windows, необходимо учитывать безопасность и интерфейсы, через которые приложение будет взаимодействовать с Windows.
-
Мониторинг и детекция: Для повышения уровня безопасности крайне важно разрабатывать систему детекции, которая будет отслеживать такие операции, как инъекции в процессы, вызовы API и другие подозрительные активности.
Заключение
Несмотря на старые ограничения, связанные с архитектурой pico процесса, новые возможности, предоставленные WSL2, открывают новые горизонты для кибернетических атак и защиты. Как разработчикам, так и специалистам по безопасности важно быть в курсе современных подходов и уметь адаптировать свои стратегии для противодействия новым угрозам. Исследование возможностей взаимодействия Linux и Windows в рамках WSL может быть как полезным, так и опасным, в зависимости от целей использования.