SHELLTER: ein kommerzielles Umgehungs-Framework, das in freier Wildbahn missbraucht wird 

Elastic Security Labs entdeckte das jüngste Aufkommen von Infostealern, die eine illegal erworbene Version des kommerziellen Umgehungs-Frameworks SHELLTER verwenden, um Nutzlasten nach der Ausnutzung bereitzustellen.

SHELLTER: ein kommerzielles Umgehungs-Framework, das in freier Wildbahn missbraucht wird

Einführung

Elastic Security Labs beobachtet mehrere Kampagnen, die das kommerzielle AV/EDR-Umgehungs-Framework SHELLTER zu nutzen scheinen, um Malware zu laden. SHELLTER wird an die offensive Sicherheitsbranche für sanktionierte Sicherheitsbewertungen vermarktet und ermöglicht es Red-Team-Betreibern, ihre C2-Frameworks effektiver gegen moderne Anti-Malware-Lösungen einzusetzen.

Wichtigste Erkenntnisse

  • Kommerzielles Umgehungs-Framework SHELLTER, das von Bedrohungsgruppen erworben wurde
  • SHELLTER wird seit April 2025 in mehreren Infostealer-Kampagnen eingesetzt, wie in den Lizenzmetadaten festgehalten wird
  • SHELLTER nutzt einzigartige Funktionen, um sich der Analyse und Erkennung zu entziehen
  • Elastic Security Labs veröffentlicht dynamischen Entpacker für SHELLTER-geschützte Binärdateien
Throughout this document we will refer to different terms with “shellter” in them. We will try to 
maintain the following style to aid readability:
  *  “Shellter Project” - the organization that develops and sells the Shellter evasion framework
  *  “Shellter Pro Plus/Elite” - the commercial names for the tools sold by the Shellter Project
  *  “SHELLTER” - the loader we have observed in malicious usage and are detailing in this report
  *  “SHELLTER-protected” - a descriptor of final payloads that the SHELLTER loader delivers

SHELLTER Übersicht

SHELLTER ist ein kommerzielles Umgehungs-Framework , das Red Teams seit über einem Jahrzehnt unterstützt. Es hilft offensiven Sicherheitsdienstleistern, Antiviren- und seit kurzem auch EDR-Tools zu umgehen. Dies ermöglicht es Red Teams, ihre C2-Frameworks ohne die ständige Weiterentwicklung zu nutzen, die normalerweise erforderlich ist, da Sicherheitsanbieter Erkennungssignaturen für sie schreiben.

While the Shellter Project does offer a free version of the software, it has a limited feature-set, 
only 32-bit .exe support, and is generally better understood and detected by anti-malware 
products. The free version is not described in this article.

SHELLTER ist, wie viele andere offensive Sicherheitstools (OSTs), ein Produkt mit doppeltem Verwendungszweck. Böswillige Akteure können, sobald sie Zugriff darauf haben, SHELLTER verwenden, um die Lebensdauer ihrer Tools zu verlängern. Seriöse Anbieter von offensiver Sicherheit, wie z. B. das Shellter Project, implementieren Schutzmaßnahmen , um das Risiko zu verringern, dass ihre Produkte böswillig verwendet werden. Zu diesen Maßnahmen gehören geografische Verkaufslimits, organisatorische Sorgfaltspflicht und Endbenutzer-Lizenzvereinbarungen (EULAs). Trotz dieser Bemühungen bleiben hochmotivierte böswillige Akteure eine Herausforderung.

Mitte Juni identifizierten unsere Recherchen mehrere finanziell motivierte Infostealer-Kampagnen, die SHELLTER seit Ende April 2025 zum Verpacken von Nutzlasten verwendet haben. Es gibt Hinweise darauf, dass es sich um die Shellter Elite Version 11.0 handelt, die am 16. April 2025 veröffentlicht wurde.

SHELLTER ist ein komplexes Projekt, das eine breite Palette konfigurierbarer Einstellungen bietet, die auf bestimmte Betriebsumgebungen, Mechanismen zur Nutzlastbereitstellung und Verschlüsselungsparadigmen zugeschnitten sind. Dieser Bericht konzentriert sich ausschließlich auf Funktionen, die in identifizierten bösartigen Kampagnen beobachtet wurden. Obwohl einige Funktionen üblich zu sein scheinen, würde eine umfassende Überprüfung aller verfügbaren Funktionen den Rahmen dieses Dokuments sprengen.

SHELLTER Loader - Technische Details

In den folgenden Abschnitten werden Funktionen beschrieben, die einigen der veröffentlichten exklusiven Elite-Funktionen des Shellter-Projekts ähneln. Unsere Bewertung deutet darauf hin, dass wir Shellter Elite beobachten. Diese Schlussfolgerung basiert auf einer Überprüfung der öffentlichen Dokumentation des Entwicklers, der Beobachtung verschiedener Stichproben aus verschiedenen Builds mit einem hohen Grad an Codeähnlichkeit und der Verbreitung von Umgehungsfunktionen, die kaum beobachtet werden.

