Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ScareCrow — ScareCrow - Payload-Erstellungsframework, das für EDR-Bypass entwickelt wurde. | Kitploit
Tools/GitHubGitHub/optiv/scarecrow
Exploit-FrameworksPayload-GenerierungShellcodePenetrationstestsRed TeamingPayload-EntwicklungArchived
GitHuboptiv/scarecrow

ScareCrow

ScareCrow - Payload-Erstellungsframework, das für EDR-Bypass entwickelt wurde.

Repository anzeigen
2.9k5296vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

THIS REPOSITORY HAS BEEN ARCHIVED

Um die neueste Version von ScareCrow anzusehen oder ein Issue einzureichen, besuchen Sie https://github.com/Tylous/ScareCrow.



ScareCrow

Weitere Informationen

Wenn Sie mehr über die in diesem Framework verwendeten Techniken erfahren möchten, werfen Sie einen Blick auf Teil 1 und Teil 2

Beschreibung

ScareCrow ist ein Framework zur Erstellung von Payloads für das Side-Loading (nicht Injecting) in einen legitimen Windows-Prozess (Umgehung von Application-Whitelisting-Kontrollen). Sobald der DLL-Loader in den Speicher geladen ist, nutzt er eine Technik, um die Hooks eines EDR aus den System-DLLs zu entfernen, die im Speicher des Prozesses laufen. Dies funktioniert, da wir wissen, dass die Hooks des EDR beim Start eines Prozesses platziert werden.

ScareCrow kann diese DLLs ins Visier nehmen und sie im Speicher manipulieren, indem es die API-Funktion VirtualProtect verwendet, die die Berechtigungen eines Speicherbereichs eines Prozesses auf einen anderen Wert ändert, speziell von Ausführen-Lesen zu Lesen-Schreiben-Ausführen.

ScareCrow verwendet eine von zwei Methoden zum Entfernen der Hooks.

Disk

Bei der Ausführung kopiert ScareCrow die Bytes der auf der Festplatte gespeicherten System-DLLs aus C:\Windows\System32\. Diese DLLs werden "sauber" von EDR-Hooks auf der Festplatte gespeichert, da sie vom System verwendet werden, um eine unveränderte Kopie in einen neuen Prozess zu laden, wenn dieser gestartet wird. Da EDRs diese Prozesse nur im Speicher hooken, bleiben sie unverändert. ScareCrow kopiert nicht die gesamte DLL-Datei, sondern konzentriert sich nur auf den .text-Abschnitt der DLLs. Dieser Abschnitt einer DLL enthält die ausführbare Assembly, und dadurch verringert ScareCrow die Wahrscheinlichkeit einer Erkennung, da das erneute Einlesen ganzer Dateien einen EDR dazu veranlassen kann, eine Änderung an einer Systemressource zu erkennen. Die Daten werden dann mithilfe des Offsets jeder Funktion in den richtigen Speicherbereich kopiert. Jede Funktion hat einen Offset, der die genaue Anzahl von Bytes ab der Basisadresse angibt, an der sie sich befinden, und liefert so die Position der Funktion im Stack.

Um dies zu tun, ändert ScareCrow die Berechtigungen des .text-Speicherbereichs mit VirtualProtect. Obwohl es sich um eine System-DLL handelt, können wir, da sie in unseren Prozess (den wir kontrollieren) geladen wurde, die Speicherberechtigungen ohne erhöhte Privilegien ändern.

Indirect Syscalls

ScareCrow lädt den Shellcode in den Speicher, indem es zuerst den Shellcode entschlüsselt, der mit einer von drei Verschlüsselungsmethoden (unten beschrieben) verschlüsselt ist. Nach der Entschlüsselung und dem Laden wird der Shellcode dann ausgeführt. Abhängig von den angegebenen Loader-Optionen richtet ScareCrow unterschiedliche Exportfunktionen für die DLL ein. Die geladene DLL enthält auch nicht die standardmäßige DLLMain-Funktion, die alle DLLs normalerweise benötigen, um zu funktionieren. Die DLL wird trotzdem ohne Probleme ausgeführt, da der Prozess, in den wir laden, nach diesen Exportfunktionen sucht und sich nicht darum kümmert, ob DLLMain vorhanden ist.

