Prolog: Löchriges Internet

Confidential

Guten Morgen aus der Chefetage,

letzte Nacht haben uns alarmierende Informationen erreicht. Bei einem Routine-Scan des Internets sind wir auf einen verdächtig aussehenden Forenbeitrag auf der bisher als unbedenklich eingestuften Website „https://underground-leaks.co.uk/“ gestoßen. Die Webseite wurde mittlerweile abgeschaltet. Der Beitrag stammt von einem Nutzer mit dem Nickname „malware_mike“ und enthält folgenden Text:

moin.

schon verrückt welche massen an informationen heutzutage in geheimdienst-datenbanken rumschwirren. falls ihr selbst einen kleinen einblick wollt, hab ich euch eine kostprobe angehängt.

hab noch ne ganze menge ähnlichen kram hier rumliegen, wenn ihr das nötige kleingeld aufbringen könnt, gehört das zeug euch.

mike

Erklärung

Auch wenn es auf Anhieb möglicherweise unrealistisch erscheint, das gesamte Internet zu scannen, ist diese Aufgabe in der Realität gar nicht so schwierig.

Ähnlich wie jedes Haus eine Adresse haben muss, um beispielsweise Post zu erhalten, benötigt auch jede Website und jeder Computer im Internet eine eindeutige Adresse. Diese Adressen bezeichnet man als sogenannte „IP-Adressen“, bei denen es sich einfach um sehr große Zahlen handelt.

Im Gegensatz zu Postadressen gibt es allerdings nur eine limitierte Anzahl von IP-Adressen, nämlich knapp über 4 Milliarden Stück. Das bedeutet, dass man einfach jede dieser 4 Milliarden Adressen überprüfen muss, um das gesamte Internet zu scannen. Natürlich ist das eine ganze Menge Arbeit, aber mit Hilfe von schnellen Computern dauert ein kompletter Scan heutzutage nur wenige Minuten.

An den Forenbeitrag waren zwei Seiten ungeschwärzter Geheimdokumente angehängt, die die Standorte und Identitäten einiger unserer Agenten offenlegen. Sollte der Täter tatsächlich im Besitz von weiteren Dokumenten sein, können wir keinesfalls zulassen, dass diese in die falschen Hände geraten. Ihre Geheimdienstkolleginnen haben die ganze Nacht versucht, den Täter zu finden und sind nun völlig übermüdet eingeschlafen.

Gut, dass Sie nun endlich hier sind, um die Schicht zu übernehmen. Zusammen mit ihrem Teamleiter bilden Sie eine Task-Force, deren Ziel die Eindämmung der Machenschaften von „malware_mike“ ist. Konkret bedeutet das: Finden Sie heraus, wer „malware_mike“ wirklich ist, und wo er und die Geheimakten jetzt sind. Da es sich um geheimdienstinterne Dokumente handelt, müssen wir davon ausgehen, dass es sich um einen Verräter in unseren eigenen Reihen handelt. Aus diesem Grund haben wir die Task-Force klein gehalten, wir können schließlich nicht riskieren, dass der Täter von den Ermittlungen erfährt.

Kapitel 1: Im Haifischbecken

Confidential

ich habe eine wichtige Aufgabe für Sie: Analysieren Sie den gestrigen Netzwerkverkehr im WLAN des Geheimdienstes und finden Sie möglichst viele Informationen über die Person, die „underground-leaks.co.uk“ aufgerufen hat. Egal was Sie finden – Namen, Geräteinformationen oder irgendetwas anderes – jede Spur hilft uns, den Verräter ausfindig zu machen.

Erklärung

Die Internet-Zugriffe in einem Netzwerk (also z.B. in einem WLAN-Netzwerk) aufzuzeichnen, ist nichts, das nur Geheimdienste tun können. Jeder Teilnehmer, der in einem Netzwerk angemeldet ist, kann das ohne Probleme mit frei verfügbaren Werkzeugen tun. Eines dieser Werkzeuge ist zum Beispiel „Wireshark“, das ihr gleich noch genauer kennenlernen werdet.

Gerade deshalb sollte man in fremden und öffentlichen Netzwerken manchmal vorsichtig sein: Da jeder Teilnehmer alle Internet-Zugriffe aufzeichnen kann, können auch fremde Menschen im gleichen Netzwerk sehen, welche Websites und Apps ihr benutzt.

Aber keine Angst, nicht alle Daten sind dabei sichtbar: Meist werden verschlüsselte Verbindungen benutzt, wodurch verschleiert wird, was genau ihr auf einer Website oder in einer App macht. Welche Daten sichtbar sind und welche nicht, schauen wir uns gleich noch etwas genauer an.

Die Website „https://underground-leaks.co.uk/“ wurde mittlerweile abgeschaltet, trotzdem haben wir ein kleines Problem: Da es sich um eine verschlüsselte Seite (erkennbar an dem "s" in "https") handelte, können wir nur herausfinden, ob die Website aufgerufen wurde. Wir wüssten allerdings nicht, ob die Person tatsächlich einen Beitrag verfasst, oder sich nur andere Beiträge angesehen hat.

Trotzdem ist die Verbindung zu „underground-leaks.co.uk“ die beste Spur, die wir aktuell haben. Ich schlage deshalb folgendes weiteres Vorgehen vor: Finden Sie heraus, ob innerhalb unseres Netzwerks Zugriffe auf „underground-leaks.co.uk“ stattgefunden haben. Falls ja, identifizieren Sie die IP-Adresse, die vermutlich zum Verräter gehört!

Erklärung

