
Excel 4.0 (XLM) Генератор макросов для внедрения DLL и EXE в память.
| \ / / | | | _ __ | || _ \ ___ _ __ _ | | | | \ / | | | | | | ' | | | | |/ _ | ' | | | | | | | / \ || || |__| | | | || || | () | | | | || | | |_____//__|||| ||_|____/ _/|| ||_,|__| by @JoeLeonJr (@FortyNorthSec)
EXCELntDonut — это генератор макросов XLM (Excel 4.0). Начните с исходного кода на C# (EXE) и получите макрос XLM (Excel 4.0), который выполнит ваш код в памяти. Макросы XLM (Excel 4.0) могут быть сохранены в файлах .XLS.
chmod +x install.sh
./install.sh
Что устанавливается?
Если вы хотите запускать EXCELntDonut просто как скрипт Python, вам нужно будет настроить виртуальное окружение с двумя пакетами: "pandas" и "donut-shellcode". Кроме того, вам нужно будет установить mono-complete с помощью apt-get и вызывать скрипт drive.py с помощью python3. Мы рекомендуем просто использовать скрипт ./install.sh, но решать вам.
Usage:
$ EXCELntDonut -f exe_source.cs -r System.Windows.Forms.dll --sandbox --obfuscate
Flags:
(required)
-f путь к файлу, содержащему ваш исходный код на C# (только exe)
-r Ссылки, необходимые для компиляции вашего кода на C# (те же, что используются при компиляции с mcs на Linux)
(пример: -r 'System.Management')
(optional)
-o имя выходного файла
--sandbox
Выполнить базовые проверки песочницы. Этот список будет обновляться по мере обнаружения новых подходов.
--obfuscate
Выполнить базовую обфускацию макроса.
Вы предоставляете файл C#, содержащий вашу полезную нагрузку (например, EXE с методом main, который выполняет полезную нагрузку Cobalt Strike). Этот файл C# компилируется с помощью MCS в две сборки .NET: x86 и x64. После компиляции замечательные инструменты Donut (для x86) и CLRvoyance (для x64) преобразуют каждую сборку в позиционно-независимый шеллкод. Затем все нулевые байты удаляются, так как макросы XLM (Excel 4.0) плохо работают с нулевыми байтами, и полезная нагрузка разбивается на строки длиной не более 255 символов (для x86) или 10 символов (для x64).
После подготовки шеллкода он объединяется с базовыми функциями внедрения в процесс (VirtualAlloc, WriteProcessMemory и CreateThread), а также функцией проверки архитектуры для определения того, какую полезную нагрузку (x86 или x64) следует запустить на целевой системе. Если вы выберете выполнение проверок песочницы или базовой обфускации, эти функции обновят ваш макрос. Наконец, результат помещается в CSV-файл (сохраняется как .txt).
После того как вы получили выходной файл от EXCELntDonut, откройте его в текстовом редакторе и скопируйте всё содержимое (Ctrl-A, Ctrl-C). Откройте Excel на виртуальной машине Windows, щелкните правой кнопкой мыши на "Лист 1" и выберите "Вставить". Выберите "Макрос MS Excel 4.0". Перейдите в ячейку A1 и вставьте вывод EXCELntDonut. Все данные, вероятно, будут вставлены в один столбец. Данные разделены точкой с запятой ";". Перейдите на вкладку "Данные" и нажмите "Текст по столбцам". Выберите "С разделителями" и на следующем экране выберите "Точка с запятой", затем нажмите "Готово". Макрос распределится по соответствующим столбцам и строкам.
(Примечание — если вы выбрали флаг "--obfuscate", вам придется довольно много прокручивать по горизонтали, чтобы найти свой фактический код, так как часть логики обфускации перемещает макрос в случайный раздел рабочего листа).
На этом этапе мы рекомендуем две вещи:
Сохраните файл (.xls) и попробуйте его открыть. Он должен автоматически выполнить вашу полезную нагрузку.
Эти проверки основаны на том, что реальные злоумышленники используют в своих вредоносных программах.
=FORMULA(D3&D23&D54&D23&D44,E45)
Функция FORMULA позволяет нам поместить формулу, которая может быть выполнена позже, в другую ячейку. Таким образом, в данном случае мы помещаем инструкции внедрения в процесс, а затем используем функцию FORMULA, чтобы поместить фактическую функцию в другую ячейку для выполнения. Это мешает защитникам, проводящим статический анализ, видеть такие вещи, как "VirtualAlloc".
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs
_______ ______ _____ _ _ ____ _
| ____\ \/ / ___| ____| | _ __ | |_| _ \ ___ _ __ _ _| |_
| _| \ / | | _| | | | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ / \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
by @JoeLeonJr (@FortyNorthSec)
[i] Generating your x86 .NET assembly.
warning CS8001: SDK path could not be resolved
test.cs(2,14): error CS0234: The type or namespace name `Management' does not exist in the namespace `System'. Are you missing an assembly reference?
Эта ошибка, скорее всего, означает, что вам не хватает ссылки на сборку при компиляции с помощью mono. Чтобы исправить это, просто передайте упомянутое пространство имен в флаг -r. В данном случае мы бы добавили -r 'System.Management' в командную строку. Новая команда будет выглядеть так:
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r 'System.Management'