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
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!
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.
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:
- Der Kill-Switch gibt der Hintertür die Berechtigungen, um SparrowDoor zu deinstallieren oder neu zu starten.
- 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.
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 = |
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. |