Strings Beispiele: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 101: Zeile 101:
 
== Zusatz – Untersuchungsobjekt Programm ==
 
== Zusatz – Untersuchungsobjekt Programm ==
 
=== Datei erzeugen ===
 
=== Datei erzeugen ===
*cat > forensic-tool.c <<'EOF'
+
*cat > invoice-helper.c <<'EOF'
 
<pre>
 
<pre>
 
#include <stdio.h>
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <stdlib.h>
  
int main() {
+
int main(int argc, char *argv[]) {
     char *a = "Tool version 2.7.4";
+
     char *a = "InvoiceHelper 1.8.2";
     char *b = "build host: ci-runner-03";
+
     char *b = "last build: 2024-10-14";
     char *c = "build path: /srv/builds/forensic/";
+
     char *c = "build user: accounting";
     char *d = "config=/etc/forensic/tool.conf";
+
     char *d = "/home/accounting/tools/invoice/";
     char *e = "log=/var/log/forensic/tool-debug.log";
+
     char *e = "config=/etc/invoice/helper.conf";
     char *f = "POST /collector HTTP/1.1";
+
     char *f = "export path=/srv/invoices/export/";
     char *g = "Host: stats.internal.corp";
+
     char *g = "https://billing.internal.local/api/upload";
     char *h = "X-Auth: Zm9yZW5zaWM6c2VydmljZQ==";
+
     char *h = "X-API-Key: QUNDT1VOVElOR19LRVk=";
     char *i = "debug shell available";
+
     char *i = "tmp=/var/tmp/invoice-helper";
     if (getenv("FORENSIC_DEBUG")) {
+
 
 +
     if (argc == 2 && argv[1][0] == 'x') {
 
         system("/bin/sh");
 
         system("/bin/sh");
 
     }
 
     }
 +
 
     printf("%s\n", a);
 
     printf("%s\n", a);
 
     return 0;
 
     return 0;
Zeile 124: Zeile 126:
 
EOF
 
EOF
 
</pre>
 
</pre>
*gcc forensic-tool.c -o forensic-tool.bin
+
 
 +
*gcc invoice-helper.c -o invoice-helper.bin
  
 
== Aufgaben – Programm ==
 
== Aufgaben – Programm ==

Version vom 9. Februar 2026, 17:25 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

Datei erzeugen

  • cat > invoice-helper.c <<'EOF'
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    char *a = "InvoiceHelper 1.8.2";
    char *b = "last build: 2024-10-14";
    char *c = "build user: accounting";
    char *d = "/home/accounting/tools/invoice/";
    char *e = "config=/etc/invoice/helper.conf";
    char *f = "export path=/srv/invoices/export/";
    char *g = "https://billing.internal.local/api/upload";
    char *h = "X-API-Key: QUNDT1VOVElOR19LRVk=";
    char *i = "tmp=/var/tmp/invoice-helper";

    if (argc == 2 && argv[1][0] == 'x') {
        system("/bin/sh");
    }

    printf("%s\n", a);
    return 0;
}
EOF
  • gcc invoice-helper.c -o invoice-helper.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

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.