Polymorpher Junk-Code

SHELLTER-geschützte Beispiele verwenden in der Regel selbstmodifizierenden Shellcode mit polymorpher Verschleierung, um sich in legitime Programme einzubetten. Diese Kombination aus legitimen Anweisungen und polymorphem Code hilft diesen Dateien, sich der statischen Erkennung und den Signaturen zu entziehen, sodass sie unentdeckt bleiben.

Durch das Festlegen eines Haltepunkts für VirtualAlloc in einem SHELLTER-geschützten RHADAMANTHYS-Sample können wir den Aufrufstapel dieses Malware-Samples anzeigen.

Diese Art von polymorphem Code verwirrt statische Disassembler und beeinträchtigt die Emulationsbemühungen. Diese Anweisungen werden während der Entpackphase angezeigt, in der eines der folgenden Paare von Windows-API-Funktionen aufgerufen wird, um Arbeitsspeicher für einen neuen Shellcode-Stub zuzuweisen:

  • GetModuleHandleA / GetProcAddress
  • CreateFileMappingW / MapViewOfFile

Die SHELLTER-Funktionalität ist in einer neuen, umfangreichen Funktion enthalten. Es wird nach zusätzlichen Entpack- und Junk-Anweisungen im Shellcode-Stub erreicht. IDA Pro oder Binary Ninja können den Code zu diesem Zeitpunkt erfolgreich dekompilieren.

Aushängen von Systemmodulen über Datei-Mappings

Um API-Hooking-Techniken von AV/EDR-Anbietern zu umgehen, ordnet SHELLTER eine neue Kopie der ntdll.dll über NtCreateSection und NtMapViewOfSectionab.

Es gibt auch eine zweite Möglichkeit zum Aushängen, indem ein sauberer ntll.dll aus dem KnownDLLs Verzeichnis über NtOpenSection und NtMapViewOfSectiongeladen wird.

Verschlüsselung und Komprimierung von Nutzlasten

SHELLTER verschlüsselt seine endgültigen, benutzerdefinierten Nutzlasten im AES-128 CBC-Modus. Diese Verschlüsselung kann auf zwei Arten erfolgen:

  • Eingebetteter Schlüssel/IV: Ein zufällig generiertes Schlüssel/IV-Paar wird direkt in die SHELLTER-Nutzlast eingebettet.
  • Vom Server abgerufener Schlüssel/IV: Das Schlüssel/IV-Paar wird von einem vom Angreifer kontrollierten Server abgerufen.

Bei Beispielen, die die eingebettete Option verwendet haben, haben wir die zugrunde liegende Nutzlast erfolgreich wiederhergestellt.

Die verschlüsselten Blobs befinden sich am Ende jeder SHELLTER-Nutzlast.

Der AES-Schlüssel und IV sind als Konstanten zu finden, die in sehr frühen Stadien der Nutzlast als Teil ihrer Initialisierungsroutine in Stack-Variablen geladen werden.

In Shellter Elite v11.0 werden Payloads standardmäßig mit dem LZNT1 -Algorithmus komprimiert, bevor sie verschlüsselt werden.

DLL-Preloading und Call-Stack-Umgehung

Die Funktion "Vorabladen von Systemmodulen erzwingen" ermöglicht das Vorabladen wichtiger Windows-Subsystem-DLLs, z. B. advapi32.dll, wininet.dllund crypt32.dll, um die Vorgänge der zugrunde liegenden Nutzlast zu unterstützen. Zu den drei konfigurierbaren Optionen gehören:

  • --Force-PreloadModules-Basic (16 universelle Module)
  • --Force-PreloadModules-Networking (5 netzspezifische Module)
  • --Force-PreloadModules-Custom (bis zu 16 benutzerdefinierte Module)

Diese Module werden entweder über LoadLibraryExW oder LdrLoadDllgeladen. Details zum API-Proxying über benutzerdefinierte Vectored Exception Handlers (VEH) werden in einem späteren Abschnitt erläutert.

Im Folgenden finden Sie ein Beispiel für eine Liste von vorab geladenen Modulen in einer SHELLTER-geschützten Nutzlast, die der Option --Force-PreloadModules-Basic entspricht, die in einem Beispiel zu finden ist, in dem ein einfacher C++-Laderclient bereitgestellt wird, der BITS (Background Intelligent Transfer Service) für C2 missbraucht – ein ungewöhnlicher Ansatz, der von einigen Bedrohungen bevorzugt wird.

