
Фреймворк для обхода AV/EDR на основе шаблонов
🚩 Это публичный репозиторий Inceptor. За последней версией и обновлениями, пожалуйста, поддержите нас на https://porchetta.industries/
Если вы хотите спонсировать этот проект и получать последние обновления Inceptor, исправления ошибок и новые функции, пожалуйста, поддержите нас на https://porchetta.industries/
Присоединяйтесь к нам в Discord!
NW: Мы сейчас работаем над улучшением шаблонизатора! Как только мы выпустим следующую версию, инструкции по использованию, настройке и расширению инструмента будут доступны в Wiki.
Современное тестирование на проникновение и Red Teaming часто требует обхода типовых средств AV/EDR для выполнения кода на цели. Со временем защита становится всё сложнее и, как следствие, сложнее для последовательного обхода.
Inceptor — это инструмент, который может автоматизировать большую часть этого процесса, надеюсь, не требуя дополнительных усилий.
Inceptor — это упаковщик PE на основе шаблонов для Windows, предназначенный для помощи специалистам по тестированию на проникновение и red team в обходе типовых решений AV и EDR. Inceptor разработан с акцентом на удобство использования и позволяет широкую настройку пользователем.
Для хорошего обзора того, что было реализовано и почему, может быть полезно взглянуть на следующие ресурсы:
Inceptor умеет преобразовывать существующие EXE/DLL в шелл-код с помощью различных конвертеров с открытым исходным кодом:
Inceptor может кодировать, сжимать или шифровать шелл-код различными способами. При разработке инструмента я начал различать то, что я называю кодированием, независимым от загрузчика (LI), и кодированием, зависимым от загрузчика (LD).
Кодирование, независимое от загрузчика, — это тип кодирования, не управляемый шаблоном, выбранным пользователем (загрузчиком). Обычно это означает, что декодирующая заглушка не является частью шаблона, а встроена непосредственно в шелл-код. Inceptor предлагает такую возможность с помощью инструмента с открытым исходным кодом sgn, который используется для того, чтобы сделать полезную нагрузку полиморфной и необнаруживаемой с помощью обычного сигнатурного обнаружения.
Насколько бы ни был силён Shikata-Ga-Nai, он не совсем подходит для некоторых шаблонов. По этой причине Inceptor также реализует кодеры, зависимые от загрузчика (LD), которые спроектированы так, чтобы загрузчик сам заботился о декодировании. Как таковые, LD-кодеры устанавливают декодирующую заглушку непосредственно в шаблон. Такие кодеры, как реализовано в Inceptor, также являются "цепочечными", то есть их можно объединять в цепочку для кодирования полезной нагрузки.
Хотя использование цепочки кодеров иногда может улучшить обфускацию данной полезной нагрузки, этот метод также может выявить несколько процедур декодирования, что может помочь защитникам разработать против них сигнатуры. По этой причине Inceptor предлагает несколько способов обфускации конечных артефактов, усложняя процесс обратной разработки.
На момент написания публичная версия Inceptor предоставлена со следующими кодерами/компрессорами/шифровальщиками:
Inceptor может проверять цепочку кодирования как статически, так и динамически: статически проверяя типы входных/выходных данных декодеров, а также динамически проверяя реализацию с помощью независимой реализации.
В любое время пользователь может легко проверить цепочку с помощью утилиты chain-validate.py.
Inceptor также нативно реализует механизмы обхода AV и, как таковой, предлагает возможность включения функций обхода AV в полезную нагрузку в виде "модулей" (плагинов).
Плагины, которые могут быть встроены:
Inceptor также реализует механизмы обхода EDR, такие как полное снятие хуков (unhooking), прямой вызов сисколов и ручное отображение DLL. Прямые сисколы реализованы на C# с использованием выдающегося проекта "DInvoke", снова от TheWover. На C/C++ сисколы реализованы с использованием проектов SysWhispers и SysWhispers2 от Jackson_T. Кроме того, Inceptor имеет встроенную поддержку x86 сисколов.
Как и функции обхода AV, эти функции могут быть включены как модули, с единственным отличием: они требуют работы с шаблоном, который их поддерживает. На данный момент реализованы следующие техники:
Inceptor поддерживает обфускацию полезной нагрузки с помощью внешних утилит, таких как ConfuserEx и Chameleon, и обеспечивает поддержку обфускации C/C++ с помощью LLVM-Obfuscator, который является обфускатором на основе IR, использующим компиляционную платформу LLVM.
Ещё одна функция Inceptor — возможность подписывать результирующий бинарник/DLL с помощью инструмента CarbonCopy. Обычно файлы, подписанные сертификатами подписи кода, проверяются менее строго. Многие антивирусные продукты не проверяют/верифицируют эти сертификаты.
Полный рабочий процесс можно обобщить в следующей высокоуровневой и упрощённой схеме:

Inceptor спроектирован для работы в Windows. Утилита update-config.py может найти необходимые бинарные файлы Microsoft и обновить конфигурацию соответственно. Может потребоваться установка Microsoft Build Tools, Windows SDK и Visual Studio; update-config.py проведёт пользователя по установке необходимых зависимостей.
git clone --recursive https://github.com/klezVirus/inceptor.git
cd inceptor
virtualenv venv
venv\Scripts\activate.bat
pip install -r requirements.txt
cd inceptor
python update-config.py
Текущая версия Inceptor находит конкретный шаблон, используя простое соглашение об именах (не меняйте имена шаблонов) и набор аргументов, заданных пользователем. Среди аргументов также есть загрузчик (-t). Если он не указан, загрузчик будет выбран в зависимости от упаковываемого файла по следующей простой схеме:
$ python inceptor.py -hh
[*] Default Loaders
Input File Extension SpecialCondition Guessed Filetype Default Loader Default Template
0 .raw NaN Shellcode Simple Loader Classic
1 .exe .NET Dotnet Executable Donut Classic
2 .exe NaN Native Executable Pe2Shellcode PE Load
3 .dll NaN Native Library sRDI Classic
Также очень важно понимать соглашение об именах шаблонов, чтобы не истолковать неправильно поведение артефакта.
$ usage: inceptor.py [-h] [-hh] [-Z] {native,dotnet,powershell} ...
inceptor: A Windows-based PE Packing framework designed to help
Red Team Operators to bypass common AV and EDR solutions
positional arguments:
{native,dotnet,powershell}
native Native Binaries Generator
dotnet .NET Binaries Generator
powershell PowerShell Wrapper Scripts Generator
optional arguments:
-h, --help show this help message and exit
-hh Show functional table
-Z, --check Check file against ThreatCheck