Aufmacher

Gut versteckt?

Stegdetect und Stegbreak

01.04.2008
Steganogramme, die versteckt geheime Nachrichten transportieren, gelten als besonders sicher – zu Recht?

Wer heute private oder geschäftliche Daten sicher über das Internet transportieren will, ist auf verschiedene Verschlüsselungstechniken angewiesen, denn zu viele Gefahren lauern im Netz der Netze. Um die zum umgehen, verpackt der Absender seine Mitteilungen mithilfe kryptografischer Methoden, der Empfänger entschlüsselt sie wieder. Dabei kommen in der Regel zwei Schlüssel – ein öffentlicher und ein privater – zum Einsatz. Diese Methode hat jedoch einige Nachteile: Durch Angriffe wie das Abfangen des Datenverkehrs durch eine so genannten Man-in-the-middle-Attacke unter Vortäuschen einer falschen Identität geraten sensible Daten schnell in unbefugte Hände. Auch weisen manche verbreitete Verschlüsselungsmethoden bekannte Schwächen auf.

Als wesentlich einfacher in der Handhabung und effizienter in der Wirkung erweisen sich dagegen die Möglichkeiten der Steganografie. Sie setzt einen Schritt früher an als die Kryptografie und verschlüsselt die Nachricht nicht nur, sondern bettet sie zudem in ein Trägermedium wie beispielsweise ein Bild oder eine Audiodatei ein, so dass unerwünschten Lauschern gar nicht erst auffällt, dass hier Nachrichten verschickt werden. Grundsätzlich eignen sich verschiedenste Formate als Trägerdatei für steganografische Zwecke: Neben den klassischen Bilddateien mit hoher Farbtiefe wie BMP-, JPEG- und PNG-Dateien gibt es auch Steganografiesoftware für Audioformate wie WAV oder MP3 sowie zusätzlich einige exotische Programme, die geheime Informationen sogar in Textdateien verstecken.

In der Praxis haben sich primär Bildformate als Steganografieträger durchgesetzt, da diese einerseits eine ausreichend große Kapazität für die Nachrichtenlänge bieten und sich andererseits aber auch einfach versenden lassen und kaum den Verdacht erregen, dass in ihnen eine geheime Nachricht stecken könnte. Unter Linux haben sich dazu die beiden Kommandozeilenprogramme Steghide [1] und Outguess [2] etabliert, die schnell und zuverlässig Textdateien in einen Bildträger einbetten.

Steganogramme aufspüren

Um ein Steganogramm, also eine Trägerdatei mit einer eingebetteten Nachricht, ausfindig machen zu können, wurden im Laufe der Jahre verschiedene Angriffstechniken entwickelt. Die einfachste Möglichkeit bietet eine einfache Form des visuellen Angriffs. Wie das grundsätzlich funktioniert, können Sie selbst ausprobieren, indem Sie einen Text in ein ansonsten leeres Bild mit weißer HIntergrundfarbe einbetten. Maximieren Sie nun bei dem so entstandenen Steganogramm anschließend mit einer herkömmlichen Bildbearbeitung den Kontrast, erscheinen die im Vergleich zum weißen Originalbild veränderten Pixel farbig hervorgehoben. Auf diese Weise kann ein Angreifer erkennen, in welchen Bereichen eines mutmaßlichen Stenogramms er Veränderungen suchen muss. Vielen älteren Steganografie-Applikationen, die Informationen nicht über den gesamten Träger, sondern nur über Teile desselben verteilen, wurde dieser einfache Angriff bereits zum Verhängnis. Allerdings kennen die Entwickler von Steganografieprogrammen diese Lücke längst, sodass eine entsprechende Attacke heute keinen Erfolg mehr zeitigt.

Aktuelle Versuche, ein Steganogramm zu enttarnen, verwenden stattdessen ausgeklügelte mathematische Methoden. Lassen sich dabei Modifikationen am Bildträger anhand statistischer Auffälligkeiten zuverlässig nachweisen, gilt das Steganogramm als erkannt und damit als unbrauchbar. Damit ist zwar ein Nachweis einer Modifikation erbracht, allerdings kann der Angreifer deshalb die Nachricht noch längst nicht entschlüsseln. Die eingebettete Information liegt in aller Regel nicht im Klartext im Trägermedium vor: Aktuelle Steganografie-Software verschlüsselt üblicherweise den Text vor dem Einbetten und sichert ihn obendrein durch eine Passphrase ab. Das bedeutet allerdings, dass sowohl der Absender als auch der Empfänger der geheimen Nachricht nicht nur die Passphrase kennen, sondern beide zusätzlich dasselbe Steganografieprogramm benutzen müssen.