Binary Sample

Nachher

KnownDLLs

KnownDLLs ist eine Liste von DLLs, die von Windows während des Systemstartvorgangs geladen werden. Da diese DLLs als wesentlich für die Funktionsweise des Betriebssystems angesehen werden, werden sie zwischengespeichert, um die Ladezeiten zu verkürzen und die Leistung beim Start von Anwendungen zu verbessern. KnownDLLs umfasst DLLs wie kernel32.dll, kernelbase.dll und ntdll.dll.

Unter Verwendung dieser KnownDLLs bildet ScareCrow eine Kopie der DLL aus \KnownDlls\<dllname> unter Verwendung einer Kombination von NtOpenSection und NtMapViewOfSection ab, um sie in den Speicher des Prozesses zu laden. ScareCrow lädt nicht die gesamte DLL, sondern nur den .text-Abschnitt der DLL (da dieser alle Syscalls enthält). Von dort aus verwendet ScareCrow indirekte Syscalls, um NtProtectVirtualMemory aufzurufen und die Berechtigungen des .text-Speicherbereichs der DLL zu ändern, sodass Scarecrow die Hooks des EDR überschreiben kann, bevor die Berechtigungen wiederhergestellt werden.

Weitere Informationen finden Sie in modexps ausführlichem Artikel

Sobald diese die Hooks entfernt sind, verwendet ScareCrow dann benutzerdefinierte System Calls, um Shellcode in den Speicher zu laden und auszuführen. ScareCrow tut dies auch nach dem Entfernen der EDR-Hooks, um die Erkennung durch nicht-Userland-Hook-basierte Telemetriesammlungstools wie Event Tracing for Windows (ETW) oder andere Ereignisprotokollierungsmechanismen zu vermeiden. Diese benutzerdefinierten Systemaufrufe werden auch verwendet, um den VirtualProtect-Aufruf zum Entfernen der von EDRs platzierten Hooks (oben beschrieben) durchzuführen, um eine Erkennung durch Anti-Tamper-Kontrollen eines EDR zu vermeiden. Dies geschieht durch den Aufruf einer benutzerdefinierten Version des VirtualProtect-Syscalls, NtProtectVirtualMemory. ScareCrow verwendet Golang, um diese Loader zu generieren, und dann Assembly für diese benutzerdefinierten Syscall-Funktionen.

Während des Erstellungsprozesses des Loaders verwendet ScareCrow eine Bibliothek zum Verschmelzen mit dem Hintergrund, nachdem ein Beacon nach Hause telefoniert hat. Diese Bibliothek erledigt zwei Dinge:

Dateien, die mit Codesignaturzertifikaten signiert sind, werden oft weniger genau geprüft, was die Ausführung ohne Beanstandung erleichtert, da Dateien, die mit einem vertrauenswürdigen Namen signiert sind, oft weniger verdächtig sind als andere. Die meisten Antimalware-Produkte haben nicht die Zeit, diese Zertifikate zu validieren und zu verifizieren (einige tun es jetzt, aber in der Regel sind die gängigen Herstellernamen in einer Whitelist enthalten). ScareCrow erstellt diese Zertifikate mit einer Go-Paket-Version des Tools limelighter, um eine pfx12-Datei zu erstellen. Dieses Paket nimmt eine vom Benutzer eingegebene Domain entgegen, um ein Codesignaturzertifikat für diese Domain zu erstellen. Bei Bedarf können Sie auch Ihr eigenes Codesignaturzertifikat verwenden, falls Sie eines besitzen, mit der valid-Befehlszeilenoption.

  • ScareCrow enthält auch die Fähigkeit, die vollständige Kette und alle Attribute eines legitimen Codesignaturzertifikats aus einer Datei zu übernehmen und auf eine andere Datei zu kopieren. Dies umfasst das Signaturdatum, Gegensignaturen und andere messbare Attribute. Diese Option kann DLL- oder .exe-Dateien verwenden, um das Zertifikat mit der clone-Befehlszeilenoption zu kopieren, zusammen mit dem Pfad zu der Datei, von der Sie das Zertifikat kopieren möchten.

