Liebesgrüße vom Congress

Die Mail

Heute gab es um 15:43 eine Ladung Liebesgrüße für alle Studierenden der Hochschule Karlsruhe. Die kamen per Mail an die Hochschuladresse an und waren wie folgt aufgebaut:

Betreff: Hi!

Hi <Empfänger-Vorname>,

ich hab dich letztens auf dem Campus gesehen und musste dich einfach ewig ansehen. Ich glaube du warst mit Kommilitonen auf dem Weg zur Mensa oder so. Ich muss seitdem immer und immer wieder an dich denken und könnte mir echt in den Hintern beißen, dass ich dich nicht direkt angesprochen habe!

Jetzt versuche ich seit 2 Wochen irgendeine Kontaktmöglichkeit zu finden und war echt froh, als mir <zufälliger Studi-Vorname> deine Emailadresse gab!

Ich würde dich gerne näher kennen lernen und würde mich freuen, wenn wir uns mal auf nen Kaffee oder Cocktails am Abend treffen könnten! Vielleicht lässt sich ja in Zukunft die Zeit auf dem Campus gemeinsam verbringen?

Ich hoffe ich habe dich mit meiner direkten Anschrift nicht zu sehr überrumpelt und würde mich sehr über eine Antwort freuen!

<Absender-Vorname>

Der Mail-Header

Okay. Auch wenn ich mich irgendwas zwischen geschmeichelt und verwirrt gefühlt habe, habe ich dann doch lieber die Mail-Header überprüft. (Den Absender habe ich mal durch mami0003 (Testuser „Micky Mouse“) und den Empfänger durch fufu0001 (vollkommen fiktiv) ersetzt.)

Return-Path: <mami0003@hs-karlsruhe.de>
[... unwesentliches gelöscht ...]
Received: from schinderhannes.visitor.congress.ccc.de ([151.217.107.113] helo=[127.0.0.1])
by smtp.hs-karlsruhe.de with esmtp (Exim 4.80.1)
(envelope-from <mami0003@hs-karlsruhe.de>)
id 1VxHa6-009Kd2-MV
for fufu0001@hs-karlsruhe.de; Sun, 29 Dec 2013 15:43:06 +0100
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
From: Micky Mouse <mami0003@hs-karlsruhe.de>
To: fufu0001@hs-karlsruhe.de
Date: Sun, 29 Dec 2013 14:43:06 -0000
User-Agent: SimpleMail Python/2.7.3
(http://www.python-forum.de/post-18144.html)
Subject: Hi!
X-HELO_host_verified: No (RFC 2821 violation detected)
X-HsKA-Point: HELO host verification failed (RFC 2821 violation detected).
X-HsKA-Point: host does not belong to domain or MX of sender address
X-HsKA-Points: pp

Hier sind zwei Sachen verdächtig:

1.

User-Agent: SimpleMail Python/2.7.3

2.

Received: from schinderhannes.visitor.congress.ccc.de ([151.217.107.113] helo=[127.0.0.1])

Ein Nerd wird hier denken „lol.“ für normale Menschen erkläre ich es kurz:

Der User-Agent bezeichnet das Programm, mit dem die Mail verschickt wurde. SimpleMail ist eine Programmbibliothek für die Programmiersprache Python. Dass das jemand ernsthaft als normales Mailprogramm einsetzt darf bezweifelt werden. Es ist daher eher ein Indiz für ein Skript zum automatisierten Versenden von Mails.

Die zweite Zeile zeigt an, wer die Mail abgesendet hat. Dies war in diesem Fall der Host „schinderhannes.visitor.congress.ccc.de“. Das deutet stark auf einen Besucher des aktuell stattfindenden 30C3 hin.

Der Chaos Communication Congress

Liebesgrüße vom Congress? Unwahrscheinlich ;-)

Vom 27.12 bis zum 30.12 findet jährlich der Chaos Communication Congress statt. Das ist die weltgröße LAN-Party ein großes Hacker-Treffen welches vom CCC (Chaos Computer Club) in Hamburg abgehalten wird. Dort trifft sich die jährlich die internationale Hackerszene für Vorträge, Networking und zum Spaß haben.

