Wir danken unserem Security Research Praktikanten Leon für das Malware Reverse Engineering und die Zusammenarbeit an diesem Artikel.
Key Findings:
- Die Ransomware Varianten “Nitrogen” und „LukaLocker“ wurden von demselben Threat Actor erstellt und eingesetzt.
- Beide Implementationen basieren größtenteils auf dem im März 2022 geleakten CONTI Ransomware Source Code.
- Die Funktionalität von Nitrogen Ransomware hat sich kaum weiterentwickelt, was geringe Kompetenzen in der Implementierung von Ransomware nahelegt.
Einleitung
In diesem Abschnitt werden einige grundlegende Sachverhalte zum CONTI Ransomware Source Code Leak und den Ransomware Varianten Nitrogen und LukaLocker erläutert.
Hintergrund: CONTI Quellcode Leak
Am 20. März 2022 wurde der Quellcode für die CONTI Ransomware Variante durch einen ukrainisch-stämmigen Entwickler der Gruppierung über Twitter veröffentlicht, nachdem die Betreiber des CONTI Ransomware-as-a-Service (RaaS) über ihren Leak-Blog bekannt gaben, die Russische Invasion der Ukraine zu unterstützen (siehe Abbildung 1).
Nach der Veröffentlichung dieses Quellcodes adaptierten mehrere bestehende und neue Ransomware Gangs die CONTI-Implementation für eigene Schadsoftware Varianten. Beispiele hierfür sind unter anderem LockBit Green, Monti, Royal, Akira und BlackSuit.
Nitrogen and LukaLocker
Vorhergegangene Veröffentlichungen
Die erste Veröffentlichung zu LukaLocker Ransomware wurde im Juli 2024 von Halcyon publiziert. Der Ransomware Operator bzw. Threat Actor hinter LukaLocker wurde dort mit dem Codenamen „Volcano Demon“ referenziert. Dort wurde außerdem berichtet, dass der Threat Actor neben hinterlassenen Ransomnotes auf den Computern der betroffenen Unternehmen auch Drohanrufe über das Telefon tätigt. Diese Taktik wurde in der Vergangenheit nur selten von Ransomware Gangs genutzt, da meistens Call-Center Agenten dafür angeheuert werden müssen. Es existieren beispielsweise Aufzeichnungen zu Anrufen von Suncrypt oder CONTI.
LukaLocker wurde zuvor von Jonny Johnson und Alden Schmidt (Huntress) in dem Vortrag „Unraveling LukaLocker Ransomware“ untersucht.
Nitrogen Ransomware sollte nicht mit der Schadsoftware „Nitrogen Loader“ in Verwechslung gebracht werden. Diese Malware Varianten ähneln sich zwar in ihrer Benennung, jedoch konnten wir keinen Zusammenhang zwischen ihnen feststellen. Eine Beschreibung von Nitrogen Loader wurde von eSentire veröffentlicht.
Gefundene Malware Samples und Viktimologie
Zum Verfassungszeitpunkt dieses Artikels waren die Ziele der Threat Actor hinter Nitrogen und LukaLocker Ransomware vor allem in Nordamerika (USA und Kanada) lokalisiert und primär in der Industrie bzw. dem Baugewerbe tätig. Vereinzelt wurden auch Unternehmen aus anderen Branchen angegriffen, was eine opportunistische Auswahl potenzieller Ziele nahelegt. Eine zeitliche Korrelation zwischen den aufgefundenen Ransomware Samples und der Erpressung von betroffenen Unternehmen ist nur in vereinzelten Fällen möglich, da neue Data Breaches mit großem Zeitversatz auf dem Blog gelistet werden. Abbildung 2 zeigt einen Zeitstrahl, auf dem sowohl die analysierten Malware Samples, als auch veröffentlichte Erpressungsziele aufgetragen sind. Da die Veröffentlichungen auf dem Leak Blog nicht mit einem Datum versehen werden, ist es teilweise nicht möglich den genauen Zeitpunkt des Postings zu ermitteln. Hierfür wurden die Beiträge des Threat Actors auf X (ehemals Twitter) unter dem Nutzernamen @nitrogenSupp hinzugezogen.
Insgesamt wurden fünf aktuelle Samples der Nitrogen Ransomware Variante durch Threat Hunting mit YARA identifiziert. Vier dieser Samples werden Nitrogen direkt zugeordnet. Ein weiteres Sample wird der Ransomware Variante LukaLocker zugeordnet. Wie im zweiten Abschnitt dieses Artikels gezeigt wird, sind die Implementationen von Nitrogen und LukaLocker Ransomware nahezu identisch. Weitere Zusammenhänge, welche nahelegen, dass der Threat Actor, der hinter Nitrogen Ransomware steht auch unter dem Namen LukaLocker agiert, lassen sich aus der Betrachtung der veröffentlichten Ransomware Data Breaches ziehen. Wie in Abbildung 3 zu erkennen konnte in zwei Instanzen das eingesetzte Ransomware Sample mit den jeweils betroffenen Unternehmen in Verbindung gebracht werden. Das mit der LukaLocker Variante angegriffene Unternehmen wurde ebenfalls auf dem Nitrogen Ransomware Leak Blog gelistet. Kurz darauf wurde dieses Posting jedoch wieder von der Leak-Seite und dem X (Twitter) Profil entfernt. Es konnte nicht nachvollzogen werden, inwiefern dies mit einer erfolgreichen/gescheiterten Erpressung zusammenhängt oder ob eine Verbindung zwischen Nitrogen und LukaLocker nachträglich verschleiert werden sollte.
Infrastruktur
Nitrogen betreibt, übereinstimmend mit gängigen „Double Extortion“ Taktiken, einen Leak-Blog als TOR Hidden Service. Die Seite folgt einem statischen Aufbau, mit wenigen dynamischen Elementen und bietet daher wenig Angriffsfläche für eine potenzielle Deanonymisierung.
Daten Veröffentlichungen
Auf dem oben beschriebenen Leak-Blog veröffentlicht Nitrogen Ransomware eine Liste an kompromittierten Unternehmen. Die durch die Angreifer entwendeten Daten werden nicht gänzlich veröffentlicht, sondern nur mit vagen Beweisen hinterlegt. Die Betreiber von Nitrogen versuchen, die Daten an andere Cyberkriminelle weiterzuverkaufen.
Kontaktaufnahme
Wie zuvor erwähnt betreibt Nitrogen Ransomware unter dem Nutzernamen @NitrogenSupp einen X / Twitter Account. Zusätzlich verwendet der Threat Actor den Tox Instant Messenger, welcher unter Cyberkriminellen generell sehr beliebt ist. In jedem Erpresserschreiben, dass Nitrogen Ransomware bei einem kompromittierten Unternehmen hinterlässt, ist eine einzigartiger Tox Benutzername vermerkt, um zwischen den Opfern unterscheiden zu können.
Da der Nitrogen Ransomware Leak-Blog seit Dezember 2024 nicht mehr aktualisiert wurde, haben wir testweise die auf dem Leak-Blog gelistete Tox-ID kontaktiert und wenig später eine Antwort erhalten. Der Threat Actor scheint den Kommunikationskanal also nach wie vor zu nutzen, ggf. um die Datensätze aus den vorhergegangenen Data Breaches zu verkaufen.
Analyse
Die Zielsetzung unserer Analyse war, einen Einblick in die Funktionalitäten von Nitrogen Ransomware zu erhalten. Außerdem sollte bestätigt werden, inwiefern ein Zusammenhang zwischen LukaLocker und Nitrogen besteht, welcher zuvor im Rahmen der Threat Intelligence Analyse vorgestellt wurde.
Gemeinsamkeiten mit CONTI
Unsere Analyse zeigte deutliche Gemeinsamkeiten zwischen dem Quellcode von CONTI Ransomware und den dekompilierten Nitrogen Ransomware Binärdateien. Auf einige der eindeutigsten Indizien gehen wir in diesem Unterkapitel ein.
Parameter
Die Schadsoftware unterstützt folgende Parameter, die der Nutzer auf der Kommandozeile spezifizieren kann:
-p Zu verschlüsselnder Dateipfad
-l Pfad zur Logdatei
-nm Keine Erstellung einer Mutex
-s Terminierung der Services und Prozesse in der Service- und Prozess Liste
-b Safeboot ausschalten und Neustart erzwingen
-v Erhöhter Detailgrad der Log-Informationen
Mutex
Nitrogen verwendet eine Mutex, um eine mehrfache Ausführung der Schadsoftware zu vermeiden. Bei dem analysierten Sample, erstellte die Schadsoftware eine Mutex mit dem Namen „nvxkjcv7yxctvgsdfjhv6esdvsx“. Diese Logik wurde aus dem CONTI Quellcode übernommen, einzig der Mutex Name wurde verändert.
Multithreading
Die Schadsoftware verwendet die gleiche Multithreading Logik wie CONTI. Mit dem Aufruf der Funktion GetNativeSystemInfo ermittelt Nitrogen Ransomware die Anzahl der verfügbaren CPU Kerne des Systems. Für jeden logischen Prozessor werden danach zwei Threads für den Thread-Pool erzeugt, um die Verschlüsselung zu parallelisieren.
Abweichungen von der CONTI Implementation
Software-Entwicklungsumgebung
Der ursprüngliche CONTI Source Code Leak nutzte Visual Studio 2015 als Build Environment. Es wird vermutet, dass die untersuchten Nitrogen Samples MinGW GCC in Version 13.3.0 verwendeten. Zudem wurde die Schadsoftware mithilfe von SIMD Instruktionen optimiert.
Datei Verschlüsselung
Nitrogen Ransomware generiert für jede Datei einen ChaCha8 Context mit einer zufälligen Nonce und einem zufälligem Schlüssel und schützt diesen Schlüssel mit der Curve25519 ECC. Hierbei hat der Entwickler RSA, welches von Conti verwendet wird, mit ECC ersetzt, ECC wird immer häufiger in Ransomware eingesetzt, da sie im Gegensatz zu RSA kleinere Schlüsselgrößen verwendet, und wenig Rechenleistung im Vergleich zu RSA verbraucht.
Partielle Verschlüsselungsmodi:
- VM Dateien (bspw. Vmdk, vmx, vmem) werden zu 20% verschlüsselt.
- Datenbanken werden zu komplett verschlüsselt.
- Dateien unter oder gleich 1 MiB werden komplett verschlüsselt.
- Dateien unter oder gleich 1 GiB werden zu 50% verschlüsselt.
- Größere Dateien werden nur zu 10% verschlüsselt.
Service- und Prozess Terminierung
Falls der -s (bzw. –service-stop) Parameter bei der Ausführung der Ransomware gesetzt wurde, terminiert Nitrogen Prozesse, die denen aus einer Liste mit 827 Einträgen entsprechen.
Zudem wird anhand einer gesonderten Liste nach aktiven Services von Anti-Virus und Endpoint Detection and Response Lösungen gesucht. Bei Treffern werden diese ebenfalls abgeschalten.
Die Implementation zur Beendigung von Prozessen und Services ist in Abbildung 13 abgebildet. Nitrogen Ransomware durchläuft beide Listen und terminiert alle gefundenen Instanzen.
Volumenschattenkopien
Der Mechanismus zum Löschen der Volumenschattenkopien, welcher von CONTI implementiert wurde, wird von den Nitrogen Entwicklern vollständig ausgelassen. Insofern dies nicht als manueller Schritt nach der Ausführung der Ransomware geschieht, ist eine teilweise Datenwiederherstellung ggf. möglich.
Verschlüsselungsarten von Nitrogen
Nitrogen unterstützt drei verschiedene Verschlüsselungsmodi. Dabei wurden die Verschlüsselungsarten ALL_ENCRYPT, LOCAL_ENCRYPT und PATH_ENCRYPT vom Conti Source kopiert und der NETWORK_ENCRYPT von Conti wurde ausgelassen.
Deaktivierung des abgesicherten Modus
Nach dem Verschlüsselungsprozess überprüft Nitrogen, ob der Shutdown Flag beim Starten der Ransomware von dem Nutzer gesetzt wurde, falls ja, wird Safeboot mithilfe der Kommandozeile mit dem Kommando „bcdedit /deletevalue {default} safeboot“ abgeschaltet und anschließend wird das System heruntergefahren.
Verschlüsselung des Erpresserschreibens
In der CONTI Implementation wird das Erpresserschreiben im Klartext in der ausführbaren Datei mitgeliefert. LukaLocker hat diesen Mechanismus in dieser Form übernommen. Wie in Abbildung 10 zu sehen verwenden einige der untersuchten Nitrogen Ransomware samples einen einfachen byte-weise XOR mit wechselnden Schlüsseln (z.B. 0xFD bzw. 0xFF), um ein einfaches extrahieren des Erpresserschreibens aus der Malware zu erschweren. In neueren Varianten der Ransomware wurde ein Rolling-XOR Algorithmus mit ähnlicher Funktionsweise vorgefunden.
Fazit
Wir stellen fest, dass LukaLocker und Nitrogen Ransomware in großen Teilen auf dem CONTI Quellcode basieren. Die vom Autor vorgenommenen Veränderungen legen nahe, dass dessen Fähigkeiten zur Malware Entwicklung stark beschränkt sind.
Eine Überlappung von Einträgen auf der Leak Seite von Nitrogen legt nahe, dass beide Varianten von diesen Akteuren verwendet werden.
Indicators of Compromise (IoC)
Datei-Hashsummen
Nitrogen
- c94b70dff50e69639b0ef1e828621c5fddcf144fea93e27520f48264ddd33273
- ce8788e6ed0042010dd27a4fd79b9962d11385008b88485b8368fd666e5d38ec
- 55f3725ebe01ea19ca14ab14d747a6975f9a6064ca71345219a14c47c18c88be
- f30198a8a62e189653bfbeaa7a2f303549b8042ddd84c980f132a4e889f9cb60
LukaLocker
- 4e58629158a6c46ad420f729330030f5e0b0ef374e9bb24cd203c89ec3262669
Host-basierte Merkmale
Erpresserschreiben: readme.txt
Log-Protokoll: NBA_LOG.txt
Anwendbare Detektionsregeln
YARA
rule SI_MAL_RNSM_Nitrogen_Lukalocker_Feb25 {
meta:
version = "1.0"
date = "2025-02-04"
modified = "2025-03-20"
status = "RELEASED"
sharing = "TLP:CLEAR"
source = "SECUINFRA Falcon Team"
description = "Detects Nitrogen / LukaLocker Ransomware based on leaked CONTI source code."
category = "malware"
mitre_att = "T1486"
hash = "8cd552392bb25546ba58e73d63c4b7c290188ca1060f96c8abf641ae9f5a8383"
minimum_yara = "3.2.0"
best_before = "2026-02-04"
strings:
$str1 = "Directories scanned: %d" ascii
$str2 = "Files finded: %d" ascii
$str3 = "Files crypted: %d" ascii
$str4 = "File %s is already open by another program." wide
$str5 = ".kexi" wide
$str6 = "cmd /c taskkill /im krbcc32s.exe /f" ascii
condition:
uint16(0) == 0x5A4D
and filesize < 3MB
and all of them
}
SIGMA
1. Potential Conti Ransomware Activity
2. Process terminated via Taskkill
3. Potential Ransomware or Unauthorized MBR Tampering via bcdedit.exe
4. Suspicious Execution of Shutdown