Daten|teiler
Kopieren als Kulturtechnik

Steganografie für Anfänger

19. Oktober 2006 von Christian Imhorst

Für die August-Ausgabe der Hakin9 habe ich meinen dieses Posting “recycelt”. Der neue Artikel ist etwas anders strukturiert und um Befehle für die PowerShell erweitert worden:

Steganografie ist die Kunst, Information zu tarnen, um sie verborgen zu übermitteln. Ihr Zweck ist also, geheime Information mithilfe anderer unverfänglicher Information so zu verbergen, dass sie von einem unbedarften Beobachter (Mensch oder Maschine) nicht erkannt wird.

Steganografie kommt aus dem Griechischen und heißt “geheimes Schreiben”. Herodot berichtet, dass einem Sklaven der Kopf geschoren wurde, um die Nachricht auf seine Kopfhaut zu tätowieren. Als das Haar wieder nachgewachsen war, wurde er zum Empfänger der geheimen Nachricht geschickt, der den Kopf des Sklaven wieder rasiert hat, um sie lesen zu können. Die Haare haben also die eigentliche Nachricht verdeckt. Ähnlich funktioniert Steganografie noch 2500 Jahre danach. Eine geheime Nachricht wird in einer anderen Nachricht, zum Beispiel in einer Bilddatei versteckt. Dem Empfänger muss natürlich bekannt sein, dass das Bild eine geheime Nachricht enthält, so wie dem Empfänger in der Antike klar sein musste, dass sich die Nachricht unter dem Haar des Sklaven befindet. Wenn das Originalbild fehlt, ist es sehr schwierig herauszufinden, ob ein Bild eine Geheimbotschaft verdeckt oder nicht. Die meisten Steganogramme werden enttarnt, wenn sie mit der Originaldatei verglichen werden und sich daraus Abweichungen ergeben. Wenn das Original gelöscht wurde und – vorausgesetzt – es wurde ein gutes Bild mit vielen Unschärfen, hoher Pixelzahl und wenig Kanten gewählt, dann ist im Prinzip nicht mehr festzustellen, ob eine Bilddatei ein Steganogramm ist, oder nicht.

Auf der Internet-Seite thetechtray.net gibt es ein kleines Tutorial, das zeigt, wie man eine Textdatei ohne aufwendige Software in einer Bilddatei versteckt. Die Macher weisen jedoch darauf hin, dass es nicht die sicherste Methode ist, da die Informationen nicht verschlüsselt werden, und mit einem einfachen Archivprogramm wie unzip oder unrar wieder ausgelesen werden können. Doch zumindest kann man so Dateien vor dem durchschittlichen Computernutzer verstecken.
Die große Stärke des Tutorials ist leider auch seine Schwäche: Es wird zwar gezeigt, wie man allein mit Bordmitteln Steganografie betreiben kann, unglücklicherweise ist das Tutorial aber nur für die Windows-Befehlszeile geschrieben. Hier kommt also die Version mit dem Bordmittel von Unix — der Kommandozeile, die z.B. mit der Bash in vielen Linux-Distributionen und in MacOS X vorhanden ist:

touch meeting.txt
echo "Dies ist der geheime Text" > meeting.txt 

Mit dem Befehl touch erzeugt man die Datei meeting.txt, in die dann der Satz “Dies ist der geheime Text” eingefügt wird.

zip meeting.txt.zip meeting.txt 
   updating: meeting.txt (stored 0%)

Dann wird die Datei mit einem Archivprogramm gepackt, hier z.B. zip.

cat pingu.jpg meeting.txt.zip > secret.jpg

Der Unix-Befehl cat wird dazu genutzt, um zwei Dateien miteinander zu verketten. In diesem Fall sind es secret.jpg und meeting.txt.zip, die zu der Datei pingu.jpg werden.

Danach löscht man die Original- und die Zip-Datei von meeting mit dem Befehl rm.

rm -rf mee*

Mit dem Befehl unzip kann man sie jeder Zeit wieder aus dem Steganogramm extrahieren.

unzip secret.jpg 
   Archive:  secret.jpg
     extracting: meeting.txt
         
cat meeting.txt
   Dies ist der geheime Text 

Den Inhalt der gelöschten und nun wieder entpackten Datei meeting.txt kann man sich im letzten Schritt mit dem Befehl cat anschauen und erhält: “Dies ist der geheime Text”. Man sieht also, dass das Steganogramm sehr leicht auszulesen ist. Wenn man die Größe der beiden Dateien im Terminal mit ls -l vergleicht, sieht man auch, dass secret.jpg 180 Byte größer ist, als das Originalbild:

-rw-r--r-- 1 christian christian    26   2008-08-28 11:00 meeting.txt
-rw-r--r-- 1 christian christian 37244 2008-05-13 21:07 pingu.jpg
-rw-r--r-- 1 christian christian 37424 2008-08-28 11:00 secret.jpg
 

