/ IT Security

Passwortsicherheit

Nachdem sich in letzter Zeit wieder vermehrt das Thema Passwortsicherheit als besonders kritisch heraus gestellt hat, entschloss ich mich, einen Blogeintrag zu verfassen. Ausschlaggebend waren zwei Ereignisse während eines Pentests[1]. Natürlich möchte ich auch Verbesserungsideen vorstellen.

Vorwort

Bei diversen Show-Hackings wird oft die Frage gestellt: "Wie kann ich mich schützen?". Meistens nehme ich (leicht entsetzt) zur Kenntnis, dass es den Fragestellern (häufig IT Leitern), nicht darum geht, wie sie die Firmen, schützen, sondern wie sich und ihre Familien privat schützen können[2].

Dabei ist es gerade beim Thema Passwortsicherheit so einfach Abhilfe zu schaffen. Und Konsequenzen, auf der anderen Seite mit schlechten Passwörtern, sind so schwerwiegend, dass häufig die gesamte IT Infrastruktur gefährdet wird.

Folgende zwei Fälle aus den letzten Pentests, sollen das Disaster verdeutlichen.

Fall #1

Im vorletzten Pentest hatten wir zum Ende des vor Ort Termins wenig Ansätze für einen wirklich guten Angriff. Im Geiste sahen wir uns schon auf der Rückfahrt, ohne die Infrastruktur des Kunden übernommen zu haben. Das demotiviert natürlich das Pentest Team[3]. Die Infrastruktur war nicht perfekt, aber eben doch an den wichtigsten Stellen gehärtet. In diesem Fall waren neuralgische Einstiegspunkte ordentlich gesichert und mit aktuellen Sicherheitspatches ausgestattet (zumal die Betriebssysteme für die zentralen Dienste auf dem aktuellsten Stand waren). Natürlich kennen das andere Pentester: Es wäre auch hier sicher nur eine Frage der Zeit doch irgendwo ein kleines Loch zu finden... Manchmal hat man zwar auch Tomaten auf den Augen, aber in diesem Pentest hatten wir in der vorgegebenen Zeit wirklich wenig Angriffsfläche zur Verfügung. Hier und da ein unnötiger IIS. Aber keine angreibaren Webapplikationen. Das meiste Windows. Kaum Unix oder Linux[4]. Wir konnten auch keine anderen unüblichen Dienste ausfindig machen. Wahrscheinlich waren im golden Image für Server (zufällig?) die meisten Serverdienste deaktiviert worden.

Die letzte Idee, obwohl wir schon anfingen ganz langsam aufzubrechen: Netzwerkverkehr mitschneiden. Also, Responder angeworfen und wenige Sekunden später die ersten Passworthashes im Log festgestellt. Noch schnell hashcat mit der Notebook Intel CPU und einer Wordlist mit gängigen Passwörtern darauf angesetzt - ohne wirkliche Hoffnung...
und plötzlich... BAM! "Password successfully cracked"

