Moin @all,
in den letzten Monaten habe ich mich intensiv mit einer Frage beschäftigt: wie gehen Hacker bei einem Einbruch in eine Infrastruktur vor und wie kann so etwas erfolgreich sein?
Dazu habe ich mich selber in die Rolle eines Angreifers begeben und bin in eine eigene LAB-Umgebung eingebrochen. Dabei habe ich versucht, möglichst nur mit Boardmitteln zu arbeiten, weshalb auch kein (Kali-)Linux zum Einsatz kommt. Die Umgebung habe ich liebevoll eingerichtet und mit allem versehen, was ich auch schon in realen Netzwerken gesehen habe. Ich würde an dieser Stelle das LAB vorstellen – aber das seht ihr auch im Hack!
Dieser Beitrag ist der Einstiegspunkt in eine ganze Serie. Hier zeige ich euch aus der Perspektive des Angreifers mögliche Vorgehensweisen. Um es übersichtlich darzustellen habe ich einfach den Angriff abgefilmt und als Video mit meinen Kommentaren hier modular veröffentlicht. Schaut es euch einfach mal an. Denkt mal über die vielen Schritte nach und findet dabei die Fehler, die ich als Admin der LAB-Umgebung gemacht habe. Vielleicht fallen euch ja einige Gegenmaßnahmen ein?
Um den Angriff etwas Dynamik zu verpassen, habe ich die einzelnen Phasen mit verschiedenen Videos erstellt. Je nach Situation könnte ein Angriff also auch einen anderen Verlauf nehmen. Die Schritte in Punkt 3 können dabei als kleiner Kreislauf gesehen werden, indem der Angreifer sich von einem System zum nächsten verbindet und weitersucht, bis sein Ziel erreicht ist. Lasst einfach eure Fantasie spielen. Wer mag, kann aber auch der Reihenfolge der Videoproduktion folgen. Die Jumplinks unter den Video werden helfen.
Es werden in der nächsten Zeit weitere Videos folgen. Diese sortiere ich in die dazu passenden Steps ein. Ein weiterer Besuch kann sich also lohnen!
Inhaltsverzeichnis
Die LAB-Umgebung
Meine Tests führe ich in einer virtuellen Umgebung aus. Diese besteht aus verschiedenen Windows Server 2016 und einigen Windows 10 Clients. Hier gibt es mal eine Übersicht:
Die Administration der Domäne crashwork.global wird von crashwork\administrator vorgenommen. Mein Lieblings-Opfer ist die Standard-Benutzerin Tessa Test.
Das rote EVILSYSTEM im Bild ist mein Angriffs-System. Es basiert mal zur Abwechslung nicht auf Kali Linux, sondern es läuft mit einem Windows Betriebssystem! Der angemeldete Benutzer eviluser hat in der Infrastruktur KEINE Rechte. Er hat es nur geschafft, ein Netzwerkkabel in eine freie Netzwerkdose zu patchen…
In meinem Hacking-Cycle zeige ich nun, welche Möglichkeiten sich ergeben.
Der Hacking Cycle
Ohne eine Vorbereitung wird kein Angriff gelingen. Dabei werden so elementare Fragen geklärt, wie:
- Wer ist mein Ziel? Lohnt sich ein Angriff? Muss meine Phishingmail vielleicht deutsch statt englisch geschrieben sein?
- Welche Systeme werden dort eingesetzt? Mit welchen Werkzeugen greife ich an?
- Welche Schutzmechanismen gibt es? Wie kann ich die umgehen?
- Wie kann ich eine initiale Verbindung aufbauen?
All diese Fragen sind für meine Simulation bereits geklärt. Daher: auf zu Schritt 2!
Ein schwerer Schritt mit vielen möglichen Hindernissen. Nur das Ziel ist klar: wir brauchen einen laufenden Prozess auf einem der Zielsysteme, den wir (fern-)steuern können! Ich habe einige mögliche Varianten aufgebaut, die ihr in diesen Beiträgen finden könnt:
Variante 1: Ein Verbindungsaufbau durch eine infizierte Setupdatei aus dem “Internet”
Variante 2: Ein Verbindungsaufbau mit der Tastatursimulation eines BashBunny’s
Variante 3: Der Klassiker – Eine Worddatei mit Makro per E-Mail’s
Variante 4: Eine Infektion durch einen DriveBy – das Aufrufen des html genügt…
Wenn der Verbindungsaufbau zu einem System erfolgreich war, dann werden zunächst einmal einige Informationen gesammelt. Dazu gehört auch, die ggf. vorhandenen Schutzmechanismen zu erkennen. So könnte es aussehen:
Variante 1: Informationen mit Boardmitteln sammeln
Variante 2: ActiveDirectory-Reconessaince (Ausspähen) ohne Adminrechte
Variante 3: DNS-Reconessaince (Ausspähen) ohne Adminrechte
Für den Fall, dass unser Zielsystem neugestartet wird oder sich der Benutzer neu anmeldet, wollen wir natürlich nicht bei Null anfangen. Daher ist eine Automatik für die Verbindungswiederherstellung eine extrem feine Sache. Wie das gehen kann seht ihr hier:
Variante 1: Persistence mit einer geplanten Aufgabe
Variante 2: Persistence mit dem Run-Schlüssel der Registry
Gut vorbereitet können wir nun nach Kontoinformationen und interessanten Daten ausschau halten. Für mich stehen dabei Benutzernamen und Passworte im Vordergrund, da mit diesen ein Weiterkommen auf andere Server und Services leichter möglich ist.
Variante 1: Stehlen von Anmeldeinformationen
Variante 2: Erstellen eines GoldenTickets
Variante 3: Browser-Anmeldeinformationen auslesen
Variante 4: Austricksen eines Passwortsafes
Viele Tools benötigen hohe Rechte, um Geheimnisse aus dem Betriebssystem zu stehlen. Sind diese Rechte nicht vorhanden, dann dienen oft Fehlkonfigurationen oder Sicherheitslücken für eine Ausweitung der Berechtigung. Das ist die Privilege Escalation. Wie so etwas aussehen kann, seht ihr hier:
Variante 1: PrivEsc mit einer offenen Sicherheitslücke im Betriebssystem
Variante 2: PrivEsc mit ungesicherten, geplanten Aufgaben (Scheduled Tasks)
Variante 3: PrivEsc mit Unquoted Service Paths
Wenn nun ein Server ausgebeutet ist, dann kann ein Angreifer ggf. mit den gestohlenen Informationen auf einen anderen Server oder Client im Zielnetzwerk wechseln und dort wieder bei Step 3a beginnen. Vielleicht gibt es ja hier noch viel interessantere Daten zu sehen? Der Vorgang wird auch “Lateral Movement” (Seitwärtsbewegung genannt).
Variante 1: Lateral Movement mit Pass-The-Hash des lokalen AdministratorAccounts
Variante 2: Lateral Movement mit Pass-The-Hash des Domain-AdministratorAccounts
Variante 3: Lateral Movement mit einem Protected User
Variante 4: Lateral Movement mit einer DNS-Wildcard
Achtung Spoiler: Habt ihr nun vielleicht ne Idee, wozu LAPS gut sein kann?
Das Aufräumen umfasst neben dem Löschen von Arbeitsdateien auch das Manipulieren von Ereignisprotokollen und sonstigen Logfiles. Ebenso müssen Änderungen am System ungeschehen gemacht werden. Natürlich könnte auch eine “falsche Fährte” gelegt werden, damit die Admins des Zielsystems an der völlig falschen Stelle nach Informationen zum Angriff suchen. Das könnte durchaus eine Totalverschlüsselung mit einem Erpressertext sein. Das Ziel ist klar: “Lass dich nicht erwischen!”…
Fazit
Eine Standardumgebung bietet für versierte Angreifer keine allzugroßen Hindernisse – es ist also nur eine Frage der Zeit, bis sensible Informationen entwendet werden oder die eigene Infrastruktur noch für andere Aufgaben missbraucht wird. Überlegt euch, ob ihr vielleicht ähnliche Schwachstellen im Netzwerk habt. Und vielleicht findet ihr dann auch eine Lösung, um sie zu vermeiden. Ansonsten stehe ich gerne zur Verfügung.
Stay tuned – and stay secure!