Wir beleuchten AceCryptor und seine Funktionsweise

Wir beleuchten AceCryptor und seine Funktionsweise

In diesem Blogbeitrag untersuchen wir die ursprünglich dokumentierte Funktionsweise von AceCryptor von Avast. Diesen Kryptor gibt es seit 2016 und da er im Laufe seines Bestehens zum Packen Dutzender Malware-Familien verwendet wurde, wurden viele technische Teile dieser Malware bereits beschrieben. Möglicherweise haben Sie bereits von diesem Kryptor gelesen, der auch als „Crypter“ bekannt ist die DJVU-Verschleierung, Stufe 1 von SmokeLoader, RedLine-Diebstahlstufe 1, 2 und 3, einfacher und beliebter Packer, und so weiter… Viele (aber nicht alle) der veröffentlichten Blogposts erkennen diesen Kryptor nicht einmal als separate Malware-Familie an, also lassen Sie uns alle Punkte für Sie zusammenfassen und nicht nur eine technische Analyse seiner Varianten, sondern auch eine Überblick über die darin enthaltenen Malware-Familien und die Verbreitung von AceCryptor in freier Wildbahn.

Für Malware-Autoren ist der Schutz ihrer Kreationen vor Entdeckung eine anspruchsvolle Aufgabe. Kryptor sind die erste Verteidigungsschicht gegen verbreitete Malware. Auch wenn Bedrohungsakteure ihre eigenen benutzerdefinierten Kryptor erstellen und verwalten können, kann es für Crimeware-Bedrohungsakteure oft eine zeitaufwändige oder technisch schwierige Aufgabe sein, ihren Kryptor in einem sogenannten FUD-Zustand (völlig nicht erkennbar) zu halten. Die Nachfrage nach einem solchen Schutz ist vielfältig cryptor-as-Ein Dienst (CaaS)-Optionen, die Malware verpacken. Diese Kryptor können mehrere Anti-VM-, Anti-Debugging- und Anti-Analysetechniken umfassen, die kombiniert werden, um eine Verschleierung der Nutzlast zu erreichen.

Kernpunkte dieses Blogposts:

  • AceCryptor bietet Packdienste für Dutzende sehr bekannter Malware-Familien.
  • Exemplare von AceCryptor sind auf der ganzen Welt weit verbreitet, da mehrere Bedrohungsakteure, die es verwenden, ihre gepackte Malware aktiv in ihren eigenen Kampagnen verbreiten.
  • AceCryptor ist stark verschleiert und hat im Laufe der Jahre viele Techniken integriert, um einer Entdeckung zu entgehen.
  • AceCryptor verfügt über mehrere Varianten, die in diesem Blogbeitrag beschrieben werden.
  • Obwohl es möglich ist, von anderen Forschern durchgeführte technische Analysen zu finden (meistens dort, wo dieser Kryptor als Teil/Stufe anderer Malware erscheint), möchte ESET Research nicht nur einen umfassenden Überblick über die Funktionalität von AceCryptor, sondern auch über seine Geschichte und Verbreitung bieten.
  • In den Jahren 2021 und 2022 schützte ESET mehr als 80,000 Kunden, die von der von AceCryptor gepackten Malware betroffen waren.

Übersicht über Statistiken und gepackte Familien

Seit dem ersten bekannten Auftauchen von AceCryptor im Jahr 2016 haben viele Malware-Autoren die Dienste dieses Kryptors genutzt, selbst die bekannteste Crimeware wie Emotet, als sie noch keinen eigenen Kryptor nutzte. Im Zeitraum 2021–2022 entdeckte ESET mehr als 80,000 einzigartige Exemplare von AceCryptor. Aufgrund der hohen Anzahl unterschiedlicher Malware-Familien gehen wir davon aus, dass AceCryptor irgendwo als CaaS verkauft wird. Wenn wir die Anzahl der erkannten eindeutigen Dateien berücksichtigen: Auch wenn wir die genauen Preise für diesen Dienst nicht kennen, gehen wir davon aus, dass die Vorteile für die AceCryptor-Autoren nicht unerheblich sind.

Aufgrund des hohen Probenvolumens in den vergangenen Jahren basieren die folgenden Statistiken nur auf Proben, die in den Jahren 2021 und 2022 entdeckt wurden. Wie in Abbildung 1 zu sehen ist, waren die Entdeckungstreffer in diesen beiden Jahren recht gleichmäßig verteilt, was zu erwarten ist Malware, die von einer großen Anzahl von Bedrohungsakteuren verwendet wird, die ihre Kampagnen nicht synchronisieren.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 1. Anzahl der AceCryptor-Erkennungen in den Jahren 2021 und 2022 (gleitender 7-Tage-Durchschnitt)

