Verbergen von Text
Systeminterne Methoden
NTFS Alternate Data Streams
Verstecken von Ordnern und Dateien
Verstecken von Daten in einer Datei
Anfügen von Daten an eine Datei
Gefälschter Header / Footer
Daten vermischen
Daten rotieren
Daten verschlüsseln
Anfügen einer Archivdatei an eine andere Datei
Binäre Daten in eine HTML-Datei einbetten
Steganografie per XML/HTML-Tags
Steganografie mittels LSB-Methode
Gefällt dir meine Webseite, meine Freeware-Programme oder Online-Tools?
Dann spende bitte per PayPal und hilf mit, den Inhalt weiterhin kostenlos anbieten zu können - jeder Betrag ist willkommen!
Die simpelste Art Text zu verstecken ist die Textfarbe der Hintergrundfarbe anzupassen. Das ist in Textverarbeitungsprogrammen wie Word oder OpenOffice möglich, aber auch in HTML-Dateien. Das Markieren des betreffenden Bereiches enthüllt diesen Text bereits.
Im Fall von HTML sind noch weitere Möglichkeiten zum Verstecken von Informationen denkbar, etwa Kommentare. Unsichtbare bzw. ausgeblendete Elemente lassen sich mit CSS umsetzen. Mit den Eigenschaften "visibility: hidden" und "display: none" können Elemente und deren Unterelemente ausgeblendet werden. Ein Blick in den Quellcode legt den so verborgenen Bereich offen.
Eine der einfachsten Arten eine Datei zu verbergen ist, die Datei mit dem Dateiattribut "Versteckt" zu versehen. Zusätzlich kann auch das Attribut "System" gesetzt werden. Dateien mit diesen Attributen werden vom Windows Explorer mit den Standardeinstellungen nicht angezeigt.
Dateien können über die Dateieigenschaften auch verschlüsselt werden. Damit kann nur der Benutzer die Daten lesen, der sie verschlüsselt hat.
Wie alternative Datenströme zum Speichern und Extrahieren von Dateien verwendet werden können wird auf der Seite "Alternative Datenströme (ADS)" ausführlich beschrieben.
Im Internet werden unzählige Programme zum Verstecken von Ordnern und Dateien angeboten. Diese verwenden diverse Techniken, um Ordner vor dem unbedarften Benutzer zu verbergen. Einige wiegen den Benutzer auch in falscher Sicherheit, da mit einem Passwort ein gewisser Schutz suggeriert wird. Meist ist sowohl das Verstecken, als auch der Passwortschutz, nur optisch und kann sehr einfach umgangen werden.
Einige Programme setzen lediglich das Dateiattribut "Versteckt" und/oder "System" für einen Ordner, um ihn auszublenden. Dies funktioniert jedoch nur, wenn im Windows Explorer die Standardeinstellungen verwendet werden. Mit einem alternativen Dateimanager oder mit einer Änderung der Anzeigenoptionen im Windows Explorer können die versteckten Ordner wieder sichtbar gemacht werden.
Wieder andere Programme gehen einen Schritt weiter und verwenden eigene Systemdienste, die den Zugriff auf die geschützten Ordner verhindern. In diesem Fall muss das System ohne diese Dienste gestartet werden, damit man Zugriff auf die geschützten Ordner erhält.
Datenwiederherstellungsprogramme welche direkt auf den Datenträger zugreifen und nicht die Windows-Funktionen für den Dateizugriff nutzen, lassen sich auch durch laufende Systemdienste nicht vom Zugriff auf die Ordner und Dateien abhalten.
Das Umbenennen einer Datei ist eine Möglichkeit, deren Inhalt zu verschleiern bzw. für andere uninteressant zu machen. Nicht nur der eigentliche Name der Datei kann geändert werden, sonder auch die Dateierweiterung. So wird aus der Datei "Finanzen.xls" z.B. "kbekzld.dll", die im Systemverzeichnis von Windows abgelegt werden kann, damit sie weniger auffällt, als im Benutzerordner. Allerdings gibt es Programme, welche Dateien an Hand ihres Inhaltes (Magic-Bytes) erkennen und somit den eigentlichen Dateityp enthüllen.
Für Container-Dateien, wie etwa von VeraCrypt, welche nur verschlüsselte Daten sowie Zufallsdaten enthalten, würden sich Dateierweiterungen wie ".BIN" oder ".DAT" anbieten, die keinen bestimmten Dateityp angeben.
Die Eigenarten von Windows oder des Windows Explorers können ebenso dazu verwendet werden um Ordner auszublenden. So zeigt beispielsweise der Windows Explorer nicht den Inhalt des zum Microsoft .Net Framework gehörenden Ordners "C:\Windows\assembly" an, sondern die verfügbaren Assemblies darin. Mit einem alternativen Dateimanager werden die enthaltenen Ordner und Dateien aber wie gewohnt angezeigt.
Es kursieren auch Praktiken wie die Verwendung von durchsichtigen Ordner-Icons oder Dateinamen aus Leerzeichen oder Sonderzeichen. Diese Methoden funktionieren vermutlich nur bei sehr unerfahrenen Benutzern.
Je nach Dateiformat lassen sich Daten theoretisch auch innerhalb einer Binärdatei verstecken. Durch die Manipulation von Positionsangaben im Dateiheader könnten Daten mitten in der Datei versteckt werden. Am Beispiel einer Bitmap-Datei ist ersichtlich, wie der Header von einem Programm manipuliert werden könnte, um unbemerkt Daten einzutragen.
Da in der Datei das Offset des Beginns der Bilddaten angegeben ist, könnten die Bilddaten leicht nach hinten verschoben werden. Im entstehenden Platz könnten so andere Daten untergebracht werden, die aber auf jeden Fall verschlüsselt werden sollten.
Header |
Eingefügte Daten |
Bilddaten |
Damit die Bilddatei richtig angezeigt werden kann, sind einige Änderungen im Header notwendig. Einerseits muss die Länge der BMP-Datei angepasst werden und zum anderen das Offset und die Länge der Bilddaten. Auch muss vor dem Einfügen von Daten überprüft werden, ob in der BMP-Datei eine Palette enthalten ist (z.B. bei 256 Farben).
VeraCrypt Container-Dateien mit einem Hidden Volume bieten ebenfalls Platz für Daten. Diese Container bestehen aus einem Header für das Outer Volume und einem Header für das Hidden Volume, danach folgen die Daten der beiden Volumes. Jeder Header ist 64 KB groß. Überschreibt man einen der beiden Header, bleibt der andere Header lesbar. Werden die ersten 64 KB überschrieben, so bleibt das Hidden Volume vollständig nutzbar erhalten. Überschreibt man die zweiten 64 KB, so bleibt das Outer Volume erhalten. Innerhalb eines VeraCrypt Containers haben somit maximal 64 KB Daten Platz.
Es gibt einen Ansatz, bei dem Videodateien und VeraCrypt Hidden Volume Container so miteinander verbunden werden, dass beide Dateien theoretisch lesbar und das Hidden Volume des VeraCrypt Containers benutzbar bleibt. Dabei wird der Header der Videodatei in die ersten 64 KB des VeraCrypt Containers geschrieben und der Rest der Videodaten wird an die Containerdatei angefügt. Dadurch verliert man zwar das Outer Volume, aber das Hidden Volume bleibt nutzbar erhalten. Das Video sollte ebenfalls abspielbar sein.
In der Theorie mögen diese Methoden funktionieren, aber in der Praxis wird es Anzeigenprogramme geben, die diese Änderungen nicht korrekt verarbeiten können. So könnte ein Bildbetrachter die Bilddaten unmittelbar nach dem Header suchen, anstatt sich an die Positionsangabe im Header zu halten. Im Fall des Video-VeraCrypt-Hybriden funktioniert das Video einiger Berichte zufolge nicht mehr im Windows Media Player, wohingegen andere Videoplayer keine Probleme damit zu haben scheinen.
Eine sehr einfache Methode, um Daten in einer Datei zu verstecken, ist das Anfügen der Daten am Ende der Datei. Damit dies ohne Probleme funktioniert, benötigt man als Trägerdatei eine Datei, welche eine feste Dateilänge hat. Dies könnten zum Beispiel diverse Bilddateien oder Programmdateien sein.
Im Folgenden wird eine JPEG-Bilddatei für die Beispiele und Erläuterungen verwendet. In jedem Fall sollte das Dateiformat der Trägerdatei bekannt sein, damit nicht unerwünschte Nebenwirkungen durch das Anfügen von Daten entstehen. Jede JPEG-Datei endet mit den Bytes "0xFF
" und "0xD9
", dem EOI-Marker (End Of Image). Alle Daten, die nach dem EOI-Marker stehen, werden bei der Anzeige des Bildes ignoriert.
352A 5C91 D0D2 B14A 674C AEAD D0D3 C107 5*\....JgL...... BD60 C57B 8EA6 AEC3 7A0F 5228 D8B5 24CF .`.{....z.R(..$. FFD9 4469 6573 2069 7374 2065 696E 2067 ..Dies ist ein g 6568 6569 6D65 7220 5465 7874 21 eheimer Text!
Der hervorgehobene Text wurde an die Originaldatei gehängt und wenn nicht zu viele Daten angefügt werden, wird dies kaum auffallen.
Von einem Verbergen oder gar Verstecken kann dabei noch nicht gesprochen werden, da die Daten immer noch lesbar sind. Selbst wenn man diese Bilddatei mit einem Texteditor öffnet, würde man am Ende der Datei immer noch den angefügten Text lesen können. Die Daten sollten also vor dem Anfügen an die Datei komprimiert oder verschlüsselt werden.
Das Anfügen und Extrahieren von Daten bzw. Dateien lässt sich auch mit einem Programm automatisieren. Dazu muss lediglich die Startposition bzw. die Länge der angefügten Datei bekannt sein. Auch mehrere Dateien können so aneinandergefügt werden. Der Aufbau eines solchen Konstrukts könnte etwa so aussehen:
Trägerdatei |
Angefügte Datei 1 |
Länge der Datei 1 |
Angefügte Datei 2 |
Länge der Datei 2 |
Verwendet man als Trägerdatei ein Programm, das die angefügten Daten extrahieren kann, erhält man ein selbst entpackendes Archiv wie dies auch bei den gängigen Packprogrammen möglich ist.
Um die Magic-Bytes eines Kryptografie- oder Packprogramms zu verschleiern, können gefälschte Header bzw. Footer der Datei hinzugefügt werden. So kann etwa die MZ-Signatur einer Programmdatei - eventuell gefolgt von zufälligen Daten - den Header und der Version-Info-Block den Footer eines Archivs verschleiern. Auch können die Magic-Bytes einer Datei entfernt oder ersetzt werden, um den tatsächlichen Inhalt zu verschleiern.
Beim Schreiben der zu versteckenden Daten können Zufallsdaten verwendet werden, um ein einfaches Auslesen zu verhindern. Wenn nach jedem Bit ein Bit mit Zufallsdaten eingefügt wird, benötigt man das ursprüngliche Programm oder ein selbst geschriebenes Programm oder Script, um die Daten wieder zu extrahieren.
Sollen zwei oder mehr Dateien aneinandergefügt werden, kann dies auch Bit-weise erfolgen:
Bit 1 der 1. Datei |
Bit 1 der 2. Datei |
Bit 2 der 1. Datei |
Bit 2 der 2. Datei |
... |
Ist eine Datei länger, können die verbleibenden Daten mit Zufallsdaten aufgefüllt werden.
Einfache Verschlüsselungs- oder Rotationsarten eignen sich, um Nachrichten schwerer lesbar zu machen.
So wird auf Webseiten manchmal ROT-13 verwendet, um Lösungen oder Hinweise auf Fragen nicht sofort lesbar anzuzeigen. Neben oder zusätzlich zu ROT-13 für Buchstaben kann auch ROT-5 für Zahlen, sowie ROT-47 für Satz- und Sonderzeichen verwendet werden.
Eine einfache Art der Verschlüsselung ist die Rotation der Bits. Werden die Daten in Blöcke unterteilt, z.B. je 2 Bit, welche anschließend rotiert werden, ist der ursprüngliche Text nicht mehr lesbar. Optimalerweise sollten mehrere, unterschiedlich lange Rotationen vorgenommen werden.
Das Verschlüsselungsverfahren sollte nach dem Zweck und den Möglichkeiten des Absenders und dem oder der Empfänger gewählt werden.
Für binäre Daten kann der binäre XOR-Operator verwendet werden, wodurch die Daten ebenfalls stark verändert werden. Als Schlüssel für die XOR-Operation kann ein einzelnes Zeichen, oder eine Zeichenfolge verwendet werden. In beiden Fällen wird der Schlüssel so oft wiederholt, dass er der Länge des zu verschlüsselnden Textes entspricht. Eine weitere Möglichkeit bestünde darin, für die XOR-Operationen Pseudo-Zufallsdaten basierend auf einem Schlüssel zu verwenden. Ist der Schlüssel in seiner gesamten Länge absolut zufällig, würde das dem One-Time-Pad (auch Vernam-Verschlüsselung) entsprechen.
Eine Verschlüsselungsmethode wie RC4 lässt sich auch noch relativ einfach umsetzen. Sicherere Verfahren wären dann AES, Serpent oder Twofish.
Bei manchen Dateiformaten befinden sich die Dateiinformationen nicht am Beginn, sondern am Ende der Datei. Dies ist zumindest bei RAR-, ZIP- und 7-Zip-Archiven der Fall. Wird ein solches Archiv geöffnet, findet das Packprogramm alle Informationen am Ende der Datei. Die Daten vor den eigentlichen komprimierten Daten werden nicht beachtet.
Fügt man nun ein solches Archiv z.B. an eine JPEG-Datei an, welche die Dateiinformationen am Beginn der Datei speichert, kann die Bilddatei normal geöffnet werden. Genauso kann aber auch die Datei mit einem Packer geöffnet werden, der das angefügte Archiv anzeigt und die davor befindlichen Bilddaten ignoriert.
Mit dem Konsolenbefehl
copy /b Bild.jpg + Archiv.rar Bild_mit_Archiv.jpg
wird der Datei "Bild.jpg" die Datei "Archiv.rar" angefügt. Die daraus resultierende neue Datei wird als "Bild_mit_Archiv.jpg" gespeichert. Der Parameter "/b" legt den Binär-Modus für das Kopieren fest.
An Stelle der JPEG-Datei kann auch jede andere Datei verwendet werden, die ihre Dateiinformationen am Beginn der Datei speichert und angefügte Daten ignoriert. Das sind z.B. GIF-, PNG- und BMP-Dateien. Auch Video- und Audiodateien wie MP4, WEBM, MP3, M4A und WAV können verwendet werden, ebenso wie Microsoft Word- und Excel-Dokumente (DOC und XML).
Damit die Daten nicht versehentlich überschrieben werden, was eventuell bei Word und Excel der Fall sein könnte, sollte die Datei mit dem Attribut "Schreibgeschützt" versehen werden. Auch ein Passwortschutz für das versteckte Archiv ist empfehlenswert.
In einer HTML-Datei können binäre Daten eingebettet werden, ohne dass sie übermäßig auffallen. So besteht die Möglichkeit, dass im SRC-Attribut des IMG-Tags z.B. Bilder eingebettet werden. Das Bild kann natürlich auch versteckte Daten enthalten. Auch wenn keine Bilddaten eingefügt werden, wird es kaum auffallen, wenn der IMG-Tag auskommentiert wird.
<html> <head> <title>Test</title> </head> <body> <p>Seite mit einem versteckten eingebetteten Bild</p> <!-- <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QECRXhpZgAA TU0AKgAAAAgACwEaAAUAAAABAAAAkgEbAAUAAAABAAAAmgEoAAMAAAABAAIAAAExAAIAAAAQA ... G39qv/k6H4kf9jTqf/pXLXvX/D5z4of9AHwD/wCAV3/8k18vfEDxpdfEfx5rfiK+jt4r3Xr+f UbhIFKxJJNI0jBASSFBY4BJOO560229WJJLRH//2Q==" alt="image" border="0" height="50" width="200"> --> </body> </html>
Mit dem Konsolenbefehl CERTUTIL können Dateien als Base64 kodiert werden:
certutil -encode picture.jpg base64.txt
Danach muss lediglich die erste und letzte Zeile der Datei entfernt werden. In die andere Richtung ist es ebenfalls möglich. Dazu muss den Base64-Daten die folgenden Zeilen vorne und hinten hinzugefügt werden:
-----BEGIN CERTIFICATE----- [Base64-Daten] -----END CERTIFICATE-----
Danach kann die Datei mit CERTUTIL dekodiert werden:
certutil -decode base64.txt picture.jpg
Die Anordnung und Formatierung von Tags und Attributen im XML/HTML-Quellcode kann zum Verbergen von Daten verwendet werden. Abhängig von der Anzahl der Tags ist die Datenmenge jedoch begrenzt, da pro Tag bzw. Attribut nur ein Bit gespeichert werden kann.
Ein leeres Element kann entweder mit einem eigenen Ende-Tag oder im Tag selbst abgeschlossen werden:
<img src="picture.jpg"></img> <img src="picture.jpg"/>
Je nach Notation kann nun eine Variante den Wert 1 und die andere den Wert 0 repräsentieren.
Die nächste Möglichkeit bieten Leerzeichen am Ende von Tags. So könnten Leerzeichen als 1 und keine Leerzeichen als 0 betrachtet werden. So würde der folgende HTML-Code den Wert "01110110" enthalten.
<h1>Titel</h1 > <div ><b >Untertitel</b></div > <p >Text</p>
Die Reihenfolge von Tags und Attributen könnte ebenfalls als Speichermethode verwendet werden. Je nach Reihenfolge können die Werte 0 und 1 zugewiesen werden.
<file><name>...</name><size>...</size></file> <file><size>...</size><name>...</name></file>
oder
<file name="..." size="..." /> <file size="..." name="..." />
Speziell bei langen Listen, wie einer Kundendatei, einer Produktübersicht oder einer Dateiliste können damit einige Informationen gespeichert werden.
Eine bessere Technik, um Daten zu verbergen, ist das Verstecken von Informationen in den (binären) Daten selbst. Dazu ist ein eigenes Programm bzw. Script notwendig, das die Speicherung und Extraktion der Informationen übernimmt. Als Trägerdatei, welche die Informationen aufnimmt, kommen unterschiedlichste Grafik-, Audio- und Videoformate in Frage.
Eine 24-Bit-Bitmap-Datei beispielsweise besteht aus dem Header und den eigentlichen Bilddaten. Die Bilddaten bestehen ihrerseits aus jeweils drei Bytes, wobei diese die Rot-, Grün- und Blauwerte angeben. Damit Änderungen in der Datei beim Betrachten nicht auffallen, dürfen die Farbwerte nur geringfügig verändert werden.
Bei der LSB-Methode (Least Significant Bit) werden dazu die geheimen Daten nur in das niederwertigste Bit eines jeden Farbwertes eingefügt. Dieses Bit hat den geringsten Wert im Byte und die Änderungen wirken sich daher auch nur minimal und für das menschliche Auge nicht erkennbar aus.
Gefällt dir meine Webseite, meine Freeware-Programme oder Online-Tools?
Dann spende bitte per PayPal und hilf mit, den Inhalt weiterhin kostenlos anbieten zu können - jeder Betrag ist willkommen!