Erinnert ihr euch noch? IP-Adressen sind so etwas wie Postadressen für Computer; wir können also davon ausgehen, dass eine IP-Adresse immer zum gleichen Computer gehört (das ist etwas vereinfacht, wenn euch das näher interessiert, könnt ihr gerne euren Teamleiter fragen).

Jetzt seid ihr dran!

Schritt 1: Wireshark öffnen

Wie bereits erwähnt werdet ihr für die Analyse der aufgezeichneten Internet-Zugriffe das Programm Wireshark verwenden. Öffnet deshalb zuerst Wireshark, indem ihr in der linken Seitenleiste auf das blaue Symbol mit der Haifinne klickt.

Anschließend werdet ihr vom Startbildschirm von Wireshark begrüßt, auf dem sich zwei prominent platzierte Optionen finden: Öffnen und Aufzeichnen. Um den Netzwerkverkehr innerhalb des Geheimdienstes zu analysieren, müsst ihr eine bereits vorhandene Aufzeichnung öffnen. Dazu müsst ihr oben links auf „Datei > Öffnen“ klicken, und anschließend die Datei aufzeichnung.pcapng auswählen. In der jetzt geöffneten Datei ist ein Ausschnitt des Internet-Verkehrs der Geheimdienst-Büros enthalten, den wir uns in den nächsten Schritten genauer ansehen werden.

Schritt 2: TLS-Handshakes finden

Nachdem ihr die Aufzeichnung geöffnet habt, werdet ihr zuerst von einer ganzen Menge an kryptischen Zahlen und Zeichenketten begrüßt – ganz schön unübersichtlich! Schauen wir uns kurz an, welche Informationen in den drei Spalten oben zu finden sind: Sowohl „Source“ als auch „Destination“ enthalten Abfolgen von Zahlen, die teilweise durch Punkte unterbrochen sind. Bei diesen Zahlenfolgen handelt es sich um die bereits weiter oben kurz beschriebenen IP-Adressen, die immer angeben, mit welchem Computer wir es zu tun haben. „Source“ enthält dabei die IP-Adresse des versendenden Rechners, während in „Destination“ die IP-Adresse des Zielrechners steht. Ein konkretes Beispiel hierfür: Stellt euch vor, ihr ruft von eurem Smartphone eine Website auf; das würde in einer neuen Zeile in der Tabelle resultieren, bei der „Source“ die IP-Adresse eures Smartphones enthält und „Destination“ die IP-Adresse des Computers beinhaltet, auf dem die aufgerufene Website liegt. Das liegt daran, dass euer Smartphone eine Nachricht an die Website versendet, um nachzufragen, welche Inhalte euch angezeigt werden sollen.

Vielleicht ist euch ja schon aufgefallen, dass sich einige der IP-Adressen wiederholen. Das liegt ganz einfach daran, dass nur eine bestimmte Anzahl von Computern im Geheimdienst-WLAN aktiv sind, die allerdings viele verschiedene Nachrichten versenden. Immer wenn ihr die gleiche IP-Adresse seht, gehört eine Nachricht auch zum gleichen Gerät.

Die Spalte „Protocol“ enthält im Vergleich zu den anderen beiden Spalten hauptsächlich kurze Zeichenketten, die sich ebenfalls immer wieder wiederholen. Was die vielen Protokolle in der geöffneten Datei bedeuten, ist für uns erstmal irrelevant.

Wie wir bereits wissen, hat der Verräter das Forum unter „underground-leaks.co.uk“ über eine verschlüsselte Verbindung aufgerufen, die verhindert, dass jemand die übertragenen Daten lesen kann. Wenn ihr in Wireshark genau hinschaut, seht ihr sogar einige Nachrichten, bei denen die Protokoll-Spalte den Wert „TLSv1.2“ oder „TLSv1.3“ enthält. Das "TLS" bedeutet, dass diese Nachrichten verschlüsselte Datenübertragungen enthalten. Leider wissen wir noch nicht, ob eine dieser TLS-Nachrichten auch wirklich eine Verbindung zum für uns relevanten Forum herstellt. Schließlich erzeugt der Aufruf jeder beliebigen Website, deren URL mit „https://“ beginnt, eine TLS-Nachricht – hinter den Einträgen könnten also auch ganz normale Websites wie „https://wikipedia.org/“ stecken.

Um herauszufinden, ob eine der Nachrichten tatsächlich an das Forum gesendet wurde, müssen wir überprüfen, ob der sogenannte Server-Name – in unserem Fall „underground-leaks.co.uk“ – in einer der versendeten TLS-Nachrichten vorkommt. Auch wenn die Verschlüsselung mit TLS verhindert, dass übertragene Daten nach außen sichtbar sind, gibt es hiervon glücklicherweise eine Ausnahme: Bevor zwei Computer verschlüsselt miteinander kommunizieren können, müssen sie sich typischerweise erst digital einander vorstellen, damit die Verschlüsselung funktioniert. Diese Vorstellung passiert im Rahmen eines sogenannten TLS-Handshakes, also einem digitalen Handschlag, bei dem sich die teilnehmenden Computer unter anderem mit ihren Server-Namen melden, falls sie einen haben. Da dieser Handshake zum Aufbau der Verschlüsselung benötigt wird, ist er selbst allerdings noch unverschlüsselt und der Server-Name wird im Klartext für alle lesbar übertragen.

Wie finden wir jetzt aber alle TLS-Handshakes in Wireshark? Schließlich enthält die angezeigte Tabelle mehr als 50000 Einträge! Genau für solche Probleme wurde Wireshark konzipiert; das Programm kann nicht nur Netzwerkverkehr aufzeichnen oder anzeigen, sondern bietet auch extrem umfangreiche Filteroptionen, um die Suche nach speziellen Nachrichten zu vereinfachen. Filter werden dabei in Textform angegeben und können in das Textfeld über den Spaltenüberschriften der Tabelle eingegeben werden; durch das Drücken der Enter-Taste wird ein Filter dann angewendet und der Inhalt der Tabelle aktualisiert sich.

