Notfallkennwort

Bei der Begleitung mehrere Security Incidents bei Firmen haben mir gezeigt, wie wichtig ein alternativer Kommunikationsweg ist, den Sie vorbereiten sollten. Ich möchte hier ein paar Ideen teilen und sie zum Nachdenken anregen. Es geht hier nicht um ein Notfallkennwort für den Administrator-Zugang sondern sichere Zugangsdaten für ihre Mitarbeiter für die Zeit nach einem Vorfall.

"Assume Breach"

"Firmen werden gehackt" habe ich schon im Jan 2021 beschrieben. Das ist nun mal Fakt und es ist nicht immer die Lücke in einem Produkt, über die anonyme Angreifer in ihr Netzwerk einbrechen. Die gibt es zwar immer wieder, wie wir 2021 durch den Hafnium Exploit oder Log4Shell erfahren haben, aber die meisten Angriffe erfolgen wohl eher durch Malware die als "Angemeldete Benutzer" ausgeführt wird oder abgephishte Zugangsdaten. In beiden Fällen hat der Angreifer einen Zugang als "Domain Benutzer" und dann kann der von innen auf die Suche gehen.

Es ist sehr wahrscheinlich, dass es auch in ihrer Firma irgendwo in der letzten Ecke ein System gibt, welches unsicher ist. Ein Spruch wie "Der Server ist nicht aus dem Internet erreichbar" ist nun mal kein Freibrief, veraltete Systeme aus Bequemlichkeit weiter zu betreiben. Selbst "aktuelle Systeme" sind kein Garant, dass diese nicht als Sprungserver für erhöhte Rechte genutzt werden können, z.B. wenn überflüssige Dienste (Spooler-Dienst auf DCs?) oder Lücken durch schwache Konfigurationen offenstehen. Sie können sicher sein, dass die Angreifer die richtigen Skripte und Tools zum Einsatz bringen und solche Fehler automatisiert und schnell finden.

Kleiner Tipp starten Sie doch einfach als Domain User oder Admin Programme wie Ping Castle, die als Free-Version ihr lokalen AD einfach "ReadOnly" abscannen.

Insofern brauchen Sie gar nicht darauf zu warten, bis ihnen etwas "komisch" vorkommt, sondern sie sollten einfach davon ausgehen, dass die in der ein oder anderen Weise schon kompromittiert sind. Die Einbrecher könnten schon in ihrem Haus sein aber sie haben Sie Selbst einfach noch nicht bemerkt. Angst ist aber ein schlechter Ratgeber aber fördert die Konzentration und zwingt zu Vorkehrungen.

Aktionsplan

Die klassischen Muster eines Angreifers sind:

  1. Zugang bekommen
    z.B. durch Phishing, Trojaner, Malware, Social Engineering, Lücken. Patchen, aktualisieren und sichere Anmeldung (MFA, Zertifikate etc.) sind wichtige Gegenmaßnahmen
  2. Umschauen und Inventarisierung
    Möglichst unbemerkt einmal schauen, was es denn so gibt ohne Aufzufallen. Eventuell hilt ihnen ja ein kleiner Honeypot, d.h. eine VM die niemand kennt oder nutzt aber bei einem "Scan" doch gefunden wird und dann Alarm schlägt.
  3. kostbare Daten ausleiten
    Qualifizierte Angreifer machen erst einmal nichts kaputt sondern kopieren Daten und um nicht aufzufallen, müssen es nicht Terabyte ihres Dateiserver sein sondern interessanter sind eher Kundendaten, Kenwortlisten u.a., damit Sie später leichter erpresst werden können
  4. Verschlüsseln
    Es mag Ziele geben, bei denen dauerhafte Spionage oder strategischen Überlegungen das erlangte Wissen und der Zugang lange unbemerkt bleiben soll. Aber die meisten Angreifer wollen ja "Geld" sehen und das geht am einfachsten durch zerstören/verschlüsseln der Daten und entsprechender Publicity.
  5. Drohen
    Um der Drohung Nachdruck zu verleihen, werden Sie zur Zahlung aufgefordert, ehe das Problem "öffentlich" wird oder ihre Firma mangels Produktionsmöglichkeit in wirtschaftliche Probleme kommt. Es mag weniger böse Angreifer geben, die nach Zahlung tatsächlich die Entschlüsselungssoftware bereitstellen. Drauf verlassen würde ich mich nicht. Spätestens dann kommt die Veröffentlichung der Daten als weitere Drohung dazu. Daten lassen sich immer wieder kopieren.

Sie werden meiner Ansicht nach nicht auf Dauer den Vorgang totschweigen können. Daher ist es auch keine "Schande" oder peinlich, wenn Sie den Vorgang öffentlich machen. Polizei und Landesdatenschutz müssen Sie eh informieren und nutzen Sie die Öffentlichkeit, um vor allem ihre Mitarbeiter zu informieren.

Zugänge sichern