Das folgende Beispiel ist eine Liste, die mit der Option --Force-PreloadModules-Networking übereinstimmt, die in einem LUMMA-Beispiel zum Laden gefunden wurde.

Diese Funktion (veröffentlicht in Shellter Pro Plus v10.x) nutzt die Funktion zur Umgehung des Aufrufstapels, um die Quelle des LoadLibraryExW Anrufs beim Laden von Netzwerk- und Kryptographie-bezogenen Bibliotheken zu verbergen.

Im Folgenden finden Sie ein Beispiel für eine procmon Ablaufverfolgung beim Laden von wininet.dll, die eine abgeschnittene Aufrufliste zeigt:

Im selben Beispiel , in dem das Flag --Force-PreloadModules-Basic aktiviert ist, haben wir festgestellt, dass die Abhängigkeiten der vorab geladenen Module ebenfalls einer Beschädigung der Aufrufstapel unterliegen. Zum Beispiel verbirgt urlmon.dll auch die Quelle des LoadLibraryExW Aufrufs für seine Abhängigkeiten iertutil.dll, srvcli.dllund netutils.dll.

Entkoppeln von AV/EDR-Modulen

SHELLTER enthält Funktionen zum Aufheben der Verknüpfung von Köder-DLL-Modulen, die sich im Process Environment Block (PEB) befinden. Diese Ködermodule werden von einigen Sicherheitsanbietern als Canaries verwendet, um zu überwachen, wenn Shellcode versucht, die PEB-LDR-Liste manuell aufzulisten. PEB LDR ist eine Struktur in Windows, die Informationen über die geladenen Module eines Prozesses enthält.

Wir haben nur einen eindeutigen Modulnamen basierend auf seinem Hash (je nach Stichprobe unterschiedlich) beobachtet, der am Ende in kern3l32.dll [sic] aufgelöst wird.

API-Hashing-Verschleierung

In den beobachteten Beispielen wird zeitbasiertes Seeding verwendet, um API-Adressen zu verschleiern. Die Malware liest zunächst den SystemTime Wert aus der KUSER_SHARED_DATA -Struktur an der Adresse 0x7FFE0014 , um einen dynamischen XOR-Schlüssel abzuleiten.

Anschließend wird ein Seeding-ROR13-Hashalgorithmus für API-Namen verwendet, um die Funktionsadressen zur Laufzeit aufzulösen.

Nach der Auflösung werden diese Zeiger optional verschleiert, indem sie mit dem zeitbasierten Schlüssel XOR versehen und eine bitweise Drehung angewendet werden, bevor sie in einer Nachschlagetabelle gespeichert werden. Diese Taktik wird in der gesamten Binärdatei angewendet, um eine Vielzahl von Daten zu verbergen, z. B. andere Funktionszeiger, Systemaufruf-Stubs und Handles geladener Module.

Lizenzprüfung und Selbstunscharfschaltung

Für jede SHELLTER-Nutzlast gibt es drei eingebettete FILETIME Strukturen. In einer Beispielstichprobe wurden folgende Faktoren festgestellt:

  • Datum und Uhrzeit des Ablaufs der Lizenz (2026-04-17 19:17:24.055000)
  • Datum der Selbstentwaffnung (2026-05-21 19:44:43.724952)
  • Startdatum der Infektion (2025-05-21 19:44:43.724952)

Bei der Überprüfung des Lizenzablaufs wird die aktuelle Uhrzeit mit dem Datum und der Uhrzeit des Lizenzablaufs verglichen, wobei das Flag license_valid in der Kontextstruktur gesetzt wird. Es gibt 28 eindeutige Aufrufseiten (wahrscheinlich 28 lizenzierte Funktionen) für die Überprüfung der Lizenzgültigkeit, bei denen das license_valid -Flag bestimmt, ob die Hauptcodelogik übersprungen wird, und bestätigt, dass das Ablaufdatum der Lizenz als Kill-Switch fungiert.

Standardmäßig wird das Datum der Selbstentschärfung genau ein Jahr nach dem Startdatum der ersten Infektion festgelegt. Wenn das Flag zur Selbstunscharfschaltung ausgelöst wird, werden mehrere Bereinigungsroutinen ausgeführt. Eine solche Routine umfasst das Aufheben der Zuordnung des manuell geladenen ntdll -Moduls (falls vorhanden) und das Löschen der NTAPI-Nachschlagetabelle, die entweder auf das manuell zugeordnete ntdll -Modul oder das während der Prozessinitialisierung geladene Modul verweist.