Kurz den kryptischen Benutzernamen überprüft und mit Schreck (oder Begeisterung - wie man's nimmt) festgestellt: Es handelte sich um das Passwort des IT Leiters. Der dann tatsächlich, entgegen unseren Erwartungen, auf allen Systemen mit dieser Username/Passwort-Kombination als Administrator angelegt bzw. Domänen-Admin war (so ganz genau weiß ich das nicht mehr, spielt in dem Fall aber weniger eine Rolle). Wenige Minuten später haben wir mit diesem Account dann das Active Directory übernommen.

Wenn man dann da mal ein bisschen drüber sinniert, ist das ja leider schon wirklich der super GAU. Zum Einen, dass wir genau das Passwort vom IT Leiter mitschneiden konnten. Zum Anderen, dass das Passwort innerhalb weniger Minuten über einen Wörterbuchangriff geknackt werden konnte. Und das der Benutzer dann, zu allem Überfluss, in der gesamten Domäne als Administrator hinterlegt war...
Ist für IT Leiter und - teilweise - IT Admins vielleicht auch nicht sooo unüblich. Aber daran sieht man, wie schnell und unglücklich sich solche Unbekümmertheiten addieren können.

Fall #2

Im letzten Pentest sind mir dann gleich zwei Kleinigkeiten zu Passwörtern aufgefallen. Diese haben zwar im Vergleich zum ersten Fall zu keinen kritischen Fehlern geführt. Aber vielleicht bringt das trotzdem den ein oder anderen Leser zum Nachdenken.

identische Passwörter

Während der Sicherheitsprüfung bin ich auf die Management-Web-GUIs für die WLAN Infrastruktur gestoßen. Dabei schien es sich nicht um eine zentralisierte WLAN Umgebung zu handeln, sondern um einzelne, getrennt voneinander existierende Accesspoints mit unterschiedlichen SSIDs. Das ging sogar soweit, dass nicht ein WLAN Accesspoint Multi-SSIDs (zu unterschiedlichen Netzen) angeboten hat, sondern mehrere, einzelne, getrennte Accesspoints eine SSID abgebildet und wieder mehrere, andere, einzelne Accesspoints eine andere SSID abgebildet haben. Bei diesem Kunden gab es die SSIDs "IT", "CAD" und "Buchhaltung". Da wir vom Kunden keinen Zugriff ins Internet zur Verfügung gestellt bekommen haben, hatte ich die Hoffnung, dass ich evtl. über eines dieser WLAN Netze einen Zugriff ins Internet erhalten würde (ohne Proxy mit NTLM Authentication). Also klickte ich mich durch die Konfiguration des Accesspoints (dessen Zugriff ich mit dem D-Link default Passwort erhalten hatte). Und plötzlich stieß ich auf die WPA2 Passwörter, die im Klartext in der Weboberfläche dargestellt wurden. Das gefundene Passwort war kurz, einfallslos und ohne besondere Sicherheitsmaßnahmen: "microsoft".

Leider gestaltete sich die Überprüfung der restlichen Accesspoints schwieriger: Dort war zu meiner Verwunderung das default Passwort für die Administrations-Web-GUI nicht (mehr) gesetzt. Versuche, die Zugangsdaten zu bruteforcen schlugen (erst Mal) fehl. Auch (offensichtliche) Sicherheitslücken schien es in der Webanwendung keine zu geben. Also vergeudete ich einige Stunden darauf, die Access Points irgendwie anders auseinander zu nehmen. Erfolglos. Das Ziel ins Gedächtnis zurück gerufen (Zugriff in andere Netze mit evtl. anderen Firewallregeln und direkten Internetzugriff), habe ich dann treudoof dass WPA2 Passwort ("microsoft") auch bei den anderen SSIDs getestet. Und widererwarten: Zugriff gewehrt[5]. Alle drei SSIDs in meiner Reichweite hatten denselben WPA2 Schlüssel. m i c r o s o f t (keine Groß-/Kleinschreibung, keine Symbole, keine Zahlen... keine Passphrase). Stellt euch vor, wie ich, selbst jetzt noch, unfassbar meinen Kopf schüttele. Zugriff auf ungeschützte Buchhaltungssoftware in der SSID "Buchhaltung". Diverse Managementsegmente in der SSID "IT" (z.B. zu Switch-UIs). Teilweise höchst interessante CAD Zeichnungen in der SSID "CAD" (im Prinzip die Golden Nuggets des Unternehmens auf ungesicherten CIFS Shares). Und alle drei SSIDs: Gesichert. Mit. Dem. Selben. Passwort. Und es ist ja nicht so, dass eine Schadsoftware auf einem Client-PC in diesem Netz unter Windows nicht schnell genug an das gespeicherten WPA Passwörter heran käme[6].

Standard Passwörter

Ursprung dieses Problems war aber ja eigentlich das default Passwort für die Administrations-Web-GUIs auf den WLAN Access Points (in dem dann das WPA2 Passwort im Klartext zu lesen war)[7].

Dies ist, meiner Meinung nach, das schwerwiegendere Problem. In meinen Pentests sehe ich es selten, dass alle Geräte gehärtet und das default Passwort geändert wurde. Allerdings verstehe ich auch nicht, wieso Geräte heutzutage überhaupt noch mit einem default Kennwort ausgeliefert werden. Wobei: Das ist ja gar nicht das Problem. Das machen selbst Security Hersteller wie Sophos auch (bei der UTM). Aber man muss es halt eben nach dem ersten Anmeldeversuch ändern. Und es darf nicht (wieder) auf das default Kennwort gesetzt werden. Dann wäre es in den meisten Fällen wahrscheinlich gar kein Problem.

Gleiches gilt für Drucker. Diese sind mir zwar bis jetzt nie wirklich als kritische Knotenpunkte (z.B. irgendwie falsch als Netzübergänge konfiguriert) aufgefallen. Aber: vor allem die Drucker in sensiblen Bereichen können für Angreifer interessant sein. Bei einem nicht näher genannten Druckermodell konnte ich auf die letzten Ausdrucke zugreifen und mir diese aus dem Druckerspool herunterladen. Bei größeren Multifunktionsdruckern habe ich auch schon gesehen, dass ich Druckerspool, Scanjobs und Faxe per E-Mail kopieren/weiterleiten kann. Ich befürchte, dass diese Einstellungen nach der Installation nie wieder überprüft werden und deshalb so ein erhebliches Datenleck nicht auffallen würde. Für einen Pentest sind Gehaltsdaten aus der HR, Regierungsdokumente aus der Geschäftsführungsebene oder technische Zeichnungen aus der CAD Abteilung ja nicht wirklich spannend (außer als fiesen roten Punkt im Report). Aber für das Unternehmen ist sowas umso schlimmer. Unabhängig davon würde eine Netztrennung zwischen Druckservices und Managementoberfläche natürlich auch schon sehr viel helfen.

Diese Fälle sollen vor allem eins zeigen: Solche Situationen gibt es häufig. Auch 2016 noch. Und nach den letzten Pentests zu urteilen, ist das auf keinen Fall die Ausnahme.

Nebenkriegsschauplatz

Beim oben genannten ersten Fall gab es aber einen kleinen Nebenkriegsschauplatz. Das Tool Responder. Hierbei versucht sich der Angreifer als Webproxy auszugeben in dem er die WPAD Datei spoofed. So detailliert möchte ich auf diesen Angriff auch gar nicht eingehen. Aber etwas, dass uns zumindest für die Übernahme der Infrastruktur des Kunden das Leben schwerer gemacht hätte: Hätte es im Unternehmen zwei Accounts gegeben - wie zum Beispiel: js-user und js-admin - und der IT Leiter hätte dann tatsächlich zum surfen seinen standard (js-user) User verwendet, hätten wir die Administratorenrechte vielleicht nicht mitbekommen. Das geht dann auch wieder so ein wenig in die Richtung least privilege. Aber zum Thema Responder gibt es auch noch andere Abwehrmaßnahmen. Gern eine Mail schreiben, wenn ihr euch hierzu einen separaten Blogeintrag wünschen würdet.

Abhilfe

Wie könnte man dem ganzen jetzt Abhilfe schaffen? Grundproblem waren in beiden Fällen Passwörter. Daher möchte ich folgend zwei Szenarien darstellen. Für den Einsatz Zuhause und im Unternehmen.

privat

Seit Jahren benutze ich ein ziemlich einfaches, wenn auch etwas umständlicheres, Konzept:
Für jede Anmeldung erstelle ich mir ein neues Passwort.
Die Idee ist erst mal kompliziert. Und sicherlich gibt es auch den ein oder anderen Leser, der mir das nicht glaubt, oder vermutet, dass ich das nicht Konsequent umsetze. Auch schon, weil ich mir so viele Passwörter gar nicht merken könnte. Bei rund 200 unterschiedlichen Webseiten (= 200 unterschiedliche Passwörtern) wäre das sicherlich auch nur sehr schwer möglich. Aber ich gebe mir erst gar nicht die Mühe. Bei den meisten Passwörtern weiß ich nicht mal, wie viele Stellen die haben. Hier vertraue ich auf eine Anwendung die mich dabei unterstützt. Die immer bei mir ist. Die die Passwörter verwaltet und mir neue, sichere Passwörter generiert. Schlicht, einfach und kostenlos: Sie nennt sich Keepass.

Keepass legt einen verschlüsselten Container für meine Passwörter an. Um die Passwörter einsehen zu können, muss ich mir nur dieses eine Passwort für den Container merken. Dieses sollte natürlich entsprechend komplex sein. Aber zu guten Passwörtern komme ich später noch.

Das gute an Keepass: Dieser Container (eine einzelne Datei) liegt dort, wo ich möchte. Die Anwendung wird lokal ausgeführt (z.B. auf meinem PC oder Android). Bei Cloud Diensten[8], die mir auch einen Zugriff von überall versprechen, kann ich mir einfach nicht 100%-ig sicher sein, dass hier die Daten vom Betreiber nicht doch (irgendwie) eingesehen/mitgelesen werden können. Außerdem hat Keepass wirklich tolle, zeitsparende, Komfortfunktionen. Zum Beispiel könnt ihr ein Passwort anlegen und nennt den Namen des Eintrags wie den Titel der Webseite (im Chrome könnt ihr den ziemlich einfach über die Favoriten herauskopieren). Wenn ihr euch dann dort einloggen möchtet, könnt ihr STRG+ALT+A drücken und die Anmeldedaten (Benutzername und Passwort) werden automatisch von Keepass ausgefüllt. Das geht mit jedem anderen Fenster unter Windows auch. Wenn sich Keepass nicht sicher ist, welches Passwort ihr meint, erhaltet ihr einen Auswahldialog. Hier eine kurze Einführung. Vielleicht hilft es ja, wenn man einfach mal sieht, wie einfach und komfortabel Passwortmanager im Allgemeinen und Keepass im Speziellen sind.

keepass-einfuehrung-gif

Da es in dem Video möglicherweise etwas schnell geht, hier die Schritte, die ich zur Veranschaulichung dargestellt habe:

  • Schritt 1: Keepass Container erstellen ("actinoide_blog.kdbx")
  • Schritt 2: "Master Passwort" setzen (d.h. Zugangspasswort zu der Keepass Datei und letztendlich zu den Passworten)
  • Schritt 3: Datenbankeinstellung (z.B. Name) setzen
    • Die meisten Einstellungen könnt ihr später immer wieder über das "Datei"-Menü ändern. Hier könnt ihr z.B. festlegen, welche Verschlüsselung verwendet werden soll (default ist die Höchste [AES256] - diese Einstellung könnt ihr später nicht mehr ändern) oder ob ihr einen Papierkorb möchtet.
  • Schritt 4: Webseite öffnen und Titel z.B. aus der Bookmark/Favoriten Funktion heraus kopieren
  • Schritt 5: Neuen Eintrag in Keepass erstellen - "Titel" aus Schritt 4. Den eigenen Benutzernamen und Passwort eintragen (oder bei einem neuen Dienst das automatisch generierte Passwort verwenden).
  • Schritt 6: Auf Webseite automatisch über die Tastenkombination "STRG+ALT+A" einloggen (wichtig ist, dass der Curser im ersten (d.h. meistens Benutzernamenfeld) sitzt).
  • Schritt 7 und 8: Beispiel, wenn mehrere Einträge mit demselben Titel vorhanden sind.

Der Login auf gmx.de war nur exemplarisch. Da ich dort keinen Account habe, habe ich einfach Fakedaten in die Loginmaske eintragen lassen.

Das Beste an Keepass ist aber: ihr müsst unterwegs nicht darauf verzichten. Es gibt für Android die Anwendung Keepass2Android. Und um an die Passwörter zu kommen, könnt ihr die Keepass Datei auf unterschiedlichsten Plattformen ablegen. OneDrive, Dropbox, GoogleDrive oder sogar einen eigenen Webspace mit WebDAV:

Einstellungsdialog Keepass2Android

Somit könnt ihr von überall auf eure Passwörter zugreifen. Keepass generiert euch auch Passwörter, womit ihr dann ganz einfach für jeden Dienst unterschiedliche Passwörter erstellen könnt.

Um ehrlich zu sein, weiß ich bei vielen Diensten gar nicht wie auch nur im Entferntesten die Passwörter aussehen. Dies verwaltet seit Jahren sehr zuverlässig meine Keepass Datei. Und je mehr ich mich für den Blogeintrag mit Keepass beschäftige, desto mehr denke ich darüber nach, ein extra Blogeintrag zu Keepass zu schreiben hmpf.

geschäftlich

Im geschäftlichen Umfeld ist Keepass allerdings nicht immer die richtige Wahl. Zwar können mehrere Personen auf die selbe Keepass Datei (z.B. auf einem gemeinsamen CIFS Share) zugreifen und damit arbeiten (hierzu gibt es unter Datei --> "Synchronisieren"), aber was Keepass nicht verhindern kann: das eine Person (z.B. ein verärgerter IT Admin) die Datei einfach kopiert ("data leakage"). Es gibt auch keine Berechtigungskonzepte innerhalb der Datei. Wer den verschlüsselten Keepass Container besitzt und das Passwort kennt, kann alle Daten darin einsehen. Es gibt auch keine zeitlich begrenzten Berechtigungen.

Für solche Umgebungen und Situationen gibt es professionelle Passwort Manager wie z.B. den Secret Server von der Firma Thycotic. Hier kann die ganze Firma - mit einem sehr guten Berechtigungskonzept - auf dem Passwort-Server in einer Web-UI arbeiten. Alles ist verschlüsselt. Und jeder sieht nur das, was er benötigt bzw. sehen darf. Es können sogar Passwörter ausgetauscht werden. Und - ein wirklich interessantes Konzept: Passwörter können automatisch geändert werden. Man kann sich das so vorstellen:

  • Man loggt sich über den Passwortmanager z.B. per SSH auf einem Server ein (hierbei öffnet der Secret Server lokal PuTTY und gibt, automatisiert, den Username und das Passwort ein).
  • Nachdem man sich ausloggt, baut der Secret Server wieder eine Verbindung auf und ändert das Passwort. Hierdurch ist immer nur der Secret Server im Besitz des aktuellen Passworts.

Dies geht natürlich auch zeitgesteuert als eine Art Cronjob. Und nicht nur pro Sitzung.

Bei Keepass gibt es aber zumindest Add-Ons, mit denen man sich automatisch alle Favicons herunterladen kann ;-).