Nachdem wir uns die von AceCryptor gepackte Malware angesehen hatten, fanden wir über 200 ESET-Erkennungsnamen. Natürlich kann eine Malware-Familie aufgrund von Updates oder Änderungen bei der Verschleierung über mehrere Erkennungsnamen für die einzelnen Varianten verfügen – z. B. sind MSIL/Spy.RedLine.A und MSIL/Spy.RedLine.B beide Erkennungen für die RedLine Stealer-Malware . Die Erkennungsnamen für einige andere Malware sind nicht nach Familie, sondern nach Klasse geordnet (z. B. ClipBanker oder Agent), da es sich bei vielen entpackten Malware-Beispielen um generische Clipboard-Stealer, Trojaner usw. handelt, die nicht so weit verbreitet sind und/oder nur geringfügig verbreitet sind modifizierte Varianten anderer bekannter Malware, die in verschiedenen öffentlichen Repositories veröffentlicht wurden. Nach der Gruppierung können wir schließen, dass nach dem Entpacken zu den gefundenen Malware-Familien SmokeLoader, RedLine Stealer, RanumBot, Raccoon Stealer, STOP ransomware, Amadey, Fareit, Pitou, Tofsee, Taurus, Phobos, Formbook, Danabot, Warzone und viele mehr gehören … Abbildung 2 zeigt eine Übersicht über die Probenmengen einiger der bekannten und weit verbreiteten Malware-Familien, die von AceCryptor gepackt werden.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 2. Malware-Familien, die in den Jahren 2021 und 2022 in AceCryptor gepackt wurden

Überwachungsaktivitäten von CaaS-Anbietern wie AceCryptor sind hilfreich für die Überwachung von Malware, die ihre Dienste nutzt. Betrachten Sie als Beispiel einen RedLine Stealer, der erstmals im ersten Quartal 1 gesehen wurde. Wie in Abbildung 2022 zu sehen ist, verwendeten RedLine Stealer-Distributoren AceCryptor seit Beginn der Existenz von RedLine Stealer und tun dies auch weiterhin. Die zuverlässige Erkennung von AceCryptor (und anderen CaaS) hilft uns daher nicht nur bei der Sichtbarkeit neu auftretender Bedrohungen, sondern auch bei der Überwachung der Aktivitäten von Bedrohungsakteuren.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 3. Vorfälle von RedLine Stealer in AceCryptor-Proben (7-Tage-Durchschnitt)

Victimology

Wie aufgrund der Vielfalt der in AceCryptor enthaltenen Malware und der Interessenvielfalt verschiedener Malware-Autoren zu erwarten ist, ist AceCryptor überall auf der Welt anzutreffen. In den Jahren 2021 und 2022 hat die ESET-Telemetrie über 240,000 Erkennungstreffer dieser Malware erkannt, was über 10,000 Treffern pro Monat entspricht. In Abbildung 4 sehen Sie die Länder mit den meisten Entdeckungen in den Jahren 2021 und 2022.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 4. Heatmap der von AceCryptor betroffenen Länder gemäß ESET-Telemetrie

In den Jahren 2021 und 2022 haben ESET-Produkte von AceCryptor gepackte Malware-Varianten auf mehr als 80,000 Kundencomputern erkannt und blockiert. Wir haben außerdem über 80,000 einzigartige Exemplare von AceCryptor entdeckt. Natürlich konnte jede Probe auf mehreren Computern erkannt werden oder ein Computer wurde mehrfach durch ESET-Software geschützt, aber die Anzahl der eindeutigen Hashes zeigt nur, wie aktiv die Autoren von AceCryptor an der Verschleierung und Umgehung der Erkennung arbeiten. Wir werden tiefer in die technischen Details der Verschleierungen von AceCryptor eintauchen Technische Analyse Teil dieses Blogposts.

Erwähnenswert ist hier, dass die Anzahl der darin enthaltenen Einzelproben zwar sehr hoch ist, aber weniger als 7,000 beträgt. Dies zeigt, wie sehr sich viele Malware-Autoren auf die Dienste eines Kryptors verlassen und wie bequem es für sie ist, für diese Art von Dienst zu bezahlen, anstatt Zeit und Ressourcen in die Implementierung einer eigenen Kryptor-Lösung zu investieren.

Vertrieb

Da AceCryptor von mehreren Bedrohungsakteuren verwendet wird, wird die von ihm gepackte Malware auch auf unterschiedliche Weise verbreitet. Laut ESET-Telemetrie wurden Geräte mit AceCryptor-Malware hauptsächlich über trojanisierte Installationsprogramme für Raubkopien oder Spam-E-Mails mit bösartigen Anhängen in Kontakt gebracht.

