Strings Beispiele: Unterschied zwischen den Versionen

Aus Xinux Wiki
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

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.