Übersicht
Binärdateien bestehen aus 0en und 1en, die direkt vom Computer ausgeführt werden, und erscheinen beim Öffnen mit einem normalen Texteditor als Kauderwelsch. Der Befehl `strings` findet in solchen Binärdateien vier oder mehr aufeinanderfolgende druckbare Zeichen und extrahiert sie als Text. Dies ermöglicht die Identifizierung nützlicher Informationen wie Fehlermeldungen, Dateipfade, URLs und Konfigurationswerte, die in Binärdateien enthalten sind.
Hauptmerkmale
Die Hauptmerkmale des `strings`-Befehls sind:
- Extrahiert lesbare Zeichenketten aus Binärdateien.
- Sucht standardmäßig nach vier oder mehr aufeinanderfolgenden druckbaren Zeichen.
- Unterstützt verschiedene Zeichenkodierungen (ASCII, UTF-16 usw.).
- Nützlich, um Bibliotheksnamen oder Konfigurationsinformationen zu identifizieren, die von Programmen verwendet werden.
Anwendungsbereiche von strings
`strings` kann in verschiedenen Bereichen eingesetzt werden, die über die bloße Dateiprüfung hinausgehen.
- Malware-Analyse: Extrahiert Informationen wie C&C-Serveradressen, Dateinamen und API-Aufrufe aus Malware-Binärdateien.
- Debugging: Findet Fehlermeldungen oder Debugging-Zeichenketten in ausführbaren Dateien, um Probleme zu beheben.
- Analyse unbekannter Dateien: Wenn die Dateierweiterung unklar ist, kann `strings` den internen Text überprüfen, um die Art der Datei abzuschätzen.
Wichtige Optionen
Die wichtigsten Optionen des `strings`-Befehls sind nach ihrem Zweck gruppiert.
1) Extraktionsoptionen
2) Hilfe
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`strings` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Lernen Sie die Funktionen des `strings`-Befehls durch verschiedene Anwendungsbeispiele kennen.
Grundlegende Zeichenketten aus einer Binärdatei extrahieren
strings /usr/bin/top
Extrahiert Zeichenketten mit den Standardeinstellungen (mindestens 4 Zeichen) aus der Binärdatei `/usr/bin/top`.
Nur längere Zeichenketten extrahieren
strings -n 8 /usr/bin/top
Verwenden Sie die Option `-n`, um nur Zeichenketten mit 8 oder mehr Zeichen zu extrahieren.
Zeichenketten und hexadezimale Offsets zusammen ausgeben
strings -t x /usr/bin/top
Gibt mit der Option `-t x` den hexadezimalen Offset aus, an dem jede Zeichenkette in der Datei beginnt. Dies ist nützlich bei der Binäranalyse.
Verwendung mit der Pipe (|)
strings /usr/bin/top | grep error
Extrahiert und überprüft nur Zeichenketten, die 'error' enthalten, aus der Datei `/usr/bin/top`.
UTF-16-kodierte Zeichenketten extrahieren
strings -e l /path/to/binary
Verwenden Sie die Option `-e`, um UTF-16-kodierte Zeichenketten zu extrahieren. `l` steht für Little-Endian, `b` für Big-Endian.
Installation
`strings` ist Teil des `binutils`-Pakets und ist standardmäßig in den meisten Linux-Distributionen enthalten. Eine separate Installation ist nicht erforderlich.
Debian/Ubuntu
sudo apt update
sudo apt install -y binutils
RHEL/CentOS/Fedora
sudo dnf install -y binutils
Tipps & Hinweise
Hier sind wichtige Hinweise zur Verwendung des `strings`-Befehls.
Tipps
- `strings` liefert viel sauberere und nützlichere Informationen aus Binärdateien als `cat`. `cat` kann den Inhalt einer Binärdatei direkt ausgeben und dabei das Terminal beschädigen.
- Da die extrahierten Zeichenketten Zeilenumbrüche oder Leerzeichen enthalten können, können sie durch Verketten mit Pipes an `grep`, `awk` usw. weiterverarbeitet werden, um sie noch nützlicher zu machen.