Von dort aus werden auch gerne Sicherheitslücken aufgezeigt (eine Liste der aktuellen Hacks des 30C3 edit: mittlerweile ist das Original nicht mehr vorhanden). Weil das „zwischen den Jahren“ und ohnehin eher anarchistisch ist, können die Hacker schwer bis gar nicht verfolgt werden. (Auch wenn es dort angeblich ein Sorgentelefon gibt, an das sich Externe wenden können wenn sie Ziel eines Angriffs geworden sind.)

Der SMTP-Server

Wie konnten diese Mails nun abgeschickt werden? Leider ziemlich leicht. (Das liegt allerdings nur teilweise in der Infrastruktur der HsKA begründet. Mail ist im Allgemeinen nicht sonderlich sicher.) Der der SMTP-Server der Hochschule Karlsruhe hat ein paar Eigenheiten, die hier ausgenutzt wurden:

  • Der Server ist außerhalb des HS-Netzwerkes erreichbar (das ist vollkommen normal und notwendig)
  • Mails an …@hs-karlsruhe.de können ohne Login gesendet werden. Das heißt er setzt kein SMTP-Auth voraus. (Mails an alle anderen Adressen benötigen eine Verbindung über VPN.)
  • Als Absender muss ein lokal existierender Nutzer angegeben werden (hier „mami0003“).

Kurz: Jeder kann von überall aus seine E-Mails damit versenden, solange der der Absender (hier: „mami0003“) existiert.

Nachfolgend ein Beispiel, wie man selber „Hacker“ spielen kann. (Windows-Nutzer ersetzen netcat durch telnet). Das ist kein geheimes Hacker-Wissen, sondern einfach nur das, was auch euer E-Mail Client macht wenn ihr eine Mail verschickt.

Ihr könnt das selber ausprobieren, solltet aber unbedingt darauf achten, dass ihr die Mails nur an euch selber sendet und (anders als der Hacker) keine anderen Studis damit nervt. Außerdem steht eure IP in der Mail, mit der ihr in der Regel rückverfolgbar seid.

$ netcat smtp.hs-karlsruhe.de 25
220 smtp.hs-karlsruhe.de ESMTP HGS 5.0 Sun, 29 Dec 2013 18:59:14 +0100
HELO foobar.example.net
250 smtp.hs-karlsruhe.de Hello
MAIL FROM:<mami0003@hs-karlsruhe.de>
250 OK
RCPT TO:<fufu0001@hs-karlsruhe.de>
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
From: <sender@example.org>
To: <receiver@example.com>
Subject: Testmail
Date: Thu, 26 Oct 2006 13:10:50 +0200
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
.
250 OK id=1VxKgp-009DB4-38
QUIT
221 smtp.hs-karlsruhe.de closing connection

Die genauen Details und deutlich übersichtlicher kann man das in der Wikipedia nachlesen: SMTP Protokoll

Prinzipiell könnte man auch ein neues Thunderbird-Profil aufsetzen und damit Mails versenden. Aber dann ist der Lerneffekt doch eher gering.

(Info für alle WI-Studis an der HsKA: Im Modul „Kommunikationssysteme“ werdet ihr das noch einmal brauchen, da ihr dort einen E-Mail Client programmieren werdet.)

Die Personendaten

Aber wie kam man an die Mail-Adressen und die Namen? Nun, die liegen wie bei jedem guten Unix einfach auf dem Server herum (im folgenden Beispiel habe ich zusätzlich nach dem Testuser „Micky Maus“ gefiltert).

Dazu loggt man sich auf dem Server der Hochschule ein und sieht sich die datei /etc/passwd an. Auch das hat mit „hacken“ nichts zu tun. Der Server ist für alle Studis frei zugänglich – weitere Infos dazu finden sich in der Dokumentation im ILIAS („Wie kann ich mit Putty eine SSH-Sitzung starten?“).