Während die Startdaten für die Selbstentwaffnung und die Infektion von Stichprobe zu Stichprobe unterschiedlich sind, weisen wir darauf hin, dass das Ablaufdatum der Lizenz (2026-04-17 19:17:24.055000 konstant bleibt.

Es ist möglich, dass diese Zeit für jede Lizenz, die von The Shellter Project ausgestellt wird, eindeutig generiert wird. Wenn dies der Fall ist, würde dies die Hypothese stützen, dass nur eine einzige Kopie von Shellter Elite für den böswilligen Gebrauch erworben wurde. Dieser Wert wird in der statischen Analyse nicht angezeigt, wird aber in der ersten Phase des Entpackens angezeigt.

SHA256Ablauf der LizenzSelbstentwaffnungStart der InfektionFamilie
c865f24e4b9b0855b8b559fc3769239b0aa6e8d680406616a13d9a36fbbc2d302026-04-17 19:17:24.0550002026-05-27 19:57:42.9716942025-05-27 19:57:42.971694RHADAMANTHYS
7d0c9855167e7c19a67f800892e974c4387e1004b40efb25a2a1d25a99b03a102026-04-17 19:17:24.0550002026-05-21 19:44:43.7249532025-05-21 19:44:43.724953unbekannt
b3e93bfef12678294d9944e61d90ca4aa03b7e3dae5e909c3b2166f122a14dad2026-04-17 19:17:24.0550002026-05-24 11:42:52.9057262025-05-24 11:42:52.905726ARECHCLIENT2
da59d67ced88beae618b9d6c805f40385d0301d412b787e9f9c9559d00d2c8802026-04-17 19:17:24.05500027.04.2026 22:40:00.95406027.04.2025 22:40:00.954060LUMMA
70ec2e65f77a940fd0b2b5c0a78a83646dec17583611741521e0992c1bf974f12026-04-17 19:17:24.0550002026-05-16 16:12:09.7110572025-05-16 16:12:09.711057unbekannt

Im Folgenden finden Sie eine YARA-Regel, die verwendet werden kann, um diesen hartcodierten Lizenzablaufwert in den von uns untersuchten illegalen SHELLTER-Beispielen zu identifizieren:

rule SHELLTER_ILLICIT_LICENSE {  
    meta:  
        author = "Elastic Security"  
        last_modified = "2025-07-01"  
        os = "Windows"  
        family = "SHELLTER"  
        threat_name = "SHELLTER_ILLICIT_LICENSE"

    strings:

        // 2026-04-17 19:17:24.055000  
        $license_server = { c7 84 24 70 07 00 00 70 5e 2c d2 c7 84 24 74 07 00 00 9e ce dc 01}

    condition:  
        any of them  
}

Umgehung von Speicher-Scans

SHELLTER-geschützte Samples implementierten verschiedene Techniken, einschließlich Laufzeitumgehungen, um eine Erkennung zu vermeiden. Zu diesen Arten von Techniken gehören:

  • Dekodierungs- und Recodierungsanweisungen zur Laufzeit
  • Entfernen von Ausführungsberechtigungen auf inaktiven Speicherseiten
  • Reduzierung des Platzbedarfs, Auswirkungen auf In-Memory-Signaturen mit YARA
  • Verwenden von internen Windows-Strukturen, wie z. B. dem PEB, als temporäre Datenspeicherorte

SHELLTER generiert einen Trampolin-Stub basierend auf der Betriebssystemversion. Es gibt eine 4 KB-Seite, die diesen Stub enthält, auf der die Speicherberechtigungen je nach NtQueryVirtualMemory und NtProtectVirtualMemoryschwanken.

Sobald die Seite aktiv ist, können die codierten Bytes an dieser Adresse beobachtet werden, 0x7FF5FFCE0000.

SHELLTER decodiert diese Seite, wenn sie aktiv ist, über eine XOR-Schleife mit dem abgeleiteten SystemTime Schlüssel aus der KUSER_SHARED_DATA Struktur.

Unten sehen Sie dieselbe Speicherseite (0x7FF5FFCE0000), die den dekodierten Trampolin-Stub für den Systemaufruf (ntdll_NtOpenFile) zeigt.

Wenn die Funktionalität benötigt wird, werden die Berechtigungen für die Speicherseite mit Lese-/Ausführungsberechtigungen (Read/Execute, RX) festgelegt. Nach der Ausführung werden die Seiten auf inaktiv gesetzt.

Der kontinuierliche Schutz wichtiger Funktionen während der Laufzeit erschwert sowohl die Analyse als auch die Erkennung. Dieses Schutzniveau ist bei allgemeinen Malware-Samples ungewöhnlich.

Indirekte Systemaufrufe / Beschädigung der Aufrufliste

Wie im vorherigen Abschnitt gezeigt, umgeht SHELLTER Hooks im Benutzermodus mithilfe von Trampolin-basierten indirekten Systemaufrufen. Anstatt syscall direkt aufzurufen, bereitet es den Stack mit der Adresse einer sauberen syscall Anweisung von ntdll.dllvor. Ein ret Befehl fügt diese Adresse dann in das RIP Register ein und leitet die Ausführung heimlich auf den syscall Befehl um.

Im Folgenden finden Sie ein Beispiel für Elastic Defend- VirtualProtect -Ereignisse, das die Kombination der beiden Umgehungen (indirekter Systemaufruf und Aufrufstapelkürzung) zeigt. Mit dieser Technik können verschiedene Sicherheitserkennungsmechanismen umgangen oder unterbrochen werden.

Erweiterte VM-/Sandbox-Erkennung

In der Dokumentation von SHELLTER wird auf eine Hypervisor-Erkennungsfunktion verwiesen. Eine ähnliche Funktion wird in unseren bösartigen Samples nach einem Aufruf an ZwQuerySystemInformationEx mit CPUID und _bittest Anweisungen beobachtet. Diese Funktion gibt verschiedene CPU-Informationen zusammen mit dem HTT-Flag (Hyper-Threading Technology) zurück.

Debugger-Erkennung (UM/KM)

SHELLTER verwendet die Debugging-Erkennung im Benutzer- und Kernelmodus mithilfe von Process Heap-Flags und die Überprüfung des KdDebuggerEnabled -Flags über die _KUSER_SHARED_DATA -Struktur.

AMSI-Umgehung

Es gibt zwei Methoden der AMSI-Umgehung. Die erste Methode beinhaltet das In-Memory-Patching von AMSI-Funktionen. Diese Technik durchsucht die Funktionen nach bestimmten Bytemustern und modifiziert sie, um die Logik der Funktion zu ändern. Zum Beispiel überschreibt es einen 4-Byte-String "AMSI" mit Null-Bytes und patcht bedingte Sprünge auf sein Gegenteil.

Die zweite Methode ist etwas ausgefeilter. Zunächst wird optional versucht, die Suche nach der COM-Schnittstelle (Component Object Model) zu sabotieren, indem die CLSID_Antimalware GUID-Konstante in amsi.dll {fdb00e52-a214-4aa1-8fba-4357bb0072ec} wird, ein Zeiger darauf in einem beschreibbaren Datenabschnitt platziert und dieser Zeiger so beschädigt wird, dass er 8 Byte vor der tatsächlichen GUID zeigt.

Der Zielzeiger ist der CLSID-Zeiger im ATL-Objektzuordnungseintrag (Active Template Library) des AMSI-Moduls, einer Struktur, die von der DllGetClassObject Funktion zum Suchen und Erstellen registrierter COM-Klassen verwendet wird. Durch das Beschädigen des Zeigers in dieser Zuordnung schlägt die Suche nach dem Antischadsoftwareanbieter fehl, sodass er nicht erstellt werden kann, sodass AmsiInitialize mit einer CLASS_E_CLASSNOTAVAILABLE Ausnahme fehlschlägt.

Anschließend wird AmsiInitialize – Wenn der vorherige Patch nicht stattgefunden hat und der API-Aufruf erfolgreich ist, wird ein vtable-Patch als Fallback-Mechanismus ausgeführt. Der von AmsiInitialize abgerufene HAMSICONTEXT enthält einen Zeiger auf ein IAntimalware COM-Objekt, das wiederum einen Zeiger auf seine virtuelle Funktionstabelle enthält. Die Umgehung zielt auf die in dieser Tabelle IAntimalware::Scan Funktion ab. Um sie zu neutralisieren, durchsucht der Code die Speicherseite mit der IAntimalware::Scan Funktion nach einer ret Anweisung.

Nachdem ein passendes Gadget gefunden wurde, überschreibt es den Scan Funktionszeiger mit der Adresse des ret Gadgets. Das Ergebnis ist, dass jeder nachfolgende Aufruf von AmsiScanBuffer oder AmsiScanString die gepatchte vtable aufruft, direkt zu einer ret Anweisung springt und sofort zurückkehrt.

Vektorisierter Ausnahmehandler-API-Proxy

Es gibt einen ausgeklügelten API-Proxymechanismus, der erreicht wird, indem Aufrufe an aufgelöste APIs und gestaltete Syscall-Stubs über einen benutzerdefinierten Ausnahmehandler umgeleitet werden, der als Kontrollflussproxy fungiert. Es kann in zwei Phasen unterteilt werden: Einrichtung und Ausführung.

Phase 1 umfasst das Zuordnen von zwei speziellen Speicherseiten, die als "Trigger" für den Ausnahmehandler dienen. Der Schutz für diese Seiten ist auf PAGE_READONLYfestgelegt, und der Versuch, dort Code auszuführen, führt zu einer STATUS_ACCESS_VIOLATION Ausnahme, die beabsichtigt ist. Die Adressen dieser Triggerseiten werden in der Context-Struktur gespeichert:

  • api_call_trigger_page - Die Seite, die aufgerufen wird, um den Proxy zu initiieren.
  • api_return_trigger_page - Die Seite, zu der die eigentliche API zurückkehrt.

Eine Ausnahmehandlervorlage aus der Binärdatei wird in einen zugeordneten Bereich kopiert und mithilfe von RtlAddVectoredExceptionHandlerals primärer Handler für den Prozess registriert. Ein hartcodierter magischer Platzhalterwert (0xe1e2e3e4e5e6e7e8) im Handler wird dann mit einem Zeiger auf die Kontextstruktur selbst überschrieben.

Wenn der VEH-Proxy verwendet werden soll, wird die Adresse GetCurrentDirectoryA in ctx_struct->target_API_functiongespeichert, und der API-Funktionszeiger wird mit der Adresse der Aufruftriggerseite überschrieben, wenn der VEH-Proxy verwendet werden soll. Diese Triggerseite wird dann aufgerufen und löst eine STATUS_ACCESS_VIOLATION Ausnahme aus.

Die Ablaufsteuerung wird an den Ausnahmehandler umgeleitet. Die fehlerhafte Adresse des Ausnahmekontexts wird überprüft, und wenn sie mit der Aufruftriggerseite übereinstimmt, weiß sie, dass es sich um einen eingehenden API-Proxyaufruf handelt, und führt die folgenden Schritte aus:

  • Speichern Sie die ursprüngliche Rücksendeadresse
  • Überschreiben Sie die Rückgabeadresse auf dem Stack mit der Adresse der Rückgabetriggerseite.
  • Legt das RIP -Register auf die tatsächliche API-Adresse fest, die zuvor in ctx_struct->target_API_functiongespeichert wurde.

Anschließend wird der GetCurrentDirectoryA Aufruf ausgeführt. Wenn der Vorgang abgeschlossen ist, springt er zur Rückgabetriggerseite, wodurch eine zweite STATUS_ACCESS_VIOLATION Ausnahme ausgelöst wird und die Ablaufsteuerung zurück an den Ausnahmehandler umgeleitet wird. Die fehlerhafte Adresse wird überprüft, um festzustellen, ob sie mit der Rückgabetriggerseite übereinstimmt. Wenn dies der Fall ist, wird RIP auf die ursprüngliche Rückgabeadresse festgelegt, und die Ablaufsteuerung wird an die ursprüngliche Aufrufwebsite zurückgegeben.

Kampagnen

Im Juni identifizierten die Elastic Security Labs mehrere Kampagnen, bei denen verschiedene Informationsdiebes eingesetzt wurden, die durch Shellter Elite geschützt wurden und durch Lizenzinformationen in jeder Binärdatei aufgezeichnet wurden. Durch die Nutzung der oben genannten Tools konnten wir beobachten, dass Bedrohungsakteure in verschiedenen Kampagnen diesen äußerst ausweichenden Loader schnell in ihre eigenen Arbeitsabläufe integrierten.

LUMMA

Der LUMMA Infostealer wurde ab Ende April mit SHELLTER verteilt, wie die Metadaten in den Binärdateien belegen. Obwohl der anfängliche Infektionsvektor nicht klar ist, konnten wir (mit ANY. RUN), dass zugehörige Dateien auf der MediaFire-Datei-Hosting-Plattform gehostet wurden.

Verkaufen wollen

Am 16. Mai postete der Twitter/X-Nutzer @darkwebinformer einen Screenshot mit der Bildunterschrift:

🚨Shellter Elite v11.0 steht in einem beliebten Forum zum Verkauf

"Exploit Garant" bezieht sich in diesem Fall auf einen treuhänderähnlichen Dritten, der die Transaktion vermittelt.

ARECHCLIENT2

Ab Mai beobachteten wir Kampagnen, die sich an Content-Ersteller richteten , mit Ködern, die sich auf Sponsoring-Möglichkeiten konzentrierten. Dabei scheint es sich um Phishing-E-Mails zu handeln, die an Personen mit einem YouTube-Kanal gesendet werden, der sich als Marken wie Udemy, Skillshare, Pinnacle Studio und Duolingo ausgibt. Die E-Mails enthalten Download-Links zu Archivdateien (.rar), die legitime Werbeinhalte enthalten, die mit einer SHELLTER-geschützten ausführbaren Datei verpackt sind.

Diese zugrunde liegende ausführbare Datei teilt Merkmale und Verhaltensweisen mit unserer vorherigen SHELLTER-Analyse. Zum Zeitpunkt der Erstellung dieses Artikels können wir in VirusTotal immer noch Proben mit sehr niedrigen Erkennungsraten sehen. Dies ist auf mehrere Faktoren zurückzuführen, die mit benutzerdefinierten Funktionen zur Vermeidung statischer Analysen verbunden sind, einschließlich polymorphem Code, Backdooring-Code in legitimen Anwendungen und der Anwendung von Code-Signing-Zertifikaten.

Die eingebettete Nutzlast, die in dieser Datei beobachtet wird, stellt die Infostealer-ARECHCLIENT2 bereit, die auch als SECTOP RAT bezeichnet wird. Das C2 für diesen Stealer deutet auf 185.156.72[.]80:15847, hin, das zuvor von unserem Team am 17. Juni identifiziert wurde, als wir diese Bedrohung in Verbindung mit dem GHOSTPULSE-Loader diskutierten.

RHADAMANTHYS

Diese Infektionen beginnen mit YouTube-Videos, die auf Themen wie Game-Hacking und Gaming-Mods abzielen, mit Videokommentaren, die auf die bösartigen Dateien verweisen, die auf MediaFire gehostet werden.

Eine der Dateien , die zuvor mit dieser Methode verbreitet wurde, wurde zum Zeitpunkt dieser Veröffentlichung 126 einzigartigen Mal von verschiedenen Personen eingereicht.

Diese Datei weist die gleichen Verhaltensmerkmale auf wie der zugrunde liegende Code aus den vorherigen SHELLTER-Analyseabschnitten. Die eingebettete Nutzlast in diesem Beispiel stellt RHADAMANTHYS Infostealer bereit.

SHELLTER Entpacker

Elastic Security Labs veröffentlicht einen dynamischen Entpacker für Binärdateien, die durch SHELLTER geschützt sind. Dieses Tool nutzt eine Kombination aus dynamischen und statischen Analysetechniken, um automatisch mehrere Nutzlastphasen aus einer SHELLTER-geschützten Binärdatei zu extrahieren.

Da SHELLTER eine breite Palette an optionalen Funktionen bietet, ist dieser Entpacker nicht vollständig umfassend, obwohl er eine große Mehrheit der getesteten Proben erfolgreich verarbeitet. Selbst bei nicht unterstützten Binärdateien ist es in der Regel in der Lage, mindestens eine Nutzlaststufe zu extrahieren.

Aus Sicherheitsgründen sollte dieses Tool nur innerhalb einer isolierten virtuellen Maschine ausgeführt werden. Während des Entpackvorgangs wird potenziell schädlicher ausführbarer Code dem Speicher zugeordnet. Obwohl einige grundlegende Sicherheitsvorkehrungen getroffen wurden, sind sie nicht unfehlbar.

Fazit

Trotz aller Bemühungen der kommerziellen OST-Community, ihre Tools für legitime Zwecke beizubehalten, sind die Methoden zur Risikominderung unvollkommen. Sie sind, wie viele unserer Kunden, mit hartnäckigen, motivierten Angreifern konfrontiert. Obwohl das Shellter-Projekt in diesem Fall ein Opfer des Verlusts geistigen Eigentums und der zukünftigen Entwicklungszeit ist, müssen sich andere Teilnehmer im Sicherheitsbereich nun mit echten Bedrohungen auseinandersetzen, die leistungsfähigere Werkzeuge einsetzen.

Wir erwarten:

  • Diese illegale Version von SHELLTER wird weiterhin in der kriminellen Gemeinschaft zirkulieren und möglicherweise zu nationalstaatlich ausgerichteten Akteuren übergehen.
  • Das Shellter-Projekt wird eine Version aktualisieren und veröffentlichen, die die in dieser Analyse identifizierten Erkennungsmöglichkeiten einschränkt.
    • Jedes neue Tooling bleibt ein Ziel für böswillige Akteure.
  • Komplexere Bedrohungen analysieren diese Beispiele und integrieren Funktionen in ihre Toolsets.

Unser Ziel ist es, dass diese Analyse den Verteidigern hilft, diese identifizierten Infostealer-Kampagnen frühzeitig zu erkennen und sie auf eine mögliche Ausweitung dieser Techniken auf andere Bereiche der offensiven Landschaft vorzubereiten.

Malware und MITRE ATT&CK

Elastic verwendet das MITRE ATT&CK-Framework , um gängige Taktiken, Techniken und Verfahren zu dokumentieren, die Bedrohungen gegen Unternehmensnetzwerke einsetzen.

Taktiken

Taktiken stellen das Warum einer Technik oder Untertechnik dar. Es ist das taktische Ziel des Gegners: der Grund für die Ausführung einer Aktion.

Techniken

Techniken stellen dar, wie ein Angreifer ein taktisches Ziel erreicht, indem er eine Aktion ausführt.

Entschärfung von SHELLTER

Verhütung

YARA

Elastic Security hat YARA-Regeln erstellt, um diese Aktivität zu identifizieren.

rule Windows_Trojan_Shellter {  
    meta:  
        author = "Elastic Security"  
        creation_date = "2025-06-30"  
        last_modified = "2025-06-30"  
        os = "Windows"  
        arch = "x86"  
        category_type = "Trojan"  
        family = "Shellter"  
        threat_name = "Windows.Trojan.Shellter"  
        reference_sample = "c865f24e4b9b0855b8b559fc3769239b0aa6e8d680406616a13d9a36fbbc2d30"

    strings:  
        $seq_api_hashing = { 48 8B 44 24 ?? 0F BE 00 85 C0 74 ?? 48 8B 44 24 ?? 0F BE 00 89 44 24 ?? 48 8B 44 24 ?? 48 FF C0 48 89 44 24 ?? 8B 04 24 C1 E8 ?? 8B 0C 24 C1 E1 ?? 0B C1 }  
        $seq_debug = { 48 8B 49 30 8B 49 70 8B 40 74 0B C1 25 70 00 00 40 85 C0 75 22 B8 D4 02 00 00 48 05 00 00 FE 7F }  
        $seq_mem_marker = { 44 89 44 24 ?? 89 54 24 ?? 48 89 4C 24 ?? 33 C0 83 F8 ?? 74 ?? 48 8B 44 24 ?? 8B 4C 24 ?? 39 08 75 ?? EB ?? 48 63 44 24 ?? 48 8B 4C 24 }  
        $seq_check_jmp_rcx = { 48 89 4C 24 ?? B8 01 00 00 00 48 6B C0 00 48 8B 4C 24 ?? 0F B6 04 01 3D FF 00 00 00 75 ?? B8 01 00 00 00 48 6B C0 01 48 8B 4C 24 ?? 0F B6 04 01 3D E1 00 00 00 75 ?? B8 01 00 00 00 }  
        $seq_syscall_stub = { C6 84 24 98 00 00 00 4C C6 84 24 99 00 00 00 8B C6 84 24 9A 00 00 00 D1 C6 84 24 9B 00 00 00 B8 C6 84 24 9C 00 00 00 00 C6 84 24 9D 00 00 00 00 C6 84 24 9E 00 00 00 00 }  
        $seq_mem_xor = { 48 8B 4C 24 ?? 0F B6 04 01 0F B6 4C 24 ?? 3B C1 74 ?? 8B 44 24 ?? 0F B6 4C 24 ?? 48 8B 54 24 ?? 0F B6 04 02 33 C1 8B 4C 24 ?? 48 8B 54 24 ?? 88 04 0A }  
        $seq_excep_handler = { 48 89 4C 24 08 48 83 EC 18 48 B8 E8 E7 E6 E5 E4 E3 E2 E1 48 89 04 24 48 8B 44 24 20 48 8B 00 81 38 05 00 00 C0 }  
    condition:  
        3 of them  
}

Beobachtungen

Alle Observables stehen auch im ECS- und STIX-Format zum Download zur Verfügung.

Die folgenden Observablen wurden in dieser Studie diskutiert.

ÜberwachbarTypNameReferenz
c865f24e4b9b0855b8b559fc3769239b0aa6e8d680406616a13d9a36fbbc2d30SHA-256Endorphin.exeDURCH SCHÄLER GESCHÜTZTES RHADAMANTHYS
7d0c9855167e7c19a67f800892e974c4387e1004b40efb25a2a1d25a99b03a10SHA-256SUPERAntiSpyware.exeDURCH SHELLTER GESCHÜTZTE UNBEKANNTE FAMILIE
b3e93bfef12678294d9944e61d90ca4aa03b7e3dae5e909c3b2166f122a14dadSHA-256Aac3572DramHal_x64.exeSCHÄLGESCHÜTZT ARECHCLIENT2
da59d67ced88beae618b9d6c805f40385d0301d412b787e9f9c9559d00d2c880SHA-256Branster.exeDURCH SCHÄLEN GESCHÜTZTES LUMMA
70ec2e65f77a940fd0b2b5c0a78a83646dec17583611741521e0992c1bf974f1SHA-256IMCCPHR.exeDURCH SHELLTER GESCHÜTZTE UNBEKANNTE FAMILIE
263ab8c9ec821ae573979ef2d5ad98cda5009a39e17398cd31b0fad98d862892SHA-256Pinnacle Studio Advertising materials.rarLOCK-ARCHIV
eaglekl[.]digitalDomainLUMMA C&C Server
185.156.72[.]80IPv4-ADDRARECHCLIENT2 C&C-Server
94.141.12[.]182IPv4-ADDRplotoraus[.]ShopserverRHADAMANTHYS C&C Server

Referenzen

In der obigen Studie wurde auf Folgendes Bezug genommen: