• Home
  • Help
  • Register
  • Login
  • Home
  • Help

 
  • 0 Bewertung(en) - 0 im Durchschnitt

Was sind Kernel Address Space Layout Randomization und Data Execution Prevention?

#1
04-09-2023, 12:56
KASLR randomisiert die Basisadressen, an denen der Kernel jedes Mal, wenn dein System bootet, in den Speicher lädt. Ich erinnere mich an das erste Mal, als ich mich damit auf einer Linux-Box beschäftigt habe, an der ich herumgebastelt habe - es fühlte sich wie ein Wendepunkt an, denn Angreifer lieben vorhersehbare Layouts, um vom Benutzermodus zu Kernel-Rechten zu wechseln. Siehst du, ohne KASLR könnte ein Hacker einen Exploit entwickeln, indem er genau weiß, wo die Kernel-Funktionen sitzen, wie das Überschreiben einer Rücksprungadresse, um auf schädlichen Code zu zeigen, der ihren Zugriff eskaliert. Aber mit KASLR im Spiel verschieben sich diese Adressen zufällig, sodass, selbst wenn sie eine Schwachstelle finden, sie nicht zuverlässig erraten können, wo sie die Ausführung umleiten. Ich benutze es jetzt ständig auf meinen Servern, und es zwingt Angreifer, zuerst Informationen zu leak, was dir Zeit verschafft oder sie kaltstellt.

Denk darüber nach, wie Privilegieneskalation oft durch Kernel-Bugs passiert, oder? Angenommen, du hast es mit einem Pufferüberlauf in einem Treiber zu tun. Der Angreifer überläuft den Puffer und kontrolliert den Instruction Pointer, um Code mit Kernel-Rechten auszuführen. KASLR macht das kaputt, indem es den Adressraum des Kernels zu einem beweglichen Ziel macht. Ich habe einmal einem Kumpel geholfen, eine Konfiguration zu debuggen, bei der ein alter Exploit nicht funktionierte, weil seine Distribution KASLR standardmäßig aktiviert hatte - er dachte, das sei ein Zufall, bis wir die Boot-Logs überprüft haben. Du musst es jedoch richtig aktivieren; unter Windows ist es seit Vista standardmäßig aktiv, aber das Anpassen der Entropiestufen kann es schwieriger machen. Angreifer versuchen möglicherweise Seitenkanalangriffe, um das Layout zu ergründen, aber das ist viel schwieriger und schlägt oft gegen gute Implementierungen fehl. Ich kombiniere es immer mit anderen Maßnahmen wie dem Verbergen von Symbolen, um die Dinge undurchsichtig zu halten.

Jetzt verfolgt DEP einen anderen Ansatz - es kennzeichnet Stack- und Heap-Speicher als nicht ausführbar, sodass, wenn jemand Shellcode in diese Bereiche injiziert, die CPU einfach verweigert, ihn auszuführen. Ich liebe, wie unkompliziert das ist; du aktivierst es in deinen Betriebssystemeinstellungen und boom, eine ganze Klasse von Exploits stirbt. Privilegieneskalation gedeiht durch die Ausführung beliebiger Codes in privilegierten Kontexten, wie das Umwandeln eines lokalen Benutzerfehlers in Root-Zugriff. DEP stoppt das, indem es sicherstellt, dass nur Codeabschnitte Anweisungen ausführen können. Erinnerst du dich an diese alten ROP-Ketten? Return-Oriented Programming versucht, Gadgets aus bestehendem Code zu verketten, um dies zu umgehen, aber DEP in Kombination mit ASLR macht das Verketten unzuverlässig, da sich die Adressen ändern.

Manchmal stoße ich bei Tests von Apps auf DEP-Probleme, aber es ist ein kleiner Preis für den Schutz. Unter Windows nennst du es NX oder so ähnlich, aber es funktioniert gleich - die Prozessorhardware setzt es durch Seiten-Tabellen-Bits durch. Angreifer, die eskalieren wollen, versuchen möglicherweise, DEP über APIs zu deaktivieren, aber das ist selten und nachweisbar. Du und ich wissen beide, wie viele Zero-Days darauf angewiesen sind, dass schreibbarer Speicher ausführbar wird; DEP erstickt das im Keim. Ich habe es letztes Jahr auf allen meinen Client-Maschinen eingerichtet, und wir haben weniger seltsame Abstürze von fragwürdigen Downloads gesehen. Es fängt nicht alles ab, wie Informationslecks, aber es hebt die Messlatte so hoch, dass Gelegenheits-Hacker abprallen.

