ESET-Forscher haben eine neue Cyberspionage-Gruppe entdeckt, die weltweit Hotels, Regierungen und Privatunternehmen ins Visier genommen hat. Wir haben diese Gruppe FamousSparrow genannt und glauben, dass sie mindestens seit 2019 aktiv ist.

Bei der Untersuchung der Angriffe ergab unsere Telemetrieanalyse, dass FamousSparrow  die im März 2021 ausführlich beschriebene Microsoft Exchange-Schwachstelle ProxyLogon ausnutzte. Laut der ESET-Telemetrie begann FamousSparrow schon am 03.03.2021, dem Tag nach der Veröffentlichung des Patches, die Schwachstellen auszunutzen.

In diesem Blogpost diskutieren wir, warum wir den Angriff FamousSparrow zuschreiben und die Zielauswahl der Gruppe. Darauf folgt eine detaillierte technische Analyse der hauptsächlich genutzten Backdoor der Gruppe, die wir SparrowDoor genannt haben.

Ein Hinweis zur Attribution

FamousSparrow ist, laut unseren Erkenntnissen, die derzeit einzige Gruppe, die die maßgeschneiderte Backdoor SparrowDoor nutzt (sie wird in den weiteren Abschnitten dieses Blogposts ausführlich beschrieben). Daneben verwendet sie auch zwei maßgeschneiderte Versionen von Mimikatz (siehe Abschnitt Indicators of Compromise), mittels derer eventuell weitere Vorfälle mit dieser Gruppe in Verbindung gebracht werden können.

Obwohl wir FamousSparrow als eigenständige Einheit betrachten, haben wir Verbindungen zu anderen bekannten APT-Gruppen gefunden. In einem Fall setzten die Angreifer eine Variante von Motnug ein, bei der es sich um einen von SparklingGoblin verwendeten Loader handelt. In einem anderen Fall fanden wir auf einer von FamousSparrow kompromittierten Maschine ein laufendes Metasploit mit cdn.kkxx888666[.]com als C&C-Server. Diese Domäne gehört zu einer Gruppe namens DRDControl.

Viktimologie

Nach unseren Erkenntnissen ist die Gruppe mindestens seit August 2019 aktiv und greift hauptsächlich Hotels in aller Welt an. Darüber hinaus konnten wir einige Ziele in weiteren Sektoren gesehen, wie Regierungen, internationale Organisationen, Ingenieurbüros und Anwaltskanzleien. Diese befanden sich in den folgenden Ländern:

  • Brasilien
  • Burkina Faso
  • Südafrika
  • Kanada
  • Israel
  • Frankreich
  • Guatemala
  • Litauen
  • Saudi Arabien
  • Taiwan
  • Thailand

Großbritannien

Figure 1. Geographic distribution of FamousSparrow targets

Abbildung 1. Geografische Verteilung der FamousSparrow -Ziele

Angriffsvektoren

In einigen Fällen konnten wir den anfänglichen Kompromittierungsvektor von FamousSparrow  finden. Diese Systeme wurden durch anfällige, mit dem Internet verbundene Webanwendungen kompromittiert. Wir glauben, dass FamousSparrow bekannte Sicherheitslücken bei der Remotecodeausführung in Microsoft Exchange (einschließlich der ProxyLogon-Schwachstelle im März 2021), Microsoft SharePoint und Oracle Opera (Geschäftssoftware für die Hotelverwaltung) ausgenutzt hat, um verschiedene bösartige Malware-Samples auf den Systemen zu droppen.

Sobald der Server kompromittiert wurde, setzten die Angreifer mehrere maßgeschneiderte Tools ein:

  • Eine Mimikatz-Variante
  • Ein kleines Dienstprogramm, das ProcDump auf der Festplatte ablegt und es verwendet, um den lsass-Prozess zu sichern, wahrscheinlich um speicherinterne Geheimnisse wie Anmeldeinformationen zu sammeln
  • Nbtscan, ein NetBIOS-Scanner
  • Ein Lader für die SparrowDoor-Hintertür

Durch unsere Telemetrie konnten wir nur die Loader-Komponente wiederherstellen (SHA-1: E2B0851E2E281CC7BCA3D6D9B2FA0C4B7AC5A02B). Außerdem fanden wir einen sehr ähnlichen Loader auf VirusTotal (SHA-1: BB2F5B573AC7A761015DAAD0B7FF03B294DC60F6), der es uns ermöglichte, die fehlenden Komponenten, einschließlich SparrowDoor, zu finden.

Analyse von SparrowDoor

Der Loader