Die zum Einbetten der Nachrichten verwendeten Algorithmen haben die bekannten Kinderkrankheiten aus der Frühzeit der Steganografie längst abgelegt. Durch das Verschlüsseln der Textmitteilungen (was sogenanntes "weißes Rauschen" erzeugt) erschweren sie das Erkennen von auffälligen Pixelsequenzen drastisch und verteilen zudem die Daten gleichmäßig über die gesamte Trägerdatei. Trotz intensiver Forschung haben sich bislang kaum Ansätze ergeben, derartig modifizierte Bilddateien zuverlässig als Steganogramme nachzuweisen.

Doch selbst bei einem erkannten Steganogramm stellt die Entschlüsselung der vermuteten geheimen Nachricht eine zusätzliche dar. Selbst in Kenntnis der Verschlüsselungsmethoden, die die einzelnen Algorithmen verwenden, versprechen hier lediglich massive Brute-Force-Attacken Erfolg, die die Passphrasen anhand vordefinierter Wörterbücher zu knacken versuchen. Dazu ist eine enorme Rechenleistung erforderlich, soll die Attacke nicht zur unendlichen Geschichte ausarten.

Unter Linux ist aus den genannten Gründen deshalb lediglich ein einziges Programm-Duo erhältlich, um Steganogramme aufzuspüren und eventuell sogar die darin enthaltenen Nachrichten zu entschlüsseln.

Entdecken und brechen

Die beiden Programme Stegdetect und Stegbreak des Entwicklers Niels Provos sind auf die Lokalisierung und Entschlüsselung von Steganogrammen auf Basis von JPEG-Bildern spezialisiert. Bei der Entwicklung von Stegdetect hat Provos die verschiedenen Einbettungsalgorithmen analysiert und Routinen entwickelt, die die Trägermedien auf entsprechende Auffälligkeiten hin untersuchen. Stegdetect erkennt dabei fünf verschiedene Einbettungsmethoden, welche die Programme Jsteg, Jphide, Invisible Secrets, Outguess und F5 nutzen. Jphide, F5 und Outguess lassen sich auch unter Linux einsetzen, wobei man nur Outguess noch als aktuell betrachten kann. Das zweite aktuelle und unter Linux lauffähige Steganografie-Anwendung, Steghide, steht nicht auf der Liste von Stegdetect.

Für Stegbreak gibt der Entwickler an, dass es gegen Jsteg, Jphide und Outguess in der Version 01.3b erfolgreich Wörterbuchattacken vornehmen kann. Dafür greift es auf ein mehrsprachiges Wörterbuch zurück, das insgesamt 1,8 Millionen Einträge bietet. Stegbreak versucht, mit wahlfrei aus dem Wörterbuch entnommenen Ausdrücken und auch daraus abgeleiteten Abwandlungen als Passphrase Header-Informationen des Steganogramms zu erhalten. Diese Angriffsmethode setzt eine exorbitante Rechenleistung voraus – deswegen lässt sich Stegbreak auch in Rechner-Clustern einsetzen.

Die meisten aktuellen Linux-Distributionen listen das Programmduo Stegdetect/Stegbreak als kombiniertes Binärpaket bereits in ihren Repositories. Hier richten Sie das Paket bequem über Synaptic, Rpmdrake oder YaST ein. Auch für das alte Mandrake Linux ab Version 9.1 und das russische ALT-Linux gibt es RPM-Pakete [3]. Die aktuelle Version 0.6 der Software findet sich als Tarball auch auf der Website des Entwicklers [4] und lässt sich mit dem altbekannten Dreisatz ./configure && make && sudo make install übersetzen und einrichten. Zusätzlich gibt es mit Xsteg eine einfach zu bedienendes GUI für Stegdetect/Steghide. Es findet sich als gesondertes Paket in den Repositories vieler Distributionen, ist jedoch auch im Originalarchiv enthalten.

Los geht's