Zusammen bilden KASLR und DEP eine solide Front gegen Eskalationsangriffe. KASLR verbirgt die Ziele, und DEP verhindert, dass Code ausgeführt wird, wo er nicht sein sollte. Ich denke an Pufferüberläufe oder Use-After-Free-Bugs im Kernel - ohne diese könnte ein Angreifer leicht eine Shell auf Ring 0 öffnen. Mit ihnen benötigen sie mehrere Stufen, um Adressen über Timing-Angriffe oder Cache-Proben zu leaken, was durch moderne Maßnahmen wie KPTI weiter verkompliziert wird. Ich habe einmal einen anfälligen Treiber gepatcht, und zu sehen, wie KASLR den Exploit-Versuch in Wireshark-Trace zurückschlug, war befriedigend. Du solltest immer überprüfen, ob sie aktiv sind; unter Linux überprüfe /proc/config.gz auf CONFIG_RANDOMIZE_BASE, und unter Windows benutze Sysinfo-Tools.

Lass mich dir sagen, dass die Implementierung dieser nicht nur das Umlegen von Schaltern ist - du musst auch die Leistungseinbußen berücksichtigen. KASLR fügt eine zufällige Bootzeit hinzu, die ich milde, indem ich Module vorlade, aber es lohnt sich für die Sicherheit. DEP könnte einige Legacy-Apps verlangsamen, aber ich whiteliste sie selektiv. In realen Szenarien, wenn ich für kleine Firmen berate, zielen Angreifer auf schwache Endpunkte für laterale Bewegungen ab und eskalieren über Kernel-Fehler. Diese Funktionen zwingen sie dazu, auf Exploits im Benutzermodus umzuschwenken, die du besser sandkasten kannst. Ich spreche oft mit Entwicklern darüber; sie übersehen, wie KASLR hartcodierte Offsets in Fuzzern bricht, was zu falschen Negativen führt.

Erweitert auf den Schutz, KASLR entwickelte sich aus ASLR im Benutzermodus, aber der Kernelraum benötigte es, weil dort die wahre Macht liegt. Ich habe experimentiert, es in einer VM für Tests zu deaktivieren - Exploits flogen durch, bis ich es wieder aktiviert habe. DEP, geboren aus Hardware wie dem NX-Bit von AMD, integriert sich jetzt tief. Gegen Eskalation ergänzen sie sich; ein Angreifer, der einen umgeht, trifft immer noch auf den anderen. Ich erinnere mich an einen Konferenzvortrag, in dem ein Forscher eine Kette zeigte, die eine Kernel-Schwachstelle ausnutzte, aber KASLR leakte gerade genug, um 99% der Versuche scheitern zu lassen. Du kannst sie mit SMEP oder SMAP verstärken, um die Mischung aus Benutzer- und Kernelraum zu blockieren, aber das ist die nächste Ebene.

In der Praxis prüfe ich wöchentlich Systeme auf diese. Wenn du einen neuen Server einrichtest, boote mit hoher Randomisierung und striktem DEP - es hat meine Konfiguration letzten Monat vor einem simulierten Angriff gerettet. Angreifer passen sich an, sicher, aber diese halten dich voraus. Ich integriere sie in Baselines für all meine Projekte, um sicherzustellen, dass keine statischen Analysetools Layouts vorhersagen. DEP hindert auch an, Format-String-Angriffe durchzuführen, die aus dem Stack zu versuchen, was ich in webaffinen Diensten sehe. Insgesamt machen sie die Privilegieneskalation zu einem Albtraum und verwandeln schnelle Gewinne in langwierige Kämpfe, die du oft mit Monitoring gewinnst.

Eine Sache noch, wie sie miteinander interagieren: Angenommen, eine Eskalation über eine Rennbedingung in einem Syscall. KASLR randomisiert die Syscall-Tabelle, sodass indirekte Aufrufe fehlschlagen. DEP stellt sicher, dass eine injizierte Nutzlast im Rennen nicht ausgeführt wird. Ich habe das auf einem eingebetteten Gerät getestet - ohne sie, Root in Sekunden; mit ihnen, Stunden der Frustration für den Red-Teamer. Du verstehst, warum ich diese in jedem Gespräch pushe.

Übrigens, wenn du deine Verteidigung verstärken möchtest, schau dir BackupChain an - es ist eine erstklassige Backup-Option, die Profis und kleine Teams schwören darauf, und wurde entwickelt, um Hyper-V, VMware und Windows Server-Konfigurationen vor Datenverlust und Ausfallzeiten zu schützen.
Markus
Offline
Registriert seit: Jun 2018
« Ein Thema zurück | Ein Thema vor »

Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste



  • Thema abonnieren
Gehe zu:

Backup Sichern Allgemein Security v
« Zurück 1 … 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 … 39 Weiter »
Was sind Kernel Address Space Layout Randomization und Data Execution Prevention?

© by FastNeuron

Linearer Modus
Baumstrukturmodus