SparrowDoor wird zunächst über DLL-Suchreihenfolgen-Hijacking geladen, wobei drei Elemente verwendet werden – eine legitime ausführbare K7-Computing-Datei (Indexer.exe), die als DLL-Hijacking-Host verwendet wird, eine bösartige DLL (K7UI.dll) und verschlüsselter Shellcode (MpSvc.dll) – alle davon werden in %PROGRAMDATA%\Software\ abgelegt. Es kann davon ausgegangen werden, dass das Befehlszeilenargument, das bei der anfänglichen SparrowDoor-Ausführung verwendet wird, um die Persistenz einzurichten, entweder nichts oder alles andere als -i, -k oder -d ist (die Funktionalitäten dieser drei Argumente werden unten erklärt). Sobald Persistenz erreicht wurde, wird SparrowDoor mit dem Befehlszeilenargument -i ausgeführt. Abbildung 2 für zeigt einen kurzen Überblick über den Ablauf des anfänglichen Malware-Ladevorgangs. Wenn Sie einen tieferen Einblick in den Ladevorgang wünschen, lesen Sie weiter!

Figure 2. SparrowDoor staging

Abbildung 2. SparrowDoor-Staging

Die legitime ausführbare Datei Indexer.exe benötigt die Bibliothek K7UI.dll, damit sie funktioniert. Daher sucht das Betriebssystem in Verzeichnissen in der vorgeschriebenen Ladereihenfolge nach der DLL-Datei. Da das Verzeichnis, in dem die Datei Indexer.exe gespeichert ist, die höchste Priorität in der Ladereihenfolge hat, ist es für DLL-Suchreihenfolgen-Hijacking verletzlich. Und auf genau diese Weise wird die Malware geladen: Indexer.exe lädt die bösartige K7UI.dll, die wiederum den Code in Indexer.exe patcht (von call WinMain zu jmp K7UI.0x100010D0) und dann zu Indexer.exe zurückkehrt. Infolgedessen führt Indexer.exe eine Subroutine in K7UI.dll aus (die sich im Abschnitt .text befindet), anstatt WinMain aufzurufen. Wir bezeichnen diese Subroutine im Weiteren als Launcher. Die Funktion des Launchers besteht darin, MpSvc.dll (den verschlüsselten Shellcode) aus dem Verzeichnis, in dem auch Indexer.exe gespeichert ist, in den Speicher zu laden, den Inhalt zu entschlüsseln und dann den Shellcode auszuführen.

Der Shellcode (MpSvc.dll) wird mit Vier-Byte-XOR verschlüsselt, wobei der Schlüssel den ersten vier Byte der Datei entspricht.

Der Shellcode MpSvc.dll lädt verschiedene Bibliotheken, die für den Aufbau einer PE-Struktur verantwortlich sind, und sucht die Adressen der zu verwendenden Funktionen. Danach weist er RWX-Speicher zu und kopiert verschiedene Stellen im Shellcode hinein (um die PE-Struktur aufzubauen). Er löst auch den Import mehrerer Funktionen aus verschiedenen Bibliotheken auf. Schließlich führt er das neu erstellte Backdoor-PE vom Einstiegspunkt aus. Interessanterweise hat dieses neu erstellte ausführbare Image keine PE-Header, wie in Abbildung 2 gezeigt. Der Loader führt die Hintertür dadurch aus, dass er zum Einstiegspunkt an einem fest codierten Offset innerhalb des zugewiesenen Speichers springt.

Abbildung 3. Der PE-Header fehlt in der neu erstellten Hintertür des MpSvc.dll-Shellcodes

Abbildung 3. Der PE-Header fehlt in der neu erstellten Hintertür des MpSvc.dll-Shellcodes

Die Backdoor

Die an die Backdoor übergebenen Argumente werden von den Argumenten geerbt, die an Indexer.exe oder an jede andere Binärdatei übergeben werden, die den Shellcode/die Backdoor injiziert bekommt. Die Aufgaben, die die Backdoor nach der Angabe eines Arguments ausführt, sind in Tabelle 1 aufgeführt.

Tabelle 1. Aktionen, die basierend auf den Befehlszeilenargumenten von SparrowDoor ausgeführt werden.

Argument Aktion
Kein Argument oder nicht mit den unten genannten übereinstimmend Die Persistenz wird über den Run-Schlüssel der Registrierung und einen Dienst festgelegt, der mit den in der Binärdatei fest codierten Konfigurationsdaten (beschrieben im nächsten Abschnitt) erstellt und gestartet wird. Abschließend wird die Backdoor mit dem Schalter -i neu gestartet.
-i Die Backdoor wird mit -k neu gestartet.
-k Der Backdoor-Interpreter (wird später beschrieben) wird mit einem Kill-Switch aufgerufen.
-d Der Backdoor-Interpreter wird ohne Kill-Switch aufgerufen.

