Jesper M. Johansson, Ph.D., ISSAP, CISSP - Security Program Manager - Microsoft Corporation Das Thema Informationssicherheit gibt Anlass zu interessanten Debatten. Die Bedeutung der einzelnen ist verschieden. Sie zeigen jedoch, dass das Thema Sicherheit weiterhin an Bedeutung gewinnt. Ich möchte einige Standpunkte darstellen und Ihnen meine Meinung zu diesem Thema mitteilen. Zum Auftakt meiner Artikelserie beschäftige ich mich mit dem "Glaubenskrieg" um Kennwörter und Kennwort-Sätze. Um das "Kennwort-Sätze oder Kennwörter"-Problem genauer analysieren zu können, habe ich diesen Artikel in drei Teile aufgeteilt. In diesem ersten Teil geht es um die Grundlagen des Problems Kennwort-Sätze vs. Kennwörter, wie sie gespeichert werden, usw. Nächsten Monat besprechen wir die relative Sicherheit der beiden Varianten und werden mit Hilfe von etwas Mathematik feststellen, welche Variante sicherer ist. Im letzten Teil werden die Ergebnisse zusammengefasst. Ich werde Ihnen Tipps geben, wie Sie Kennwörter auswählen und wie Sie eine Kennwortrichtlinie konfigurieren sollten. Grundlagen Als erstes ist es wesentlich, dass Sie den Unterschied zwischen Kennwörtern und Kennwort-Sätze verstehen. Bei der Auswahl eines Kennworts entscheiden sich die meisten Leute für ein Wort wie zum Beispiel "Passwort", für eine zufällige Zeichenkette wie "X26!aZ@6#60;dF:" oder für eine Kombination aus beidem wie zum Beispiel "P@s$w0rd". Ein Kennwort-Satz sieht hingegen so aus: "Dies ist eine echt komplexer Kennwort-Satz". Er ist normalerweise viel länger als ein Kennwort und enthält Leerzeichen. Einige Leute erstellen ein Kennwort, indem Sie die ersten Buchstaben der Wörter eines Kennwort-Satzes verwenden. Hierbei handelt es sich jedoch nicht um einen Kennwort-Satz, sondern weiterhin nur um ein einfaches Kennwort – wenn auch ein interessant konstruiertes Kennwort. Ein Kennwort-Satz ist eine andere Form eines tokenbasierten Kennworts – bei den Tokens handelt es sich in diesem Fall um Wörter statt um Zeichen aus einem Zeichensatz. Der Kennwort-Satz muss kein echter Satz mit korrekter Rechtschreibung sein. Die Hauptunterschiede zwischen Kennwort-Satz und Kennwörtern sind:
Man kann einen Kennwort-Satz zwar einfach als ein sehr langes Kennwort betrachten, es setzt sich jedoch normalerweise aus einer Reihe von Wörtern oder irgendetwas Ähnlichem zusammen. Die hier gezeigten Kennwort-Sätze können unter Betriebssystemen ab Windows 2000 problemlos verwendet werden. Es kann jedoch sein, dass andere Produkte andere Vorgaben für Kennwort-Sätze verwenden oder diese gar nicht unterstützen. Als nächstes sollten Sie den Unterschied zwischen dem Erraten von Kennwörtern und dem Knacken von Kennwörtern verstehen. Erraten von Kennwörtern heißt, jemand sitzt vor dem Computer oder vor einem Remotecomputer und probiert Kennwörter aus. Diese Methode spielt in diesem Artikel keine Rolle – wenn ein Konto ein relativ komplexes Kennwort nutzt, wird sie erfolglos bleiben. Wenn ein Angreifer ein Kennwort erfolgreich errät, dann hat er entweder unglaubliches Glück oder das Kennwort war zu schwach. Betrachten wir ein Beispiel. Passwörter können sich aus vier unterschiedlichen Zeichentypen zusammensetzen: Großbuchstaben, Kleinbuchstaben, Zahlen und Sonderzeichen. Sonderzeichen können Sie teilweise über die Tastatur eingeben und teilweise nicht (zum Beispiel Unicode-Zeichen). Einige Leute betrachten Unicode-Zeichen und Sonderzeichen auf der Tastatur zwar als zwei unterschiedliche Zeichentypen, im Rahmen dieses Artikels werden wir diese jedoch in einer Definition zusammenfassen. Außerdem verwenden wir zur Vereinfachung den Begriff "Zeichen" für alle vier Kategorien. Nehmen wir also einmal an, ein Kennwort verwendet 8 Zeichen aus mindestens drei der vier Zeichentypen, ist nicht im Wörterbuch zu finden und läuft nach 70 Tagen ab. Ein Angreifer, der nichts über das Kennwort weiß, bräuchte eine Netzwerkbandbreite von 53.000 T3-Verbindungen (mit jeweils eine Geschwindigkeit von 44.736 Mbps), um das Kennwort vor dessen Ablauf über das Netzwerk zu erraten. Wenn wir den Zeichensatz einschränken und davon ausgehen, dass das Kennwort zufällig gewählt wurde (oder zumindest für den Angreifer so aussieht), dann erhalten wir mit den 76 häufigsten Zeichen 1,11*10^15 mögliche 8-Zeichen Kennwörter. Wenn ein Angreifer 300 dieser Kennwörter pro Sekunde durchprobiert, was auch mit sehr optimierten Programmen eher unwahrscheinlich erscheint, dann würde er zum Erraten des Kennworts 58.783 Jahre benötigen. Wenn der Angreifer ein einfaches Script und den "net use"-Befehl verwendet, dann schafft er wahrscheinlich nur zwei oder drei Versuche pro Sekunde – das bedeutet, er benötigt 5.878.324 Jahre, um das Kennwort zu erraten. Das Knacken von Kennwörtern läuft ganz anders. In diesem Fall hat der Angreifer die Hashwerte erlangt. Ein Hashwert ist ein durch eine mathematische Operation aus einem Kennwort entstandener Wert – er wird zum Speichern von Kennwörtern verwendet (wir besprechen das Thema weiter unten genauer). Der Angreifer generiert Testkennwörter, erstellt einen Hashwert für diese und vergleicht ihn dann mit dem Hashwert des angegriffenen Kennworts. Das Knacken von Kennwörtern ist schneller als das Raten. Auch mit durchschnittlicher Hardware ist ein Angreifer in der Lage, Hashwerte für 3.000.000 Kennwörter pro Sekunde zu erstellen und zu testen. Ein solcher Angriff gegen das oben beschriebene 8-Zeichen-Kennwort dauert 6 Jahre. Viele Kennwörter werden allerdings schon deutlich eher gefunden – und statistisch wird jedes beliebige Kennwort innerhalb der halben Zeit gefunden. Wenn ein Kennwort nur sieben Zeichen hat, dann wird das Knacken nur ca. 28 Tage dauern. Bedenken Sie, dass ein Angreifer unter Windows zum Knacken von Domänenkennwörtern einen Zugriff auf Systemebene auf den Domänencontroller benötigt. Wen ein Angreifer bereits einen Domänencontroller kompromittiert hat, dann ist das Knacken von Kennwörtern nur noch ein zweitrangiges Problem. Warum knacken die meisten Angreifer dennoch Kennwörter? Meist hoffen die Angreifer, dass jemand ein Konto mit den gleichen Benutzernamen und dem gleichen Kennwort auf einem anderen System in einer anderen Domäne hat. Dieses Problem wird in einem späteren Artikel besprochen. Da das einzige Geheimnis bei einem Challenge-Response-Protokoll der Kennworthash selbst ist, ist das Knacken von Kennwörtern allerdings grundsätzlich überflüssig. Der Angreifer benötigt für den Zugriff auf das Konto ja nur den Hashwert. Dennoch werden Kennwörter von Angreifern geknackt – und die Erfolgsrate hierbei ist ein ernstes Problem. Bedenken Sie, dass moderne Betriebssysteme Kennwort und Kennwort-Sätze normalerweise nicht als Klartext speichern, sondern als Ergebnis einer Einwegberechnung – zum Beispiel als Hashwert. Unter Windows NT-basierten Betriebssystemen (inklusive Windows 2000, Windows XP und Windows Server 2003) kann das Kennwort auf mehrere unterschiedliche Arten gespeichert werden. Zwei dieser Speichervarianten sind der LM-Hash und der NT-Hash. Für die Diskussion in diesem Artikel müssen Sie die genaue Arbeitsweise dieser beiden Verfahren nicht kennen. Sie müssen nur drei Dinge wissen:
Beide Hasharten genieren einen 128-Bit-Wert. Heutzutage knacken die meisten Angreifer als erstes den LM-Hash. Dann knacken Sie den NT-Hash, indem sie einfach alle Kombinationen aus Klein- und Großbuchstaben aus dem über den LM-Hash geknackten Kennwort durchprobieren. Der LM-Hash ist eine sehr schwache Einwegberechnung. Er wurde ursprünglich für das LAN-Manager-Betriebssystem entworfen und steht unter Windows NT nur noch aus Gründen der Abwärtskompatibilität zur Verfügung. Aufgrund des Verfahrens, mit dem der LM-Hash berechnet wird, ist ein Kennwort mit einem LM-Hash niemals stärker als ein 7-Zeichen-Kennwort mit einem Zeichensatz von 142 Zeichen. Entfernen der LM-Hashes Es gibt mehrere Wege, über die Sie sicherstellen können, dass der LM-Hash nicht gespeichert wird. Ein Weg ist, nur Kennwörter oder Kennwort-Sätze mit mehr als 14 Zeichen zu verwenden. Alternativ können Sie auch den NoLMHash-Schalter der Gruppenrichtlinie von Windows Server 2003 und Windows XP verwenden (die Einstellung heißt "Netzwerksicherheit: Keine LAN-Manager Hashwerte für die nächste Kennwortänderung speichern"). Mit diesem Schalter wird die Speicherung von LM-Hashwerten für alle Konten deaktiviert. Die Änderung wird allerdings erst bei der nächsten Kennwortänderung wirksam. Die vorhandenen LM-Hashwerte der aktuellen und älteren Kennwörter werden mit diesem Schalter nicht entfernt. Aus diesem Grund kann es auch sein, dass mögliche Interoperabiltätsprobleme erst später auftreten. Weitere Informationen hierzu und zur Verwendung des Schalters unter Windows 2000 finden Sie im Knowledge Base-Artikel 299656. Sie können den LM-Hash auch entfernen, indem Sie in Ihrem Kennwort bestimmte Zeichen verwenden. Die meisten Leute gehen davon aus, dass für Kennwörter mit ALT-Zeichen kein LM-Hash generiert wird. Tatsächlich gilt dies jedoch nur für bestimmte Unicode-Zeichen – zum Beispiel die Zeichen von 0128 bis 0159. Einige Unicode-Zeichen werden nämlich vor dem Hashen einfach in andere Zeichen konvertiert. Eines gilt es allerdings vor dem Entfernen von LM-Hashes zu bedenken – es können Probleme auftreten. Ein Grund dafür, dass LM-Hashes standardmäßig erstellt werden, sind Anwendungen, die eine UDP-basierte Authentifzierung für RPC durchführen. Diese Anwendungen benötigen LM-Hashwerte. Hierzu gehören unter Anderem der Windws-Clusterdienst und der Real Time Communications Server. Sie können dieses Problem lösen, indem Sie die Einstellung "NtlmMinClientSec" aktivieren – in der Gruppenrichtlinie unter Windows Server 2003 heißt die Einstellung "Netzwerksicherheit: Minimale Sitzungssicherheit für NTLM-SSP-basierte Clients (einschließlich sicherer RPC-Clients)". Sie müssen die Einstellung mindestens mit "NTLMv2-Sitzungssicherheit erforderlich" (0x80010) konfigurieren. In diesem Fall nutzt RPC die NTLMv2-Authentifzierung (mit NT-Hash). Weitere Informationen zu Clusterproblemen bei fehlendem LM-Hash finden Sie im KB-Artikel 828861 (englischsprachig). Auch andere Anwendungen können ohne LM-Hash fehlschlagen. Outlook 2001 für den Macintosh benötigt ihn zum Beispiel für alle Konten. Windows 3.x wird ohne LM-Hash definitiv nicht funktionieren, und auch Windows 95 und Windows 98 funktionieren in bestimmten Szenarien nicht. Außerdem gibt es Drittanbieterprodukte (z. B. NAS-Geräte), die einen LM-Hash benötigen. Abschließende Überlegungen In diesem ersten Teil der Kennwort-Artikelserie haben wir über die Grundlagen von Kennwörtern gesprochen. Im nächsten Teil werden wir analysieren, ob Kennwort-Sätze einen eindeutigen Vorteil gegenüber Kennwörtern bieten. Da Kennwort-Sätze allerdings momentan von ziemlich wenigen Leuten verwendet werden, liegen uns nur sehr wenig echte Daten zu dem Thema vor. Daher möchten wir Sie um einen Gefallen bitten. Wenn Sie uns helfen möchten, dann schicken Sie uns Kennwort-Sätze, die Sie verwenden würden, an die E-Mail-Adresse passstud@microsoft.com (vorzugsweise nicht die, die Sie im Moment verwenden!). Wir hoffen, dass wir genügend Ergebnisse zusammen bekommen, um einige Analysen zu Kennwort-Sätze durchführen zu können. Diese Kolumne soll Sie unterstützen. Wenn Sie ein bestimmtes Thema interessiert, oder wenn es einen besseren Weg gibt, über den wir Sie bei der Sicherung Ihrer Systeme unterstützen können, dann lassen Sie uns es wissen. Klicken Sie einfach auf den Schalter unten und schreiben Sie uns einen Kommentar.
|