Analysieren der Windows-Registrierungsdatenbank auf Artefakte
Verwendungszweck
- Bei der Untersuchung von Benutzeraktivitäten auf einem Windows-System während eines Vorfalls
- Zur Identifizierung von Autostart-/Persistenzmechanismen, die von Malware verwendet werden
- Bei der Rückverfolgung installierter Software, USB-Geräte und Netzwerkverbindungen
- Bei Untersuchungen zu Insider-Bedrohungen zur Rekonstruktion von Benutzeraktionen
- Zur Korrelation von Registrierungszeitstempeln mit anderen forensischen Artefakten
Voraussetzungen
- Forensisches Image oder extrahierte Registrierungshive-Dateien
- RegRipper, Registry Explorer (Eric Zimmerman) oder python-registry
- Zugriff auf Registrierungshive-Pfade (SAM, SYSTEM, SOFTWARE, NTUSER.DAT, UsrClass.dat)
- Verständnis der Windows-Registrierungsstruktur (Hives, Keys, Values)
- SIFT Workstation oder forensische Analyseumgebung
Arbeitsablauf
Schritt 1: Registrierungshives aus dem forensischen Image extrahieren
# Forensisches Image schreibgeschützt einbinden
mkdir /mnt/evidence
mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence
# System-Registrierungshives kopieren
cp /mnt/evidence/Windows/System32/config/SAM /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SYSTEM /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SOFTWARE /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SECURITY /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/DEFAULT /cases/case-2024-001/registry/
# Benutzerspezifische Hives kopieren
cp /mnt/evidence/Users/*/NTUSER.DAT /cases/case-2024-001/registry/
cp /mnt/evidence/Users/*/AppData/Local/Microsoft/Windows/UsrClass.dat /cases/case-2024-001/registry/
# Transaktionsprotokolle kopieren (für die Wiederherstellung beschädigter Hives)
cp /mnt/evidence/Windows/System32/config/*.LOG* /cases/case-2024-001/registry/logs/
# Alle extrahierten Hives hashen
sha256sum /cases/case-2024-001/registry/* > /cases/case-2024-001/registry/hive_hashes.txt
Schritt 2: Analyse mit RegRipper für automatisierte Artefaktextraktion
# RegRipper installieren
git clone https://github.com/keydet89/RegRipper3.0.git /opt/regripper
# RegRipper gegen NTUSER.DAT ausführen (Benutzerprofil)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-f ntuser > /cases/case-2024-001/analysis/ntuser_report.txt
# Gegen SYSTEM-Hive ausführen
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-f system > /cases/case-2024-001/analysis/system_report.txt
# Gegen SOFTWARE-Hive ausführen
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
-f software > /cases/case-2024-001/analysis/software_report.txt
# Gegen SAM-Hive ausführen (Benutzerkonten)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SAM \
-f sam > /cases/case-2024-001/analysis/sam_report.txt
# Spezifische Plugins ausführen
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-p userassist > /cases/case-2024-001/analysis/userassist.txt
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p usbstor > /cases/case-2024-001/analysis/usbstor.txt
Schritt 3: Persistenz- und Autostart-Einträge extrahieren
# Verwendung von python-registry für gezielte Extraktion
pip install python-registry
python3 << 'PYEOF'
from Registry import Registry
# SOFTWARE-Hive öffnen
reg = Registry.Registry("/cases/case-2024-001/registry/SOFTWARE")
# Run-Keys prüfen (Autostart)
autorun_paths = [
"Microsoft\\Windows\\CurrentVersion\\Run",
"Microsoft\\Windows\\CurrentVersion\\RunOnce",
"Microsoft\\Windows\\CurrentVersion\\RunServices",
"Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run",
"Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"
]
for path in autorun_paths:
try:
key = reg.open(path)
print(f"\n=== {path} (Zuletzt geändert: {key.timestamp()}) ===")
for value in key.values():
print(f" {value.name()}: {value.value()}")
except Registry.RegistryKeyNotFoundException:
pass
# Installierte Dienste prüfen
key = reg.open("Microsoft\\Windows NT\\CurrentVersion\\Svchost")
print(f"\n=== Svchost-Gruppen ===")
for value in key.values():
print(f" {value.name()}: {value.value()}")
PYEOF
# NTUSER.DAT auf benutzerspezifischen Autostart prüfen
python3 << 'PYEOF'
from Registry import Registry
reg = Registry.Registry("/cases/case-2024-001/registry/NTUSER.DAT")
user_autorun = [
"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
"Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce",
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run"
]
for path in user_autorun:
try:
key = reg.open(path)
print(f"\n=== {path} (Zuletzt geändert: {key.timestamp()}) ===")
for value in key.values():
print(f" {value.name()}: {value.value()}")
except Registry.RegistryKeyNotFoundException:
pass
PYEOF
Schritt 4: Artefakte der Benutzeraktivität analysieren
# UserAssist-Daten extrahieren (Programmausführungshistorie mit ROT13-Kodierung)
python3 << 'PYEOF'
from Registry import Registry
import codecs, struct, datetime
reg = Registry.Registry("/cases/case-2024-001/registry/NTUSER.DAT")
ua_path = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist"
key = reg.open(ua_path)
for guid_key in key.subkeys():
count_key = guid_key.subkey("Count")
print(f"\n=== {guid_key.name()} ===")
for value in count_key.values():
decoded_name = codecs.decode(value.name(), 'rot_13')
data = value.value()
if len(data) >= 16:
run_count = struct.unpack('<I', data[4:8])[0]
focus_count = struct.unpack('<I', data[8:12])[0]
timestamp = struct.unpack('<Q', data[60:68])[0] if len(data) >= 68 else 0
if timestamp > 0:
ts = datetime.datetime(1601,1,1) + datetime.timedelta(microseconds=timestamp//10)
print(f" {decoded_name}: Ausführungen={run_count}, Fokus={focus_count}, Letzte={ts}")
else:
print(f" {decoded_name}: Ausführungen={run_count}, Fokus={focus_count}")
PYEOF
# Zuletzt verwendete Dokumente extrahieren (MRU-Listen)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-p recentdocs > /cases/case-2024-001/analysis/recentdocs.txt
# Eingegebene URLs extrahieren (Browser)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-p typedurls > /cases/case-2024-001/analysis/typedurls.txt
# Eingegebene Pfade im Explorer extrahieren
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-p typedpaths > /cases/case-2024-001/analysis/typedpaths.txt
Schritt 5: System- und Netzwerkinformationen extrahieren
# Computername und Betriebssystemversion aus SYSTEM-Hive
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p compname > /cases/case-2024-001/analysis/system_info.txt
# Netzwerkschnittstellen und -konfiguration
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p nic2 >> /cases/case-2024-001/analysis/system_info.txt
# Drahtlosnetzwerkverlauf
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
-p networklist > /cases/case-2024-001/analysis/network_history.txt
# Zeitzonenkonfiguration
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p timezone > /cases/case-2024-001/analysis/timezone.txt
# Herunterfahrzeit
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p shutdown > /cases/case-2024-001/analysis/shutdown.txt
# Installierte Software aus Uninstall-Keys
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
-p uninstall > /cases/case-2024-001/analysis/installed_software.txt
Schlüsselkonzepte
| Konzept | Beschreibung |
|---|---|
| Registry-Hive | Binärdatei, die einen Abschnitt der Registrierung speichert (SAM, SYSTEM, SOFTWARE, NTUSER.DAT) |
| MRU (Most Recently Used) | Listen, die kürzlich verwendete Dateien, Befehle und Suchbegriffe nachverfolgen |
| UserAssist | ROT13-kodierte Registrierungseinträge zur Nachverfolgung der Programmausführung mit Zeitstempeln |
| ShimCache | Anwendungskompatibilitäts-Cache, der ausgeführte Programme aufzeichnet |
| AmCache | Detaillierte Ausführungshistorie mit SHA-1-Hashes von ausführbaren Dateien |
| BAM/DAM | Hintergrund-/Desktop-Aktivitätsmoderator zur Nachverfolgung der Programmausführung unter Windows 10+ |
| Letzter Schreibzeitpunkt | Zeitstempel auf Registrierungsschlüsseln, der angibt, wann sie zuletzt geändert wurden |
| Transaktionsprotokolle | Journaldateien, die die Wiederherstellung des Registrierungszustands nach unsachgemäßem Herunterfahren ermöglichen |
Werkzeuge und Systeme
| Werkzeug | Zweck |
|---|---|
| RegRipper | Automatisierte Extraktion von Registrierungsartefakten mit Plugin-Architektur |
| Registry Explorer | GUI-Werkzeug von Eric Zimmerman für interaktive Registrierungsanalyse |
| python-registry | Python-Bibliothek für programmgesteuerte Analyse von Registrierungshives |
| RECmd | Befehlszeilenwerkzeug von Eric Zimmerman für Registrierungsanalyse |
| yarp | Yet Another Registry Parser für Python-basierte Analysen |
| AppCompatCacheParser | Dedizierter Parser für ShimCache/AppCompatCache |
| AmcacheParser | Dediziertes Analysewerkzeug für AmCache.hve |
| ShellBags Explorer | Spezialisiertes Werkzeug zur Analyse von ShellBag-Artefakten |
Häufige Szenarien
Szenario 1: Untersuchung von Malware-Persistenz Extrahiere SOFTWARE- und NTUSER.DAT-Hives, überprüfe alle Run/RunOnce-Keys auf unbefugte Einträge, untersuche Dienste auf verdächtige Ergänzungen, überprüfe Registrierungsschlüssel für geplante Aufgaben, korreliere Autostart-Zeitstempel mit dem Ausführungszeitplan der Malware.
Szenario 2: Rekonstruktion von Benutzeraktivitäten Analysiere UserAssist für die Programmausführungshistorie, untersuche RecentDocs auf zugegriffene Dateien, überprüfe TypedPaths für die Explorer-Navigation, extrahiere ShellBags für Ordnerzugriffsmuster, erstelle eine Zeitleiste der Benutzeraktivität rund um das Vorfallfenster.
Szenario 3: Erkennung unbefugter Software Analysiere Uninstall-Keys für alle installierten Anwendungen, vergleiche mit der genehmigten Softwarebasis, überprüfe BAM/DAM auf kürzlich ausgeführte Programme, die nicht in der genehmigten Liste enthalten sind, untersuche AppCompatCache auf Ausführungsnachweise auch nach der Deinstallation.
Szenario 4: Untersuchung von USB-Datenexfiltration Extrahiere USBSTOR-Einträge aus dem SYSTEM-Hive für angeschlossene Geräte, korreliere Geräteseriennummern mit MountedDevices, überprüfe NTUSER.DAT MountPoints2 auf Benutzerzugriff auf Wechselmedien, untersuche SetupAPI-Protokolle auf Zeitstempel der ersten Verbindung.
Ausgabeformat
Zusammenfassung der Registrierungsanalyse:
System: DESKTOP-ABC123 (Windows 10 Pro Build 19041)
Zeitzone: Eastern Standard Time (UTC-5)
Letztes Herunterfahren: 2024-01-18 23:45:12 UTC
Autostart-Einträge:
HKLM Run: 5 Einträge (1 verdächtig: "updater.exe" -> C:\ProgramData\svc\updater.exe)
HKCU Run: 3 Einträge (alle legitim)
Dienste: 142 Einträge (2 unbekannt: "WinDefSvc", "SysMonAgent")
Benutzeraktivität (NTUSER.DAT):
UserAssist-Programme: 234 Einträge
Zuletzt verwendete Dokumente: 89 Einträge
Eingegebene URLs: 45 Einträge
Eingegebene Pfade: 12 Einträge
Angeschlossene USB-Geräte:
- Kingston DataTraveler (Seriennummer: 0019E06B4521) - Erstmalig: 2024-01-10, Zuletzt: 2024-01-18
- WD My Passport (Seriennummer: 575834314131) - Erstmalig: 2024-01-15, Zuletzt: 2024-01-15
Installierte Software: 127 Anwendungen
Verdächtige Funde: 3 Elemente zur Überprüfung markiert