Passwörter mit Batch versteckt speichern + auslesen

Ich habe letztens auf Stackoverflow einen kleinen Trick gefunden, wie sich beliebige Textinformationen, beispielsweise Zugangsdaten oder Passwörter, mit Batch versteckt in Dateien speichern und von dort wieder auslesen lassen.
Das dient sicher nicht für kritische Daten – vor einfachen neugierigen Blicken in Batch-Dateien kann man aber immerhin etwas verbergen.

Mit diesem kurzen Code wird ein beliebiger Textstring in einer Datei versteckt:

Hier der Code zum Auslesen der Daten:

(Für die Verwendung in einem Batch-Skript müssen doppelte Prozentzeichen verwendet werden.)
passwoerter-mit-batch-in-dateien-verstecken-cmd

Der Trick ist aus mehreren Gründen cool:
1.) Die versteckte Information lässt sich an jede beliebige Datei hängen von jedem beliebigen Dateityp hängen. Die Datei funktioniert anschließend genauso wie vorher, nur ist eine Information verborgen, die extrahiert werden kann.
passwoerter-mit-batch-in-dateien-verstecken-jede-datei

2.) Die erzeugte oder manipulierte Datei wird nicht in ihrer Dateigröße verändert bzw. ist immer 0 Byte groß. Egal wie lang der Text ist, der versteckt wird. Somit lassen sich ganze Text-Dokumente verstecken, ohne, dass an der Datei etwas erkennbar wäre, außer das Änderungsdatum.

3.) Jeglicher Text kann versteckt werden – egal ob Umlaute oder kryptische Zeichen.
passwoerter-mit-batch-in-dateien-verstecken-zeichen

4.) Die versteckten Informationen sind so gut wie unsichtbar. Die Dateigrößenveränderung ist 0 Byte, alle normalen Texteditoren zeigen absolut nichts an, selbst HEX-Editoren erkennen keinen Inhalt. Also keine Ahnung wie das technisch realisiert ist, aber es ist sexy. Kenny, sollte er den Beitrag lesen, weiß dazu vermutlich mehr 😉

Zufälliger Artikel:  Wordpress braucht FTP Verbindungsinformationen bei den Plugins

Fazit: Mit dieser Methode kann in jede Datei beliebig viel Information in jeglicher Art von Textform eingebaut werden, ohne, dass das irgendwie erkennbar oder die Information sichtbar ist. Wenn eine Person nicht gerade weiß, dass in Datei X Informationen versteckt wurden, ist das erst einmal safe. In einem Betriebssystem mit Hunderttausenden von Dateien könnte man somit also eine Menge verstecken – wenn man ein kleines Tool dazu schreiben würde, welches sich die bnutzten Dateien merkt und den Prozess nutzerfreundlich gestaltet.

Nachteil: Wird dieser Trick in einem Skript fest verbaut, muss letztlich natürlich irgendwann in einem Skript immer diese Information geladen werden. Dabei wird natürlich erstens der Befehl zum Auslesen der Information benutzt und zweitens muss die entsprechende Datei angegeben werden. Wer sich also gut auskennt, kann das in einem Skript erkennen und mit dem entsprechenden Befehl auch selbstständig die Information abgreifen.
Da hilft nur verrücktes obfuskieren:
passwoerter-mit-batch-in-dateien-verstecken-obfuscate
(Aber selbst dann kann einfach mit @echo on die Batch Ausgabe erzwungen werden und die geladenen Informationen sind im Endeffekt ablesbar (wenn die Ausgabe pausiert wird))

Dennoch: lustige Spielerei und besser als Klartextinformationen in Batch!

5 Kommentare

  1. Naja. „Versteckt“.

    Dieser „Trick“ verwendet die sogenannten Alternate Data Streams von NTFS, die bereits seit Windows XP (mehr oder weniger) unterstützt werden. In solchen Streams speichert z.B. der Internet Explorer die Information ab, dass eine Datei aus dem Internet geladen wurde und potentiell gefährlich ist, etc.

    Es gibt Extensions für den Explorer, mit denen man sich die zusätzlichen Streams anzeigen lassen kann und die Powershell kann das wohl inzwischen auch: https://blogs.technet.microsoft.com/askcore/2013/03/24/alternate-data-streams-in-ntfs/

    Bei solchen „versteckten“ Daten sollte man übrigens aufpassen. Kopiert man sie auf einen Datenträger, der nicht mit NTFS formatiert ist (z.B. FAT-formatierte USB-Sticks), verliert man die zusätzlichen Streams ohne Vorwarnung.

    1. Ahaaa. Verstehe. Heißt also 1.) das „:pwd“ hinter dem Dateinamen ist nur ein beliebiger Bezeichner und gar keine fest definierte Komponente. Und 2.) können die besagten Dateien auch nichts durch Internet geschickt werden.
      1.) Das funktioniert also auch:

      Check, funktioniert.
      2.) Upload auf FTP, Download, Data Streams sind gelöscht, damit auch die Informationen. Somit vermutlich auch keinerlei Cloud-Speicherung usw.

      Dennoch, wie gesagt, eine ausreichende Spielerei und nicht-kritische Daten etwas schwerer zugänglich zu machen.

  2. Alles richtig erkannt. 🙂

    Noch ein kleiner Einwurf zur Obfuscation: Obfuscation hilft nie. Eine Standardmethode, die auch ich inzwischen einsetze, um Code zu deobfuscaten, ist, den Code an kritischen Stellen so zu modifizieren, dass der deobfuscatete Content einfach ausgegeben wird.

    In deinem Fall könnte man z.B. einfach folgendes einbauen:
    echo %mlp%.%crx%:%bts%

    Das Vorgehen funktioniert auch bei JavaScript-Malware wunderbar – natürlich muss man sicherstellen, dass der deobfuscatete Code nicht ausgeführt wird. 😀

  3. Deswegen mein Anmerkung unter dem Bild 😉
    Ich selbst hab im Script ja einfach mit „echo Datei: %mlp%.%crx%“ den fertigen Dateinamen ausgegeben.
    Aber ich will mal sehen wie unsere Mitarbeiter den Batch Code schreiben 😀 So einfach er ist, Grundwissen muss man dafür schon haben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.