Active Directory Hacking: Angriffe mit mimikatz

Active Directory Hacking: Angriffe mit mimikatz

Beitragsseiten

In diesem Tutorial werden wir einige Angriffstechniken gegen die Active Directory-Infrastruktur beleuchten und erklären, wie Angriffe mithilfe von „mimikatz“ durchgeführt werden können. Bei mimikatz handelt es sich um ein freies Open Source Werkzeug für Penetrationstester, welches häufig in der Post-Exploitation-Phase eines Penetrationstests zum Einsatz kommt und eine Vielzahl von Angriffstechniken gegen MS Windows und Active Directory bietet.

So ermöglicht es unter anderem, Passwörter im Klartext auszulesen. Dadurch unterstützt es Pentester in der Post-Exploitation-Phase unter anderem dabei, zusätzliche Benutzer-Accounts eines Windows Domain-Members zu kompromittieren, Rechte auszuweiten (Privilege escalation) oder ausgehend von einem System weitere Systeme anzugreifen.

Mimikatz

Beim Herunterladen von Mimikatz sollte unbedingt darauf geachtet werden, dass die Quelle vertrauenswürdig ist.

Offizielle Paketquellen des Betriebssystems

Bei einigen Betriebssystemen wie z. B. „Kali Linux“ ist Mimikatz bereits in den offiziellen Paketquellen (Repositories) enthalten, sodass es sich direkt über die zentrale Paketverwaltung des Betriebssystems herunterladen lässt. In Kali Linux würde der Befehl hierfür wie folgt lauten:

sudo apt install mimikatz

Offizielles GitHub-Repository des Autors

Das offizielle GitHub-Repository des Autors Benjamin Delpy findet ihr unter folgendem Link:

Dort könnt ihr euch entweder vorkompilierten Binaries herunterladen oder den Quellcode selbst beziehen, um diesen dann eigenständig zu kompilieren. Letzteres wird spätestens dann interessant, wenn man sich mit dem Thema AV-Evasion (Umgehung von Antivirus-Software) befasst.

Die vorkompilierten Binaries findet ihr unter:

Betriebssystem-Architektur

In den Paketen sind jeweils zwei Versionen enthalten:

  • Win32 (für Microsoft Windows mit 32-Bit-Architektur)

    • mimikatz.exe

    • mimilib.dll

    • mimidrv.sys

    • mimilove.exe

  • x64 (für Microsoft Windows mit 64-Bit-Architektur)

    • mimikatz.exe

    • mimilib.dll

    • mimidrv.sys

Es ist in jedem Fall darauf zu achten, die richtige Prozessorarchitektur für das jeweilige Zielsystem zu verwenden. Auf einem 64-Bit Windows-Betriebssystem lässt sich zwar auch die 32-Bit-Version ausführen, doch würde diese aufgrund der Übersetzungsschicht des WOW64-Subsystems (Windows-On-Windows 64-bit) nicht ordnungsgemäß funktionieren und wäre deshalb für die meisten Zwecke unbrauchbar.

Mimikatz Module und Syntax

Zur Syntax sei zunächst zu erwähnen, dass mimikatz nach Modulen strukturiert ist. Dabei werden Unterbefehle durch zwei Doppelpunkte getrennt vom Modul abgegrenzt. Beispiel:

standard::version

In diesem Beispiel würde also der Befehl „version“ des Moduls „standard“ ausgeführt werden. Um eine Liste aller Module zu erhalten, reicht es, einfach zwei Doppelpunkte einzugeben:

::

mimikatz Module

Zum Zeitpunkt der Erstellung dieses Artikels verfügte mimikatz über folgende Module.

    standard  -  Standardmodul  [Grundbefehle (Modulname nicht erforderlich)]
      crypto  -  Krypto Modul
    sekurlsa  -  SekurLSA Modul  [Befehle zum Enumerieren von Anmeldeinformationen..]
    kerberos  -  Kerberos Paket Modul
         ngc  -  Next Generation Kryptografie Modul (nur für Kiwi) [Befehle zum Enumerieren von Anmeldeinformationen..]
   privilege  -  Privilegien Modul
     process  -  Prozess Modul
     service  -  Service Modul
     lsadump  -  LsaDump Modul
          ts  -  Terminal Server Modul
       event  -  Ereignis Modul
        misc  -  „Sonstiges“ Modul
       token  -  Modul für Token-Manipulation
       vault  -  Windows Vault/Credential Modul
 minesweeper  -  MineSweeper Modul
         net  -
       dpapi  -  DPAPI Modul (per API oder RAW-Zugriff)  [Data Protection application programming interface]
   busylight  -  BusyLight Modul
      sysenv  -  Modul für Systemumgebungsvariablen 
         sid  -  Security Identifiers Modul
         iis  -  IIS XML Konfigurationsmodul
         rpc  -  RPC-Steuerung von mimikatz
        sr98  -  RF Modul für SR98-Geräet und T5577-Ziele
         rdm  -  RF-Modul für RDM(830 AL) Geräte
         acr  -  ACR Modul

Um herauszufinden, welche Funktionen sich hinter einem Modul verbergen, könnt ihr den Modulnamen gefolgt von zwei Doppelpunkten eingeben. Beispiel:

standard::

Es erscheint dann eine Auflistung aller Funktionen des jeweiligen Moduls. In diesem Beispiel würden also alle Funktionen des Moduls „standard“ angezeigt werden.

mimikatz Standard Module

Mimikatz Berechtigungen: Debug-Privilegien

Seine volle Macht kann mimikatz nur ausspielen, wenn es mit administrativen Rechten gestartet und anschließend mit sogenannten „Debug-Privilegien“ ausgestattet wird.

Denn mimikatz erlaubt es unter anderem, Klartextpasswörter aus dem Arbeitsspeicher (RAM) auszulesen. Dies ist in Windows natürlich nicht ohne Weiteres möglich, da der entsprechende lsass.exe (Local Security Authority Subsystem Service) Prozess im Kontext des SYSTEM-Benutzers läuft und das Betriebssystem diesen und seine Speicherinhalte vor Zugriffen – selbst durch Administratoren! – schützt. Wir starten mimikatz testweise ohne administrative Rechte und führen mal folgenden Befehl aus:

sekurlsa::logonPasswords

Als Antwort erhalten wir eine Fehlermeldung:

ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)

sekurlsa::logonPasswords Fehler

Grund hierfür ist, dass mimikatz noch nicht über die erforderlichen Debug-Privilegien verfügt. Denn um die Extrahierung zu bewerkstelligen, hängt sich mimikatz zum „Debuggen“ an den genannten lsass.exe-Prozess an. Windows erlaubt es Administratoren nämlich, sich zwecks Debugging an beliebige Pozesse anzuhängen – auch an den geschützten LSASS. Dies bedeutet jedoch, dass mimikatz zunächst über Administrator-Rechte verfügen muss. Um dies zu testen, starten wir unsere mimikatz.exe erneut, aber diesmal als Administrator (mit der rechten Maustaste anklicken und „Als Administrator ausführen” wählen). Nun verfügt mimikatz über administrative Rechte. Zu guter Letzt möchten wir mimikatz noch mit Debug-Privilegien ausstatten. Hierzu führen wir folgenden Befehl in mimikatz aus:

privilege::debug

Als Antwort erhalten wir folgende Meldung:

Privilege '20' OK

privilege::debug

Das Einholen der Debug-Rechte scheint also geklappt zu haben.

Klartextpasswörter auslesen

Nun führen wir unseren ursprünglichen Befehl erneut aus:

sekurlsa::logonPasswords

sekurlsa::logonPasswords

Diesmal hat es geklappt. Die Extrahierung der Passwörter war erfolgreich.

Angriffstechniken

Die nachfolgend beschriebenen Angriffsszenarien finden meist in der Post-Exploitation-Phase eines Penetrationstests Anwendung und setzen deshalb voraus, dass bereits (administrativer) Zugang zu dem anzugreifenden Zielsystem besteht.


1000 Zeichen übrig


Haftungsausschluss
«Nur wer versteht, wie Angreifer handeln, kann effektive Schutzmaßnahmen treffen.»

Die hier zur Verfügung gestellten Informationen dienen ausschließlich zu Lern- und Forschungszwecken. Der Missbrauch dieser Informationen kann zu strafrechtlichen Konsequenzen führen. Wir raten dringend hiervon ab und übernehmen keinerlei Haftung für etwaige Schäden.

Folge WhiteHat.de