Hinweis:

  1. Der Kill-Switch gibt der Hintertür die Berechtigungen, um SparrowDoor zu deinstallieren oder neu zu starten.
  2. Der Backdoor-Interpreter wird unabhängig vom verwendeten Argument aufgerufen, da er immer mit einem -k- oder -d-Argument endet.

Konfigurationsdaten für SparrowDoor

Die Konfiguration befindet sich in der Binärdatei und wird mit dem Multi-Byte-XOR-Schlüssel ^&32yUgf  entschlüsselt. Die Konfiguration hat folgendes Format:

struct config
{
     char domain[64];
     char user [64];
     char pass[64];
     char ip[64];
     char port[2];
     char serviceName[64];
     char serviceDisplayName[128];
     char serviceDescription[128];
};

Die entschlüsselten Werte sind in Tabelle 2 aufgeführt.

Tabelle 2. Die Schlüssel-Wert-Paare der Konfiguration zusammen mit einer Beschreibung ihres Zwecks

Key Value Purpose
domain credits.offices-analytics[.]com C&C server domain
user user Proxy-Einstellungen für die Verbindung zum C&C-Server
pass pass #rowspan#
ip 127.1.1.1 #rowspan#
port 8080 #rowspan#
serviceName WSearchIndex Informationen, die zum Erstellen eines Dienstes zum Einrichten der Persistenz verwendet werden. Beachten Sie auch, dass serviceName als Wertname unter dem Run-Schlüssel in der Registrierung verwendet wird
serviceDisplayName Windows Search Index #rowspan#
serviceDescription Stellt Inhaltsindizierung, Eigenschaftszwischenspeicherung und Suchergebnisse für Dateien, E-Mail und anderen Inhalt bereit. #rowspan#

Die Verbindungen können entweder über einen Proxy erfolgen oder nicht, und sie verbinden die Backdoor über Port 443 (HTTPS) mit dem C&C-Server. Daher sollte die Kommunikation mit TLS verschlüsselt sein. Beim ersten Versuch, den C&C-Server zu kontaktieren, prüft SparrowDoor, ob eine Verbindung ohne Proxy hergestellt werden kann, und wenn nicht, werden die Daten über einen Proxy gesendet. Alle ausgehenden Daten werden mit dem XOR-Schlüssel hH7@83#mi verschlüsselt und alle eingehenden Daten mit dem XOR-Schlüssel h*^4hFa entschlüsselt. Die Daten haben eine Struktur, die mit einer Befehls-ID beginnt, gefolgt von der Länge der folgenden verschlüsselten Daten, danach gefolgt von den verschlüsselten Daten.

Abbildung 4 zeigt ein Beispiel dafür, wie die Daten an den C&C-Server gesendet werden (in diesem Fall sendet er Systeminformationen), während Abbildung 5 die Klartextform derselben Datennutzlast zeigt.

Abbildung 4. Ein Wireshark-Dump mit den von der Backdoor gePOSTeten Daten

Abbildung 4. Ein Wireshark-Dump mit den von der Backdoor gePOSTeten Daten

Figure 5. The decrypted data containing system information

Abbildung 5. Die entschlüsselten Daten mit Systeminformationen

Die lokale IP-Adresse des Opfers kann in diesem Fall in eine Dezimalzahl umgewandelt werden, was 192.168.42.1 ergibt.

Die Session-ID ist die Session-ID der Remotedesktopdienste, die dem Backdoor-Prozess zugeordnet ist und mithilfe des Windows-API-Aufrufs ProcessIdToSessionId gefunden wird.

Der systemInfoHash wird über den sdbm-Hash-Algorithmus unter Verwendung des Benutzernamens, des Computernamens, der Hostadressen und der Sitzungs-ID berechnet.

Die Backdoor-Interpreterfunktion

Die Rechteeskalation wird in dieser Funktion durchgeführt, indem das Zugriffstoken des SparrowDoor-Prozesses angepasst wird, um SeDebugPrivilege zu aktivieren. Danach wird die shutdown-Funktion (Ws2_32.dll) gepatcht, um das Deaktivieren von Sende- und Empfangsvorgängen auf einem Socket zu verhindern. Die closesocket-Funktion (Ws2_32.dll) wird gepatcht, damit die DONT_LINGER-Option zuerst den Socket schließt, ohne darauf zu warten, dass ausstehende Daten gesendet oder empfangen werden. Schließlich werden Systeminformationen an den C&C-Server gesendet (wie in den Abbildungen 4 und 5 oben gezeigt), um im Gegenzug Daten zurück zu erhalten.