Passwörter

Die meisten kennen das Motto: Man muss besonders komplexe Passwörter verwenden! Mit Buchstaben. Groß- und Kleinschreibung. Zeichen. Zahlen. Und am besten 8 Stellen lang.

Dabei stimmt das heutzutage gar nicht mehr.
Es sollte inzwischen besser länger als 8 Stellen sein. 12 oder sogar 16 Zeichen haben. Und - wie geschrieben - für jeden Dienst einzigartig sein (oder anders ausgedrückt: Kein Passwort mehrfach verwenden).

Am besten beschreibt es XKCD:
XKCD: Password Strength

Das beste Passwort wäre also eins,

  • an das ihr euch einfach erinnert
  • eher länger ist, statt kurz und komplex

Das längere Passwort müsste dann auch nichts zwangsläufig sehr komplex sein.

Sucht euch einfach 3 bis 4 Wörter raus, hängt sie wirr (grammatikalisch etwas verkehrt) aneinander und fertig ist euer sicheres Passwort. Und das ist bei weitem sicherer als beispielsweise "MercedesFrau1".

Aber zu diesem Thema gibt es bereits unzählige Tipps im Internet (die ich nicht zwangsläufig alle unterschreiben würde):

Beim Review von solchen Tipps fällt mir noch eins ein: Die Passworte sollten nie auf irgendwelchen "wie sicher ist mein Passwort?" Webseiten getestet werden! Verwendet dafür die Funktion von einem Passwort Safe, wie z.B. Keepass. Man kann sich nie sicher sein, wer die Webseite betreibt und ob die Passwörter nicht doch gespeichert werden.