Versuchen wir also einmal, nach TLS-Handshakes zu filtern: Dazu müsst ihr den Filter tls.handshake in das Filter-Textfeld eingeben und dann Enter drücken. Wow, schon haben wir die Anzahl der angezeigten Einträge auf knapp über 800 reduziert! Aber wo finden wir jetzt die Server-Namen in diesen Handshake-Nachrichten?

Schritt 3: Server-Namen anzeigen

Die genauen Daten, die zu einer Nachricht gehören, findet ihr in der unteren Hälfte des Programmfensters von Wireshark. Sobald ihr in der Tabelle einen Eintrag mit der Maus angeklickt habt, werden die zugehörigen Informationen aufbereitet und angezeigt. Auf der rechten Seite seht ihr einige große Blöcke aus Zahlen und Buchstaben, die den Nachrichteninhalt in für Computer lesbarer Form darstellt – wir Menschen können damit aber nur sehr wenig anfangen. Für uns ist die linke Seite deshalb viel interessanter: Hier werden sämtliche Informationen aufbereitet und in aufklappbarer Form angezeigt. Auch der Server-Name ist dort dabei, um ihn zu finden müsst ihr allerdings noch ein paar Ebenen tiefer in der Ausgabe gehen.

Klickt dafür zuerst auf den Pfeil links von „Transport Layer Security“ (dafür steht übrigens die Abkürzung TLS), um weitere TLS-Informationen anzeigen zu lassen. Es kommt ein weiterer Eintrag hinzu, den ihr ebenfalls mit einem Klick auf den Pfeil öffnen müsst. Auch hier sehen wir jetzt, dass von einem „Handshake“ die Rede ist – stellt euch vor, wir hätten jedes einzelne Paket aufklappen müssen, um auf diese Art und Weise von Hand nach TLS-Handshakes zu suchen! Trotzdem sehen wir allerdings noch keinen Server-Name, dafür müssen wir noch den Eintrag „Handshake Protocol“, den dort enthaltenen Eintrag „Extension: server_name“ und zuletzt den Eintrag „Server Name Indication extension“ öffnen. Nachdem jetzt alle wichtigen Einträge aufgeklappt sind, finden wir den Server-Namen endlich rechts neben dem Feld „Server Name“ angezeigt.

Natürlich möchten wir diesen Klickmarathon nicht für jede der 800 verbleibenden Nachrichten wiederholen; es wäre viel angenehmer, wenn wir den Server-Namen direkt oben in der Tabelle finden könnten. Auch hierfür bietet Wireshark eine Lösung: Macht einen Rechtsklick auf das Feld „Server Name“ und wählt dann „Als Spalte anwenden“, um die Server-Namen direkt in die Tabelle mit aufzunehmen. Das macht die Suche nach dem gewünschten Server „underground-leaks.co.uk“ schon wesentlich angenehmer.

Jetzt seid ihr dran! Versucht herauszufinden, ob es tatsächlich TLS-Nachrichten in der Aufzeichnung gibt, die an den Server „underground-leaks.co.uk“ versendet wurden. Falls ja, schaut nach welche IP-Adresse als „Source“ angegeben ist, also welcher Computer die korrespondierenden Nachrichten verschickt hat. Noch ein kleiner Tipp: Wenn ihr euch etwas Arbeit sparen wollt und keine Lust habt, durch die gesamte Tabelle zu scrollen, könnt ihr wieder die Filter-Funktion von Wireshark benutzen. Der Filter tls.handshake.extensions_server_name contains "SUCHBEGRIFF" liefert euch beispielsweise nur Pakete, bei denen der angegebene Server-Name das Wort „SUCHBEGRIFF“ enthält.

Hervorragende Arbeit! Ich wusste doch, dass ich die richtigen Mitarbeiter für die Task-Force ausgewählt habe. So wie es aussieht war unser Verräter tatsächlich unvorsichtig und hat den Forenbeitrag aus dem Geheimdienst-Netzwerk heraus angelegt. Leider konnten wir aufgrund der Verschlüsselung keine Daten auslesen, die an den Forums-Server übertragen wurden – aber immerhin haben wir jetzt schon einmal die IP-Adresse, die zu seinem Computer gehört.

Besonders hilfreich ist diese Information allerdings noch nicht. Wir wissen immer noch nicht, was das Motiv des Täters war, und wo er und die restlichen Dokumente sich versteckt halten. Es bleibt uns also keine andere Wahl als noch weiter zu suchen. Wie sieht es denn mit dem restlichen Internet-Verkehr des Verräters aus? Ich schlage vor, dass Sie die gefundene IP-Adresse dazu verwenden, die restlichen Internet-Aktivitäten des Verräters zu überprüfen. Vielleicht ergeben sich im Rahmen dieser weiteren Untersuchungen ja noch zusätzliche Hinweise.

Jetzt seid ihr dran!

Schritt 4: Alle TLS-Verbindungen des Verräters anzeigen

Jetzt wo wir die IP-Adresse des Verräters kennen, können wir alle irrelevanten Nachrichten von anderen Geräten aus der Aufzeichnung herausfiltern; der passende Filter-Text hierfür lautet ip.src == XXX.XXX.XXX.XXX, wobei „XXX.XXX.XXX.XXX“ für die gefundene IP-Adresse steht. Durch die Anwendung dieses Filters werden nur noch Nachrichten angezeigt, die vom Computer des Täters versendet wurden.