$ ssh fufu0001@login.hs-karlsruhe.de
fufu0001@login.hs-karlsruhe.de's password:
****************************************************************************
* *
* H O C H S C H U L E K A R L S R U H E *
* T E C H N I K U N D W I R T S C H A F T *
* *
* ( I n f o r m a t i o n s z e n t r u m ) *
* *
* *
* I Z - B e n u t z e r b e r a t u n g *
* Montag bis Freitag 8:00-14:00 Uhr Telefon: 0721 / 925 - 2305 *
* *
* Aktuelle Ankuendigungen und Betriebshinweise/Wartungstermine *
* siehe unter http://www.iz.hs-karlsruhe.de/ *
* *
* *
* Welcome to AIX on IBM System p *
* *
****************************************************************************
$ cat /etc/passwd | grep Micky Maus
mami0003:!:132213:100000:Micky Maus:/home/A3_D1_L103/mami0003/home:/usr/bin/ksh
mami1029:!:250541:200000:Micky Maus:/home/A3_D1_L103/mami1029/home:/usr/bin/ksh
$

Es gibt auf dem Server also zwei Nutzer (mami0003 und mami1029) mit dem Namen Micky Maus. Wäre der Filter nicht gesetzt, würde noch alle weiteren User mit Vor- und Nachname aufgelistet. Das ist also prinzipiell eine Quelle für die Namen und E-Mail-Adressen.

Eine weitere Möglichkeit, die hier vielleicht genutzt wurde, ist der LDAP-Server welcher zum Active Directory der Hochschule gehört. Dies ist ein Verzeichnisdienst, welcher dazu genutzt wird um solche Daten strukturiert abzulegen und abzufragen.

Et voilá

Kombiniert man die (prinzipielle) Unsicherheit von Mail und die Nutzerliste, so kann man mit relativ einfachen Mitteln die randomisierte Partnervermittlung betreiben, wie es der Hacker tat. (Da die E-Mail-Adressen auch wirklich existieren, führt dies dazu, dass sich die Turteltäubchen gegenseitig antworten können. Wie romantisch! ;-))

technische Implikationen für Nutzer

Was bedeutet das für mich als User im Umgang mit „normalen“ Mails (d.h. ohne Verschlüsselung und Signatur)?

  1. Die eingetragene AbsenderIn einer Mail ist willkürlich. Man kann sich niemals sicher sein, dass die Mail wirklich von ihr stammt.
  2. Die eingetragene EmpfängerIn ist im Prinzip auch willkürlich. Im Prinzip könnt ihr auch eine Mail erhalten, die scheinbar an angela.merkel {at} cdu.de gesendet wurde, aber bei euch ankam.
  3. Der Inhalt kann verfälscht sein. Man weiß nie, ob unterwegs etwas verändert wurde.
  4. Der Inhalt kann entsprechend auch unterwegs mitgelesen werden.

Eine Antwort auf alle Fragen heißt im Grunde Verschlüsselung und Signierung. Dies ist zum Beispiel über PGP bzw. GPG mittels im Public/Private-Key Verfahren möglich. (Sicherheitskonzepte für Mail in der deutschen Wikipedia)

Ein weiterer Punkt, der damit allerdings nicht verhindert werden kann, ist die Ausspähung der Metadaten („Bewegungsdaten“). Dies sind beispielsweise Empfänger, Absender, Datum und auch der Betreff. Wer dies schützen will, der muss schlichtweg ein anderes Protokoll nutzen oder das ganze über beispielsweise Tor abwickeln (solange das noch nicht von der NSA unterwandert ist).

technische Implikationen für Admins

Die Protokolle rund um „Mail“ sind an sich ein ziemlicher Flickenteppich, an dem immer wieder neue Sicherheitsflicken angebracht werden um das gröbste zu verhindern. Viele Admins werden davon ein Lied singen können, dass diese Protokolle meist wenig Spaß bereiten.

Einer der Vorkehrungen heißt SMTP-Auth. Ist das aktiviert, kann man nur noch nach einem gültigem Login seine Mails versenden. Dies ist üblicherweise bei allen größeren Providern der Fall.

Die Abhörung kann man als Admin hingegen nicht verhindern – zumindest nicht auf der gesamten Strecke von Sender zum Empfänger. Was man machen kann, ist dem vorhergehenden und nachfolgenden Knoten anzubieten, zumindest auf dieser Teilstrecke zu verschlüsseln. Das geht mit SMTPS oder STARTTLS.

Die oben genannten prinzipiellen Probleme von Mail bleiben aber weiterhin bestehen: Mail ist nicht vertrauenswürdig. Auch wenn das IZ die Sicherheitsvorkehrungen verschärft, werden sie an diesem prinzipiellen Problem nichts ändern können.