Eine andere Möglichkeit, wie jemand mit AceCryptor-verpackter Malware in Kontakt kommen kann, ist über andere Malware, die neue, durch AceCryptor geschützte Malware heruntergeladen hat. Ein Beispiel ist das Amadey-Botnetz, das wir beim Herunterladen eines mit AceCryptor gepackten RedLine Stealer beobachtet haben.

Wir möchten darauf hinweisen, dass dies in beide Richtungen funktioniert und einige der von AceCryptor geschützten Malware-Familien auch neue, zusätzliche Malware herunterladen können.

Technische Analyse

Derzeit verwendet AceCryptor eine mehrstufige, dreischichtige Architektur. Es gibt zwei bekannte Versionen der ersten Schicht, die derzeit verwendet werden – eine Version, die verwendet TEA (Tiny Encryption Algorithm) zum Entschlüsseln der zweiten Schicht und einer Version, die a verwendet linearer Kongruenzgenerator (LCG) von Microsoft Visual/Quick/C++, um die zweite Ebene zu entschlüsseln. Die zweite Schicht ist Shellcode, der Abwehrtricks ausführt, dann die dritte Schicht entschlüsselt und startet. Die dritte Schicht schließlich besteht aus mehr Shellcode, der auch einige Anti-Ermittlungstricks ausführt und dessen Aufgabe darin besteht, die Nutzlast zu starten. Es gibt zwei bekannte Versionen der dritten Schicht: Eine Version führt Process Hollowing durch, während die andere einen reflektierenden Loader verwendet und ihr eigenes Image mit dem PE der endgültigen Nutzlast überschreibt.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 5. Architektur von AceCryptor

Ebene 1

Obwohl es zwei Versionen von Layer 1 gibt, funktionieren sie sehr ähnlich. Ihre Hauptaufgaben lassen sich wie folgt zusammenfassen:

  1. Laden Sie verschlüsselte Schicht 2 in den zugewiesenen Speicher.
  2. Schicht 2 entschlüsseln.
  3. Rufen Sie an oder springen Sie zu Ebene 2.

Der wichtigste Teil dieser Phase sind die Verschleierungen. Im Laufe der Jahre wurden neue Verschleierungen hinzugefügt – bis zu dem Punkt, an dem fast jeder Teil der Binärdatei irgendwie zufällig ausgewählt und verschleiert wurde. Dies wird für jemanden, der versucht, YARA-Regeln oder statische Erkennungen zu entwickeln, große Probleme bereiten.

Schlaufen

Die Autoren nutzen Schleifen für mehrere Verschleierungen. Die erste und einfachste Technik besteht darin, Schleifen mit Junk-Code zu verwenden, um die Analyse zu erschweren. Seit 2016, als wir die ersten Exemplare von AceCryptor registrierten, beobachten wir die Verwendung von Junk-Code. Diese Schleifen sind mit vielen API-Aufrufen gefüllt, die nicht nur Analysten verlangsamen, die nicht wissen, was passiert, sondern auch die Protokolle von Sandboxes überlasten, die API-Aufrufe einbinden, und sie dadurch unbrauchbar machen. Die Schleifen können viele MOV-Anweisungen und mathematische Operationen enthalten, wiederum nur, um die Analysten zu verwirren und dadurch die Analysezeit zu verlängern.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 6. Verschleierungen von AceCryptor mit Schleifen und dem Verstecken wichtiger Teile des Codes

Die zweite Verwendung von Schleifen ist to Verzögerung erreichen. Wir haben beobachtet, dass einige Versionen von AceCryptor Layer 2 fast sofort starten, andere enthalten jedoch Schleifen, die so viel Zeit in Anspruch nehmen, dass sie die Ausführung sogar um mehrere zehn Minuten verlangsamen können: Die Verzögerung der Ausführung einiger Teile von Malware ist eine bekannte Technik, aber Die Verwendung von API-Aufrufen wie Sleep kann bereits einige Flags auslösen. Auch wenn nicht, mögen einige Sandkästen Kuckucksandkasten Implementieren Sie Techniken zum Überspringen des Schlafs, um Verzögerungen zu vermeiden und mit den interessanten Teilen fortzufahren. Auch die Implementierung von Verzögerungen über Schleifen und die Ausführung von Junk-Code stellt bei der dynamischen Analyse eine Komplikation dar, da der Analyst identifizieren muss, welche Schleifen Junk-Loops sind und daher übersprungen werden können.