Ein Problem ergibt sich dadurch allerdings: Da wir jetzt nur noch nach einer passenden Source-IP-Adresse filtern, haben nur noch sehr wenige Einträge in der Tabelle einen zugehörigen Server-Namen; diese Namen sind allerdings die einzige Möglichkeit, um die Internet-Aktivitäten des Verräters nachzuverfolgen. Um das Problem zu lösen, könnten wir mit dem Filter tls.handshake.extensions_server_name alle Einträge ausschließen, die keinen Server-Namen beinhalten – dann sehen wir aber auch Nachrichten, die nicht von der Source-IP-Adresse des Verräters stammen.

Die Lösung des Problems liegt deshalb in der Kombination mehrerer Filter: In Wireshark ist das durch das Schlüsselwort and im Filtertext möglich. Der Filter (FILTER1) and (FILTER2) sorgt also dafür, dass sowohl der Filter FILTER1, als auch FILTER2 gleichzeitig auf die Daten angewendet werden. Probiert diese Funktionalität am Besten gleich aus, um sowohl nach der passenden Source-IP-Adresse (ip.src == XXX.XXX.XXX.XXX) als auch nach vorhandenen Server-Namen (tls.handshake.extensions_server_name) zu filtern. Welche Websites hat der Verräter noch über verschlüsselte Verbindungen aufgerufen?

Nach Sichtung der von Ihnen vorbereiteten Liste an Server-Namen bin ich zu dem Schluss gelangt, dass leider keine der zusätzlichen Verbindungen relevant für die Lösung des Falls sind. Ein paar der Namen sehen zwar unüblich aus, dabei handelt es sich allerdings ausschließlich um Server, die im Hintergrund kontaktiert werden, um beispielsweise Werbeanzeigen zu laden.

Eine letzte Option gibt es noch: Der Verräter hat schon einen wichtigen Fehler gemacht, weitere Fehler seinerseits sind also nicht ausgeschlossen. Was wäre also, wenn der Täter fahrlässigerweise unverschlüsselt mit einer Website kommuniziert hat, also mit dem URL-Präfix „http://“ statt „https://“? In diesem Fall könnten wir nicht nur auf den Server-Namen zugreifen, sondern auch auf sämtliche weitere Daten, die übertragen wurden.

Bitte prüfen Sie noch einmal, ob vom Computer des Täters aus unverschlüsselt auf Websites zugegriffen wurde. Falls ja, versuchen Sie so viele zusätzliche Daten wie möglich zu extrahieren.

Jetzt seid ihr dran!

Schritt 5: Alle HTTP-Verbindungen des Täters anzeigen

Unverschlüsselte Zugriffe auf Websites lassen sich in Wireshark mit dem Filter http.request anzeigen; gleichzeitig muss allerdings auch noch der Filter für die korrekte IP-Adresse des Verräters aktiv bleiben – hier müsst ihr also wieder zwei Filter mit and kombinieren. Wenn ihr die richtigen Filter verwendet, werden am Ende nur noch zwei Nachrichten angezeigt.

Bei unverschlüsselten Website-Aufrufen werden einige interessante Daten übertragen, die sich durch das Aufklappen des „Hypertext Transfer Protocol“-Eintrags anzeigen lassen. Unter den angezeigten Daten findet sich unter anderem der Eintrag „Host“, der analog zum Server-Namen bei TLS-Nachrichten funktioniert. Findet sich unter den zwei Einträgen ein Server-Name, der besonders interessant sein könnte? Was können wir daraus über den Verräter schließen?

Neben dem Host ist noch ein zweiter Eintrag potenziell relevant für unsere Ermittlungen: Das Feld „User-Agent“ enthält bei jedem Website-Aufruf Informationen über den Computer, von dem die Website geöffnet wurde. Normalerweise werden diese Daten von Websites dafür genutzt, Inhalte auf bestimmte Zielgruppen zuzuschneiden. Eine Software-Download-Seite könnte also direkt einen Link zur Windows-Version eines Programms anzeigen, falls der aufrufende Computer Windows benutzt, oder aber einen Link zur Mac-Version, falls die Website von einem Apple-Computer aus aufgerufen wird. Teilweise kann diese Information aber auch dafür genutzt werden, die Privatsphäre von Nutzern einzuschränken, indem sie über mehrere Websites hinweg verfolgt werden.

