Как может ELF-бинарный файл вызвать Windows API из WSL(2), чтобы развернуть полезную нагрузку?

Вопрос или проблема

В сентябре 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. Основные моменты для реализации такого взаимодействия следующие:

  1. Использование Python в WSL: Разработчики могут использовать Python и библиотеки, такие как ctypes или ctypes.windll, которые позволяют вызывать функции из динамических библиотек Windows непосредственно. Это возможно, когда Python идёт через слой совместимости WSL, что позволяет во многом обходить ограничения традиционных вызовов с ELF бинарников.

  2. AF_UNIX Сокеты: Как вы правильно заметили, WSL поддерживает AF_UNIX сокеты, которые могут использоваться для создания каналов коммуникации между Linux и Windows. Это может быть использовано для передачи команд или данных между исполняемым файлом ELF и приложением, запущенным на платформе Windows.

  3. Инъекция в работающие процессы: В блоге BLL обсуждается возможность инъекции кода в работающие процессы с помощью вызовов Windows API. Это может быть осуществлено через механизм remote thread creation или другие аналогичные методы. При этом необходимо тщательно управлять контекстом процессов.

Подходы для создания proof-of-concept

Для разработки доказательной концепции (proof-of-concept) можно рассмотреть следующие шаги:

  1. Создание ELF бинарника: Разработайте ELF бинарник, который может по вашим указаниям выполнять команды или взаимодействовать с другими процессами. Это можно реализовать, используя PyInstaller или другие подобные инструменты.

  2. Интеграция с Windows API: Вместе с вызовами API Windows, необходимо учитывать безопасность и интерфейсы, через которые приложение будет взаимодействовать с Windows.

  3. Мониторинг и детекция: Для повышения уровня безопасности крайне важно разрабатывать систему детекции, которая будет отслеживать такие операции, как инъекции в процессы, вызовы API и другие подозрительные активности.

Заключение

Несмотря на старые ограничения, связанные с архитектурой pico процесса, новые возможности, предоставленные WSL2, открывают новые горизонты для кибернетических атак и защиты. Как разработчикам, так и специалистам по безопасности важно быть в курсе современных подходов и уметь адаптировать свои стратегии для противодействия новым угрозам. Исследование возможностей взаимодействия Linux и Windows в рамках WSL может быть как полезным, так и опасным, в зависимости от целей использования.

Оцените материал
Добавить комментарий

Капча загружается...