Eine dritte Verschleierungstechnik mithilfe von Schleifen besteht darin, wichtige Operationen darin zu verbergen. Unter den Junk-Loops gibt es einige, die auf eine bestimmte Iteration warten und gerade während dieser Iteration etwas passiert. Normalerweise wird eine API mit geladen GetProcAddress, der später verwendet wird, oder eine Konstante wie der Offset der verschlüsselten Daten wird entlarvt. Wenn diese bestimmte Iteration einer Schleife nicht stattfindet, stürzt das Beispiel später ab. In Kombination mit Junk-Code bedeutet dies, dass man zur dynamischen Analyse der Malware zunächst analysieren muss, welche Schleifen oder Schleifeniterationen übersprungen werden können und welche nicht. Das bedeutet, dass der Analyst entweder Zeit damit verbringen kann, Junk-Code zu analysieren oder zu warten, bis der gesamte Junk-Code ausgeführt ist. In Abbildung 6 sehen Sie zwei Schleifen, wobei die erste einen Vorgang enthält, der für die spätere Ausführung wichtig ist, und die andere nur voller Junk-Code ist. Natürlich ist dies möglicherweise nicht bei allen Schleifen so leicht sichtbar (und ist es auch nicht in den meisten Beispielen), insbesondere wenn die Schleifen mit den wichtigen Operationen auch Junk-Code enthalten.

Randomisierung – Du sollst nicht YARA

Ein weiterer wichtiger Teil der ersten Ebene ist die Randomisierung. Junk-Code und die zuvor erwähnten Schleifen werden in jeder Stichprobe so randomisiert, dass:

  • die Anzahl der Iterationen ändert sich,
  • API-Aufrufe ändern sich,
  • die Anzahl der API-Aufrufe ändert sich und
  • Junk-Arithmetik oder MOV-Anweisungen ändern sich.

All diese Randomisierung kann auch die Identifizierung des Entschlüsselungsalgorithmus und der Schlüssel erheblich erschweren. In Abbildung 7 und Abbildung 8 sehen Sie die ursprüngliche, unverschleierte und die verschleierte Version des TEA-Algorithmus. In der verschleierten Version gibt es nicht nur Junk-Rechenanweisungen, sondern auch einige Teile des Algorithmus sind in Unterroutinen zusammengefasst und bekannte Konstanten (Summe und Delta in Abbildung 7) sind maskiert, nur um eine korrekte Identifizierung des Algorithmus unwahrscheinlich oder sicherlich schwieriger zu machen .

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 7. TEA-Entschlüsselungsfunktion – nicht verschleiert

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 8. TEA-Entschlüsselungsfunktion – verschleiert

Code ist nicht das Einzige, was zufällig ist. Der verschlüsselte Layer 2 und sein Entschlüsselungsschlüssel werden derzeit normalerweise im gespeichert .text or .data Abschnitt, aber sie werden durch einige Offsets ausgeblendet, die sich zwischen den Samples ändern. Außerdem nach erfolgreicher Entschlüsselung von Layer 2: In einigen Beispielen steht der Code von Layer 2 am Anfang der entschlüsselten Daten, aber es gibt Beispiele, bei denen am Anfang ein Block zufälliger Daten steht und Sie den richtigen Offset kennen müssen um den Anfang des Layer-2-Codes zu finden.

AceCryptor-Autoren randomisieren außerdem die folgenden Merkmale:

  • Der PDB-Pfad beginnt immer mit C:, aber der Rest des Pfades ist zufällig.
  • Ressourcen mit zufälligen Namen und Inhalten, wie in Abbildung 9 zu sehen ist. Die Autoren von AceCryptor füllen Stichproben mit zufällig generierten Ressourcen, die zufällig generierte Daten enthalten. Wir gehen davon aus, dass dies geschieht, um Proben weniger verdächtig zu machen und das Auffinden der tatsächlich verschlüsselten Daten zu erschweren. Ressourcen können Folgendes enthalten:
    • String-Tabellen
    • Menüs
    • Bitmaps
    • Binärdaten
  • Im Code verwendete Zeichenfolgen.
  • Symbole – obwohl die in vielen Beispielen verwendeten Symbole ähnlich aussehen, sind sie nur leicht modifiziert/randomisiert, um einzigartig zu sein.
  • Zufällige Dummy-Abschnittsnamen.
  • Speicherzuweisungsfunktionen für Layer-2-Daten – GlobalAlloc, LocalAlloc und VirtualAlloc.
  • Verwendung einiger APIs, die für die Codeausführung wichtig sind – sie können statisch importiert oder über abgerufen werden GetModuleHandleA und GetProcAddress.
Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 9. Die Ressourcen von AceCryptor werden zufällig mit zufällig generierten Inhalten generiert, um Proben weniger verdächtig zu machen

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 10. Zufällige Zeichenfolgen von AceCryptor in Ressourcen

