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
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
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
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
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:
123456
123456789
qwerty
password
12345
qwerty123
1q2w3e
12345678
111111
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.
Das erste Wort john gibt einfach an, dass wir gerne das
Werkzeug „John the Ripper“ benutzen möchten.
--rules=All teilt der Kommandozeile mit, dass John bei
der Generierung der erweiterten Wortliste alle bekannten
Modifikationsregeln anwenden soll.
--wordlist=hinweise.txt gibt an, dass die bisherige, von
euch erstellte, Wortliste in einer Datei mit dem Namen „hinweise.txt“
zu finden ist.
Der letzte Teil des Befehls
--stdout > erweitert.txt sorgt dann dafür, dass die
erweiterte Wortliste in einer Datei mit dem Namen „erweitert.txt“
gespeichert wird.
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
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
Stelle den Buchstaben „A“ der inneren und äußeren Scheibe aufeinander
Wende Schlüssel 3 an: D.h. drehe die innere Scheibe um 3 Stellen gegen
den Uhrzeigersinn („A“ und „D“ liegen aufeinander)
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…