Natürlich ist es schon zu spät, wenn Sie die Auswirkungen eines Einbruchs tatsächlich bemerken, aber es kann immer noch schlimmer werden. Insbesondere wenn Sie die Umgebung analysieren, Spuren sichern und Möglichkeiten eines Recovery überlegen. Es muss nicht zwingend der komplette Neuaufbau sein und es müsse auch noch nicht alle Daten verschlüsselt sein. Aber nur durch eine komplette Abtrennung und Lahmlegen von Schad-Prozessen können sie weiteren Schaden verhindern. Dazu gehören insbesondere Anmeldekonten von Benutzern, Diensten und natürlich Administratoren aber auch der KDC-Schlüssel.

Also werden sie, wohl oder übel, für alle Konten neue Zugangsdaten vergeben müssen, die Tickets ungültig machen und lokale Dienste erst einmal blockieren, damit der Schaden nicht größer wird. Das ist aber alles andere als einfach, denn wenn die Malware z.B. lokale Admin war, konnte sich weitere Konten anlegen aber auch z.B. Bitlocker-Recoverykeys ändern, so dass Sie nach dem Neustart des Server oder Offline dennoch nicht an die Daten kommen. Sie können natürlich auch einfach alle Server "vom Netzwerk abtrennen", damit sie maximal sich selbst schaden können. Virtuelle System kann man auch einfach mal "pausieren" und dann nach und nach anschauen, was sie gerade so machen oder über einen Snapshot weiter analysieren.

Wenn Sie noch Zugriff auf ihr AD haben und Konten bearbeiten können, dann können Sie z.B. mit folgendem Code schnell Kennworte setzen.

# Erfordert PowerShell 2

# Import der Library fuer [System.Web.Security.Membership]::GeneratePassword
Add-Type -AssemblyName System.Web 
#

$enabledusers = Get-ADUser `
                   -Filter * `
                   -Properties mail `
              | Where { $_.Enabled -eq $True -and $_.samaccountname -ne "Administrator"}

foreach ($user in $enabledusers) {
   $newpassword= [System.Web.Security.Membership]::GeneratePassword(24,4)
   Set-ADAccountPassword `
      -identity $user.identity `
      -NewPassword (ConvertTo-SecureString -AsPlainText $newpassword -Force)
   # optional Kennwort ausgeben
}

Damit werden von allen aktivieren Konten, die nicht "Administrator" heissen, die Kennworte auf ein 24-stelliges Kennwort mit 4 nicht alphanumerischen Zeichen gesetzt.

Kommunikation zum Anwender

Nun kommt natürlich der schwierigere Teil:

Wie bekommt man das Kennwort "sicher" zu allen Mitarbeitern.

Wir haben hier zumindest für eigene Dienste ein "Henne/Ei-Problem", d.h. ohne das neue Kennwort können die Mitarbeiter auch keine Mail mit dem neuen Kennwort lesen. Aber wollen Sie das Kennwort unverschlüsselt per SMS an die Mobilfunknummer oder eine private Mailadresse senden, die sie nicht haben? Zudem sollte das so gesendete Kennwort nicht ewig gültig sein. Sie wollen ja, dass der Anwender sich möglichst schnell anmeldet und das Kennwort ändert. Das würde dann eher dafür sprechen, das Kennwort zu ändern aber das Konto zu deaktivieren bis der Anwender die Zeit zu einer Änderung hat.

Wenn Sie aber noch gar keinen Incident haben, dann könnte es eine Lösung sein, ein Notfallkennwort dem Mitarbeiter schon vorab mitzuteilen. Viele Firmen senden z.B. die monatliche Lohnabrechnung als verschlossenen Brief an die Heimatadresse oder als Hauspost. Auf jeden Fall bekommt der Mitarbeiter diese vertrauliche Information. Was sollte Sie als Firma nun hindern, in diese Lohnabrechnung einfach für jeden Mitarbeiter jeden Monat ein neues "Notfallkennwort" mit auszuliefern? Im Fall eines Falles könnten Sie dann obiges Skript anpassen, dass es keine Kennworte generiert, sondern aus einer Liste diese ausliest und für die betroffenen Benutzer setzt.

Eigentlich wundere ich mich über mich selbst, dass ich nicht schon vorher auf die Idee mit "preloaded Passwordlist" gekommen bin.

Allerdings ist das natürlich keine Lösung für Komponenten wie "Bitlocker" oder "LAPS - Local Admin Password Solution". Bei Bitlocker kann ein lokaler Angreifer einfach einen weiteren Decryption-Key addiere und ausleiten. Wenn der Angreifer aber schon Zugriff auf das AD hat und die LAPS-Kennworte extrahieren kann, dann kann er natürlich die Server weiter beackern, bis diese das lokale Admin-Kennwort geändert haben. Hier wäre dann zu prüfen, wie man den Zugriff auf Server weiter sichert. Leider gibt es bei LAPS keinen Weg, der ein Konto erst aktiviert, wenn das System keine Netzwerkverbindung o.ä. hat.

Weitere Links