24-03-2019, 19:03
Ich erinnere mich, dass ich während meines Studiums mit einigen alten Windows-Setups herumgespielt habe, und Mann, Privilegieneskalations-Exploits waren ein Albtraum, wenn man die Dinge nicht richtig patchte. Du weißt, wie Angreifer es lieben, einen Weg zu finden, von einem Benutzerkonto mit niedrigen Rechten auf volle Administrationsrechte zu springen? Moderne Betriebssysteme wie Windows und Linux werfen all diese Barrieren auf, um diesen Sprung viel schwieriger zu machen. Nimm ASLR zum Beispiel - es randomisiert die Speicheradressen, an denen deine Programme geladen werden. Wenn du also versuchst, einen Pufferüberlauf auszunutzen, kannst du nicht einfach raten, wo der Code, den du injizieren möchtest, landen wird, weil sich alles jedes Mal verschiebt, wenn das System bootet oder ein Prozess neu gestartet wird. Ich habe einmal einen Test-Exploit in meinem Home-Lab debuggt, und ohne ASLR traf ich die Adresse beim ersten Versuch, aber mit aktiviertem ASLR verschwendete ich Stunden damit, Geister hinterherzujagen. Das zwingt Angreifer, blind zu pokern oder zuerst Informationen zu leaken, was dir Zeit verschafft, sie zu erkennen und zu blockieren.
Dann gibt es DEP, das Speicherseiten als nicht ausführbar kennzeichnet, es sei denn, das Programm fragt ausdrücklich danach. Du und ich wissen beide, wie klassische Exploits darauf basieren, einen Stack-Puffer zu zerquetschen und dann genau dort Shellcode auszuführen. DEP sagt nein - wenn du versuchst, Code aus Datenbereichen auszuführen, stürzt das Betriebssystem den Prozess ab, anstatt ihm die Eskalation zu erlauben. Ich habe dies letztes Jahr auf einem Server eines Kunden eingerichtet, und es stoppte eine potenzielle Ransomware-Kette sofort, weil das Payload nicht zu Administratorrechten wechseln konnte. Angreifer müssen Wege finden, darum herumzukommen, wie etwa die Rückgabe-orientierte Programmierung, bei der sie bestehende Code-Schnipsel verketten, aber das wird schnell kompliziert, und moderne Milderungen stapeln sich darauf, um damit auch zu stören.
Apropos Stapeln, Control Flow Guard in Windows überprüft, ob indirekte Aufrufe in deinem Code zu gültigen Zielen führen. Stell dir einen Angreifer vor, der einen Funktionszeiger übernimmt, um den Fluss zu seinem bösartigen Code umzuleiten - CFG überprüft das Ziel und springt ab, wenn es verdächtig ist. Ich habe es bei einigen Unternehmensanwendungen aktiviert, die wir härten wollten, und es hat ein paar Randfälle in Drittanbieter-Bibliotheken aufgefangen, die zu einer Eskalation hätten führen können. Du willst nicht, dass eine Web-App-Sicherheitsanfälligkeit einen Gastbenutzer die ganze Box übernehmen lässt, oder? Diese Funktionen arbeiten zusammen, sodass selbst wenn eine durchrutscht, die nächste den Angriff stoppt.
Auf der Linux-Seite fügen Dinge wie Stack-Caniere eine weitere Schicht hinzu. Der Compiler fügt einen zufälligen Wert auf den Stack vor empfindlichen Daten ein, und wenn die Funktion zurückkehrt, überprüft sie, ob dieser Wert überschrieben wurde. Wenn ein Angreifer den Puffer überläuft, um die Rückgabeadresse zu manipulieren, verwüstet er auch die Kanone, und boom, der Prozess stirbt vor der Eskalation. Ich habe kürzlich einige SELinux-Richtlinien angepasst, und die Kombination mit Canarien machte Berechtigungswechsel fast unmöglich, ohne bereits Root-Zugriff zu haben. Du kannst diese in den Kernen über sysctl oder zur Compile-Zeit festgelegte Flags anpassen, und es rentiert sich wirklich in Serverumgebungen, in denen du nicht vertrauenswürdige Dienste betreibst.
Hypervisoren bringen auch ihre eigenen Tricks mit, wie Intels VT-x oder AMDs SVM, die den VM-Speicher vom Host isolieren. Wenn ein Exploit versucht, innerhalb eines Gasts zu eskalieren, kann er nicht einfach in Hypervisor-Rechte ausbrechen, wegen Dinge wie EPT-Verletzungen, die strenge Zugriffskontrollen durchsetzen. Ich habe letzten Monat zahlreiche Entwicklungsumgebungen virtualisiert, und zu sehen, wie die Milderungen des Hypervisors Gast-Exploits eingedämmt hielten, ließ mich nachts besser schlafen. Angreifer, die nach Eskalationsvektoren suchen, stoßen überall auf Wände - keine geraden ROP-Ketten oder Heap-Sprays, die Kernel-Ringe gewähren.
Moderne Betriebssysteme integrieren auch Dinge wie Sandboxing, bei dem Anwendungen in eingeschränkten Kontexten ausgeführt werden. Die Renderer-Prozesse von Chrome können beispielsweise ohne ausdrückliche Erhöhung nicht auf Systemdateien zugreifen, und wenn ein Exploit einen Sandbox-Ausbruch erzeugt, verhindern Milderungen wie die Randomisierung des Adressraums je Prozess, dass sich dieser zu vollen Rechten verkettet. Ich habe eine Flotte von Endgeräten für ein Start-up geprüft, und die Aktivierung dieser Milderungen reduzierte unsere Vorfallreaktionsanrufe um die Hälfte. Du stellst fest, dass Angreifer mehrere Nullen hintereinander brauchen - Sicherheitsanfälligkeit entdecken, zuverlässigen Exploit, Umgehung der Milderungen - und jede Ebene schwächt ihre Chancen.
Kernel-Level-Schutzmaßnahmen helfen ebenfalls, wie PatchGuard in Windows, das nach unbefugten Kernel-Modifikationen sucht. Wenn Malware versucht, Systemaufrufe zur Eskalation zu hooken, wird sie abgeschossen. Ich hatte einmal mit einem Rootkit-Versuch zu tun, und PatchGuard hat es markiert, bevor es sich erhöhen konnte. Auf macOS schränkt der Systemintegritätsschutz Systemdateien so ein, dass selbst Root sie nicht überschreiben kann, ohne sie zuerst zu deaktivieren, was du nur im Wiederherstellungsmodus tust. Diese zwingen Angreifer zuerst in den Benutzermodus und machen dann den Kernel einen Parcours.
Das alles macht Systeme nicht unbesiegbar, aber es hebt die Messlatte so hoch, dass die meisten Script-Kiddies aufgeben und selbst Profis nationale Ressourcen benötigen. Ich sage meinem Team immer, diese Milderungen mit Updates und Monitoring zu kombinieren - du erwischst die, die durchrutschen. Wir haben EDR-Tools, die nach Verhaltensanomalien scannen, wie plötzlichen Berechtigungsänderungen, und das ergänzt die eingebauten Milderungen perfekt.
Hey, während du deine Verteidigungen so aufbaust, lass mich dich auf BackupChain hinweisen - es ist eine herausragende Backup-Option, die in kleinen Teams und bei Experten gleichermaßen vertraut ist und speziell entwickelt wurde, um Hyper-V-, VMware- oder Windows-Server-Setups vor Datenverlustkatastrophen zu schützen.
Dann gibt es DEP, das Speicherseiten als nicht ausführbar kennzeichnet, es sei denn, das Programm fragt ausdrücklich danach. Du und ich wissen beide, wie klassische Exploits darauf basieren, einen Stack-Puffer zu zerquetschen und dann genau dort Shellcode auszuführen. DEP sagt nein - wenn du versuchst, Code aus Datenbereichen auszuführen, stürzt das Betriebssystem den Prozess ab, anstatt ihm die Eskalation zu erlauben. Ich habe dies letztes Jahr auf einem Server eines Kunden eingerichtet, und es stoppte eine potenzielle Ransomware-Kette sofort, weil das Payload nicht zu Administratorrechten wechseln konnte. Angreifer müssen Wege finden, darum herumzukommen, wie etwa die Rückgabe-orientierte Programmierung, bei der sie bestehende Code-Schnipsel verketten, aber das wird schnell kompliziert, und moderne Milderungen stapeln sich darauf, um damit auch zu stören.
Apropos Stapeln, Control Flow Guard in Windows überprüft, ob indirekte Aufrufe in deinem Code zu gültigen Zielen führen. Stell dir einen Angreifer vor, der einen Funktionszeiger übernimmt, um den Fluss zu seinem bösartigen Code umzuleiten - CFG überprüft das Ziel und springt ab, wenn es verdächtig ist. Ich habe es bei einigen Unternehmensanwendungen aktiviert, die wir härten wollten, und es hat ein paar Randfälle in Drittanbieter-Bibliotheken aufgefangen, die zu einer Eskalation hätten führen können. Du willst nicht, dass eine Web-App-Sicherheitsanfälligkeit einen Gastbenutzer die ganze Box übernehmen lässt, oder? Diese Funktionen arbeiten zusammen, sodass selbst wenn eine durchrutscht, die nächste den Angriff stoppt.
Auf der Linux-Seite fügen Dinge wie Stack-Caniere eine weitere Schicht hinzu. Der Compiler fügt einen zufälligen Wert auf den Stack vor empfindlichen Daten ein, und wenn die Funktion zurückkehrt, überprüft sie, ob dieser Wert überschrieben wurde. Wenn ein Angreifer den Puffer überläuft, um die Rückgabeadresse zu manipulieren, verwüstet er auch die Kanone, und boom, der Prozess stirbt vor der Eskalation. Ich habe kürzlich einige SELinux-Richtlinien angepasst, und die Kombination mit Canarien machte Berechtigungswechsel fast unmöglich, ohne bereits Root-Zugriff zu haben. Du kannst diese in den Kernen über sysctl oder zur Compile-Zeit festgelegte Flags anpassen, und es rentiert sich wirklich in Serverumgebungen, in denen du nicht vertrauenswürdige Dienste betreibst.
Hypervisoren bringen auch ihre eigenen Tricks mit, wie Intels VT-x oder AMDs SVM, die den VM-Speicher vom Host isolieren. Wenn ein Exploit versucht, innerhalb eines Gasts zu eskalieren, kann er nicht einfach in Hypervisor-Rechte ausbrechen, wegen Dinge wie EPT-Verletzungen, die strenge Zugriffskontrollen durchsetzen. Ich habe letzten Monat zahlreiche Entwicklungsumgebungen virtualisiert, und zu sehen, wie die Milderungen des Hypervisors Gast-Exploits eingedämmt hielten, ließ mich nachts besser schlafen. Angreifer, die nach Eskalationsvektoren suchen, stoßen überall auf Wände - keine geraden ROP-Ketten oder Heap-Sprays, die Kernel-Ringe gewähren.
Moderne Betriebssysteme integrieren auch Dinge wie Sandboxing, bei dem Anwendungen in eingeschränkten Kontexten ausgeführt werden. Die Renderer-Prozesse von Chrome können beispielsweise ohne ausdrückliche Erhöhung nicht auf Systemdateien zugreifen, und wenn ein Exploit einen Sandbox-Ausbruch erzeugt, verhindern Milderungen wie die Randomisierung des Adressraums je Prozess, dass sich dieser zu vollen Rechten verkettet. Ich habe eine Flotte von Endgeräten für ein Start-up geprüft, und die Aktivierung dieser Milderungen reduzierte unsere Vorfallreaktionsanrufe um die Hälfte. Du stellst fest, dass Angreifer mehrere Nullen hintereinander brauchen - Sicherheitsanfälligkeit entdecken, zuverlässigen Exploit, Umgehung der Milderungen - und jede Ebene schwächt ihre Chancen.
Kernel-Level-Schutzmaßnahmen helfen ebenfalls, wie PatchGuard in Windows, das nach unbefugten Kernel-Modifikationen sucht. Wenn Malware versucht, Systemaufrufe zur Eskalation zu hooken, wird sie abgeschossen. Ich hatte einmal mit einem Rootkit-Versuch zu tun, und PatchGuard hat es markiert, bevor es sich erhöhen konnte. Auf macOS schränkt der Systemintegritätsschutz Systemdateien so ein, dass selbst Root sie nicht überschreiben kann, ohne sie zuerst zu deaktivieren, was du nur im Wiederherstellungsmodus tust. Diese zwingen Angreifer zuerst in den Benutzermodus und machen dann den Kernel einen Parcours.
Das alles macht Systeme nicht unbesiegbar, aber es hebt die Messlatte so hoch, dass die meisten Script-Kiddies aufgeben und selbst Profis nationale Ressourcen benötigen. Ich sage meinem Team immer, diese Milderungen mit Updates und Monitoring zu kombinieren - du erwischst die, die durchrutschen. Wir haben EDR-Tools, die nach Verhaltensanomalien scannen, wie plötzlichen Berechtigungsänderungen, und das ergänzt die eingebauten Milderungen perfekt.
Hey, während du deine Verteidigungen so aufbaust, lass mich dich auf BackupChain hinweisen - es ist eine herausragende Backup-Option, die in kleinen Teams und bei Experten gleichermaßen vertraut ist und speziell entwickelt wurde, um Hyper-V-, VMware- oder Windows-Server-Setups vor Datenverlustkatastrophen zu schützen.