OpSec-Überlegung:

root@kitploit:~
  Wenn der Loader mit microsoft.com signiert wird, ist die Verwendung gegen WINDOWS DEFENDER ATP-Produkte möglicherweise nicht so effektiv, da sie das Zertifikat validieren können, da es ihnen gehört. Wenn Sie einen Loader gegen ein Windows-Produkt verwenden, verwenden Sie möglicherweise eine andere Domain.
  • Spoofen der Attribute des Loaders: Dies geschieht durch die Verwendung von syso-Dateien, eine Form von eingebetteten Ressourcendateien, die, wenn sie zusammen mit unserem Loader kompiliert werden, die Attributteile unseres kompilierten Codes modifizieren. Vor dem Generieren einer syso-Datei generiert ScareCrow einen zufälligen Dateinamen (basierend auf dem Loader-Typ) zur Verwendung. Sobald er ausgewählt ist, wird dieser Dateiname den zugehörigen Attributen für diesen Dateinamen zugeordnet, um sicherzustellen, dass die richtigen Werte zugewiesen werden.

Beispiel für Dateiattribute

Mit diesen Dateien und dem Go-Code wird ScareCrow sie mit der c-shared-Bibliotheksoption zu DLLs cross-kompilieren. Sobald die DLL kompiliert ist, wird sie in einen defekten Base64-String verdeckt, der in eine Datei eingebettet wird. Dies ermöglicht es, die Datei remote abzurufen, darauf zuzugreifen und sie programmgesteuert auszuführen.

Benutzerdefinierte Attributdateien

Obwohl ScareCrow eine umfangreiche Liste von Dateiattributen hat, gibt es einige Umstände, in denen ein benutzerdefinierter (vielleicht umgebungsspezifischer) Satz von Attributen erforderlich ist. Um dem gerecht zu werden, erlaubt ScareCrow die Eingabe einer JSON-Datei mit Attributen. Mit der -configfile-Befehlszeilenoption verwendet ScareCrow diese Attribute und den Dateinamen anstelle der bereits in ScareCrow vorhandenen. Die Datei main.json enthält eine Beispielvorlage, wie die JSON-Struktur aussehen muss, um ordnungsgemäß zu funktionieren. Beachten Sie: Was auch immer Sie als "InternalName" verwenden, wird der Dateiname sein.

Voraussetzungen

ScareCrow erfordert jetzt Golang 1.19.1 oder höher, um Loader zu kompilieren. Wenn Sie eine ältere Version verwenden, nutzen Sie bitte Version 1.19.1 oder höher.

Siehe für neue Versionen: https://golang.org/dl/.

Installation

Der erste Schritt ist wie immer das Klonen des Repos. Bevor Sie ScareCrow kompilieren, müssen Sie die Abhängigkeiten installieren.

Um sie zu installieren, führen Sie die folgenden Befehle aus:``` go get github.com/fatih/color go get github.com/yeka/zip go get github.com/josephspurrier/goversioninfo go get github.com/Binject/debug/pe go get github.com/awgh/rawreader

root@kitploit:~
Stellen Sie sicher, dass die folgenden auf Ihrem Betriebssystem installiert sind:```
openssl
osslsigncode
mingw-w64

Dann baue es``` go build ScareCrow.go

root@kitploit:~
In addition, ScareCrow nutzt [Garble](https://github.com/burrowers/garble) zum Verschleiern aller Loader.

Hinweis: Einige der Abhängigkeiten funktionieren unter Windows beim Kompilieren nicht gut, daher wird empfohlen, Ihre Loader auf OSX oder Linux zu kompilieren.




## Hilfe```

./ScareCrow -h

  _________                           _________                       
 /   _____/ ____ _____ _______   ____ \_   ___ \_______  ______  _  __
 \_____  \_/ ___\\__  \\_  __ \_/ __ \/    \  \/\_  __ \/  _ \ \/ \/ /
 /        \  \___ / __ \|  | \/\  ___/\     \____|  | \(  <_> )     / 