Gut und Lustig finde ich auch folgende Marketing Unterlagen der Firma Thycotic zum Thema Passwörter (Link auf Twitter zum Foto des Titels "Passwords are like underwear"):

Fazit und Abschluss

Was möchte mit diesem Artikel bezwecken? Er soll zeigen, wie einfach es sein kann, viele Passwörter ordentlich und sinnvoll zu Verwalten. Und es soll zeigen, wie fatal es ist, unsichere Passwörter, oder überall das dieselben Passwörter zu verwenden. Mit Keepass gibt es eine unkomplizierte, kostenlose Möglichkeit sich vor solchen Problemen zu schützen. Download, Installation, Einrichtung geht innerhalb weniger Minuten. Und eigentlich bietet so ein Passwortmanager nicht nur ein unglaubliches Mehr an Sicherheit, sondern bietet auch tolle Komfortfunktionen (das vorgestellte Auto-Type zum Beispiel).

Update

  • [16.01.2017]: Gerade ist mir ein interessanter Tweet über den Weg gelaufen, der gut zu diesem Thema passt:

Das heißt: Keine Bibel Verse (z.B. "Johannes1030") verwenden. Außerdem habe ich beim durchklicken der Links auch einen Beitrag von Bruce Schneier zum Thema Passwortsicherheit gefunden: Choosing a Secure Password

Fußnoten


  1. Ein Pentest ist ein umfassender Sicherheitstest von PCs und Netzwerken. Hierzu Wikipedia, Penetrationstest (Informatik): "Penetrationstest ist der [...] Ausdruck für einen umfassenden Sicherheitstest einzelner Rechner oder Netzwerke [...]. Unter einem Penetrationstest versteht [man] [...] die Prüfung der Sicherheit [...] eines Netzwerks- oder Softwaresystems mit Mitteln und Methoden, die ein Angreifer (ugs. "Hacker") anwenden würde, um unautorisiert in das System einzudringen (Penetration)." ↩︎

  2. Wieso das so ist, würde ich vielleicht Mal versuchen in einem separaten Blogeintrag zu beleuchten ↩︎

  3. ... ist auf der anderen Seite aber natürlich toll und ein Lob für den Kunden! ↩︎

  4. an dieser Stelle, vollkommen wertfrei - kein Windows, Microsoft oder Linux bashing ↩︎

  5. wieso trenne ich die Netze und SSIDs überhaupt, wenn sogar das WPA2 Passwort für alle SSIDs das gleiche ist?! ↩︎

  6. nur ein Beispiel: http://superuser.com/questions/160451/how-to-get-a-stored-wlan-password-from-windows-7 ↩︎

  7. wahrscheinlich waren das eher SOHO Access Points - wobei ich auch hier eher kritisch Klartextpasswörtern in der UI gegenüber stehe ↩︎

  8. wie zum Beispiel der bekannteste: LastPass ↩︎

Passwortsicherheit
Share this