Взлом
Уважаемые гости! При посещении нашего сайта просим вас ознакомиться с разделами форума, прежде чем оставлять ваши объявления и т.п., а также при обращении за помощью просим быть внимательными: на сайте есть как проверенные специалисты, так и непроверенные. Если вы обратились к специалисту, который проверку НЕ проходил, рекомендуем воспользоваться услугой гарант-сервиса. Спасибо, что посетили форум хакеров.

Шифровальщик времени выполнения Linux ELF

ANTON.10

Новый
Пользователь
Регистрация
27 Апр 2025
Сообщения
51
Реакции
0
Баллы
6
Создание малозаметного ELF-шифровальщика с использованием memfd_create: демонстрация практического подхода

Введение в идею и концепцию
Современные подходы к разработке утилит, способных шифровать и исполнять ELF-файлы напрямую из памяти, активно используют преимущества системных вызовов ядра Linux. Одним из таких ключевых вызовов является memfd_create, который позволяет создавать анонимные участки памяти с файловым интерфейсом, не оставляя при этом следов в файловой системе.

В данной статье рассмотрим экспериментальный шифровальщик под архитектуру x86_64, который реализует идею исполнения ELF-файлов из памяти, без записи на диск, с элементами демоноподобного поведения. Мы покажем, как работает данный механизм, сгенерируем зашифрованный бинарник, подключим к нему заглушку-дешифратор и в реальном времени отследим поведение процесса в памяти. Проект базируется на Ezuri (Go + AES + memfd_create), доступном на GitHub, и может быть легко адаптирован под различные цели.


---

Что такое memfd_create и зачем он нужен
Системный вызов memfd_create — это мощный инструмент для создания исполняемых объектов в оперативной памяти. Он позволяет разработчику создать временный файловый дескриптор, не отображаемый в файловой системе, при этом доступный как обычный файл для записи и исполнения. В результате создаётся ситуация, при которой программа, записанная в такой дескриптор, может быть запущена напрямую, без какого-либо следа на диске.

В представляемом примере мы используем этот механизм для выполнения зашифрованного ELF-бинарника, дешифруя его в памяти, подключая через memfd_create и активируя как фоновый процесс.


---

Архитектура шифровальщика Ezuri
Основные компоненты проекта:

Шифровальщик, написанный на Go, который:

Шифрует исполняемый файл (любое ELF-приложение)

Встраивает в заглушку ключ и IV шифрования (или генерирует их случайно)

Создаёт новый исполняемый файл, готовый к запуску


Заглушка (stub), которая:

Расшифровывает зашифрованный бинарник в памяти

Использует memfd_create для создания анонимного исполняемого пространства

Демонизирует процесс и исполняет его в фоне (без привязки к терминалу)


Целевой бинарник — небольшой ELF-файл, демонстрирующий поведение процесса



---

Сборка и использование Ezuri: пошаговая инструкция

1. Сборка целевого демона
Создайте простой демон, например demon.c, записывающий строки в /tmp/log.txt.



gcc demon.c -o demon

2. Сборка Ezuri-шаблона
Из папки проекта выполните:



go build -o ezuri

3. Запуск шифровальщика



./ezuri

На экране появится серия запросов:

[?] Путь к файлу для шифрования: demon
[?] Путь выходного (зашифрованного) файла: cryptedDemon
[?] Имя целевого процесса: DEMON
[?] Ключ шифрования (оставьте пустым для генерации):
[?] IV шифрования (оставьте пустым для генерации):

Пример вывода:

[!] Случайный ключ: R@7ya3fo1#y67rCtNOYwpm5lyOA5xeYY
[!] Случайный IV: 5Ti65dgBKidm5%sA
[!] Генерация заглушки...


---

Результат: исполняемый демон без файловой активности

Теперь у вас есть файл cryptedDemon, который содержит:

зашифрованный ELF-файл

встроенную заглушку, расшифровывающую его в памяти

исполнение демона через memfd_create


Выполните его:

./cryptedDemon
ps -f $(pidof DEMON)

Вы увидите, что процесс работает в фоне, не имеет привязки к терминалу (TTY: ?), и идентифицируется как DEMON.


---

Проверка результата

Чтобы удостовериться в функционировании программы, проверьте файл логов:

tail /tmp/log.txt

Пример вывода:

Я всегда хотел быть ДЕМОНОМ!
|\___/|
/ \
| /\__/|
||\ <.><.>
| _ > )
\ /----
| -\/
/ \


---

Безопасность, маскировка и возможности по доработке

Для более сложного применения возможны следующие улучшения:

Присвоение имени процесса в честь реального системного сервиса (например, firewalld, xorg, apparmor)

Реализация обработки сигналов (SIGHUP, SIGKILL и т.д.) для автозапуска после остановки

Использование нескольких ключей шифрования и шифрование ключа внутри заглушки

Добавление функционала автозапуска при входе пользователя (через .bashrc, .desktop, systemd и пр.)


Кроме того, можно создать детектор-инжекторов, которые динамически внедряют шифровальщик в другие процессы или запускают его от имени системных служб — это значительно усложнит анализ.


---

Заключение

Представленная утилита демонстрирует, как можно создать малозаметный ELF-шифровальщик для Linux, исполняющий зашифрованные бинарники полностью из памяти. Подобные техники находят применение в тестах на проникновение, в разработке механизмов самозащиты программного обеспечения и демонстрации слабых мест в системной архитектуре Linux.

Однако, напомним: данный материал представлен исключительно в образовательных целях и для развития навыков безопасного программирования и анализа системной безопасности.
 
Яндекс.Метрика