[Achtung, nicht alle Objekte auf dieser Seite sind im Sinne des https-Protokolls von sicheren Quellen.]

Ein elektromechanisches Relais steuert indirekt fremde Stromkreise. Eine Relais-Station (siehe Beitragsbild) arbeitet ähnlich und vermittelt Information in großem Stil.  Im Englischen ist „relay“ auch der Staffellauf, in dem ein Staffelholz übergeben wird; auch eine Art „Relais“. In diesem Beitrag geht es um das Programm relay.aspx, das in der Lage ist, beliebige Seiten im Internet zu holen und in verschiedenen Formaten auszugeben. Man kann das Programm zwar über das Internet aufrufen und es liefert dann nur einen Hilfetext. Damit sind die direkten Aufrufmöglichkeiten schon zu Ende, denn eigentlich wird das Programm im Zuge der Adressangabe in Webseiten angewendet. An jeder Stelle in einem HTML-Dokument, wo src="..." oder href="..." steht, kann die dortige Adresse ... durch den Vorsatz von /relay.aspx?target= modifiziert werden.

In den Beiträgen „Mit fremden Federn“ und „Syntax Highlighting“ wurde gezeigt, wie das Programm relay.aspx angewendet werden kann. Jetzt wollen wir die Eigenschaften des Programms näher kennen lernen. So wie im folgenden Frame meldet sich das Programm, wenn man es ohne Parameter aufruft:
https://clubcomputer.at/relay.aspx

Grundsätzlich liefert das Programm den Inhalt von Webdateien. Diese Dateien können am eigenen Server sein oder von anderen Server stammen. Zur Sicherheit kann das Programm ausschließlich von jenem Server aufgerufen werden, auf dem es gespeichert ist; es ist also ein Relais – aber nur „für Befugte“; es widersetzt sich Aufrufen von außen.

Technisch gesehen handelt es sich um ein C#-Programm, das inline in einer ASPX-Datei eingebettet ist. Das hat den Vorteil, das diese eine Datei genügt, um das Programm zu installieren, ähnlich, wie das bei JavaScript oder bei PHP der Fall ist. Im Unterschied zu diesen Sprachen wird aber das vorliegende Programm am Server vollautomatisch kompiliert und erst das Kompilat ausgeführt. Um diesen Meachnimus muss man sich nicht kümmern, der Server kann das.

Parameter target

Eine Datei, die gerufen werden soll, erfordert den Parameter target. Man kann entweder eine lokale Datei aufrufen oder eine Webdatei.

  • lokale Datei target=/pfad/name.ext
  • Webdatei target=domain.at/pfad/name.ext 
    http:// oder https:// kann – muss aber nicht – vor domain.at angegeben sein.

In beiden Fällen wird die Datei so abgeliefert wie sie vom Server geliefert wird. Im Falle einer gesicherten Übertragung werden aber in einem Html-Kode auch alle Bezüge zu eventuell unsicheren Inhalten mit derselben Methode automatisch in absolute Pfade mit vorangestelltem /relay.aspx?target= umgewandelt. Das bewirkt, dass man auf einem gesicherten Server (https wie es clubcomputer.at ist) ausnahmsweise auch mit Dateien arbeiten kann, die auf ungesicherten Servern (http) liegen.

Parameter s

Dieser Relais-Funktion wurde durch eine weitere Funktion s (für source)ergänzt. Man kann die gelieferten Inhalte auch im Quellkode angezeigt bekommen. Das entspricht der Browser-Funktion, sich eine Datei auch im Quellkode anzeigen zu lassen. Damit der Sourcekode auch gut lesbar ist, kann man ihn mit Syntax-Highlighting versehen. Verwendet wurde das Programmpaket von Alex Gorbachev. Damit man das Programmpaket für das Syntaxhighlighting nicht auf dem Produktionsserver clubcomputer.at ablegen muss, werden alle zugehörigen Dateien auf buero.clubcomputer.at/sh/ abgelegt. Damit das aber auch korrekt auch auf einem https-Server – wie es clubcomputer.at ist – funktioniert, muss man auf die Verweise der Datei mit Highlighting ebenfalls das Programm relay.aspx anwenden. Dieser voreingestellte Pfad zu den .js– und .css-Dateien kann über den zusätzlichen Parameter b (base) verändert werden. Die Art der Farbauszeichnung kann man mit dem Parameter t (theme) ändern.

Schutz wichtiger Daten

Das Programm erlaubt die Dokumentation von Source-Kode, sofern sich die zugehörigen Dateien am eignen Server befinden. In diesen Programmen könnten aber Informationen stehen, die nicht sichtbar sein sollen, zum Beispiel Passwörter. Um solche Informationen auszublenden, wurde folgender (nicht dokumentierter Mechanismus) eingebaut:

Kodezeilen zwischen // display-off und //display-on werden nicht ausgegeben, ebenso Kode zwischen /* display-off */ und /* display-on */.

Wenn also zum Beispiel eine Kodezeile einer Datei am Server lautet:

string  Passwort  = "123456";

muss man es so umschreiben:

string  Passwort  = /* display-off */ "123456" /* display-on */ /* hier ist das Passwort einzugeben */;

Die Ausgabe dieser Zeile ist dann wie folgt:

string  Passwort  = /* hier ist das Passwort einzugeben */;

Zum Abschluss hier noch das Programm relay.aspx, ausgegeben in einen iframe mit src="/relay.aspx?s=s&target=relay.aspx

Bitte bei der Durchsicht dieses und anderer Kodes immer bedenken, dass man nicht alles zu Gesicht bekommt, weil das Programm alle Stellen zwischen display-off und display-on aus Sicherheitsgründen ausblendet. In diesem konkreten Fall wird jener Kode ausgeblendet, der die Zeilen zwischen den beiden Markierungen ausblendet und ein „Backdoor“, das man sich einbaut, um das Programm auch testen zu können.

Beispiele

Die folgenden Beispiele können nur von dieser Seite ausgeführt werden oder von einer Seite auf jenem Server, auf dem sich die Datei relay.aspx befindet. Jeder Link öffnet in einem neuen Fenster. Man beachte, dass die Adresse immer https://clubcomputer.at bleibt und sich nicht etwa auf den target-Wert verändert.

Es ist auch möglich, populäre Adressen wie wikipedia.org, facebook.com, google.com oder microsoft.com zu verwenden, obwohl das nicht die Absicht des Programms ist.
wikipedia.org funktioniert fehlerfrei; google.com und facebook.com verlieren die Formatierung und machen Umlautfehler (dem müsste man nachgehen);
microsoft.com ist cleverer und meint: „Your current User-Agent string appears to be from an automated process, if this is incorrect, please click this link:United States English Microsoft Homepage“, Man kann also sehr wohl erkennen, ob die Anforderung von einem Browser stammt oder von einem Programm und man kann sich offenbar auch dagegen schützen.

„Krieg der Sterne“, das war einmal, „Krieg der Server“ sollte es heute heißen.


Dieses Programm ist nicht als Anleitung zum Aufbau eines Trojaners zu verstehen. Wer aber das Programm versteht, kann sich in der verworrenen Welt der Websprachen, Webkodierugen, Sicherungsmechanismen besser orientieren und versteht auch besser, wie Trojaner funktionieren. Das Programm vertieft das Verständnis für die Zusammenhänge, ist aber nicht wirklich „angriffsfähig“, weil es sich nicht verbreitet und auch keine Rückmeldungen „nach Hause“ sendet uns ihm auch andere wichtige Dinge für die Existenz eines wirklichen Trojaners fehlen.

Aber ja, es umgeht einen vom https-Protokoll vorgesehenen Mechanismus zur Vermeidung der Einbettung unsicherer Seiten und es kann auch den Inhalt von Server-Dateien sichtbar machen.

Zur Werkzeugleiste springen