Вопрос или проблема
Итак, что я хочу сделать, в основном, это то, что делают BDFproxy и MSFvenom, я хочу модифицировать файл, чтобы внедрить в него другой PE и сделать так, чтобы оба работали, не имеет значения, работают ли они одновременно или после завершения основного приложения запускается встроенная программа, я просто хочу внедрить их любым возможным способом, и если фреймворк Metasploit (модуль постэксплуатации peinjector) и BDFproxy могут это сделать, это не невозможно.
Теперь я нашел способ внедрить файл EXE как другой раздел в оригинальный файл, используя Injector, однако я не смог найти способ фактически выполнить этот новый раздел.
Ответ или решение
Встраивание PE-файлов (Portable Executable) в другие PE-файлы — это задача, которая вызывает интерес как у исследователей безопасности, так и у разработчиков. Модули вроде BDFproxy и MSFvenom демонстрируют, что это возможно, однако процесс требует глубокого понимания формата PE и технических навыков.
Что такое PE-файлы?
PE-файлы используются в операционных системах Windows для структурирования исполняемых программ, библиотек и драйверов. Они содержат заголовки, секции и другие метаданные, необходимые для выполнения программ.
Основные этапы встраивания PE-файла
-
Извлечение необходимых данных: Необходимо получить информацию о структуре исходного PE-файла. Для этого можно использовать такие инструменты, как
CFF Explorer
илиPE Explorer
, которые отображают заголовки и секции. Вы получите информацию о размерах, адресах и других параметрах файлов. -
Создание новой секции: Создайте новую секцию в заголовке основного PE-файла. Добавьте данные о новом сегменте, который должен содержать встроенный PE-файл. Следует учесть:
- Размер секции
- Смещение в памяти
- Тип секции (например, чтение, запись, выполнение)
-
Встраивание PE-файла: Вставьте байты второго PE-файла в новую секцию первого файла. Это должно происходить осторожно, чтобы не нарушить целостность данных в основном PE-файле. Предпочтительно использовать инструменты для работы с бинарными файлами.
-
Изменение таблицы образа: Обновите таблицу образа (
Image Directory Table
), чтобы указать новую секцию и корректные адреса входа. Это обеспечит правильное исполняемое поведение для обоих файлов. -
Реализация механизма запуска: Для того чтобы запустить встроенный PE-файл, необходимо внедрить код запуска. Это можно сделать несколькими способами:
- Создание точки входа: В вашем основном PE-файле добавьте код, который будет вызывать
CreateProcess
илиCreateThread
для запуска встроенного файла. - Использование функции
SetWindowsHookEx
: Это позволит вам запускать встроенный код при определённых триггерах, например, при завершении основного процесса.
- Создание точки входа: В вашем основном PE-файле добавьте код, который будет вызывать
Пример кода для запуска встроенного PE-файла
Вот простой пример, как можно реализовать запуск второго PE-файла через Windows API:
#include <windows.h>
void LaunchEmbeddedPE(LPVOID embeddedPE, SIZE_T embeddedSize) {
// Здесь может быть ваша логика для загрузки PE
// Предположим, встроенный PE — это EXE
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// Создание временного файла для встроенного EXE (или можно писать в память)
TCHAR tempPath[MAX_PATH];
GetTempPath(MAX_PATH, tempPath);
TCHAR tempFile[MAX_PATH];
GetTempFileName(tempPath, TEXT("pe"), 0, tempFile);
HANDLE hFile = CreateFile(tempFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD written;
WriteFile(hFile, embeddedPE, embeddedSize, &written, NULL);
CloseHandle(hFile);
// Запуск процесса
if (CreateProcess(tempFile, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
// Опционально: ожидание завершения процесса
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
DeleteFile(tempFile); // очистка временного файла
}
Заключение
Процесс встраивания PE-файла в другой PE-файл требует внимательности и знаний о структуре PE. Описанные шаги и предлагаемый код могут служить отправной точкой. Однако помните о юридических и этических аспектах подобных операций, поскольку они могут использоваться для зловредной деятельности.
Если вы хотите исследовать этот процесс дальше, рекомендуется ознакомиться с более углублённой документацией по форматам файлов и Windows API, а также использовать инструменты для анализа PE-файлов, такие как CFF Explorer
или PEview
.