Basierend auf dem Befehls-ID-Feld in den vom C&C-Server empfangenen Daten kann die Hintertür verschiedene bösartige Aktionen ausführen, die in Tabelle 3 detailliert aufgeführt sind.

Tabelle 3. Aktionen, die von SparrowDoor ausgeführt werden, wenn die entsprechenden Befehls-IDs empfangen werden:

Befehls-ID Aktion
0x1C615632 Der aktuelle Prozess wird geschlossen.
0x1DE15F35 Ein untergeordneter svchost.exe-Prozess wird mit processToken-Informationen des vom C&C-Server angegebenen Prozesses (Prozess-ID) mit dem Argument -d gestartet und dann wird der Shellcode in den Prozess eingefügt.
0x1A6B561A Ein Verzeichnis wird mit dem vom C&C-Server bereitgestellten Namen erstellt.
0x18695638 Eine Datei wird umbenannt. Sowohl die umzubenennende Datei als auch der neue Name werden vom C&C-Server bereitgestellt.
0x196A5629 Eine Datei wird gelöscht, wie in den eingehenden Daten angegeben.
0x17685647 Wenn die Länge der Daten 1 ist und die Daten mit $ übereinstimmen, wird die Länge von systemInfoHash zusammen mit einem Array von Laufwerkstypen gesendet.
Wenn die Länge der Daten größer als 2 ist und die ersten 2 Bytes der Daten mit $\ übereinstimmen, werden Informationen über die Dateien in einem angegebenen Verzeichnis gesendet. Die enthaltenen Informationen sind die folgenden: Dateiattribute, Dateigröße und Dateischreibzeit.
0x15665665 Ein neuer Thread wird erstellt, um den Inhalt einer angegebenen Datei zu exfiltrieren.
0x16675656 Wenn der Kill-Switch aktiviert ist, werden die aktuellen Persistenzeinstellungen (Registrierung und Dienst) entfernt und die Datei Indexer.exe ausgeführt (um den Dropper neu zu starten). Wenn nicht, wird die Backdoor-Schleife neu gestartet.
0x14655674 Ein neuer Thread wird erstellt, um die Daten in eine angegebene Datei zu schreiben.
0x12635692 Wenn der Kill-Switch aktiviert ist, werden die Persistenzeinstellungen entfernt und alle von SparrowDoor verwendeten Dateien (Indexer.exe, K7UI.dll und MpSvc.dll) werden entfernt. Wenn nicht, wird die Backdoor-Schleife neu gestartet.
0x13645683 Stimmen die Daten mit „switch“ überein, dann wird die Backdoor mit dem Schalter -d neu gestartet.
Wenn nicht, erzeugt es eine cmd.exe-Shell und richtet Named Pipes für Ein- und Ausgabe ein (die vom C&C-Server verwendet werden), um eine interaktive Reverse-Shell einzurichten.
Wenn die Daten mit Exit\r\n übereinstimmen, wird die erzeugte Shell beendet.
Sonstiges Startet die Backdoor-Schleife neu.

Fazit

FamousSparrow  ist eine weitere APT-Gruppe, die Anfang März 2021 Zugriff auf die Schwachstelle ProxyLogon Remote Code Execution hatte. Sie nutzte in der Vergangenheit bekannte Schwachstellen in Serveranwendungen wie SharePoint und Oracle Opera aus. Dies ist eine weitere Mahnung daran, wie wichtig es ist, mit dem Internet verbundene Anwendungen möglichst schnell zu patchen oder, falls ein schnelles Patchen nicht möglich ist, sie überhaupt nicht mit dem Internet zu verbinden.

Die Ziele, das Regierungen weltweit einschließt, legen nahe, dass die Absicht von FamousSparrow  Spionage ist. Wir haben einige Links zu SparklingGoblin und DRBControl hervorgehoben, aber wir sind der Meinung, dass diese Gruppen nicht identisch sind.

Eine umfassende Liste von Indicators of Compromise (IoCs) und Beispielen finden Sie in unserem GitHub-Repository.

Bei Fragen oder um Mustereinsendungen zu diesem Thema zu senden, kontaktieren Sie uns unter threatintel@eset.com.

Indicators of Compromise

UPDATE (13. Oktober 2021): Die IP-Adresse 45.192.178[.]206 wurde aus den Indicators of Compromise entfernt. Dies war ein Fehler unsererseits.

