
Ende Juli 2019 haben wir ein interessantes Beispiel
für TA505-Malware entdeckt . Am 22. Juli 2019 wurde es zur dynamischen Analyse auf ANY.RUN hochgeladen. Unsere Aufmerksamkeit wurde auf die Tatsache gelenkt, dass unter den exponierten Tags zusätzlich zu den für den TA505 Servhelper üblichen auch das Netsupport-Tag angezeigt wurde und unter den Netzwerksignaturbränden der gleiche Name NetSupport RAT identifiziert wurde.
Abb. 1. Downloaddatum für Malware und Tags, die im Online-Analysator ANY.RUN festgelegt wurden
Abb. 2. Auslösen der Netzwerksignatur auf NetSupport RAT in der Sandbox ANY.RUNAuf den ersten Blick mag dies seltsam erscheinen: Schließlich verfügt die Hintertür der ServHelper-Gruppe selbst über beeindruckende Funktionen zur Steuerung des PCs des Opfers. Es ist Zeit, die Arbeit von Malware im Detail zu betrachten.
NSIS- und PowerShell-Tropfer
Die ausführbare PE-Datei, von der aus unsere Analyse beginnt, ist ein Installationsprogramm, das auf der NSIS-Plattform (Nullsoft Scriptable Install System) basiert. Das NSIS-Skript, das den Installationsprozess ausführt, extrahiert das eingebettete PowerShell-Skript und führt es aus:
Abb. 3. Anweisungen für NSIS-SkripteDas gestartete PowerShell-Skript enthält einen Base64-codierten Puffer (der Übersichtlichkeit halber in der folgenden Abbildung abgeschnitten), der nach dem Decodieren von Triple DES (3DES) im CBC-Modus entschlüsselt wird:
Abb. 4. Entschlüsselung von Daten in einem PowerShell-SkriptDer erste Teil des Skripts ist eine Funktion mit dem sprechenden Namen heller und ist dafür verantwortlich, die Berechtigungen im System zu erhöhen und den UAC-Schutz zu umgehen. Hierfür werden zwei Techniken verwendet:
Technik Nr. 1: Verwenden der SilentCleanup-Aufgabe im Aufgabenplaner:
- Die Aufgabe kann vom Benutzer gestartet werden, funktioniert jedoch mit erhöhten Berechtigungen. Die Aufgabeneigenschaften enthalten den Pfad zur ausführbaren Datei unter Verwendung der Umgebungsvariablen% windir%. Sie können den Wert der Umgebungsvariablen ändern (z. B. den Start eines PowerShell-Skripts angeben). Wenn Sie dann die Aufgabe starten, wird das PowerShell-Skript mit Administratorrechten ausgeführt, ohne die Benutzerkontensteuerung zu warnen.
- Angreifer verwenden diese Technik auf Windows 8- und Windows 10-Systemen.
- Der Code, der diese Technik ausführt, ist identisch mit der Implementierung des Moduls für das Metasploit-Framework.
Abb. 5. Teil des Skripts zur Umgehung der SilentCleanup-Task-TechnikTechnik Nr. 2: Verwenden des Systemdienstprogramms sysprep.exe und der Side-Loading-DLL-Technik
- Zunächst wird ein Hilfsskript erstellt, um das PowerShell-Skript im Verzeichnis C: \ Windows \ Temp neu zu starten. Anschließend wird ein CAB-Archiv erstellt , das die zusätzliche DLL-Bibliothek CRYPTBASE.dll enthält (PowerShell-Skript enthält sowohl x86- als auch x64-Versionen der Bibliothek). Mit dem Systemdienstprogramm wusa.exe wird dieses Archiv in das Verzeichnis C: \ Windows \ System32 \ Sysprep entpackt. Anschließend wird das Systemdienstprogramm sysprep.exe gestartet, das die zuvor entpackte DLL-Bibliothek lädt und das Hilfsskript ausführt. Infolgedessen wird das PowerShell-Skript mit Administratorrechten ohne Warnung der Benutzerkontensteuerung neu gestartet.
- Angreifer verwenden diese Technik auf einem Windows 7-System.
- Eine ausführliche Beschreibung finden Sie in diesem Artikel und Implementierungsbeispiele, beispielsweise in diesem Projekt auf Github.
Abb. 6. Teil des Skripts mit der Technik, das Dienstprogramm sysprep.exe zu umgehenEs gibt viele Kommentare im Skript, eine nicht verwendete Test-Administrator-Funktion, einige Variablen werden ohne Initialisierung verwendet: All dies sind Anzeichen für das Ausleihen von Code, ohne sorgfältig auf Kürze zu prüfen.
Nachdem das Skript mit den erforderlichen Berechtigungen ausgeführt wurde, wird der zweite Teil des Skripts ausgeführt. In diesem Stadium werden die Zielnutzlasten dekodiert:
- Die Zeichenfolge wird von Base64 dekodiert.
- Der Puffer wird mit Deflate erweitert.
- Die Zeichenfolge wird von Base64 neu dekodiert.
Abb. 7. Nutzlastdecodierungsalgorithmus- Infolgedessen werden die folgenden Dateien im System erstellt:
- % systemroot% \ help \ hlp11.dat - x86 / x64-Version der RDP-Wrapper-Bibliothek . Es wird verwendet, um die Funktionalität des RDP-Dienstes zu erweitern, einschließlich der Möglichkeit mehrerer gleichzeitiger Verbindungen. Es ist wichtig zu beachten, dass die Bibliothek geändert wird: Zu Beginn der Ausführung wird die Zeile c: \ windows \ help \ hlp12.dat durch lineares XOR dekodiert, und die DLL-Bibliothek wird in den empfangenen Pfad geladen:
Abb. 8. Entschlüsselung des Pfades zur DLL-Bibliothek und deren Laden- % systemroot% \ help \ hlp12.dat ist die x86 / x64-Version der ServHelper-Backdoor, die im nächsten Abschnitt erläutert wird.
- % systemroot% \ help \ hlp13.dat - Konfigurationsdatei für die RDP-Wrapper-Bibliothek,
- % systemroot% \ system32 \ rdpclip.exe - eine Komponente des RDP-Dienstes für den Austausch von Zwischenablagedaten;
- % systemroot% \ system32 \ rfxvmt.dll ist eine RDP-Dienstkomponente zum Übertragen von Daten mithilfe von RemoteFX- Technologien.
Nach dem Extrahieren und Aufzeichnen der Nutzdaten richtet das Skript den korrekten Betrieb seiner Komponenten ein:
- ändert den Eigentümer der Komponente rfxvmt.dll in NT SERVICE \ TrustedInstaller und gewährt die erforderlichen Rechte;
- Ändert den Portwert für RDP-Verbindungen vom Standard 3389 auf 7201;
- Fügt der lokalen Administratorgruppe ein Netzwerkdienstkonto hinzu
- registriert hlp11.dat als RDP-Dienst und startet den Dienst neu;
- löscht die erstellten temporären Dateien.
ServHelper RAT → Pipette
Eines der Ergebnisse der Dropper ist die DLL hlp12.dat, bei der es sich um eine ServHelper-Malware handelt. Abhängig von der Bitgröße des Betriebssystems können sowohl x86- als auch x64-Versionen der Bibliothek erstellt werden (es gibt keine grundlegenden Unterschiede zwischen ihnen). Beide Versionen sind in Delphi geschrieben und mit
UPX 3.95 (x64) und
PeCompact 2.20 (x86) ausgestattet. Unsere Kollegen von
Proofpoint und
Trend Micro haben zuvor eine Analyse der Verteilung und des Betriebs dieser Hintertür vorgelegt. Das Arsenal an Fähigkeiten unserer Stichprobe konvergiert in vielerlei Hinsicht mit dem, was bereits bekannt ist: Insbesondere der Algorithmus zum Entschlüsseln der verwendeten Zeichenfolgen (
Vigenere-Chiffre ) hat sich nicht geändert:
Abb. 9. Pseudocode zum Entschlüsseln von Zeichenfolgen mit der Vigenere-VerschlüsselungInteressanterweise ist die Verschlüsselung nicht für alle Zeichenfolgen implementiert: Beispielsweise bleiben die Adressen von Steuerdomänen und Weblinks mit zusätzlichen Komponenten offen:
Abb. 10. Unverschlüsselte Domains und WeblinksBeim Zugriff auf einen dieser Links (hxxp: //letitbe.icu/2.txt) wird eine verschlüsselte Datei heruntergeladen (MD5: 0528104f496dd13438dd764e747d0778). Wenn Sie das Ende einer Datei in einem Hex-Editor analysieren, können Sie häufige Wiederholungen des Werts von Byte 0x09 feststellen:
Abb. 11. Wiederholen Sie das Byte 0x09 in der heruntergeladenen DateiDoppelte Bytewerte sind ein häufiges Zeichen für die Verwendung eines Einzelbyte-XOR als Verschlüsselung. In diesem Fall wird diese Theorie durch den Code bestätigt:
Abb. 12. Einzelbyte-XOR-Verschlüsselungsfunktion
Abb. 13. Übergeben eines Einzelbyte-Werts an die XOR-Funktion als ArgumentDurch die Entschlüsselung erhalten wir ein ZIP-Archiv mit folgenden Inhalten:
Abb. 14. Inhalt des entschlüsselten ZIP-ArchivsAlle Dateien sind
legitime Software zur Fernsteuerung des NetSupport Manager-PCs, die wiederholt von Angreifern aus verschiedenen Gruppen verwendet wurde.
Abb. 15. Beschreibung der NetSupport Manager-SoftwareEine der Dateien (client32.ini) ist eine Konfigurationsdatei, die die Adresse des
Zwischen-Gateways enthält, über das der PC des Opfers eine Verbindung zu den Angreifern herstellt:
Abb. 16. Angreiferadresse als NetSupport Manager GatewayDiese Option ist sinnvoll, wenn sich das Opfer hinter einer Firewall befindet und der Internetzugang durch den Port eingeschränkt ist. Um im Internet ordnungsgemäß zu funktionieren, müssen Sie den Zugriff auf mindestens zwei Ports, 80 (HTTP) und 443 (HTTPS), öffnen, damit die Wahrscheinlichkeit einer erfolgreichen Verbindung steigt.
Im September 2019 entdeckten wir mehrere ähnliche ServHelper-Beispiele mit einer erheblich begrenzten Auswahl an Optionen. Am Beispiel eines davon (MD5: 5b79a0c06aec6126364ce1d5cbfedf66): Unter den Ressourcen einer ausführbaren PE-Datei befinden sich verschlüsselte Daten mit einem ähnlichen Merkmal in Form eines sich wiederholenden Bytes:
Abb. 17. Verschlüsselte Daten in ServHelper-RessourcenDies ist ein ZIP-Archiv, das erneut mit einem Byte "verstopft" ist und dieselben Komponenten von NetSupport Manager enthält, diesmal jedoch mit einem anderen Zwischen-Gateway: 179 [.] 43.146.90: 443.
Schlussfolgerungen
In diesem Artikel haben wir eine der Optionen für die Lieferung und Verwendung der TA505-Hintertür untersucht - ServHelper. Zusätzlich zu den merkwürdigen Funktionen, die dem Betrieb der Hauptkomponente vorausgingen (z. B. Umgehen der Benutzerkontensteuerung und Eskalieren von Berechtigungen), stellten wir interessante Metamorphosen der Haupt-Backdoor fest: Die Grundfunktionalität (Datendiebstahl, Spionage und Befehlsausführung) wurde durch die Einbettung eines weiteren Tools für die PC-Fernsteuerung ergänzt - NetSupport RAT. Darüber hinaus verfügten neue Versionen von ServHelper nicht mehr über die Hauptmerkmale, die es zu einer vollwertigen Hintertür machen: Jetzt dient es nur noch als Zwischen-Dropper für die Installation von NetSupport RAT. Wahrscheinlich fanden die Angreifer diesen Ansatz sowohl in Bezug auf die Entwicklung als auch in Bezug auf die Erkennungsfähigkeiten effektiver. Die Liste der für uns interessanten Gruppenwerkzeuge endet hier jedoch nicht.
Gepostet
von Alexey Vishnyakov, Positive Technologies
IOCshxxp: //185.225.17.175/wrkn157.exe - der Weblink, von dem der NSIS-Dropper geladen wurde
d2a062ca772fa3ace7c7edadbd95eaf7 - die ursprüngliche NSIS-Pipette
0cacea3329f35e88a4f9619190e3746f - PowerShell-Pipette shipkat.ps1
fb609b00e29689db74c853ca7d69f440 - CRYPTBASE.dll (x86)
843288a35906aa90b2d1cc6179588a26 - CRYPTBASE.dll (x64)
445cd6df302610bb640baf2d06438704 - hlp11.dat (x86)
083f66cc0e0f626bbcc36c7f143561bd - hlp11.dat (x64)
40bae264ea08b0fa115829c5d74bf3c1 - hlp12.dat (x86)
ac72ab230608f2dca1da1140e70c92ad - hlp12.dat (x64)
07f1dc2a9af208e88cb8d5140b54e35e - hlp13.dat
1690e3004f712c75a2c9ff6bcde49461 - rdpclip.exe
dc39d23e4c0e681fad7a3e1342a2843c - rfxvmt.dll
ServHelper C2:
179 [.] 43.156.32
185 [.] 163.45.124
185 [.] 163.45.175
185 [.] 225.17.150
185 [.] 225.17.169
185 [.] 225.17.175
185 [.] 225.17.98
195 [.] 123.221.66
195 [.] 123.246.192
37 [.] 252.8.63
94 [.] 158.245.123
94 [.] 158.245.154
94 [.] 158,245,232
fdguyt5ggs [.] pw
foxlnklnk [.] xyz
gidjshrvz [.] xyz
letitbe [.] icu
pofasfafha [.] xyz
0528104f496dd13438dd764e747d0778 - verschlüsseltes ZIP-Archiv mit NetSupport RAT
NetSupport Manager-Komponenten:
953896600dfb86750506706f1599d415 - cksini.exe
8d9709ff7d9c83bd376e01912c734f0a - client32.exe
2d3b207c8a48148296156e5725426c7f - HTCTL32.DLL
0e37fbfa79d349d672456923ec5fbbe3 - msvcr100.dll
26e28c01461f7e65c402bdf09923d435 - nskbfltr.inf
88b1dab8f4fd1ae879685995c90bd902 - NSM.ini
7067af414215ee4c50bfcd3ea43c84f0 - NSM.LIC
dcde2248d19c778a41aa165866dd52d0 - pcicapi.dll
a0b9388c5f18e27266a31f8c5765b263 - PCICHEK.DLL
00587238d16012152c2e951a087f2cc9 - PCICL32.DLL
2a77875b08d4d2bb7b654db33a88f16c - remcmdstub.exe
eab603d12705752e3d268d86dff74ed4 - TCCTL32.DLL
185 [.] 225.17.66: 443 - NetSupport RAT GatewayAddress
5b79a0c06aec6126364ce1d5cbfedf66 - ServHelper mit NetSupport RAT-Archiv
179 [.] 43.146.90: 443 - NetSupport RAT GatewayAddress