Als Trägermedium für unseren Test haben wir ein gut ein MByte großes JPEG-Bild mit starkem Rauschen verwendet, in das wie eine exakt 745 Byte große Textdatei einbetteten (Abbildung 1). Dazu fertigten wir mit Outguess und Steghide je ein Steganogramm. Als Basisdistributionen kamen Ubuntu in den Versionen 7.04 und 7.10 sowie verschiedene darauf basierende Derivate und – für die RPM-Fraktion – Mandriva Spring 2007 und das bereits etwas ältere CentOS 4.2 zum Einsatz.

Abbildung 1: Die geheimnisvolle Malayenblume dient hier als Versteck.

Da weder Stegdetect noch die GUI Xsteg Programmstarter in den entsprechenden Menüs anlegen, müssen Sie die beiden Programme nach beendeter Installation in einem Schnellstartfenster ([Alt]+[F2]) mit dem Befehlsaufruf xsteg aktivieren. Sodann präsentiert sich ein aufgeräumtes Fenster mit lediglich einem kleinen Eingabefeld und fünf Radiobuttons (Abbildung 2).

Abbildung 2: Das Hauptfenster von Xsteg.

Die beiden großflächigen Nachrichtenfelder Filename und Message window zeigen die Scan-Ergebnisse sowie den Befehlszeilenaufruf von Stegdetect mit den entsprechenden Parametern an. Über die fünf Auswahlschalter im linken oberen Bereich des Programmfensters bestimmen Sie die beim Scan zu berücksichtigenden Einbettungsmethoden. Besondere Bedeutung kommt dem Feld Sensitivity zu: Hier lassen sich Werte zwischen 0.01 und 9.99 eintragen – je höher der Wert, desto eingehender nimmt Stegdetect das vermutete Steganogramm unter die Lupe. Um eine Bilddatei zu laden, machen Sie diese zunächst über den Menüdialog File | Open ausfindig. Sobald Sie die Datei öffnen, startet automatisch der Scan.

Wir untersuchten zunächst das von Steghide erstellte Steganogramm mit der voreingestellten Empfindlichkeit von 1.00, was nur wenige Sekunden dauerte und ein negatives Ergebnis erbrachte. Sodann erhöhten wir die Sensitivität jeweils in Einer-Schritten und ließen die Datei erneut untersuchen. Beim nur unwesentlich länger dauernden Scanvorgang bei vierfacher Empfindlichkeit wurde unser Bild erstmals als Steganogramm unter Nutzung des von Jphide verwendeten Algorithmus erkannt (Abbildung 3). Weitere Scans mit höheren Empfindlichkeitswerten führten zum gleichen Ergebnis. Die Negativprobe mit dem Originalfoto – also ohne eingebetteten Text – erbrachte erwartungsgemäß kein Ergebnis.

Abbildung 3: Treffer: Das Steganogramm ist identifiziert.

In das gleiche Originalbild betteten wir anschließend mit Outguess 0.2 den selben Text ein. Die folgende Untersuchung mit Stegdetect verlief bei allen Empfindlichkeiten negativ: Das Tool konnte das mit Outguess hergestellte Steganogramm nicht erkennen.

Nun betteten wir mit Steghide einen Text von sechs KByte Länge ins gleiche Trägermedium ein. Die resultierende Datei identifizierte Stegdetect bereits bei einer Sensitivität ab 2.00 als Steganogramm. Je größer als der eingebettete Test, desto eher kann Stegdetect offenbar das resultierende Steganogramm erkennen.

Nachdem Stegdetect seine Fähigkeit erwiesen hatte, mit Steghide angefertigte Steganogramme zu erkennen, unternahmen wir mit Stegbreak den Versuch einer Entschlüsselung.

Problemkind Stegbreak

Das Programm Stegbreak, das sich im Stegdetect-Archiv befindet, ließ sich zunächst unter Ubuntu nicht starten. Dieser Fehlstart trat sowohl bei Verwendung der Ubuntu-spezifischen Pakete aus den Repositories auf, als auch bei der manuellen Kompilation des Paketes aus den Quellen. Tests mit verschiedenen Ubuntu-Derivaten, so auch mit Linux Mint 2.1 (basierend auf Ubuntu 6.10) und Linux Mint 3.1 (Derivat von "Feisty") ergaben stets das gleiche negative Ergebnis.