(Was möglicherweise machbar ist, ist dass Mails von …@hs-karlsruhe.de an …@hs-karlsruhe.de abgesichert werden können, in dem SMTP-Auth, SMTP-Header und Mail-Header übereinstimmen müssen. Aber ob dies mit gängigen Mailservern einfach machbar ist, kann ich nicht allerdings beurteilen.)

Wenn man ehrlich sein will, muss man seinen Nutzern daher nahelegen, Verschlüsselung und Signierung zu benutzen. Über solch eine asymmetrische Verschlüsselung kann man feststellen, ob eine Mail wirklich von einem bestimmten Absender kommt. Wie das geht, wird beispielsweise auf netzpolitik.org („Anleitung: so verschlüsselt ihr eure E-Mails mit PGP“) erklärt.

soziale Implikationen

Ein weiterer interessanter Aspekt, der an dieser hauptsächlich technischen Hochschule mit hohem Männer-Anteil zu tragen kam, war dass der Zufall hauptsächlich Männer mit Männern verkuppeln wollte ;-)

Hier gab es wohl auch die ein oder andere Anfeindungen als Antwort (die ich mal dreist aus einer Facebook-Gruppe kopiert habe):

Digger ist das dein ernst da wo ich herkomme werden homos gehängt ! Komm mal zu dir . Ich muss dich enttäuschen aber ich bin Hetero

Der Herr ist wohl nicht nur kompetenzbefreit, sondern auch ein homophobes Arschloch. Bleibt zu hoffen, dass das ein Einzelfall war. Es wurden nämlich auch einige nette Antworten gesichtet – und das ist doch auch schön! :-)

Rückmeldung der Hacker

Vom oben bereits genannten Host „schinderhannes“ kam bei mir um 20:48 eine Mail unter dem Absender „IZ-Benutzerberatung“ an. In dieser wird das Vorgehen so bestätigt, wie ich es hier vermutet hatte:

From: iz-benutzerberatung {at} hs-karlsruhe.de

Hi Marc,

wir haben deinen Blogeintrag mit Freude gelesen. Toller Artikel! Du hast mit deiner Erklärung unserer Vorgehensweise komplett ins Recht.
Im Anhang an diese Mail senden wir den Quelltext unseres kleinen Python-Skriptes. Wenn du Lust hast das in deinen Artikel einzubauen, darfst du das gerne tun.

Viele Grüße vom Congress!

hsspam.py

Das Skript

Im Prinzip macht das Skript folgendes: Es schickt an alle Nutzer der HsKA genau 1 Mail. Der Absender ist dabei zufällig. Es kann also sein, dass im Namen von „mami0003“ entweder 0, 1 oder viele Mails verschickt wurden.

Aufklärungsmail der Hacker

Es kam um 21:13 auch noch eine weitere Mail, die allerdings wohl nicht an alle ging. Zumindest nicht an mich. im Spam landete. (Danke an einball für die Weiterleitung.)

Ohai from the #30C3!

Die vorherige Mail war, wie ihr hoffentlich alle gemerkt habt, ein lustig gemeinter Scherz.

Wir haben eure Kommentare auf Facebook und Co mit einem dicken Grinsen auf dem Gesicht verfolgt. Auf Grund der vielen Verwirrungen die es aber darum gab und angeblichen Meldungen „der HSKA-Server sei gehacked worden“ (unter anderem vom AStA) haben wir uns dazu entschieden das aufzuklären.

Die technischen Aspekte hat Marc Kohaupt in seinem Blog [1] schon schön erklärt, weshalb wir es hier verzichten darauf einzugehen. Wir haben ihm unseren Quellcode [2] zukommen lassen um den Artikel zu vervollständigen.

Zu den Details:
* Alle Daten die wir dafür verwendet haben sind quasi hochschulöffentlich und können von jedem Studenten eingesehen werden. Wir haben die Daten nicht weitergegeben.
* Wir haben keine Passwörter „geknackt“ oder waren im Besitz solcher. Wir hatten lediglich euer Kürzel und euren Namen ausgelesen. Diese Daten wurden nach dem Versenden vernichtet.

Zum Warum?:
* Warum nicht?
* Weil wirs können!
* Weil wir darauf hinweisen wollen wie unsicher die Hochschulinfrastruktur ist.
* Weil wir wollen, dass sich das ändert!