SHA-1 Filename ESET detection name Description
B9601E60F87545441BF8579B2F62668C56507F4A p64.exe
debug.log
Win64/Riskware.Mimikatz.H Mimikatz
4DF896624695EA2780552E9EA3C40661DC84EFC8 p64.exe
debug.log
Win64/Riskware.Mimikatz.H Mimikatz
76C430B55F180A85F4E1A1E40E4A2EA37DB97599 dump.exe Win64/Kryptik.BSQ Lsass dumper
873F98CAF234C3A8A9DB18343DAD7B42117E85D4 nbtscan.exe Win32/NetTool.Nbtscan.A Nbtscan
FDC44057E87D7C350E6DF84BB72541236A770BA2 1.cab Win32/FamousSparrow.A Dropper
C36ECD2E0F38294E1290F4B9B36F602167E33614 Indexer.exe - Legitimate K7 Computing binary
BB2F5B573AC7A761015DAAD0B7FF03B294DC60F6 K7UI.dll Win32/FamousSparrow.A Loader
23E228D5603B4802398B2E7419187AEF71FF9DD5 MpSvc.dll Encrypted shellcode
2560B7E28B322BB7A56D0B1DA1B2652E1EFE76EA - - Decrypted shellcode
E2B0851E2E281CC7BCA3D6D9B2FA0C4B7AC5A02B K7UI.dll Win32/FamousSparrow.B Loader

Domain IP address Comment
credits.offices-analytics[.]com - SparrowDoor C&C server
- 27.102.113[.]240 Delivery domain

MITRE ATT&CK techniques

This table was built using version 9 of the MITRE ATT&CK framework.

Tactic ID Name Description
Resource Development T1588.005 Obtain Capabilities: Exploits FamousSparrow used RCE vulnerabilities against Microsoft Exchange, SharePoint and Oracle Opera.
T1583.001 Acquire Infrastructure: Domains FamousSparrow purchased a domain at Hosting Concepts.
T1583.004 Acquire Infrastructure: Server FamousSparrow rented servers at Shanghai Ruisu Network Technology and DAOU TECHNOLOGY.
Initial Access T1190 Exploit Public-Facing Application FamousSparrow used RCE vulnerabilities against Microsoft Exchange, SharePoint and Oracle Opera.
Execution T1059.003 Command and Scripting Interpreter: Windows Command Shell FamousSparrow used cmd.exe to run commands to download and install SparrowDoor.
T1203 Exploitation for Client Execution FamousSparrow used RCE vulnerabilities in Microsoft Exchange, SharePoint and Oracle Opera to install SparrowDoor.
Persistence T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder SparrowDoor achieves persistence through the HKCU Run registry value WSearchIndex = \Indexer.exe -i registry entry.
T1543.003 Create or Modify System Process: Windows Service FamousSparrow installs SparrowDoor as a service named WSearchIndex.
T1574.001 Hijack Execution Flow: DLL Search Order Hijacking FamousSparrow loads the malicious K7UI.dll through DLL search order hijacking.
Defense Evasion T1055.001 Process Injection: Dynamic-link Library Injection MpSvc.dll (shellcode) is injected into processes by SparrowDoor.
T1134.002 Access Token Manipulation: Create Process with Token SparrowDoor creates processes with tokens of processes specified by the C&C server, using the CreateProcessAsUserA API.
T1134 Access Token Manipulation SparrowDoor tries to adjust its token privileges to receive SeDebugPrivilege.
T1027 Obfuscated Files or Information The shellcode, MpSvc.dll, is encrypted using XOR, along with the config embedded within SparrowDoor.
Credentials Access T1003 OS Credential Dumping FamousSparrow makes use of a custom Mimikatz version.
Discovery T1082 System Information Discovery SparrowDoor collects the username, computername, RDP session ID, and drive types in the system and sends this data to the C&C server.
T1083 File and Directory Discovery SparrowDoor can probe files in a specified directory obtaining their names, attributes, sizes and last modified times, and sends this data to the C&C server.
Collection T1005 Data from Local System SparrowDoor has the ability to read file contents and exfiltrate them to the C&C server.
Command and Control T1071.001 Application Layer Protocol: Web Protocols SparrowDoor communicates with the C&C server using the HTTPS protocol.
T1573.001 Encrypted Channel: Symmetric Cryptography SparrowDoor encrypts/decrypts communications with its C&C server using different multi-byte XOR keys.
Exfiltration T1041 Exfiltration Over C2 Channel SparrowDoor exfiltrates data over its C&C channel.