Vorherige Versionen

Im Laufe der Jahre wurden die Autoren von AceCryptor immer kompetenter in der Entwicklung von Malware und der Kryptor veränderte sich und entwickelte sich weiter. Obwohl es viele kleinere Änderungen, Aktualisierungen und Verbesserungen gab, gehörten zu den interessanten Funktionen der älteren Versionen von Layer 1 die folgenden:

  • Im Jahr 2016 verwendete AceCryptor eine Version von Layer 1 mit dem XTEA-Verschlüsselungsalgorithmus.
  • Im Zeitraum 2017–2018 verwendete AceCryptor eine weitere Layer-1-Version, bei der der verwendete Verschlüsselungsalgorithmus RC4 war.
  • Die ersten (X)TEA- und LCG-Versionen von Layer 1 erschienen im Jahr 2016. Im Gegensatz zur LCG-Version geriet die XTEA-Version schnell in Vergessenheit und wurde durch die TEA-Version ersetzt.
  • In älteren Versionen befand sich der verschlüsselte Layer 2 in den Ressourcen, die in einem BMP-Image verborgen waren. Dieses Bild wurde zufällig mit zufälliger Breite und Höhe generiert, die Mitte des Bildes wurde ausgeschnitten und durch verschlüsselte Daten ersetzt. Die Daten mussten im richtigen Offset gefunden werden.

Ebene 2

Schicht 2 von AceCryptor erschien im Jahr 2019. Bis dahin startete AceCryptor Schicht 3 direkt von Schicht 1. Diese Schicht dient als zusätzliche Verschlüsselung und Schutz von Schicht 3 und besteht, wie Abbildung 11 zeigt, aus drei Teilen:

  • ortsunabhängiger Code,
  • eine benutzerdefinierte Struktur, die wir benannt haben L2_INFO_STRUCT, enthält Informationen über Layer 3 und
  • die Daten der Schicht 3
Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 11. Layer-2-Struktur von AceCryptor

Im ersten Schritt verwendet AceCryptor eine gängige Technik, um einige API-Funktionsadressen abzurufen. Es löst das GetProcAddress und LoadLibraryA Funktionen mithilfe der PEB_LDR_DATA zum Durchlaufen geladener Module und durch Vergleichen der Hashwerte ihrer Exportnamen mit fest codierten Werten. Als Prüfsummenfunktion verwendet AceCryptor a shl1_add Funktion, bereits implementiert in hashDb, wodurch die Identifizierung aufgelöster APIs schneller erfolgen kann.

Def hash(data): val = 0 for i in data: b = i b = 0xff & (b | 0x60) val = val + b val = val << 1 val = 0xffffffff & val return val

Abbildung 12. shl1_add Hash- umgesetzt in Python

Dann erhält AceCryptor ein Handle für kernel32.dll Verwendung von LoadLibraryA und nutzt das und GetProcAddress um weitere APIs aufzulösen.

Für die nächsten Schritte verwendet AceCryptor Informationen aus seiner benutzerdefinierten Struktur L2_INFO_STRUCT (dargestellt in Abbildung 13), der direkt am Ende des ortsunabhängigen Codes zu finden ist, wie in Abbildung 11 zu sehen ist.

Struct __unaligned __declspec(align(1)) L2_INFO_STRUCT
{ DWORD encryptedDataSize; DWORD keySeed; BYTE compressionFlag; DWORD decompressedDataSize; … //empty fields (padding or reserved for future use) filled with zeros
}

Abbildung 13. Übersicht über die L2_INFO_STRUCT ab Schicht 2

In den nächsten Schritten entschlüsselt AceCryptor Layer 3, der mit verschlüsselt wird LCG von Microsoft Visual/QuickC/C++. Die Entschlüsselung erfolgt an Ort und Stelle. Wenn die KompressionsFlag festgelegt ist, reserviert AceCryptor Speicher mit dem VirtualAlloc API und dekomprimiert die entschlüsselten Daten mit dem LZO_1Z-Dekomprimierungsalgorithmus. Danach springt die Ausführung in den entschlüsselten und optional dekomprimierten Layer 3.

Schicht 3 – Prozessaushöhlung

