
Vorlagengesteuertes AV/EDR-Umgehungs-Framework
🚩 Dies ist das öffentliche Repository von Inceptor. Für die neueste Version und Updates unterstützen Sie uns bitte über https://porchetta.industries/
Wenn Sie dieses Projekt sponsern möchten und die neuesten Updates zu Inceptor, die neuesten behobenen Probleme und die neuesten Funktionen erhalten möchten, unterstützen Sie uns bitte auf https://porchetta.industries/
Komm auf Discord vorbei!
NW: Wir arbeiten derzeit daran, die Template-Engine zu verbessern! Sobald wir die nächste Version veröffentlichen, werden Anweisungen zur Verwendung, Anpassung und Erweiterung des Tools im Wiki verfügbar sein.
Modernes Penetration Testing und Red Teaming erfordern oft, gängige AV/EDR-Lösungen zu umgehen, um Code auf einem Ziel auszuführen. Mit der Zeit werden Verteidigungsmechanismen komplexer und grundsätzlich schwieriger konsistent zu umgehen. Inceptor ist ein Tool, das helfen kann, einen Großteil dieses Prozesses zu automatisieren, hoffentlich ohne weiteren Aufwand.
Inceptor ist ein template-basierter PE-Packer für Windows, der entwickelt wurde, um Penetrationstestern und Red Teamern zu helfen, gängige AV- und EDR-Lösungen zu umgehen. Inceptor wurde mit Fokus auf Benutzerfreundlichkeit und umfangreiche Benutzeranpassung entwickelt.
Um einen guten Überblick darüber zu bekommen, was implementiert wurde und warum, könnte es nützlich sein, einen Blick auf die folgenden Ressourcen zu werfen:
Inceptor kann vorhandene EXE/DLL mit verschiedenen Open-Source-Konvertern in Shellcode umwandeln:
Inceptor kann Shellcode auf verschiedene Arten kodieren, komprimieren oder verschlüsseln. Während der Entwicklung des Tools begann ich zu unterscheiden zwischen dem, was ich Lader-unabhängige (LI) Kodierung und Lader-abhängige (LD) Kodierung nenne.
Lader-unabhängige Kodierung ist eine Kodierungsart, die nicht von der vom Benutzer gewählten Vorlage (Lader) verwaltet wird. Das bedeutet normalerweise, dass der Dekodierungsstub nicht Teil der Vorlage ist, sondern im Shellcode selbst eingebettet ist. Inceptor bietet diese Art von Funktion mit dem Open-Source-Tool sgn, das verwendet wird, um die Nutzlast polymorph und mittels gängiger Signaturerkennung nicht erkennbar zu machen.
So stark es auch ist, Shikata-Ga-Nai ist nicht wirklich für bestimmte Vorlagen geeignet. Aus diesem Grund implementiert Inceptor auch laderabhängige Encoder, die dazu entwickelt wurden, den Lader die Dekodierung übernehmen zu lassen. LD-Encoder installieren daher den Dekodierungsstub direkt in der Vorlage. Diese Art von Encodern, wie in Inceptor implementiert, sind auch 'verkettbar', d.h. sie können aneinandergereiht werden, um eine Nutzlast zu kodieren.
Während die Verwendung einer Encoder-Kette manchmal die Verschleierung einer bestimmten Nutzlast verbessern kann, kann diese Technik auch mehrere Dekodierungsroutinen offenlegen, was Verteidigern helfen kann, Signaturen dagegen zu entwerfen. Aus diesem Grund bietet Inceptor mehrere Möglichkeiten, die endgültigen Artefakte zu verschleiern, was den RE-Prozess erschwert.
Zum Zeitpunkt der Erstellung dieses Dokuments wurde die öffentliche Version von Inceptor mit den folgenden Encodern/Kompressoren/Verschlüsselern ausgestattet:
Inceptor kann eine Kodierungskette sowohl statisch als auch dynamisch validieren, indem es statisch die Ein-/Ausgabetypen der Decoder überprüft und auch dynamisch die Implementierung mit einer unabhängigen Implementierung verifiziert.
Jederzeit kann ein Benutzer eine Kette einfach mit dem Dienstprogramm chain-validate.py validieren.
Inceptor implementiert auch nativ AV-Umgehungsmechanismen und bietet daher die Möglichkeit, AV-Umgehungsfunktionen in Form von 'Modulen' (Plugins) in die Nutzlast einzufügen.
Die Plugins, die eingebettet werden können, sind:
Inceptor implementiert auch EDR-Umgehungsmechanismen wie vollständiges Unhooking, direkten Syscall-Aufruf und manuelles DLL-Mapping. Direkte Syscalls werden in C# unter Verwendung des herausragenden "DInvoke"-Projekts, ebenfalls von TheWover, implementiert. In C/C++ werden Syscalls mit den Projekten SysWhispers und SysWhispers2 von Jackson_T implementiert. Darüber hinaus hat Inceptor auch integrierte Unterstützung für x86-Syscalls.
Wie die AV-Bypass-Funktionen können diese Funktionen als Module aktiviert werden, mit dem einzigen Unterschied, dass sie auf einer Vorlage arbeiten müssen, die sie unterstützt. Die bisher implementierten Techniken sind:
Inceptor unterstützt die Verschleierung von Nutzlasten durch externe Hilfsprogramme wie ConfuserEx und Chameleon und bietet Unterstützung für die C/C++-Verschleierung mit LLVM-Obfuscator, einem IR-basierten Verschleierer unter Verwendung der LLVM-Kompilierungsplattform.
Eine weitere Funktion von Inceptor ist, dass es die resultierende Binärdatei/DLL mit dem Tool CarbonCopy signieren kann. In der Regel werden Dateien, die mit Codesignaturzertifikaten signiert sind, weniger streng analysiert. Viele Anti-Malware-Produkte validieren/überprüfen diese Zertifikate nicht.
Der vollständige Arbeitsablauf kann im folgenden vereinfachten Schema auf hoher Ebene zusammengefasst werden:

Inceptor wurde für Windows entwickelt. Das Dienstprogramm update-config.py kann die erforderlichen Microsoft-Binärdateien finden und die Konfiguration entsprechend aktualisieren. Es könnte erforderlich sein, Microsoft Build Tools, das Windows SDK und Visual Studio zu installieren; update-config.py führt den Benutzer durch die Installation der erforderlichen Abhängigkeiten.
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
Die aktuelle Version von Inceptor findet eine bestimmte Vorlage anhand einer einfachen Namenskonvention (ändern Sie keine Vorlagennamen) und der vom Benutzer angegebenen Argumente. Zu den Argumenten gehört auch der Lader (-t). Wenn nicht angegeben, wird der Lader in Abhängigkeit von der zu packenden Datei nach folgendem einfachen Schema ausgewählt:
$ 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
Es ist auch sehr wichtig, die Namenskonvention der Vorlagen zu verstehen, um ein Fehlinterpretieren des Verhaltens eines Artefakts zu vermeiden.
$ 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