Es stellte sich heraus, dass eine Datei namens rules.ini fehlt, die ursprünglich von dem Passwortcracker "John the Ripper" stammt. Aber auch das Kopieren dieser Datei von einer anderen Betriebssystemversion des Stegbreak-Pakets konnte nicht zufriedenstellen: Nun verweigerte die Software mit einem Segmentation Fault den Dienst. Dieses ärgerliche Verhalten tritt – wie unsere folgenden Recherchen im Internet ergaben – bei allen Debian- und Ubuntu-Versionen sowie deren Derivaten auf. Ein Fix ist noch nicht verfügbar [5]. Somit scheiden auf Debian basierende Distributionen derzeit noch als Basis für den angehenden Steganografie-Cracker aus.

Nach diesen zeitintensiven Experimenten installierten wir ein älteres Stegdetect-Binärpaket unter Mandriva Spring 2007. Dabei beschwerte sich Rpmdrake über veraltete Bibliotheken, sodass wir das Paket brachial mit dem Kommandozeilenbefehls rpm -ivh --nodeps stegdetect-0.5-2mdk.i586.rpm installierten. Der packte die Software anstandslos auf die Platte. Anschließend konnten wir im Terminal stegbreak aufrufen und die Brute-Force-Attacke gegen unser Steganogramm starten.

Die Befehlssyntax gestaltet sich dabei denkbar einfach: Nach dem Programmaufruf geben Sie lediglich mit dem Parameter -t der Typ des Steganogramms an, wobei Sie auch mehrere Varianten nennen dürfen. Um wirklich alle denkbaren Einbettungsmethoden für die Passphrase zu berücksichtigen, entschlossen wir uns, alle von Stegbreak unterstützten Typen zu prüfen. Für einen solchen Brute-Force-Angriff auf ein Steganogramm sollte man genügend Zeit und einen schnellen Rechner mitbringen: Bei unserem Test mit einer auf gut 2 GHz getakteten Core2-Duo-CPU benötigte das Programm für gut 40 Millionen Angriffe etwa fünfeinhalb Stunden – ohne dabei die Passphrase zu finden (Abbildung 4).

Abbildung 4: Ergebnis negativ: Die Passphrase konnte nicht gefunden werden.

Fazit

Unsere Tests legen den Schluss nahe, dass Stegdetect zwar von Steghide vorgenommene Einbettungen erkennt, Stegbreak diese aber nicht zuverlässig durch Herausfinden der Passphrase entschlüsseln kann. Dennoch schmälert das den Nutzen von Steghide als Steganografieprogramm, da sich dessen Steganogramme als solche nachweisen lassen. Damit bleibt unter Linux als bislang einziges Steganografieprogramm ohne Möglichkeit der Erkennung Outguess übrig – allerdings auch nur in der neuesten Version 0.2, da Stegdetect-Programmierer Niels Provos für die Vorgängerversion 01.3b Wege der Erkennung gefunden hat.

Dass Debian- und Ubuntu-Anwender durch die fehlerhafte Installationsroutine von Stegdetect/Stegbreak beim Cracken von Steganogrammen derzeit außen vor bleiben müssen, ist mehr als ärgerlich und schreit geradezu nach Nachbesserung. Wer jedoch eine andere Distribution einsetzt und genügend Zeit und Rechenleistung mitbringt, der kann die "Festigkeit" seiner Steganogramme mit Stegdetect überprüfen. Das Auslesen der enthaltenen Nachrichten dürfte jedoch selbst Power-Usern mit größeren Hardware-Clustern unmöglich sein. So kann die Steganografie durchaus als sichere Methode zur Übermittlung von Informationen dienen, die Unbefugte nicht mitlesen sollen.

Infos

[1] Steghide: Erik Bärwaldt, "Verstecken spielen", LinuxUser 06/2007, S. 90, http://www.linux-user.de/ausgabe/2007/06/090-stegano/

[2] Outguess: Erik Bärwaldt, "Getarnt", LinuxUser 11/2007, S. 94, http://www.linux-user.de/ausgabe/2007/06/094-outguess/

[3] Binärpakete für ALT-Linux und Mandiva: http://www.rpmseek.com erhältlich.

[4] Quellpakete: http://www.outguess.org/download.php.

[5] Fehlerbeschreibung: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=345230, https://lists.ubuntu.com/archives/ubuntu-bugs/2006-August/258838.html.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare