Wir schreiben regelmäßig darüber, wie sich Hacker häufig auf nicht böswillige Hacking-Techniken verlassen , um eine Erkennung zu vermeiden. Sie überleben buchstäblich mit Standard-Windows-Tools auf dem Rasen und umgehen dabei Virenschutzprogramme und andere Dienstprogramme zur Erkennung böswilliger Aktivitäten. Als Verteidiger müssen wir uns jetzt mit den schlimmen Konsequenzen solcher cleveren Hacking-Techniken auseinandersetzen: Ein gut platzierter Mitarbeiter kann denselben Ansatz verwenden, um Daten (geistiges Eigentum des Unternehmens, Kreditkartennummern) heimlich zu stehlen. Und wenn er sich Zeit nimmt und langsam und unbemerkt arbeitet, wird es äußerst schwierig - aber immer noch möglich, mit dem richtigen Ansatz und den richtigen Werkzeugen - solche Aktivitäten zu erkennen.
Andererseits möchte ich Mitarbeiter nicht dämonisieren, da niemand direkt ab Orwells 1984 in einem Geschäftsumfeld arbeiten möchte. Glücklicherweise gibt es eine Reihe praktischer Schritte und Life-Hacks, die Insidern das Leben erheblich erschweren können. Wir werden uns die heimlichen Angriffsmethoden ansehen, die Hacker von Mitarbeitern mit technischem Hintergrund anwenden. Und ein wenig weiter werden wir Optionen zur Reduzierung solcher Risiken diskutieren - wir werden sowohl die technischen als auch die organisatorischen Optionen für Maßnahmen untersuchen.
Was ist los mit PsExec?
Edward Snowden ist zu Recht oder nicht zum Synonym für Insider-Datendiebstahl geworden. Vergessen Sie übrigens nicht, sich diesen Beitrag über andere Insider anzusehen, die ebenfalls einen gewissen Ruhm verdienen. Ein wichtiger Punkt, der bei den von Snowden verwendeten Methoden hervorgehoben werden sollte, ist, dass er, soweit wir wissen, keine externe schädliche Software installiert hat !
Stattdessen nutzte Snowden ein bisschen Social Engineering und seinen Job als Systemadministrator, um Passwörter zu sammeln und Anmeldeinformationen zu erstellen. Nichts Besonderes - kein Mimikatz , Man-in-the-Middle-Attacken oder Metasploit .
Unternehmen befinden sich möglicherweise nicht immer in der einzigartigen Position von Snowden, aber es gibt eine Reihe von Lehren aus dem Konzept des „Weidens“ - keine böswilligen Aktivitäten auszuführen, die erkannt werden können, und besonders vorsichtig mit der Verwendung von Anmeldeinformationen umzugehen. Erinnere dich an diesen Gedanken.
Psexec und sein Cousin crackmapexec haben unzählige Pentester, Hacker und Blogger für Informationssicherheit beeindruckt. In Kombination mit mimikatz ermöglicht psexec Angreifern die Navigation innerhalb des Netzwerks, ohne das Klartextkennwort kennen zu müssen.
Mimikatz fängt den NTLM-Hash aus dem LSASS-Prozess ab und übergibt dann das Token oder die Anmeldeinformationen - die sogenannten. Angriff "Pass the Hash"- In psexec kann sich ein Angreifer im Namen eines anderen Benutzers bei einem anderen Server anmelden . Bei jedem weiteren Wechsel auf einen neuen Server sammelt der Angreifer zusätzliche Anmeldeinformationen und erweitert so seine Möglichkeiten, verfügbare Inhalte zu finden.
Als ich anfing, mit psexec zu arbeiten, kam es mir magisch vor - dank Mark Russinovich , dem genialen psexec-Entwickler -, aber ich kenne auch die lauten Komponenten. Er ist niemals geheim!
Die erste interessante Tatsache bei psexec ist, dass es das äußerst komplexe SMB-Netzwerkdateiprotokoll von Microsoft verwendet . Psexec verwendet SMB, um kleine Binärdateien zu sendenDateien auf dem Zielsystem, indem Sie sie im Ordner C: \ Windows ablegen.
Als nächstes erstellt psexec einen Windows-Dienst unter Verwendung der kopierten Binärdatei und startet ihn unter dem äußerst "unerwarteten" Namen PSEXECSVC. Gleichzeitig können Sie all dies tatsächlich sehen, wie ich es getan habe, indem Sie die entfernte Maschine beobachten (siehe unten).
Psexec-Visitenkarte: "PSEXECSVC" -Dienst. Es wird eine Binärdatei gestartet, die über SMB im Ordner C: \ Windows abgelegt wurde.
Als letzter Schritt öffnet die kopierte Binärdatei eine RPC-Verbindung zum Zielserver und akzeptiert dann Steuerbefehle (standardmäßig - über die Windows-Cmd-Shell), führt sie aus und leitet Eingaben und Ausgaben auf den Heimcomputer des Angreifers um. In diesem Fall sieht der Angreifer die grundlegende Befehlszeile - so, als wäre er direkt verbunden.
Viele Komponenten und ein sehr lauter Prozess!
Der ausgefeilte interne Prozess von Psexec erklärt die Meldung, die mich bei meinen ersten Tests vor einigen Jahren verwirrt hat: "Starten von PSEXECSVC ...", gefolgt von einer Pause, bevor die Befehlszeile angezeigt wird.
Psexec von Impacket zeigt wirklich, was unter der Haube los ist.
Kein Wunder: psexec hat viel unter der Haube gearbeitet. Wenn Sie an einer detaillierteren Erklärung interessiert sind, lesen Sie diese großartige Beschreibung hier.
Wenn es als Systemadministrationstool verwendet wird, was der ursprüngliche Zweck von psexec war, ist das Summen all dieser Windows-Mechanismen offensichtlich nichts Falsches. Für einen Angreifer würde psexec jedoch Komplikationen verursachen, und für einen vorsichtigen und gerissenen Insider wie Snowden wäre psexec oder ein ähnliches Dienstprogramm ein zu großes Risiko.
Und dann kommt Smbexec
SMB ist eine clevere und heimliche Methode zum Übertragen von Dateien zwischen Servern, und Hacker haben SMB seit Jahrhunderten direkt infiltriert. Ich nehme an, jeder weiß bereits, dass Sie die SMB-Ports 445 und 139 nicht für das Internet öffnen sollten , oder?
Auf der Defcon im Jahr 2013 veröffentlichte Eric Milman ( brav0hax ) smbexec, damit Penetrationstester heimliches SMB-Hacking ausprobieren konnten. Ich kenne nicht die ganze Geschichte, aber dann hat Impacket smbexec weiter verfeinert. Tatsächlich habe ich zu meinen Tests die Skripte von Impacket in Python von Github heruntergeladen .
Im Gegensatz zu psexec vermeidet smbexecÜbertragen einer potenziell erkennbaren Binärdatei auf den Zielcomputer. Stattdessen lebt das Dienstprogramm vollständig vom Gras, indem die lokale Windows-Befehlszeile ausgeführt wird.
Dies ist, was es tut: Es sendet einen Befehl vom angreifenden Computer über SMB an eine spezielle Eingabedatei und erstellt und führt dann eine komplexe Befehlszeile (wie ein Windows-Dienst) aus, die Linux-Benutzern vertraut erscheint. Kurz gesagt: Es startet eine native Windows-Cmd-Shell, leitet die Ausgabe in eine andere Datei um und sendet sie dann über SMB zurück an den Computer des Angreifers.
Der beste Weg, dies zu verstehen, besteht darin, die Befehlszeile zu studieren, die ich aus dem Ereignisprotokoll abrufen konnte (siehe unten).
Ist dies nicht der beste Weg, um E / A umzuleiten? Die Serviceerstellung hat übrigens die Ereignis-ID 7045.
Wie bei psexec wird auch hier ein Dienst erstellt, der die gesamte Arbeit erledigt. Der Dienst wird dann jedoch entfernt. Er wird nur einmal zum Ausführen des Befehls verwendet und verschwindet dann! Ein Informationssicherheitsbeauftragter, der den Computer des Opfers überwacht, kann keine offensichtlichen Anzeichen eines Angriffs erkennen: Es gibt keine schädliche ausführbare Datei, es ist kein dauerhafter Dienst installiert und es gibt keine Hinweise darauf, dass RPC verwendet wird, da SMB das einzige Mittel zur Datenübertragung ist. Brillant!
Gleichzeitig steht auf Seiten des Angreifers eine "Pseudo-Shell" mit Verzögerungen zwischen dem Senden eines Befehls und dem Empfangen einer Antwort zur Verfügung. Dies reicht jedoch völlig aus, damit die Arbeit eines Angreifers - entweder eines Insiders oder eines externen Hackers, der bereits Fuß gefasst hat - nach interessanten Inhalten sucht.
Um Daten vom Zielcomputer an den Computer des Angreifers zurückzugeben, wird smbclient verwendet . Ja, dies ist das gleiche Samba- Dienstprogramm , das jedoch von Impacket für das Python-Skript geändert wurde. Mit smbclient können Sie FTP über SMB-Übertragungen verdeckt organisieren.
Machen wir einen Schritt zurück und überlegen, was es für den Mitarbeiter tun kann. Nehmen wir in meinem fiktiven Szenario an, ein Blogger, Finanzanalyst oder hochbezahlter Sicherheitsberater darf einen persönlichen Laptop für die Arbeit verwenden. Infolge eines magischen Prozesses wird sie in der Firma beleidigt und "geht alles aus". Je nach Laptop-Betriebssystem wird entweder die Python-Version von Impact oder die Windows-Version von smbexec oder smbclient als EXE-Datei verwendet.
Wie Snowden lernt sie das Passwort eines anderen Benutzers, indem sie es entweder über die Schulter guckt, oder sie hat Glück und stößt auf eine Textdatei mit dem Passwort. Und mit diesen Anmeldeinformationen beginnt sie, sich auf einer neuen Ebene von Berechtigungen im System umzuschauen.
Hacking DCC: Wir brauchen keinen dummen Mimikatz
In meinen vorherigen Beiträgen zu Penetrationstests habe ich viel Mimikatz verwendet. Dies ist ein großartiges Tool zum Abfangen von Anmeldeinformationen - NTLM-Hashes und sogar Klartextkennwörter, die in Laptops versteckt sind und darauf warten, verwendet zu werden.
Die Zeiten haben sich geändert. Überwachungstools können Mimikatz besser erkennen und blockieren. Administratoren der Informationssicherheit haben auch mehr Optionen erhalten, um die mit Pass-the-Hash-Angriffen verbundenen Risiken zu mindern (im Folgenden als PtH bezeichnet).
Was muss ein intelligenter Mitarbeiter tun, um zusätzliche Anmeldeinformationen zu sammeln, ohne Mimikatz zu verwenden?
Impacket enthält ein Dienstprogramm namens SecretsdumpHiermit werden Anmeldeinformationen aus dem Domain Credential Cache (kurz DCC) abgerufen. Soweit ich weiß, ermöglicht DCC dem Server, den Benutzer zu authentifizieren, wenn sich ein Domänenbenutzer beim Server anmeldet, der Domänencontroller jedoch nicht verfügbar ist. Auf jeden Fall können Sie mit Secretsdump alle diese Hashes ausgeben, sofern verfügbar.
DCC-Hashes sind keine NTML-Hashes und können nicht für einen PtH-Angriff verwendet werden .
Nun, Sie können versuchen, sie zu knacken, um das ursprüngliche Passwort zu erhalten. Microsoft wurde jedoch intelligenter mit DCC und es wurde äußerst schwierig, DCC-Hashes zu knacken. Ja, es gibt Hashcat , "die schnellste Passwortauswahl der Welt", aber für eine effiziente Ausführung ist eine GPU erforderlich.
Versuchen wir stattdessen, wie Snowden zu denken. Der Mitarbeiter kann Social Engineering von Angesicht zu Angesicht durchführen und möglicherweise Informationen über die Person herausfinden, deren Passwort er knacken möchte. Stellen Sie beispielsweise fest, ob das Online-Konto dieser Person jemals gehackt wurde, und überprüfen Sie das Klartextkennwort auf Hinweise.
Und das ist das Szenario, für das ich mich entschieden habe. Nehmen wir an, ein Insider findet heraus, dass sein Chef Cruella mehrmals auf verschiedenen Webressourcen gehackt wurde. Nachdem er mehrere dieser Passwörter analysiert hat, stellt er fest, dass Cruella den Namen des Baseballteams "Yankees" bevorzugt, gefolgt vom aktuellen Jahr "Yankees2015".
Wenn Sie gerade versuchen, dies zu Hause zu reproduzieren, können Sie ein kleines "C" herunterladen.Code , der den DCC-Hashing-Algorithmus implementiert und kompiliert. John the Ripper hat übrigens DCC-Unterstützung hinzugefügt, sodass Sie sie auch verwenden können. Nehmen wir an, dass ein Insider sich nicht auf John the Ripper einlassen möchte und gerne "gcc" in altem C-Code ausführt.
Während ich die Rolle eines Insiders darstellte, führte ich verschiedene Kombinationen durch und am Ende konnte ich feststellen, dass Cruellas Passwort "Yankees2019" war (siehe unten). Mission erfüllt!
Mit ein wenig Social Engineering, ein bisschen Wahrsagerei und einer Prise Maltego sind Sie auf dem Weg, den DCC-Hash zu knacken.
Ich schlage vor, dies zu beenden. Wir werden in anderen Beiträgen auf diese Frage zurückkommen und uns noch langsamere und heimlichere Angriffsmethoden ansehen, während wir uns weiterhin auf die hervorragenden Dienstprogramme von Impacket verlassen.