Strings Beispiele: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 98: | Zeile 98: | ||
= Aufgaben = | = Aufgaben = | ||
| + | |||
| + | == Zusatz – Untersuchungsobjekt Programm == | ||
| + | <!-- | ||
| + | === Datei erzeugen === | ||
| + | *cat > forensic-tool.c <<'EOF' | ||
| + | <pre> | ||
| + | #include <stdio.h> | ||
| + | #include <stdlib.h> | ||
| + | |||
| + | int main() { | ||
| + | char *a = "Tool version 2.7.4"; | ||
| + | char *b = "build host: ci-runner-03"; | ||
| + | char *c = "build path: /srv/builds/forensic/"; | ||
| + | char *d = "config=/etc/forensic/tool.conf"; | ||
| + | char *e = "log=/var/log/forensic/tool-debug.log"; | ||
| + | char *f = "POST /collector HTTP/1.1"; | ||
| + | char *g = "Host: stats.internal.corp"; | ||
| + | char *h = "X-Auth: Zm9yZW5zaWM6c2VydmljZQ=="; | ||
| + | char *i = "debug shell available"; | ||
| + | if (getenv("FORENSIC_DEBUG")) { | ||
| + | system("/bin/sh"); | ||
| + | } | ||
| + | printf("%s\n", a); | ||
| + | return 0; | ||
| + | } | ||
| + | EOF | ||
| + | </pre> | ||
| + | --> | ||
| + | *gcc forensic-tool.c -o forensic-tool.bin | ||
| + | |||
| + | == Aufgaben – Programm == | ||
| + | |||
| + | ;Untersuchung | ||
| + | * Identifiziere Hinweise auf Herkunft und Entwicklungsumgebung. | ||
| + | * Leite mögliche Kommunikationsziele ab. | ||
| + | * Bewerte, ob das Programm für den Einsatz auf Produktivsystemen geeignet ist. | ||
| + | * Benenne Risiken, die sich allein aus den gefundenen Artefakten ergeben. | ||
| + | |||
| + | --- | ||
| + | |||
| + | == Zusatz – Untersuchungsobjekt USB-Memory-Stick == | ||
| + | |||
| + | === Image erzeugen === | ||
| + | *dd if=/dev/zero of=memstick.dd bs=1M count=8 | ||
| + | |||
| + | *echo "ssh admin@10.10.10.5" | dd of=memstick.dd conv=notrunc seek=20 | ||
| + | *echo "rsync -av /data user@backup:/srv/backup" | dd of=memstick.dd conv=notrunc seek=200 | ||
| + | *echo "BEGIN OPENSSH PRIVATE KEY" | dd of=memstick.dd conv=notrunc seek=600 | ||
| + | *echo "vpn.internal.corp/config" | dd of=memstick.dd conv=notrunc seek=1000 | ||
| + | *echo "Change window 2024-11-02 23:00" | dd of=memstick.dd conv=notrunc seek=1400 | ||
| + | |||
| + | == Aufgaben – USB-Stick == | ||
| + | |||
| + | ;Untersuchung | ||
| + | * Ordne die gefundenen Artefakte möglichen Nutzungsszenarien zu. | ||
| + | * Unterscheide zwischen administrativen und sensiblen Inhalten. | ||
| + | * Entscheide, welche Funde sofort eskaliert werden müssten. | ||
| + | * Leite sinnvolle nächste forensische Schritte ab. | ||
Version vom 9. Februar 2026, 17:11 Uhr
strings – Praktische Nutzung in der IT-Forensik
Ziel
Dieses Kapitel zeigt den praktischen Einsatz des Linux-Werkzeugs strings in der IT-Forensik. Alle Beispiele sind lokal reproduzierbar und basieren auf selbst erzeugten Dateien. Es werden keine externen Samples oder Malware benötigt.
Werkzeug
- strings
- file
- grep
- gcc
Szenario 1 – Analyse eines verdächtigen Programms
Datei erzeugen
Die Beispieldatei wird lokal erzeugt und simuliert ein Programm mit hartkodierten Artefakten.
- cat > sample1.c <<'EOF'
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Connecting to http://evil.example.com\n");
printf("user=admin password=secret123\n");
system("/bin/sh");
return 0;
}
EOF
- gcc sample1.c -o sample1.bin
Wo liegt die Datei
- ls -l sample1.bin
Erste Einordnung der Datei
- file sample1.bin
Strings extrahieren
- strings sample1.bin
Zielgerichtete Auswertung
- Netzwerkindikatoren
- strings sample1.bin | grep -Ei 'http|https|ftp'
- Zugangsdaten
- strings sample1.bin | grep -Ei 'user|pass|password'
- Systempfade und Shells
- strings sample1.bin | grep -Ei '/bin/|/etc/'
Forensische Bewertung
- Das Programm enthält Klartext-Zugangsdaten
- Es nutzt eine Shell (/bin/sh)
- Es verweist auf ein externes Netzwerkziel
- Das Programm wurde nicht ausgeführt
Szenario 2 – Analyse eines Datenträger-Images
Image erzeugen
Es wird ein simuliertes USB-Image mit Klartextartefakten erstellt.
- dd if=/dev/zero of=usb.dd bs=1M count=5
- echo "admin@example.com" | dd of=usb.dd conv=notrunc
- echo "https://intranet.local/login" | dd of=usb.dd conv=notrunc seek=1024
Strings auf dem Image
- strings usb.dd
Typische Filter
- Mailadressen
- strings usb.dd | grep '@'
- URLs
- strings usb.dd | grep -Ei 'http|https'
Forensische Bewertung
- Auch in scheinbar leeren Images finden sich Klartextdaten
- Gelöschte oder überschrieben geglaubte Inhalte können sichtbar bleiben
Grenzen von strings
- Keine Zeitstempel
- Kein Beweis für Ausführung
- Kein Kontext
- Nur Hinweisquelle
Typische Einsatzphase
- Triage
- Erstbewertung
- Hypothesenbildung
- Vorbereitung weiterführender Analyse
Aufgaben
Zusatz – Untersuchungsobjekt Programm
- gcc forensic-tool.c -o forensic-tool.bin
Aufgaben – Programm
- Untersuchung
- Identifiziere Hinweise auf Herkunft und Entwicklungsumgebung.
- Leite mögliche Kommunikationsziele ab.
- Bewerte, ob das Programm für den Einsatz auf Produktivsystemen geeignet ist.
- Benenne Risiken, die sich allein aus den gefundenen Artefakten ergeben.
---
Zusatz – Untersuchungsobjekt USB-Memory-Stick
Image erzeugen
- dd if=/dev/zero of=memstick.dd bs=1M count=8
- echo "ssh admin@10.10.10.5" | dd of=memstick.dd conv=notrunc seek=20
- echo "rsync -av /data user@backup:/srv/backup" | dd of=memstick.dd conv=notrunc seek=200
- echo "BEGIN OPENSSH PRIVATE KEY" | dd of=memstick.dd conv=notrunc seek=600
- echo "vpn.internal.corp/config" | dd of=memstick.dd conv=notrunc seek=1000
- echo "Change window 2024-11-02 23:00" | dd of=memstick.dd conv=notrunc seek=1400
Aufgaben – USB-Stick
- Untersuchung
- Ordne die gefundenen Artefakte möglichen Nutzungsszenarien zu.
- Unterscheide zwischen administrativen und sensiblen Inhalten.
- Entscheide, welche Funde sofort eskaliert werden müssten.
- Leite sinnvolle nächste forensische Schritte ab.