Dadurch wird sofort klar, dass secret.jpg etwas verbirgt und das Steganogramm ist leicht entarnt. Diese Methode ist also nicht sehr sicher.

secret.jpg

Das Ergebnis ist dieses Bild: secret.jpg

Allerdings wird hier auch ein weiterer Nachteil der Steganografie klar: Sie ist symmetrisch. Das heißt Sender und Empfänger müssen sich gegenseitig darüber informieren, dass ein Steganogramm unterwegs ist und, sollte es verschlüsselt sein, mit welcher Passphrase es verschlüsselt ist. Diese Form der Verschlüsselung ist anfällig für Angriffe, um den Code zu knacken. Z.B. schaltet sich beim Man-in-the-middle-attack jemand zwischen Sender und Empfänger und schneidet die Passphrase und das Steganogramm mit.

Um diese Sicherheitslücke zu umgehen wird Steganografie meist zusammen mit asymmetrischer Verschlüsselung benutzt. Mit einem Programm wie PGP oder GnuPG wird ein Schlüsselpaar erstellt. Das eine ist ein geheimer und das andere ein öffentlicher Schlüssel. Der öffentliche Schlüssel kann möglichst weit verteilt werden, z.B. kann man meinen im Impressum finden. Wenn mir jemand eine Nachricht schreibt, die mit meinem öffentlichen Schlüssel verschlüsselt ist, dann kann nur ich sie mit meinem geheimen Schlüssel entschlüsseln. Wenn jemand nicht wissen soll, dass ich mir mit einer weiteren Person verschlüsselte Botschaften austausche, verstecken wir sie in Steganogramme. Das macht vor allem in Ländern Sinn, die Verschlüsselung verbieten. Sollte das Steganogramm enttarnt werden, dann hat der Angreifer zwar die verschlüsselte Botschaft, kann sie aber ohne meinen geheimen Schlüssel nicht lesen. Selbst wenn er meinen geheimen Schlüssel stehlen sollte, braucht er noch meine Passphrase, um die Botschaft entschlüsseln zu können. Steganografie kombiniert mit asymmetrischer Verschlüsselung ist in der Regel nur dann sinnvoll, wenn geheime Nachrichten zwischen Sender und Empfänger ausgetauscht werden und niemand wissen soll, dass es sich dabei um geheime Nachrichten handelt. Dafür sollte man aber professionellere Methoden und Programme wie Outguess oder Steghide verwenden.

Geschrieben in Gnu/Linux, Krypto

7 Antworten

  1. androphinx

    Hallo,
    ich muss mal zu diesem Tutorial etwas sagen: Diese Methode ist selbst mit Verschlüsselung EXTREM unsicher. Man kann bei genauerer Betrachtung der Hexdaten sofort die Daten extrahieren und die Entschlüsselung ist nur eine Frage der Zeit.
    Die Daten werden nicht wirklich in das Bild eingebettet und damit versteckt, sondern einfach an das Ende der Datei drangehängt. Das Quellbild und das Zielbild werden GENAU gleich aussehen, weil das Ende, d. h. die Daten, nicht mehr zu den Bilddaten gehört.
    Diese Methode ist wirklich nur fürs Experimentieren gedacht. Wer es wirklich sicher will braucht Programme wie StegHide.

    Mfg androphinx

  2. Christian Imhorst

    Hallo androphinx,

    vielen Dank für deinen Kommentar, und dass du nochmal auf die Unsicherheit dieser Methode hinweist. Aus meinem Text sollte aber schon herauszulesen sein, dass die Methode nicht für einen professionellen Einsatz gedacht ist, sondern maximal dazu “Dateien vor dem durchschittlichen Computernutzer [zu] verstecken.” Einer genauen Überprüfung hält sie aber nicht stand. Dafür sollte man Outguess oder, wie du ja auch schreibst, Steghide verwenden. Da gebe ich die zu 100% recht.

    Viele Grüße,
    Christian

  3. Bibi

    Erinnert mich an die alten Zeiten von Steganus :)

  4. Janna

    Nachricht und Kopfhaut tätowieren? Aua, das ist ja wirklich unglaublich grausam.

  5. Albert

    Man hat quasi in das Bild einen geheimen Text eingefügt. Finde ich sehr interessant, auch auf der FH haben wir das Thema gerade.

  6. Deutsches Regime erklärt dem Internet den Krieg » mein-parteibuch.com

    [...] dass auf dem System überhaupt verschlüsselte Daten vorhanden sind. Auch die vorhandenen Techniken der Steganografie, also das Verstecken der eigentlichen Inhalte in anderen Daten, können noch deutlich [...]

  7. Kramer

    Hallo,
    bitte was bedeuted die Nachricht:
    –,–:–
    das wurde mir per Handy von unbekannt gesandt, unbekannt kann doch eigentlich gar nicht senden?

    anstatt des Kommas war der Strich gerade nach unten, so ein Zeichen habe ich nicht gefunden.
    Chrissy