Vielleicht hat das IZ ja jetzt endlich mal einen Grund das zu fixen.

Unabhängig davon möchten wir auch allen nochmal die Sicherheitstipps im oben erwähnten Blog [1] nahelegen. Signiert eure Emails!

Viele Grüße vom Congress!

[1] http://blog.debuglevel.de/liebesgruesse-vom-congress/
[2] http://sprunge.us/OLSU?python

Kommentare, Ethik und Disclosure

Da hier einige KommentatorInnen meinen, sie müssten wegen der Aktion den/die Hacker, andere KommentatorInnen oder mich von der Seite anpöbeln:

Man kann nun natürlich diskutieren, ob das noch mit der Hackerethik konform geht. Man muss festhalten, dass keine eurer Mails oder sensible Daten abgerufen wurden. Das was hier passiert ist, geschieht auch täglich beim Versand von Spam mit gefälschtem Absender.

Prinzipiell kann man auch fragen, wie hoch der „hack value“ ist – aber das ist wohl eine Geschmacksfrage. Die Meinungen liegen irgendwo zwischen „Scriptkiddies“, „notwendiger Wink mit dem Zaunpfahl“, „humorlos“ und „humorvoll“.

Es kam auch der Hinweis auf responsible disclosure auf. Dies bezeichnet den Vorgang, dass man Sicherheitslücken eine Zeit geheim hält bis sie behoben sind.

Solch ein responsible disclosure habe ich hier nicht durchgeführt. Den Vorfall habe ich hier dokumentiert, weil er in seiner Absurdität lustig ist und sich nebenbei die Chance ergab, ein bisschen technische Hintergrundinformationen über diese Problematik zu vermitteln. Dies ist mir insbesondere ein Anliegen in Anbetracht der seit Anbeginn von „Mail“ existierenden Problematik der Absender/Empfänger-Verfälschung und der seit diesem Jahr bekannt gewordenen Überwachung durch diverse Geheimdienste.

Diese Dokumentation macht die bestehenden Probleme (bei Mail allgemein, oder der HsKA im speziellen) weder besser noch schlimmer. Es soll nur die Problematik aufzeigen und euch dafür sensibilisieren, welche Gefahren drohen und wie man sie eventuell bemerken und umgehen kann.

Überarbeitung

Da der Artikel in seiner Urfassung ziemlich schnell zusammengetragen wurde, habe ich ihn im Laufe des Tages ein paar mal überarbeitet und erweitert. Ich hoffe, dass er jetzt auch für Nicht-InformatikerInnen lesbar und verständlich ist. Über Rückmeldung in den Kommentaren würde ich mich freuen.

Update 14.02.2014

Hallo liebe Leserinnen und Leser, die ihr von Twitter, golem.de und anderen Seiten kommt! Nach wie vor freue ich mich natürlich über eine sachliche Diskussion und Hinweise in den Kommentaren. Damit allerdings nicht noch mehr Schrott in die Kommentare wandert, habe ich diese auf Moderation gestellt. Ich hoffe das ist halbwegs okay :)

Postfix das Verschlüsseln beibringen (optional: mit CAcert)

Um den Nachrichtenaustauschen zwischen Client und SMTP-Server zu verschlüsseln, kann man mit Postfix TLS einsetzen. Wie genau, möchte ich hier nicht erklären, sondern auf einige gute Howtos hinweisen:
Grob habe ich mich an http://wiki.debian.org/PostfixAndSASL gehalten – allerdings scheinen mir da Stücke vom Code zu fehlen. Diesbezüglich kann man sich gut an http://yocum.org/faqs/postfix-tls-sasl.html halten, und dort bei Schritt 8 einsteigen (und Schritt 11 evtl. überspringen).
Was dort nirgends steht, ist dass

tlsmgr unix - - n 1000? 1 tlsmgr

in „/etc/postfix/master.cf“ nicht auskommentiert sein darf.
Desweiteren Wissenswert: Die Zertifikate müssen nur für root zugänglich sein, da Postfix diese noch einliest, bevor es seine root-Rechte abgibt.

Will man seine Zertifikate von CAcert signiert haben, so ist dieses Howto zu empfehlen: http://koti.kapsi.fi/ptk/postfix/postfix-tls-cacert.shtml