Strings Beispiele: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
 
Alle Beispiele sind lokal reproduzierbar und basieren auf selbst erzeugten Dateien.
 
Alle Beispiele sind lokal reproduzierbar und basieren auf selbst erzeugten Dateien.
 
Es werden keine externen Samples oder Malware benötigt.
 
Es werden keine externen Samples oder Malware benötigt.
 
+
== Vorarbeiten ==
 +
*mkdir forensic
 +
*wget https://xinux.de/downloads/forensic/sample1
 +
*wget https://xinux.de/downloads/forensic/usb.dd
 +
*wget https://xinux.de/downloads/forensic/invoice-helper
 
== Werkzeug ==
 
== Werkzeug ==
 
* strings
 
* strings
 
* file
 
* file
 
* grep
 
* grep
* gcc
 
  
 
== Szenario 1 – Analyse eines verdächtigen Programms ==
 
== Szenario 1 – Analyse eines verdächtigen Programms ==
 +
;Datei runterladen
 +
*wget
  
 +
<!--
 
=== Datei erzeugen ===
 
=== Datei erzeugen ===
 
Die Beispieldatei wird lokal erzeugt und simuliert ein Programm mit hartkodierten Artefakten.
 
Die Beispieldatei wird lokal erzeugt und simuliert ein Programm mit hartkodierten Artefakten.
Zeile 30: Zeile 36:
 
</pre>
 
</pre>
  
*gcc sample1.c -o sample1.bin
+
*gcc sample1.c -o sample1
 
+
-->
=== Wo liegt die Datei ===
 
*ls -l sample1.bin
 
  
 
== Erste Einordnung der Datei ==
 
== Erste Einordnung der Datei ==
Zeile 46: Zeile 50:
  
 
;Netzwerkindikatoren
 
;Netzwerkindikatoren
*strings sample1.bin | grep -Ei 'http|https|ftp'
+
*strings sample1 | grep -Ei 'http|https|ftp'
  
 
;Zugangsdaten
 
;Zugangsdaten
*strings sample1.bin | grep -Ei 'user|pass|password'
+
*strings sample1 | grep -Ei 'user|pass|password'
  
 
;Systempfade und Shells
 
;Systempfade und Shells
*strings sample1.bin | grep -Ei '/bin/|/etc/'
+
*strings sample1 | grep -Ei '/bin/|/etc/'
  
 
== Forensische Bewertung ==
 
== Forensische Bewertung ==
Zeile 96: Zeile 100:
 
* Hypothesenbildung
 
* Hypothesenbildung
 
* Vorbereitung weiterführender Analyse
 
* Vorbereitung weiterführender Analyse
 
+
<!--
= Aufgaben =
 
 
 
== Zusatz – Untersuchungsobjekt Programm ==
 
 
=== Datei erzeugen ===
 
=== Datei erzeugen ===
 
*cat > invoice-helper.c <<'EOF'
 
*cat > invoice-helper.c <<'EOF'
Zeile 128: Zeile 129:
  
 
*gcc invoice-helper.c -o invoice-helper
 
*gcc invoice-helper.c -o invoice-helper
 +
-->
  
 
+
== Aufgaben ==
== Aufgabe 1 – Programm ==
+
===Untersuchungen der Datei invoice-helper===
 
+
;Aufgabe 1
;Untersuchung
+
* Suche mit '''strings''' gezielt nach: '''version''', '''build''', '''user''', '''/home'''.
* Suche mit '''strings''' gezielt nach:
+
*Notiere alle gefundenen Strings und ordne sie dem Entwicklungs- oder Einsatzkontext zu.
  '''version''', '''build''', '''user''', '''/home'''.
+
<!--strings invoice-helper | grep -Ei 'version|build|user|/home'-->
  Notiere alle gefundenen Strings und ordne sie dem Entwicklungs- oder Einsatzkontext zu.
+
;Aufgabe 2
 
+
*Suche mit '''strings''' nach: '''/etc''', '''/var''', '''/srv''', '''/tmp'''.
* Suche mit '''strings''' nach:
+
<!--strings invoice-helper | grep -E '/etc/|/var/|/srv/|/tmp'-->
  '''/etc''', '''/var''', '''/srv''', '''/tmp'''.
+
;Aufgabe 3
  Welche dieser Pfade deuten auf Konfiguration, temporäre Dateien oder Datenexport hin?
+
*Welche dieser Pfade deuten auf Konfiguration, temporäre Dateien oder Datenexport hin?
 
+
*Suche mit '''strings''' nach: '''http''', '''https''', '''api'''.
* Suche mit '''strings''' nach:
+
<!--strings invoice-helper | grep -Ei 'http|https|api'-->
  '''http''', '''https''', '''api'''.
+
;Aufgabe 4
  Welche Kommunikationsziele sind erkennbar?
+
*Welche Kommunikationsziele sind erkennbar?
 
+
*Suche mit '''strings''' nach: '''key''', '''api''', '''/bin/sh'''.
* Suche mit '''strings''' nach:
+
<!--strings invoice-helper | grep -Ei 'key|/bin/sh'-->
  '''key''', '''api''', '''/bin/sh'''.
