Was passiert, wenn Computer durch eine Backdoor kompromittiert und von Cyberkriminellen gesteuert werden? Diese Frage ist nicht ganz leicht zu beantworten – selbst mit Hilfe von Reverse Engineering lassen sich nicht alle Steuerbefehle rekonstruieren.
Die Sednit-Gruppe ist auch unter den Synonymen APT28, Fancy Bear, Sofacy und Strontium bekannt. Die Cyberkriminelle agieren seit mindesten 2004 und gelangten in den vergangenen Jahren auch immer wieder in die Schlagzeilen.
Vor nicht gar zu langer Zeit offenbarten wir die Existenz des UEFI Rootkit LoJax, welches wir der Sednit-Gruppe zuordnen. Bei keiner anderen APT-Gruppierung zuvor entdeckten wir ein UEFI-Rootkit. Das verdeutlicht, dass Sednit einen Zugang zu sehr fortgeschrittenen Tools besitzt, welche sie in ihren Cyber-Spionage-Tätigkeiten unterstützen.
Vor etwa drei Jahren begann Sednit neue Malware-Komponenten an Opfer aus Ländern des Mittleren Ostens und Zentralasiens auszuprobieren. Seitdem stieg die Anzahl an diversen Malware-Komponenten dramatisch. ESET-Forscher und Kollegen anderer Antivirenprogramm-Hersteller dokumentierten das. In diesem Beitrag fokussieren wir uns auf das, was passiert, wenn die Cyberkriminellen mit Hilfe der Zebrocy Delphi Backdoor die Steuerung des Computers übernehmen.
Sednits Phishing-Kampagne
Ende August des Jahres 2018 initiierte die Sednit-Gruppe eine Spearphishing-E-Mail-Kampagne. Die Phishing-Mails enthielten gekürzte URLs, welche die First Stage der Zebrocy Backdoor auslieferten. In der Vergangenheit griffen die Cyberkriminellen auf ähnliche Techniken zurück, um Login-Informationen abzugreifen. Es ist allerdings ungewöhnlich, dass die Cyber-Gang auf diese Weise nun auch eine ihrer Malware-Komponenten direkt verbreitet. Davor sorgten Social Engineering und Exploits dafür, dass die First Stage Malware verteilt und ausgeführt wurde.
Die Abbildung 1 zeigt eine Statistik von Bit.ly über die Klickzahlen auf eine gekürzte URL aus der 2018er-Kampagne.
In einer Woche registrierte der URL-Shortener-Dienst etwa 20 Klicks auf die URL, die zu einem schädlichen ZIP-Archiv führte. Das bedeutet nicht unbedingt, dass es 20 potenzielle Zebrocy-Opfer gibt, da manche beispielsweise zweimal auf die URL klickten, weil sie dahinter etwas anderes vermuteten.
Zwar deuten ESET-Telemetrie-Daten an, dass die URL durch Spearphishing-E-Mails verteilt wurde, allerdings haben wir kein Sample einer solchen E-Mail zu Gesicht bekommen. Die gekürzte URL führt die Opfer zu einer IP-Adresse, unter der das schädliche ZIP-Archiv gelegen ist.
Ohne die betrügerischen E-Mails, können wir leider nicht wissen, ob sich darin irgendwelche Anweisungen für die Opfer oder weiterführende Social Engineering Taktiken verbargen – oder ob sich die Sednit-Gruppierung bloß auf die Neugier der anvisierten Opfer verließ.
Das ZIP-Archiv enthält zwei Dateien – eine ausführbare .exe-Datei und einen Köder im PDF-Format.
Der Dateiname der .exe-Datei müsste eigentlich „ДОВIДНИК“ anstelle von „ДОВIДНIК“ lauten. Nach dem Öffnen der Binary erscheint ein Passwort-Dialogfenster. Ein richtiges Kennwort kann hier nicht eingegeben werden. Das ist allerdings auch zweitrangig, denn es geht nur darum, dass sich nach dem Eingabeversuch das Köder-PDF-Dokument öffnet. Das Dokument scheint leer zu sein, aber der in Delphi geschriebene Downloader beginnt im Hintergrund seine Aktivität aufzunehmen.
Das Zebrocy-Backdoor als Mittel zum Zweck
Der Stage-1-Downloader lädt einen neuen, in C++ geschriebenen Downloader herunter und führt diesen aus. Von anderen Zebrocy-Downloadern unterscheidet er sich kaum. Der Downloader ist so unkompliziert aufgebaut wie jene anderen. Der Stage-1-Downloader erstellt eine ID und lädt eine weitere interessante Backdoor herunter, welche diesmal in Delphi geschrieben ist.
Wie wir im letzten Beitrag über Zebrocy bereits schilderten, liegt die Konfiguration der Backdoor in der Resource Section, welche in vier unterschiedliche, hex-codierte, verschlüsselte BLOBs unterteilt ist. Diese BLOBs beinhalten verschiedene Teile der Backdoor-Konfiguration.
Sendet die Backdoor grundlegende Informationen über das jüngst kompromittierte System, übernimmt ein Malware-Operator die Kontrolle über die Backdoor und füttert diese mit ausgewählten Befehlen. Die Zeit zwischen dem Öffnen des Downloaders durch den User und der Computer-Übernahme durch den Malware-Operator beträgt nur wenige Minuten.
Das Delphi-Backdoor im Einsatz
In diesem Abschnitt beschreiben wir detaillierter, welche manuellen Befehle an das Delphi-Backdoor gesendet werden.
Die zur Verfügung stehenden Backdoor-Befehle befinden sich im „commands“-BLOB – siehe Abbildung 3. Die Anzahl an unterstützen Kommandos hat sich im Verlauf der Zeit erhöht. In der neusten Backdoor-Version sind es nun schon mehr als 30 Befehle. Wir identifizierten kein Muster, nach dem die Befehle aufgerufen werden. Deshalb gehen wir davon aus, dass die Cyberkriminellen die Kommandos manuell aufrufen.
Der erste Befehlssatz sammelt Informationen über den Computer und die Umgebung des Systems:
Commands | Arguments |
---|---|
SCREENSHOT | None |
SYS_INFO | None |
GET_NETWORK | None |
SCAN_ALL | None |
Normalerweise werden die obigen Befehle nach der ersten Aktivierung einer neuen Backdoor ausgeführt. Sie benötigen keine weiteren Argumente und sind recht selbsterklärend. Es gibt aber auch Kommandos, die weitere Argumente benötigen:
Commands | Arguments |
---|---|
REG_GET_KEYS_VALUES | HKEY_CURRENT_USER Software\Microsoft\Windows\CurrentVersion |
DOWNLOAD_DAY(30) | c:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg;*.jpeg; *.bmp;*.rar;*.zip;*.pdf;*.KUM;*.kum;*.tlg;*.TLG;*.sbx;*.crf;*.hse;*.hsf;*.lhz; d:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg;*.jpeg; |
DOWNLOAD_DAY(1) | c:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg*.jpeg *.bmp*.rar;*.zip;*.pdf;*.KUM;*.kum;*.tlg;*.TLG;*.sbx;*.crf;*.hse;*.hsf; d:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg*.jpeg |
CMD_EXECUTE | echo %APPDATA% ipconfig /all netstat -aon |
CMD_EXECUTE | wmic process get Caption,ExecutablePath reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /s |
Alle diejengen, die bereits den letzten Zebrocy-Artikel gelesen haben, werden bemerkt haben, dass immer dieselben Informationen gesendet werden. Die Informationen werden innerhalb weniger Minuten nach der ersten Kompromittierung angefordert, und die Datenmenge, mit der der Malware-Operator umgehen muss, ist beträchtlich.
Noch mehr Informationen sammeln die Zebrocy-Operatoren mit Hilfe von Dumpern auf den Computersystemen der Opfer. Die gefundenen Dumper besitzen eine gewisse Ähnlichkeit zu denjenigen, welche die Gruppe bereits vorher einsetzte. Im aktuellen Fall haben es die Dumper auf Yandex Browser, Chromium, 7Star Browser (ein Chromium-basierter Browser) und CentBrowser sowie Versionen von Microsoft Outlook von 1997 bis 2016 abgesehen:
Command | Arguments |
---|---|
UPLOAD_AND_EXECUTE_FILE | C:\ProgramData\Office\MS\msoffice.exe […] 4D5A9000… |
Die Dumper erstellen Protokolldateien, die das Vorhandensein oder Nichtvorhandensein prinzipiell interessanter Datenbanken angeben:
Command | Arguments |
---|---|
DOWNLOAD_LIST | C:\ProgramData\Office\MS\out.txt C:\ProgramData\Office\MS\text.txt |
Ein Dumper aus unseren Forschungen gibt folgende Ausgabe zurück, wenn keine Datenbank gefunden werden kann:
%LOCALAPPDATA%\Yandex\YandexBrowser\User Data\Default\Login Data not found
%LOCALAPPDATA%\Chromium\User Data\Default\Login Data not found
%LOCALAPPDATA%\7Star\7Star\User Data\Default\Login Data not found
%LOCALAPPDATA%\CentBrowser\User Data\Default\Login Data not found
Sobald die Daten-Dumper ihre Arbeit erledigt haben, verschwinden sie schnell wieder vom System. Die Backdoor enthält eine Liste von Datenbanken, unten denen Login-Informationen zu folgenden Softwares zu finden sind:
key3.db | Firefox private keys (now named key4.db) |
---|---|
cert8.db | Firefox certificate database |
logins.json | Firefox encrypted password database |
account.cfn | The Bat! (email client) account credentials |
wand.dat | Opera password database |
Die Malware-Operatoren sorgen dafür, dass die Datenbanken abgerufen werden, wenn sie auf dem Computer des Opfers auftauchen.
Command | Arguments |
---|---|
DOWNLOAD_LIST |
%APPDATA%\The Bat!\Account.CFN %APPDATA%\The Bat!\[REDACTED]\Account.CFN |
Ihnen gelingt das mit Hilfe des Befehls DOWNLOAD_LIST. Diesen Befehl können sie immer dann verwenden, wenn man interessante Dateien auf dem fremden Computer vermutet.
Erweist sich das Sednit-Opfer als interessant genug, schieben die Malware-Entwickler eine andere spezialangefertigte Backdoor hinterher. Diese wird mit Hilfe des CMD_EXECUTE-Befehls ausgeführt.
Command | Arguments |
CMD_EXECUTE |
|
An dieser Stelle offenbaren sich einige interessante Tatsachen. Zunächst benutzen die Cyberkriminellen COM Object Hijacking, um der Malware Persistenz zu verleihen, selbst wenn das Custom Backdoor nur ein paar Stunden auf dem Computer des Opfers installiert bleibt.
Des Weiteren gibt die hexadezimal codierte Zeichenfolge den C&C-Server der Custom Backdoor an, wohingegen der C&C-Server der Delphi Backdoor in der Konfiguration eingebettet ist.
Beide Delphi Backdoors ähneln sich gewissermaßen, unterscheiden sich aber durch folgende Tweaks:
Delphi backdoor | Downloaded Delphi backdoor | |
---|---|---|
Delphi compiler version | 14.0-15.0 | 32.0 |
32/64-bit | 32-bit | 64-bit |
Configuration location | resource section | no config (C&C is passed as an argument) |
Number of commands | 5 | 3 |
Encryption algorithm | AES ECB | custom |
Lifetime on the computer | a few days | a few hours |
Es ist nicht ganz klar, wozu genau die Custom Backdoor dient. Im Vergleich zur „üblichen“ Delphi Backdoor wird sie allerdings weniger oft enttarnt. Der vergleichsweise kurze Zeitraum, in dem sich die Custom Backdoor auf dem Computersystem der Opfer befindet, erschwert eine Entdeckung.
Fazit
Die Beobachtung von Backdoor-Befehlen „in freier Wildbahn“ ist sehr interessant. Die Malware sammelt viele Daten über das Computersystem des Opfers. Um doppelte Informationen scheinen sich die Cyberkriminellen nicht zu kümmern. Insgesamt zeigt sich eine große Lücke zwischen der Entwicklungsstrategie und dem, wie die Zebrocy-Operatoren letztendlich agieren.
Custom Backdoors werden sehr vorsichtig eingesetzt. Offensichtlich möchte man vermeiden, dass der Code der Hintertür in die Arme von Security Researchern fällt.
Indicators of Compromise (IoCs)
Distribution URL |
---|
http://45.124.132[.]127/DOVIDNIK - (2018).zip |
C&C server |
---|
http://45.124.132[.]127/action-center/centerforserviceandaction/service-and-action.php |
SHA-1 | ESET detection names |
---|---|
48f8b152b86bed027b9152725505fbf4a24a39fd | Win32/TrojanDownloader.Sednit.CMT |
1e9f40ef81176190e1ed9a0659473b2226c53f57 | Win32/HackTool.PSWDump.D |
bfa26857575c49abb129aac87207f03f2b062e07 | Win32/PSW.Agent.OGE |
MITRE ATT&CK techniques
Tactic | ID | Name | Description |
---|---|---|---|
Initial Access | T1192 | Spearphishing Link | Spearphishing emails using a URL-shortener service to trick the victim into clicking on a link to a zip file containing malicious files. |
Execution | T1204 | User Execution | Tricks users into running an executable with an icon that looks like a Microsoft Word document. |
T1085 | Rundll32 | rundll32.exe has been used to run a new, downloaded, malicious DLL. | |
T1047 | Windows Management Instrumentation | WMI commands to gather victim host details. | |
T1053 | Scheduled Task | Schedule task to execute malicious binaries. | |
Persistence | T1060 | Registry Run Keys / Startup Folder | Registry key HKCU\Software\Microsoft\CurrentVersion\Run\ used for persistence. |
T1122 | Component Object Model Hijacking | COM hijacking for persistence. | |
Defense Evasion | T1107 | File Deletion | Deletes files (binaries and files created) after usage. |
T1089 | Disabling Security Tools | Kills processes | |
Discovery | T1012 | Query Registry | Registry keys enumeration |
T1057 | Process Discovery | Lists running processes | |
T1082 | System Information Discovery | Uses systeminfo command to gather information about the victim. | |
T1083 | File and Directory Discovery | Uses echo ENV command to list the content of a directory. | |
Collection | T1005 | Data from Local System | Scans files that match extensions listed in the malware. |
T1039 | Data from Network Shared Drive | Enumerates remote and local drives and then exfiltrates files matching specific extensions. | |
T1025 | Data from Removable Media | Enumerates remote and local drives and then exfiltrates files matching specific extensions. | |
T1074 | Data Staged | Creates file containing path of all files to exfiltrate. | |
T1056 | Input Capture | Keylogger feature. | |
T1113 | Screen Capture | Screenshot feature. | |
Exfiltration | T1020 | Automated Exfiltration | Automatically prepare a file with all file paths to retrieve and send it. |
T1022 | Data Encrypted | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. | |
T1041 | Exfiltration Over Command and Control Channel | Data are exfiltrated to a C&C server. | |
Command And Control | T1043 | Commonly Used Port | Downloaders and backdoors use ports 80 or 443 to communicate with the C&C server. |
T1024 | Custom Cryptographic Protocol | Data sent are hex encoded, encrypted with AES or a custom algorithm. | |
T1132 | Data Encoding | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. | |
T1001 | Data Obfuscation | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. | |
T1008 | Fallback Channels | A fallback C&C server is embedded in the configuration. | |
T1079 | Multilayer Encryption | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. | |
T1071 | Standard Application Layer Protocol | HTTP, HTTPS are used to communicate. | |
T1032 | Standard Cryptographic Protocol | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. |