/_______  /\___  >____  /__|    \___  >\______  /|__|   \____/ \/\_/  
        \/     \/     \/            \/        \/                      
                                                        (@Tyl0us)
        “Fear, you must understand is more than a mere obstacle. 
        Fear is a TEACHER. the first one you ever had.”

Usage of ./ScareCrow:
  -Evasion string
        Sets the type of EDR unhooking technique:
        [*] Disk - Retrives a clean version of the DLLs ".text" field from files stored on disk.
        [*] KnownDLL - Retrives a clean version of the DLLs ".text" field from the KnownDLLs directory in the object namespace.
        [*] None - The Loader that WILL NOT removing the EDR hooks in system DLLs and only use custom syscalls. (default "Disk")
  -Exec string
        Set the template to execute the shellcode:
        [*] RtlCopy - Using RtlCopy to move the shellcode into the allocated address in the current running process by making a Syscall.
        [*] ProcessInjection - Process Injection Mode.
        [*] NtQueueApcThreadEx - Executes the shellcode by creating an asynchronous procedure call (APC) to a target thread.
        [*] VirtualAlloc - Allocates shellcode into the process using custom syscalls in the current running process (default "RtlCopy")
  -I string
        Path to the raw 64-bit shellcode.
  -Loader string
        Sets the type of process that will sideload the malicious payload:
        [*] binary - Generates a binary based payload. (This type does not benefit from any sideloading)
        [*] control - Loads a hidden control applet - the process name would be rundll32 if -O is specified a JScript loader will be generated.
        [*] dll - Generates just a DLL file. Can be executed with commands such as rundll32 or regsvr32 with DllRegisterServer, DllGetClassObject as export functions.
        [*] excel - Loads into a hidden Excel process using a JScript loader.
        [*] msiexec - Loads into MSIexec process using a JScript loader.
        [*] wscript - Loads into WScript process using a JScript loader. (default "binary")
  -O string
        Name of output file (e.g. loader.js or loader.hta). If Loader is set to dll or binary this option is not required.
  -clone string
        Path to the file containing the certificate you want to clone
  -configfile string
        The path to a json based configuration file to generate custom file attributes. This will not use the default ones.
  -console
        Only for Binary Payloads - Generates verbose console information when the payload is executed. This will disable the hidden window feature.
  -delivery string
        Generates a one-liner command to download and execute the payload remotely:
        [*] bits - Generates a Bitsadmin one liner command to download, execute and remove the loader (Compatible with Binary, Control, Excel, and Wscript Loaders).
        [*] hta - Generates a blank hta file containing the loader along with an MSHTA command to execute the loader remotely in the background (Compatible with Control and Excel Loaders). 
        [*] macro - Generates an office macro that will download and execute the loader remotely (Compatible with Control, Excel, and Wscript Loaders).
  -domain string
        The domain name to use for creating a fake code signing cert. (e.g. www.acme.com) 
  -encryptionmode string
        Sets the type of encryption to encrypt the shellcode:
                [*] AES - Enables AES 256 encryption.
                [*] ELZMA - Enables ELZMA encryption.
                [*] RC4 - Enables RC4 encryption. (default "ELZMA")
  -export string
        For DLL Loaders Only - Specify an Export function for a loader to have.
  -injection string
        Enables Process Injection Mode and specify the path to the process to create/inject into (use \ for the path).
  -noamsi
        Disables the AMSI patching that prevents AMSI BufferScanner.
  -noetw
        Disables the ETW patching that prevents ETW events from being generated.
  -nosign
        Disables file signing, making -domain/-valid/-password parameters not required.
  -nosleep
        Disables the sleep delay before the loader unhooks and executes the shellcode.
  -obfu
        Enables Garbles Literal flag replaces golang libray strings with more complex variants, resolving to the same value at run-time. This creates a larger loader and times longer to compile
  -outpath string
        The path to put the final Payload/Loader once it's compiled.
  -password string
        The password for code signing cert. Required when -valid is used.
  -sandbox
        Enables sandbox evasion using IsDomainJoined calls.
  -url string
        URL associated with the Delivery option to retrieve the payload. (e.g. https://acme.com/)
  -valid string
        The path to a valid code signing cert. Used instead -domain if a valid code signing cert is desired.

Loader

Der Loader bestimmt die Art der Technik, die zum Laden des Shellcodes in das Zielsystem verwendet wird. Wenn keine Loader-Option ausgewählt wird, kompiliert ScareCrow lediglich eine Standard-DLL-Datei, die von rundll32, regsvr32 oder anderen Techniken, die eine DLL verwenden, genutzt werden kann. ScareCrow verwendet drei verschiedene Arten von Ladern, um Shellcode in den Speicher zu laden:

  • Systemsteuerung – Dies generiert ein Systemsteuerungs-Applet (z.B. Programme und Features oder AutoPlay). Durch Kompilieren des Loaders mit spezifischen DLL-Exportfunktionen in Kombination mit der Dateierweiterung .cpl wird ein Systemsteuerungsprozess (rundll32.exe) gestartet und der Loader in den Speicher geladen.
  • WScript – Startet einen WScript-Prozess, der eine Manifestdatei und registrierungsfreie COM-Techniken verwendet, um den DLL-Loader in seinen eigenen Prozess zu laden (nicht zu injizieren), nebeneinander. Dadurch wird vermieden, dass die DLL im Speicher registriert wird, da die Manifestdatei dem Prozess mitteilt, welche, wo und welche Version einer DLL zu laden ist.
  • Excel – Erzeugt eine XLL-Datei, die Excel-basierte DLL-Dateien sind, die beim Laden in Excel den Loader ausführen. Ein versteckter Excel-Prozess wird gestartet, der das Laden der XLL-Datei erzwingt.
  • Msiexec – Startet einen versteckten MSIExec-Prozess, der die DLL in den Speicher lädt und den Shellcode ausführt.

ScareCrow kann bei Bedarf auch binäre Payloads generieren, indem die Befehlszeilenoption -Loader verwendet wird. Diese Binärdateien profitieren nicht von Side-by-Side-Ladetechniken, dienen aber als zusätzliche Technik zur Ausführung von Shellcode, je nach Situation.

Console

ScareCrow verwendet eine Technik, um zuerst den Prozess zu erstellen und ihn dann in den Hintergrund zu verschieben. Dies bewirkt zweierlei: Erstens hilft es, den Prozess versteckt zu halten, und zweitens wird vermieden, von einem EDR-Produkt erkannt zu werden. Einen Prozess sofort im Hintergrund zu starten, kann sehr verdächtig sein und ein Indikator für Bösartigkeit. ScareCrow erreicht dies durch Aufruf der Windows-Funktionen 'GetConsoleWindow' und 'ShowWindow', nachdem der Prozess erstellt und die Hooks des EDR geladen wurden, und ändert dann die Fensterattribute auf versteckt. ScareCrow verwendet diese APIs anstelle des traditionellen -ldflags -H=windowsgui, da dies stark signiert und von den meisten Sicherheitsprodukten als Indicator of Compromise eingestuft wird.

Wenn die Befehlszeilenoption -console ausgewählt wird, versteckt ScareCrow den Prozess nicht im Hintergrund. Stattdessen fügt ScareCrow mehrere Debug-Meldungen hinzu, die anzeigen, was der Loader tut.

Execution Methods

ScareCrow verwendet verschiedene Vorlagen zur Ausführung von Shellcode. Um eine Vorlage auszuwählen, verwenden Sie die Befehlszeilenoption -Exec. Diese Vorlagen umfassen:

  • RtlCopy
  • NtQueueApcThreadEx
  • VirtualAlloc
  • ProcessInjection

Process Injection

ScareCrow bietet die Möglichkeit, Prozessinjektionsangriffe durchzuführen. Um Hooking oder Erkennung im Loader-Prozess oder im injizierten Prozess selbst zu vermeiden, enthooked ScareCrow zunächst den Loader-Prozess wie gewohnt, um sicherzustellen, dass keine Hooks im Prozess vorhanden sind. Nach Abschluss startet der Loader den im Erstellungsbefehl angegebenen Prozess. Nach dem Start erstellt der Loader einen Handle zum Prozess, um eine Liste der geladenen DLLs abzurufen. Sobald er DLLs findet, zählt er die Basisadresse jeder DLL im entfernten Prozess auf. Mit der Funktion WriteProcessMemory schreibt der Loader dann die Bytes der auf der Festplatte gespeicherten System-DLLs (da sie "sauber" von EDR-Hooks sind), ohne zuerst die Speicherberechtigungen ändern zu müssen. ScareCrow verwendet WriteProcessMemory, weil diese Funktion eine Funktion enthält, die hauptsächlich beim Debuggen verwendet wird: Selbst wenn ein Speicherbereich schreibgeschützt ist, ändert sie bei korrektem Aufruf von WriteProcessMemory vorübergehend die Berechtigung auf Lesen-Schreiben, aktualisiert den Speicherbereich und stellt dann die ursprünglichen Berechtigungen wieder her. Sobald dies erledigt ist, kann der Loader Shellcode in den gestarteten Prozess injizieren, da in keinem der beiden Prozesse EDR-Hooks vorhanden sind.

Diese Option kann mit jeder der Loader-Optionen verwendet werden. Um die Prozessinjektion zu aktivieren, verwenden Sie die Befehlszeilenoption -injection zusammen mit dem vollständigen Pfad zu dem Prozess, in den Sie injizieren möchten. Wenn Sie den Pfad als Argument angeben, ist es wichtig, entweder den vollständigen Pfad mit "" zu umschließen oder doppelte \ für jedes Verzeichnis im Pfad zu verwenden.

AMSI & ETW Bypass

ScareCrow bietet die Möglichkeit, AMSI- (Antimalware Scan Interface) und ETW-Funktionen zu patchen, um zu verhindern, dass vom Prozess Ereignisse generiert werden.

AMSI ist eine native Windows-API, die es Windows Defender (oder anderen Antimalware-Produkten) ermöglicht, tief in das Windows-Betriebssystem einzugreifen und verbesserten Schutz zu bieten, insbesondere bei speicherbasierten Angriffen. AMSI ermöglicht es Sicherheitsprodukten, bösartige Indikatoren besser zu erkennen und Bedrohungen zu stoppen. Da AMSI nativ in Windows integriert ist, müssen Produkte AMSI nicht "hooken", sondern laden die erforderliche DLL, um verbesserte Einblicke in den Prozess zu erhalten. Aus diesem Grund lädt ScareCrow die AMSI.dll und patcht sie, um sicherzustellen, dass alle Ergebnisse der Scan-Schnittstelle als sauber zurückkommen. Das Patchen von AMSI ist standardmäßig in allen Ladern aktiviert. Wenn Sie AMSI nicht patchen möchten, verwenden Sie die Befehlszeilenoption -noamsi, um es in Ihrem Loader zu deaktivieren.

ETW verwendet integrierte Syscalls, um diese Telemetrie zu generieren. Da ETW ebenfalls ein natives Feature von Windows ist, müssen Sicherheitsprodukte die ETW-Syscalls nicht "hooken", um die Informationen zu erhalten. Um ETW zu verhindern, patcht ScareCrow daher zahlreiche ETW-Syscalls, löscht die Register und gibt den Ausführungsfluss an die nächste Anweisung zurück. Das Patchen von ETW ist jetzt standardmäßig in allen Ladern aktiviert. Wenn Sie ETW nicht patchen möchten, verwenden Sie die Befehlszeilenoption -noetw, um es in Ihrem Loader zu deaktivieren.

Derzeit funktionieren diese Optionen nur für den übergeordneten Prozess; wenn die Befehlszeilenoption -injection verwendet wird, patcht der primäre Prozess AMSI und ETW, der injizierte Prozess jedoch nicht.

Encryption

Das Verschlüsseln von Shellcode ist eine wichtige Technik, um ihn vor der Erkennung und Analyse durch EDRs und andere Sicherheitsprodukte zu schützen. ScareCrow bietet mehrere Methoden zur Verschlüsselung von Shellcode, darunter AES, ELZMA und RC4.

AES

AES (Advanced Encryption Standard) ist ein symmetrischer Verschlüsselungsalgorithmus, der häufig zur Verschlüsselung von Daten verwendet wird. ScareCrow verwendet AES mit 256-Bit-Schlüssellänge zur Verschlüsselung des Shellcodes. Der Vorteil der Verwendung von AES zur Verschlüsselung von Shellcode besteht darin, dass er eine starke Verschlüsselung bietet und von kryptografischen Bibliotheken weitgehend unterstützt wird. Allerdings kann die feste Blockgröße ihn anfällig für bestimmte Angriffe machen, wie den Padding-Oracle-Angriff.

ELZMA

ELZMA ist ein Komprimierungs- und Verschlüsselungsalgorithmus, der häufig in Malware verwendet wird, um den Code zu verschleiern. Um Shellcode mit ELZMA zu verschlüsseln, wird der Shellcode zunächst mit dem ELZMA-Algorithmus komprimiert. Die komprimierten Daten werden dann mit einem zufälligen Schlüssel verschlüsselt. Die verschlüsselten Daten und der Schlüssel werden dann in den Exploit-Code eingebettet. Der Vorteil der Verwendung von ELZMA zur Verschlüsselung von Shellcode besteht darin, dass er sowohl Komprimierung als auch Verschlüsselung in einem einzigen Algorithmus bietet. Dies kann dazu beitragen, die Größe des Exploit-Codes zu reduzieren und die Erkennung zu erschweren.

RC4

RC4 ist ein symmetrischer Verschlüsselungsalgorithmus, der häufig in Malware zur Verschlüsselung von Shellcode verwendet wird. Es ist eine Stromchiffre, die Schlüssel variabler Länge verwenden kann und für ihre Einfachheit und Geschwindigkeit bekannt ist.

Obfuscate

Die Verwendung der Befehlszeilenoption -obfu aktiviert das Garbles Literal-Flag während des Kompilierungsprozesses. Dadurch werden alle Referenzen und Zeichenfolgen der Go-Bibliothek durch eine komplexere Version ersetzt, die zur Laufzeit denselben Wert ergibt. Dieser Vorgang dauert länger und führt zu einer größeren GO-Datei. Sobald die Datei kompiliert ist, parst ScareCrow die neu erstellte Datei und entfernt alle Go-zeichenfolgenbasierten IOCs.

Delivery

Das Befehlszeilenargument für die Bereitstellung ermöglicht es Ihnen, einen Befehl oder eine Code-Zeichenfolge (im Makro-Fall) zu generieren, um die Datei aus einer entfernten Quelle auf den Host des Opfers zu ziehen. Diese Bereitstellungsmethoden umfassen:

  • Bits – Dies generiert einen bitsadmin-Befehl, der den Loader remote herunterlädt, ausführt und entfernt. Dieser Bereitstellungsbefehl ist kompatibel mit den Ladern Binary, Control, Excel und Wscript.
  • HTA – Dies generiert eine leere HTA-Datei, die den Loader enthält. Diese Option bietet außerdem eine Befehlszeile, die die HTA remote ausführt. Dieser Bereitstellungsbefehl ist kompatibel mit den Ladern Control und Excel.
  • Macro – Dies generiert ein Office-Makro, das in ein Excel- oder Word-Makrodokument eingefügt werden kann. Wenn dieses Makro ausgeführt wird, wird der Loader von einer entfernten Quelle heruntergeladen, ausgeführt und anschließend entfernt. Dieser Bereitstellungsbefehl ist kompatibel mit den Ladern Control, Excel und Wscript. (Bitte beachten Sie, dass diese Methode je nach den verfügbaren Ressourcen des Opfer-Endpunkts länger als der Standard-Timer dauern kann.)

To Do

  • Einige ältere Versionen von Windows-Betriebssystemen (z.B. Windows 7 oder Windows 8.1) haben Probleme beim Neuladen der System-DLLs, daher ist eine Versionsprüfung integriert, um Stabilität zu gewährleisten.
  • Patchen von ETW und AMSI in injizierten Prozessen

Credit

  • Besonderer Dank an josephspurrier für sein Repo
  • Besonderer Dank an mvdan für die Entwicklung von Garble
  • Besonderer Dank an mvdan für die Entwicklung von Binject
  • Besonderer Dank an modexp für den detaillierten Artikel
Tool herunterladen