Die Informationen des User-Agent-Eintrags können zwar von Menschen gelesen werden, was allerdings viel Vorwissen erfordert. Deshalb bietet sich oft eine automatisierte Analyse an, bei der relevante Details in übersichtlicher Form dargestellt werden. Um eine Analyse des gefundenen User-Agents durchzuführen, solltet ihr zuerst eine passende Website im Browser öffnen, die euch beim Entziffern helfen kann (z.B. https://explore.whatismybrowser.com/useragents/). Kopiert jetzt durch einen Rechtsklick auf den User-Agent-Eintrag in Wireshark und einen weiteren Klick auf „Kopieren > Wert“ den User-Agent des Verräters. Wechselt dann wieder in euren Browser und fügt die kopierten Informationen ein, bevor ihr auf „Parse this user agent“ drückt.

Welche weiteren Informationen könnt ihr auf diese Art und Weise noch über den Verräter herausfinden? Welches Betriebssystem und welchen Browser benutzt er?

Perfekt, genau das ist es, was wir gesucht haben! Eine Website, die Indizien für ein Motiv bereitstellt, und weitere Informationen über den Verräter.

Ich habe bereits eine dringliche Anfrage an die Betreiber der Website gesendet, uns unverzüglich weitere Informationen zu Nutzerdaten und Website-Aufrufen zur Verfügung zu stellen. Behalten Sie die Ergebnisse ihrer Untersuchungen im Hinterkopf, sie könnten sich noch einmal als nützlich erweisen…

Kapitel 2: Identitäts- aber nicht namenlos

Confidential

Sie haben gute Arbeit geleistet. Die Informationen über den Verräter und eine Website, die das Motiv, viel Geld zu verdienen bestätigt, sind eine heiße Spur. Dank dieser Informationen konnten wir den Betreiber der Website panama-banking.ru kontaktieren. Zum Glück zeichnen diese auf, wer ihre Website aufruft und haben uns diese Daten für den fraglichen Zeitraum zur Verfügung gestellt.

Leider speichern die Betreiber aus Datenschutzgründen nicht, auf welche Konten zugegriffen wurde, sondern nur im Allgemeinen als unbedenklich angesehene Informationen wie den verwendeten Browser. Sie wissen allerdings, zu welchem Benutzernamen welche dieser Daten gehören und auch, welche Links jeder Benutzer besucht hat. Ihre Aufgabe besteht jetzt darin, die beiden Tabellen geschickt zu kombinieren, um den Verräter zu finden!

Jetzt seid ihr dran!

Ihr bekommt ein Blatt auf dem zwei Tabellen abgebildet sind. Die erste Tabelle enthält einmal alle Benutzernamen, die ungefähr zum gleichen Zeitpunkt wie der Verräter angemeldet waren. Die zweite Tabelle enthält alle Benutzer und welche Links sie aufgerufen haben (manche Benutzer haben mehr als einen Link aufgerufen). Diese Tabellen müsst ihr jetzt mit den Informationen, die ihr in der Einleitung über den Verräter gewonnen habt, so kombinieren, dass ihr den Benutzernamen des Verräters erhaltet.

Tipp: Teilt euch die Tabellen am besten untereinander auf, sodass nicht alle an der gleichen arbeiten.

Noch ein Tipp: Erinnert euch daran, dass der Täter nur eine einzige untergeordnete Seite auf „panama-banking.ru“ aufgerufen hat.

Erklärung

In der Realität werden solche Tabellen, besonders bevor sie veröffentlicht werden, häufig „anonymisiert“. Das heißt, dass aus ihnen eindeutige Identifikatoren wie Namen oder Adressen entfernt wurden. Sowas sollte immer dann der Fall sein, wenn z. B. Krankenkassen für Forschungszwecke Daten über ihre Kunden veröffentlichen. Schließlich soll nicht jeder wissen können, woran jemand erkrankt ist (stellt euch z.B. mal vor, ihr hättet Fußpilz. Da würdet ihr bestimmt nicht wollen, dass eure ganze Klasse das weiß). Allerdings kann dies unzureichend geschehen, sodass man wie hier durch eine Kombination der als ungefährlich eingestuften Daten und ein bisschen Hintergrundwissen doch eine Person identifizieren kann.

Gut gemacht! Mit der Information können wir jetzt nochmal bei der Bank nachfragen, zu welchem Konto der Benutzername gehört. Sobald wir den echten Namen haben, melde ich mich nochmal bei Ihnen.

Na, das hätte ich ja nicht gedacht! Kollege Eddy Bennet hätte ich nie verdächtigt, der arbeitet schon so lange bei uns. Aber in Ordnung, dass heißt wohl, dass wir sein Büro durchsuchen sollten. Ich habe gerade in seinen Personalakten nachgeschaut, seine Raumnummer ist 05.062. Am Besten, Sie gehen dort gleich vorbei und schauen sich nach verdächtigen Gegenständen um.

Kapitel 3: Schutzfolie mal anders

Confidential

Die Gegenstände, die Sie im Büro von Herr Bennet gefunden haben, sehen extrem interessant aus.

Zuerst der Laptop: Der Computer ist passwortgeschützt, wenn wir also weitere Spuren sammeln möchten, müssen Sie herausfinden, wie das korrekte Passwort lautet.

Die Bedeutung des zweiten Fundstücks ist nicht ganz so offensichtlich. Auf den ersten Blick handelt es sich um sechs handelsübliche Klarsichtfolien, die jeweils mit einer Art unregelmäßigem Muster bedruckt sind. Glücklicherweise meine ich mich aber daran erinnern zu können, dass Kollege Bennet ein großer Verfechter der visuellen Kryptografie ist – hier gäbe es tatsächlich einen Zusammenhang zu den gefundenen Folien.

Erklärung

Bei visueller Kryptografie handelt es sich um eine Technik zum Verschleiern geheimer Bildnachrichten. Im Kern ist die Idee, dass ein Bild in mehrere Komponenten aufgeteilt wird, die alleinstehend keine erkennbaren Muster enthalten. Kombiniert man die einzelnen Komponenten jedoch, indem man sie übereinander legt, wird das ursprüngliche Bild wieder sichtbar:

Visuelle Kryptografie kann beispielsweise dazu verwendet werden, wichtige Informationen an zwei Menschen zu verteilen, wobei jede Person nur eine Komponente des Originalbildes bekommt. Um die ursprünglichen Daten zu rekonstruieren, müssen dann beide Personen zustimmen und ihre Teilbilder übereinander legen. Stimmt nur eine einzelne Person der Rekonstruktion zu, fehlt ihr die zweite Bildkomponente und die ursprünglichen Bildinhalte bleiben verborgen.

Da die Folien mit dem Text „falls passwort vergessen“ markiert waren, handelt es sich bei den zugrundeliegenden Motiven hinter den Folien vermutlich um Hinweise auf das Passwort des gefundenen Windows-Computers.

Also los, worauf warten Sie noch? Versuchen Sie die jeweils passenden Folienpaare zu finden und bestimmen Sie, welche Motive auf ihnen abgebildet sind. Vielleicht ist hier ja das richtige Passwort dabei?

Kapitel 4: Von Mördern und Passwörtern

Confidential

Leider passt keiner dieser Begriffe als Passwort, der Computer bleibt also vorerst gesperrt. Das ist auch kaum verwunderlich, schließlich sollte Herr Bennet als Geheimdienstmitarbeiter wissen, dass gute Passwörter möglichst lang sind und aus verschiedenen Sonderzeichen und Zahlen bestehen sollten, statt nur aus normalen Wörtern.

Trotzdem hat unser Verräter die Folien mit dem Text „falls passwort vergessen“ beschriftet, die Wörter „Katze“, „Panda“ und „Schloss“ müssen also irgendetwas mit dem tatsächlichen Passwort zu tun haben. Es sieht so aus, als bräuchten wir hier eine strategischere Herangehensweise, um automatisch sehr viele verschiedene Passwörter auszuprobieren, die irgendetwas mit den gefundenen Begriffen zu tun haben. Praktischerweise haben wir genau das richtige Werkzeug für diese Aufgabe: John the Ripper.

Erklärung

Es kann sehr schwierig sein, sich gute Passwörter zu merken – und trotzdem brauchen wir Passwörter für fast jede Website und jede App. Deshalb verwenden viele Menschen aus Bequemlichkeit möglichst einfache Passwörter, was sich auch in der Liste der 10 häufigsten Passwörter widerspiegelt:

  1. 123456
  2. 123456789
  3. qwerty
  4. password
  5. 12345
  6. qwerty123
  7. 1q2w3e
  8. 12345678
  9. 111111
  10. 1234567890

Diese und weitere simple Passwörter sind so weit verbreitet, dass oft nur wenige Passwörter ausprobiert werden müssen, bis man sich in einen fremden Account einloggen kann.

Angreifer nennen diese Listen der häufigsten Passwörter auch Wortlisten, wobei eine Wortliste schnell mehrere Millionen Einträge enthalten kann. Verschiedene Werkzeuge wie „John the Ripper“ erlauben es dann, die Wortliste von oben nach unten abzuarbeiten, und jedes einzelne enthaltene Passwort automatisch auszuprobieren, bis ein passender Eintrag gefunden wird. Dieses Vorgehen ist viel schneller als jedes mögliche Passwort systematisch nacheinander auszuprobieren (z.B. „aaa“, „aab“, „aac“, …), weshalb es in der Praxis extrem weit verbreitet ist.

Aber Werkzeuge zum Umgang mit Wortlisten können noch viel mehr: Einige Nutzer wissen, dass die Verwendung häufiger Passwörter ein Sicherheitsrisiko darstellen kann und ändern ihre Passwörter deshalb leicht ab. Diese Änderungen können zum Beispiel daraus bestehen, jedes „o“ durch eine Null zu ersetzen („password“ wird also zu „passw0rd“) oder aber ein paar Zahlen an ein einfaches Passwort anzuhängen („querty“ wird also zu „querty4242“). Diese Anpassungen werden so häufig vorgenommen, dass es mittlerweile verschiedene Werkzeuge gibt, die existierende Wortlisten um typische Variationen erweitern können.

Dazu werden zuerst Regeln definiert, die angeben, wie jeder einzelne Wortlisteneintrag verändert werden soll. Eine Regel könnte dabei beispielsweise sein, an jedes Passwort die Zahl „1“ anzuhängen. Mit dieser Regel wird die Wortliste „hallo, test, passwort“ dann zur Wortliste „hallo, hallo1, test, test1, passwort, passwort1“ erweitert.

Mein Vorschlag für Ihr weiteres Vorgehen lautet wie folgt: Erstellen Sie zuerst eine kleine Wortliste mit nur den Begriffen, die Sie auf den Folien gefunden haben.

Jetzt seid ihr dran!

Schritt 1: Eine einfache Wortliste erstellen

Öffnet dafür zuerst den Text-Editor, indem ihr auf das Notizblock-Symbol in der linken Seitenleiste klickt. Hier könnt ihr die vorhin erstellte Wortliste (die drei Begriffe von den Folien „Katze“, „Panda“ und „Schloss“) eingeben, wobei jedes Wort in einer eigenen Zeile stehen sollte; speichert diese Datei dann, indem ihr oben rechts auf „Speichern“ klickt. Als Dateinamen solltet ihr „hinweise.txt“ eingeben, bevor ihr erneut auf den „Speichern“-Knopf klickt. Herzlichen Glückwunsch, damit habt ihr schon eure erste Wortliste angelegt!

Da diese Begriffe allein als Passwörter nicht zum Erfolg geführt haben, sollten Sie anschließend mithilfe von John the Ripper eine erweiterte Wortliste generieren, die verschiedene Modifikationsregeln auf die drei Begriffe anwendet. Möglicherweise passt dann ein Passwort aus dieser erweiterten Wortliste und wir können uns in den Computer von Eddy Bennet einloggen.

Jetzt seid ihr dran!

Schritt 2: Eine Kommandozeile öffnen

Um das Passwort von Eddy Bennet zu knacken, werdet ihr im Folgenden wie bereits erwähnt das Werzkeug „John the Ripper“ (oder einfach kurz „John“) benutzen. Hierbei gibt es allerdings eine kleine Schwierigkeit: John ist ein sogenanntes Kommandozeilen-Werkzeug, was bedeutet, dass ihr das Programm nicht wie gewohnt mit eurer Maus bedienen könnt. Stattdessen kann John nur über die Tastatur in einer Kommandozeile bedient werden.

Zuerst einmal müssen wir eine Kommandozeile öffnen. Klickt dafür in der linken Seitenleiste auf das schwarze Symbol mit der spitzen Klammer nach rechts; anschließend werdet ihr von einem dunklen Fenster mit etwas weißem und grünem Text begrüßt. Immer wenn ihr grünen Text am Anfang der Zeile seht, neben dem ein blinkendes weißes Kästchen platziert ist, wartet der Computer auf eure Eingaben; wenn ihr tippt, erscheinen die Buchstaben anstelle des weißen Kästchens.

Durch den Text, den ihr eingebt, teilt ihr dem Computer mit, was genau er tun soll. Sobald ihr dann die Enter-Taste drückt, wird euer Befehl verarbeitet und der Computer antwortet in Textform, indem er die gewünschten Ergebnisse anzeigt. Anschließend könnt ihr wieder weitere Befehle eingeben.

Auch wenn Computer immer besser darin werden, menschliche Sprache zu verstehen, müssen Befehle in der Kommandozeile einem bestimmten Aufbau folgen, damit sie korrekt verarbeitet werden können. Deshalb ist es bei den folgenden Beispielen besonders wichtig, dass ihr jeden Befehl genau so abtippt, wie er angegeben ist – inklusive sämtlicher Leer- und Sonderzeichen. Solltet ihr das Gefühl haben, dass etwas nicht mehr funktioniert, könnt ihr jederzeit die Tastenkombination „Strg + C“ drücken, um wieder neue Befehle eintippen zu können.

Probiert es doch direkt einmal aus! Gebt in der Kommandozeile den Befehl sl ein und drückt Enter. Als Antwort auf euren Befehl wird eine Dampflokomotive aus Text über den Bildschirm fahren (sl steht für „steam locomotive“). Dieser Befehl ist natürlich nur eine Spielerei, aber er demonstriert, dass man über die Kommandozeile verschiedenste Werkzeuge und Programme benutzen kann. Wenn ihr beispielsweise den Befehl date eingebt, wird euch stattdessen das aktuelle Datum inklusive der Uhrzeit angezeigt.

Schritt 3: Eine erweiterte Wortliste generieren

Nachdem ihr jetzt die Grundlagen der Kommandozeile kennengelernt habt, könnt ihr im nächsten Schritt die erweiterte Wortliste aus den Folien-Motiven generieren. Dafür müsst ihr auf der Kommandozeile sein, um John zu benutzen. Gebt jetzt den Befehl john --rules=All --wordlist=hinweise.txt --stdout > erweitert.txt ein und drückt Enter. Es wird eine Weile dauern bis dieser Befehl ausgeführt ist, weshalb wir uns in der Zwischenzeit kurz den genauen Aufbau anschauen können.

Sobald der Befehl fertig ist, wurde die erweiterte Wortliste erfolgreich generiert. Mit dem Befehl cat erweitert.txt könnt ihr euch die Inhalte der Datei „erweitert.txt“ ausgeben lassen – seht ihr wie die drei ursprünglichen Passwörter verändert wurden? Welche Regeln könnten wohl zu den Modifikationen geführt haben?

Schritt 4: Das Passwort des Windows-Computers knacken

Jetzt wo ihr eine erweiterte Wortliste generiert habt, müsst ihr die verschiedenen enthaltenen Passwörter nur noch ausprobieren. Aber das ist leichter gesagt als getan, schließlich enthält die Wortliste mehr als 20 Millionen Einträge! Zum Glück kann man das automatisieren und muss nicht alles von Hand eintippen.

Die Möglichkeit, die einem vielleicht zuerst in den Kopf kommt, ist ein Gerät an den zu knackenden Computer anzuschließen, dass wie eine Tastatur automatisch jedes Passwort nacheinander eingibt. Hier ergibt sich dann allerdings das Problem, dass die Passworteingabe auf Geräten oft künstlich verlangsamt wird: Versucht ihr beispielsweise mehrmals nacheinander erfolglos euer Handy zu entsperren, kann es sein, dass ihr vor dem nächsten Versuch einige Minuten warten müsst.

Um diese Limitierungen zu umgehen, gibt es ein viel schnelleres Verfahren, bei dem die Passwörter so schnell ausprobiert werden können wie es nur geht. Dafür müssen wir uns allerdings kurz überlegen, wie eine Passwortprüfung überhaupt auf dem Computer aussieht: In der einfachsten Form gibt ein Nutzer ein Passwort ein und der Computer überprüft, ob das eingegebene Passwort mit dem richtigen Passwort übereinstimmt.

Aber woher weiß der Computer überhaupt, welches das richtige Passwort ist? Wenn das Passwort einfach so auf dem Rechner gespeichert wird, würde Angreifer nichts davon abhalten, einfach die Festplatte des Computers auszubauen und so das gespeicherte Passwort auszulesen. Darum wird das Passwort zuerst mit einer speziellen Funktion, einer sogenannten Hash-Funktion, in eine nicht-lesbare Form gebracht. Man kann jederzeit prüfen, ob ein Passwort zu einem Passwort-Hash passt; es ist jedoch nicht möglich aus dem Passwort-Hash wieder das Passwort zu gewinnen – außer man probiert alle möglichen Passwörter durch.

Zur Vorbereitung haben wir den Passwort-Hash des Computers von Eddy Bennet schon für euch extrahiert und auf eurem Computer in der Datei „hash.txt“ abgespeichert. Ihr könnt euch den Inhalt der Datei erneut auf der Kommandozeile mit cat hash.txt anzeigen.

Um jetzt für jeden Eintrag der erweiterten Wortliste den zugehörigen Hash zu berechnen und mit dem korrekten Hash abzugleichen, benutzen wir wieder John. Gebt diesmal das Kommando john --format=NT --wordlist=erweitert.txt hash.txt ein; sobald ihr Enter drückt, wird John die erweiterte Wortliste in „erweitert.txt“ öffnen (wegen --wordlist=erweitert.txt), und für jeden Eintrag den Hash-Wert berechnen (wegen --format=NT), bis ein Ergebnis mit dem Inhalt von „hash.txt“ übereinstimmt.

Vielleicht seid ihr überrascht davon, wie schnell das Passwort geknackt ist – John hat nur ein paar Sekunden gebraucht, um das richtige Passwort herauszufinden! Gerade deswegen ist es wichtig, komplizierte und vor allem lange Passwörter zu verwenden, die nicht in typischen Wortlisten enthalten sind. Um das gefundene Passwort anzeigen zu lassen, könnt ihr den Befehl john --format=NT --show hash.txt verwenden. Aber Achtung, das eigentliche Passwort beginnt erst nach dem Doppelpunkt, das „?:“ gehört nicht dazu.

Hervorragende Arbeit! Ich dachte mir schon, dass Kollege Bennet seine Affinität für Tiere auch in sein Passwort einfließen lässt.

Loggen Sie sich jetzt mit dem Passwort am Computer des Verräters ein. Dort finden Sie mit Sicherheit weitere Hinweise zum Aufenthaltsort unseres Verräters.

Kapitel 5: Ich kam, sah und leakte

Confidential

Sieht so aus, als ob Kollege Bennet vor Kurzem mit seinem privaten Mail-Account gearbeitet hätte. Vielleicht finden Sie da ja einen Hinweis auf den Komplizen oder auf den aktuellen Aufenthaltsort von Eddy Bennet.

Ah, diesen Bill Böse haben wir schon länger auf unserer Beobachtungsliste, da werden wir gleich ein Team vorbei senden. Ihre Aufgabe ist jetzt, die zweite E-Mail zu entschlüsseln. Ein Forensiker des Geheimdienstes vermutet, dass es sich um eine einfache Verschlüsselungsmethode wie die Caesar-Chiffre handeln könnte.

Erklärung

Die Caesar-Chiffre ist eine Methode, die vermutlich schon von Julius Cäsar verwendet wurde, um geheime Nachrichten zu verschicken. Dabei werden alle Buchstaben in einer Nachricht um eine bestimmte Anzahl von Positionen im Alphabet verschoben. Wenn man zum Beispiel den Versatz auf 3 setzt, wird aus einem „A“ ein „D“, aus einem „B“ ein „E“ und so weiter. Auf diese Art und Weise lassen sich nun Stück für Stück ganze Texte verschlüsseln.

Genauso kann aber auch ein verschlüsselter Text wieder entschlüsselt werden: Dazu muss man entweder den Versatz kennen – also um wie viele Positionen im Alphabet verschoben wurde – oder diesen herausfinden. Um den Versatz herauszufinden, kann man eine sogenannte Häufigkeitsanalyse durchführen. Im Deutschen ist zum Beispiel der häufigste Buchstabe das „E“; diese Erkenntnis kann man nutzen, um den Versatz der Caesar-Chiffre zu bestimmen.

Jetzt seid ihr dran!

Damit ihr die Buchstabenhäufigkeit in der verschlüsselten Nachricht nicht per Hand zählen müsst, gibt es unter https://spurensuche.psi.uni-bamberg.de/#/frequencyanalysis ein Online-Werkzeug, dass das für euch macht. Gebt hier den verschlüsselten Text ein und vergleicht ihn mit den Referenzhäufigkeiten für deutschen Text. Könnt ihr damit den Versatz herausfinden?

Erklärung

Um das Entschlüsseln der Nachricht zu vereinfachen, gibt es die Caesar-Chiffre-Scheibe. Diese zeigt euch, welche Buchstaben im Klartext zu welchen Buchstaben im verschlüsselten Text gehören. Die Scheibe besteht aus zwei Scheiben, einer inneren und einer äußeren. Der Buchstabe der inneren Scheibe zeigt euch den verschlüsselten Buchstaben, während der Buchstabe der äußeren Scheibe euch den dazugehörigen Buchstaben im Klartext zeigt.

Jetzt seid ihr dran!

Um die Scheibe zu verwenden, müsst ihr sie so drehen, dass der Versatz berücksichtigt wird. Wenn ihr zum Beispiel den Versatz auf 3 gesetzt habt, müsst ihr die innere Scheibe im Bezug zur äußeren um drei Positionen verschieben. Dadurch könnt ihr die verschlüsselte Nachricht schnell und einfach entschlüsseln und den ursprünglichen Klartext lesen.

Beispiel: Entschlüssle das Wort „JHKHLP“ mit Versatz 3

  1. Stelle den Buchstaben „A“ der inneren und äußeren Scheibe aufeinander
  2. Wende Schlüssel 3 an: D.h. drehe die innere Scheibe um 3 Stellen gegen den Uhrzeigersinn („A“ und „D“ liegen aufeinander)
  3. Gehe nun von innen nach außen: J --> G, H --> E, ...

Aha, der Ablageort der Dokumente! Wenn Sie schnell genug sind, können Sie Bennet möglicherweise sogar auf frischer Tat ertappen.

Also los, schauen Sie sich auf der Website um und finden Sie heraus, wo die Übergabe stattfindet. Und dann nichts wie hin! Vielleicht springt ja sogar eine Beförderung für Sie heraus…