Im ersten Schritt ermittelt AceCryptor die Adressen von LoadLibraryA und GetProcAddress APIs auf die gleiche Weise wie in ` 2 – geladene Module durchlaufen, Exporte durchlaufen und verwenden shl1_add Prüfsummen. Dann erhält AceCryptor mehrere API-Funktionsadressen und DLL-Handles.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 14. Struktur der Schicht 3 von AceCryptor – Process Hollowing

Im nächsten Schritt nutzt AceCryptor die API GetFileAttributesA und prüft auf Dateisystemattribute einer aufgerufenen Datei apfHQ. Attribute werden mit a verglichen nicht vorhandene Kombination von Flags 0x637ADF und wenn sie gleich sind, endet das Programm in einer Endlosschleife. Da dies in der letzten Ebene zum Einsatz kommt, die bereits gut versteckt ist, und da dies hier nicht der einzige Trick ist, gehen wir davon aus, dass es sich hierbei nicht um eine weitere Verschleierungstechnik handelt, sondern eher um einen undokumentierten Anti-Sandbox-/Anti-Emulator-Trick gegen einen Unbekannten sondern eine bestimmte Sandbox/Emulator, die diesen Wert zurückgibt.

Wenn das Programm erfolgreich fortgesetzt wird, erfolgt noch eine weitere Anti-Sandbox-/Anti-Emulator-Prüfung. Jetzt verwendet AceCryptor die API RegisterClassExA um eine Klasse mit dem Klassennamen zu registrieren saodkfnosa9uin. Anschließend wird versucht, ein Fenster mit dem Namen zu erstellen mfoaskdfnoa Verwendung der CreateWindowExA API. Im letzten Schritt dieser Prüfung versucht AceCryptor, die APIs zu nutzen PostMessageA und GetMessageA eine Nachricht übermitteln. Da diese APIs nicht so häufig verwendet werden, hilft diese Prüfung dabei, Sandboxes/Emulatoren auszuweichen, die diese APIs nicht implementiert haben oder bei denen die emulierten APIs nicht ordnungsgemäß funktionieren.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 15. Anti-VM/Anti-Emulator-Trick

Nachdem diese Prüfungen erfolgreich bestanden wurden, verwendet AceCryptor die Prozessaushöhlungstechnik wo es eine neue Instanz des aktuellen Prozesses erstellt (GetCommandLineA, CreateProcessA), ordnet die endgültige Nutzlast dem neu erstellten Prozess zu und startet ihn.

Vorherige Versionen

Anti-Ermittlungstrick mit RegisterClassExA, CreateWindowExA, PostMessageA, GetMessageA war in früheren Versionen (z. B. SHA-1: 01906C1B73ECFFD72F98E729D8EDEDD8A716B7E3) wurde auf Schicht 1 verwendet und später (als es getestet wurde und die Architektur des Kryptors weiterentwickelt wurde) auf Schicht 3 verschoben.

Schicht 3 – Reflektierender Lader

Der erste Schritt ist seine Schicht, ähnlich Ebene 2 und Ebene 3 – Prozessaushöhlung, erhält Adressen der GetProcAddress und LoadLibraryA API-Funktionen. Der Unterschied besteht darin, dass die Autoren dieses Mal aus irgendeinem Grund das nicht verwendet haben shl1_add Prüfsummenfunktion, aber sie erhalten zuerst die GetProcAddress durch Durchlaufen geladener Module, Durchlaufen von Exporten und Vergleichen von Zeichenfolgen. Dann verwenden GetProcAddress sie erhalten die LoadLibraryA Funktion. Mithilfe dieser beiden APIs lädt AceCryptor Adressen einiger weiterer API-Funktionen und ein Handle dafür kernel32.dll.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 16. Struktur des Layer-3-Reflective-Loaders

Im Code gibt es einen Trick (siehe Abbildung 17), bei dem AceCryptor Code mit Daten mischt. AceCryptor steuert einen Wert, der nach einem Aufruf an die Rücksendeadresse gesendet wird. Dieser Wert ist standardmäßig auf Null gesetzt und später schreibt AceCryptor dort eine Adresse des Eintrittspunkts der endgültigen Nutzlast. Wenn das Programm gepatcht wird und der Wert auf einen Wert ungleich Null gesetzt wird, springt das Programm zu der Adresse, auf die dieser Wert zeigt, und stürzt ab.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 17. Code mit Daten mischen

Im nächsten Schritt führt AceCryptor einen bekannten Schritt durch Anti-VM aus der Ferne überprüfen richtet sich gegen Cuckoo Sandbox, IDA Pro+Bochs und Norman SandBox. In Abbildung 19 ist diese Flagge zu sehen SEM_NOALIGNMENTFAULTEXCEPT mit dem Wert 0x04 wird immer von der Cuckoo-Sandbox gesetzt, und aus diesem Grund ist der zweite Aufruf von SetErrorMode im Code aus Abbildung 18 wird nicht den gleichen Wert zurückgeben, der durch den vorherigen Aufruf festgelegt wurde.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Abbildung 18. Anti-VM-Trick

In den letzten Schritten prüft AceCryptor zunächst, ob die endgültige Nutzlast (erneut) komprimiert wurde und verwendet in diesem Fall die LZO_1Z-Dekomprimierung. Ähnlich wie Schicht 2 verwendet der reflektierende Lader der Schicht 3 eine benutzerdefinierte Struktur, die wir benannt haben ENCRYPTED_DATA_INFO_STRUCT (Abbildung 16), der direkt zwischen dem positionsunabhängigen Code und der endgültigen Nutzlast zu finden ist und Informationen wie Komprimierungsflag, Anzahl der Nutzlastabschnitte, (de)komprimierte Nutzlastgröße, Einstiegspunktadresse, Adressen einiger Verzeichnisse und Bilder enthält Umzugstabellenadresse usw. AceCryptor verwendet diese Informationen (im Gegensatz zu Schicht 3 – Prozessaushöhlung, das das PE der endgültigen Nutzlast analysiert), um eine reflektive Code-Ladetechnik durchzuführen, bei der es sein eigenes Bild mit dem Bild der endgültigen Nutzlast neu zuordnet (Abschnitte zuordnen, Bild neu basieren usw.) und die Nutzlast durch Aufrufen seines Einstiegspunkts startet.

Zusammenfassung

AceCryptor ist eine langlebige und weit verbreitete Krypto-Malware, die auf der ganzen Welt verbreitet ist. Wir gehen davon aus, dass es irgendwo in Dark Web-/Underground-Foren als CaaS verkauft wird. Dienste dieser Malware wurden von Dutzenden verschiedener Malware-Familien genutzt und viele von ihnen verlassen sich auf diesen Kryptor als Hauptschutz gegen statische Erkennungen.

Da die Schadsoftware von vielen Bedrohungsakteuren genutzt wird, kann jeder betroffen sein. Aufgrund der Vielfalt verpackter Malware ist es schwierig abzuschätzen, wie schwerwiegend die Folgen für ein kompromittiertes Opfer sind. AceCryptor wurde möglicherweise von anderer Malware gelöscht, die bereits auf dem Computer eines Opfers ausgeführt wurde, oder wenn das Opfer direkt betroffen war, beispielsweise durch das Öffnen eines bösartigen E-Mail-Anhangs, hat die darin enthaltene Malware möglicherweise zusätzliche Malware heruntergeladen. Daher kann es sehr schwierig sein, die beschädigte Maschine zu reinigen.

Auch wenn eine Zuordnung von AceCryptor zu einem bestimmten Bedrohungsakteur derzeit nicht möglich ist und wir davon ausgehen, dass AceCryptor weiterhin weit verbreitet sein wird, wird eine genauere Überwachung bei der Prävention und Entdeckung neuer Kampagnen von Malware-Familien helfen, die mit diesem Kryptor ausgestattet sind.

Bei Fragen zu unseren auf WeLiveSecurity veröffentlichten Forschungsergebnissen kontaktieren Sie uns bitte unter Bedrohungintel@eset.com.

ESET Research bietet private APT-Intelligence-Berichte und Daten-Feeds. Bei Fragen zu diesem Service besuchen Sie bitte die ESET Threat Intelligence 

IOCs

Mappen

Hinweis: Bei den aufgeführten Dateien handelt es sich um eine sinnvolle Auswahl von Beispielen im Laufe der Zeit, die verschiedene Versionen von AceCryptor abdecken oder unterschiedliche Malware enthalten.

SHA-1 Dateiname ESET-Erkennungsname Beschreibung
0BE8F44F5351A6CBEF1A54A6DE7674E1219D65B6 N / A Win32/Kryptik.HPKJ TEA-Version von Layer 1, mit darin verpacktem SmokeLoader.
0BE56A8C0D0DE11E0E97B563CAE6D1EE164F3317 N / A Win32/Kryptik.GOFF LCG-Version von Schicht 1, mit darin gepacktem SmokeLoader, Anti-Ermittlungstrick auf Schicht 2.
1E3D4230655411CB5F7C6885D7F947072B8F9F0F N / A Win32/Emotet.AW RC4-Version von Layer 1, mit darin gepacktem Emotet.
2FDD49A3F7D06FFFD32B40D35ABD69DEC851EB77 N / A Win32/Smokeloader.F TEA-Version von Layer 1, mit darin verpacktem SmokeLoader.
3AC205BE62806A90072524C193B731A1423D5DFD N / A Win32/Kryptik.GPCG TEA-Version von Layer 1, mit darin verpacktem SmokeLoader.
6ABF731B90C11FFBD3406AA6B89261CC9596FEFD N / A Win32/Kryptik.HRHP TEA-Version von Layer 1, mit darin verpacktem RedLine-Stealer.
8E99A5EC8C173033941F5E00A3FC38B7DEA9DCB3 N / A Win32/Kryptik.FKYH TEA-Version von Schicht 1, mit darin gepacktem Filecoder.Q, nächste Schicht im BMP-Bild.
15ADFFDA49C07946D4BD41AB44846EB673C22B2B N / A WinGo/RanumBot.B TEA-Version von Layer 1, mit darin gepacktem RanumBot, Verschleierung – zufälliger PDB-Pfad.
47DB52AB94B9A303E85ED1AA1DD949605157417E N / A Win32/Smokeloader.A TEA-Version von Layer 1, mit darin gepacktem SmokeLoader, Anti-Emulator-Trick auf Layer 1.
70BC8C2DC62CF894E765950DE60EC5BD2128D55B N / A Win32/Smokeloader.F TEA-Version von Layer 1, mit darin verpacktem SmokeLoader.
88B125DDA928462FDB00C459131B232A3CD21887 N / A Win32/Kryptik.GDTA TEA-Version von Schicht 1, mit Hermes im Inneren, Verschleierung – Maskierung von Werten.
90A443787B464877AD9EB57536F51556B5BA8117 N / A Win32/Kovter.C XTEA-Version von Layer 1, mit darin gepacktem Kovter.
249BED77C1349BE7EC1FC182AFCCB1234ADFACDF N / A Win32/Smokeloader.F TEA-Version von Layer 1, mit darin verpacktem SmokeLoader.
3101B17D73031384F555AE3ACD7139BBBAB3F525 N / A Win32/TrojanDownloader.Amadey.A TEA-Version von Layer 1, mit Amadey darin verpackt.
8946E40255B57E95BAB041687A2F0F0E15F5FFCE N / A Win32/Kryptik.GKIN LCG-Version von Schicht 1, mit darin gepacktem GandCrab, Verschleierung – benannte Abschnitte.
946082F225C76F2FFBE92235F0FAF9FB9E33B784 N / A Win32/Filecoder.Locky.C LCG-Version von Layer 1, mit Locky im Inneren.
A8ACF307EA747B24D7C405DEEF70B50B2B3F2186 N / A MSIL/Spy.RedLine.B LCG-Version von Layer 1, mit RedLine Stealer im Inneren.
F8039D04FF310CEF9CA47AC03025BD38A3587D10 N / A Win32/Smokeloader.F TEA-Version von Layer 1, mit darin verpacktem SmokeLoader.

Benannte Objekte

Objekttyp Objektname
Klasse saodkfnosa9uin
Window mfoaskdfnoa

MITRE ATT&CK-Techniken

Diese Tabelle wurde mit erstellt Version 12 der MITRE ATT&CK Unternehmenstechniken.

Taktik ID Name und Vorname Beschreibung
ausführung T1106 Native API AceCryptor ist in der Lage, einen Prozess mit dem zu starten CreateProcessA API.
Verteidigungsflucht T1497.003 Virtualisierung/Sandbox-Umgehung: Zeitbasierte Umgehung AceCryptor verwendet Schleifen mit beliebigem Code, um die Ausführung der Kernfunktionalität zu verzögern.
T1497.001 Virtualisierung/Sandbox-Umgehung: Systemprüfungen AceCryptor verwendet mehrere Techniken, um Sandboxes und Emulatoren zu erkennen.
T1140 Enthüllen/Dekodieren von Dateien oder Informationen AceCryptor verwendet TEA-, LCG-, XTEA- oder RC4-Verschlüsselung und LZO_1Z-Komprimierung, um positionsunabhängigen Code und Nutzdaten zu extrahieren.
T1027 Verschleierte Dateien oder Informationen AceCryptor maskiert Werte wie die Länge der Nutzlast, bekannte Konstanten von Entschlüsselungsalgorithmen oder den Entschlüsselungsschlüssel.
T1055.012 Prozessinjektion: Prozessaushöhlen AceCryptor kann einen neuen Prozess im angehaltenen Zustand erstellen, um die Zuordnung seines Speichers aufzuheben und ihn durch die versteckte Nutzlast zu ersetzen.
T1620 Reflektierendes Laden von Code AceCryptor kann einen reflektierenden Loader verwenden, um sein Image neu zu schreiben und es durch eine versteckte Nutzlast (Windows PE) zu ersetzen.

Beleuchten Sie AceCryptor und seinen Betrieb mit PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Zeitstempel:

Mehr von Wir leben Sicherheit