+
;Aufgabe 5
  Welche dieser Strings sind für ein Rechnungsprogramm ungewöhnlich?
+
*Welche dieser Strings sind für ein Rechnungsprogramm ungewöhnlich?
 
 
* Überlege anhand der gefundenen Strings,
 
  ob das Verhalten des Programms durch Startparameter beeinflusst werden könnte.
 
 
 
 
 
 
<!--
 
<!--
MUSTERLÖSUNG – Aufgabe 1 (Programm)
+
strings invoice-helper | grep -Ei 'key|api|/bin/sh'
  
Befehle:
+
Ungewöhnliche Strings:
strings invoice-helper | grep -Ei 'version|build|user|/home'
 
strings invoice-helper | grep -E '/etc/|/var/|/srv/|/tmp'
 
strings invoice-helper | grep -Ei 'http|https|api'
 
strings invoice-helper | grep -Ei 'key|/bin/sh'
 
 
 
Ergebnisse:
 
- InvoiceHelper 1.8.2
 
- last build: 2024-10-14
 
- build user: accounting
 
- /home/accounting/tools/invoice/
 
- /etc/invoice/helper.conf
 
- /srv/invoices/export/
 
- /var/tmp/invoice-helper
 
- https://billing.internal.local/api/upload
 
 
- X-API-Key: QUNDT1VOVElOR19LRVk=
 
- X-API-Key: QUNDT1VOVElOR19LRVk=
 
- /bin/sh
 
- /bin/sh
  
Einordnung:
+
Begründung:
- internes Programm aus Accounting-Umfeld
+
- Ein fest im Programm enthaltener API-Key gehört nicht zur Kernfunktion eines Rechnungsprogramms.
- externe Konfiguration und Datenexport
+
- Ein Shell-Aufruf (/bin/sh) ist für eine reine Fachanwendung ungewöhnlich und sicherheitsrelevant.
- Netzwerkkommunikation zu internem Dienst
 
- API-Key und Shell-Aufruf sicherheitsrelevant
 
 
-->
 
-->
 
 
== Aufgabe 2 – USB-Memory-Stick ==
 
 
;Untersuchung
 
* Suche mit '''strings''' nach:
 
  '''ssh''', '''scp''', '''rsync'''.
 
  Welche Nutzung des Sticks lässt sich daraus ableiten?
 
 
* Suche mit '''strings''' nach:
 
  '''PRIVATE''', '''KEY'''.
 
  Welche Art von sensiblen Daten könnte betroffen sein?
 
 
* Suche mit '''strings''' nach:
 
  '''internal''', '''vpn''', '''incident'''.
 
  Welche organisatorischen Kontexte werden sichtbar?
 
 
* Entscheide anhand der gefundenen Strings,
 
  welche Funde besonders kritisch sind und warum.
 
 
 
<!--
 
MUSTERLÖSUNG – Aufgabe 2 (USB-Stick)
 
 
Befehle:
 
strings memstick.dd | grep -Ei 'ssh|scp|rsync'
 
strings memstick.dd | grep -Ei 'PRIVATE|KEY'
 
strings memstick.dd | grep -Ei 'internal|vpn|incident'
 
 
Ergebnisse:
 
- ssh admin@10.10.10.5
 
- rsync -av /data user@backup:/srv/backup
 
- BEGIN OPENSSH PRIVATE KEY
 
- vpn.internal.corp/config
 
- Change window 2024-11-02 23:00
 
 
Einordnung:
 
- administrativer Einsatz des Sticks
 
- Umgang mit Zugangsdaten / Schlüsselmaterial
 
- Bezug zu internen Systemen und Changes
 
- hohe Kritikalität trotz fragmentarischer Daten
 
-->
 
 
== 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.
 

Aktuelle Version vom 9. Februar 2026, 18:08 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.

Vorarbeiten

Werkzeug

  • strings
  • file
  • grep

Szenario 1 – Analyse eines verdächtigen Programms

Datei runterladen
  • wget


Erste Einordnung der Datei

  • file sample1.bin

Strings extrahieren

  • strings sample1.bin

Zielgerichtete Auswertung

Netzwerkindikatoren
  • strings sample1 | grep -Ei 'http|https|ftp'
Zugangsdaten
  • strings sample1 | grep -Ei 'user|pass|password'
Systempfade und Shells
  • strings sample1 | 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

Untersuchungen der Datei invoice-helper

Aufgabe 1
  • Suche mit strings gezielt nach: version, build, user, /home.
  • Notiere alle gefundenen Strings und ordne sie dem Entwicklungs- oder Einsatzkontext zu.
Aufgabe 2
  • Suche mit strings nach: /etc, /var, /srv, /tmp.
Aufgabe 3
  • Welche dieser Pfade deuten auf Konfiguration, temporäre Dateien oder Datenexport hin?
  • Suche mit strings nach: http, https, api.
Aufgabe 4
  • Welche Kommunikationsziele sind erkennbar?
  • Suche mit strings nach: key, api, /bin/sh.
Aufgabe 5
  • Welche dieser Strings sind für ein Rechnungsprogramm ungewöhnlich?