Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PageTableInjection — Code-Injection, bösartige Payload über Pagetables pml4 injizieren. | Kitploit
Tools/GitHubGitHub/kkent030315/pagetableinjection
SpeicherforensikExploitationBinary-Exploitation
GitHubkkent030315/pagetableinjection

PageTableInjection

Code-Injection, bösartige Payload über Pagetables pml4 injizieren.

Repository anzeigenWebseite
24460vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

PageTableInjection

Code-Injektion, Injizieren von schädlicher Nutzlast über Pagetables PML4.

Einleitung

Dies ist nur ein Proof-of-Concept der Page-Table-Injection-Technik, um schädlichen Code in beliebige Benutzerprozesse einzuschleusen.
Unter Windows (und einigen modernen Betriebssystemen) besitzt jeder Prozess sein eigenes PML4, auch Directory Table Base genannt. Daher kann Prozess A nicht ohne APIs auf Prozess B zugreifen. Aber was wäre, wenn wir einen beliebigen PML4-Eintrag injizieren könnten? Natürlich zeigt der PML4-Eintrag dann auf die entsprechende physische Adresse der Einträge PDP, PD und PT, genau wie im zugrunde liegenden Prozess.

Um einen schädlichen PML4-Eintrag in den Zielprozess zu injizieren, benötigen wir eine tatsächliche residente Seite (physischer Speicher), die den schädlichen PML4-Eintrag unterstützt. Diese residente Seite muss buchstäblich resident sein, da sonst das System abstürzen oder instabil werden würde – während der MMU-Übersetzung zur physischen Adresse gibt es nichts, was die MMU erwartet, und auch der Windows-Speicher-Manager erwartet nichts.

Betrachten wir die Puffer des zugrunde liegenden Prozesses und des Zielprozesses. In diesem Fall sind die Puffer:

  • Backing Process VA: 0x1A45F810000
  • Deployment Process Injected VA: 0x6EA45F810000

Bevor wir weitermachen, denken einige vielleicht, dass die zweite Adresse (0x6EA45F810000) seltsam aussieht – normalerweise allokieren wir Puffer über malloc oder VirtualAlloc, dann sollte die virtuelle Adresse wie 0x17C7CAC0000, 0x23BE9D80000, 0x19FE76F0000 oder ähnlich aussehen. Das liegt daran, dass der schädliche PML4-Eintrag nicht vom Windows-Speicher-Manager verwaltet wird und auch nicht verwaltet wird. Natürlich kann jede virtuelle Adresse in einem 64-Bit-Windows-Prozess jeden Wert innerhalb des Benutzerspeicherbereichs annehmen.

Wenn wir uns nun beide Adressen ansehen...

root@kitploit:~
0: kd> .process ffff9803d8037080
Implicit process is now ffff9803`d8037080
0: kd> db 0x6EA45F810000 l2
00006ea4`5f810000  4d 5a       MZ

0: kd> !vtop 7968b000 0x6EA45F810000
Amd64VtoP: Virt 00006ea45f810000, pagedir 000000007968b000
Amd64VtoP: PML4E 000000007968b6e8
Amd64VtoP: PDPE 000000005849b488
Amd64VtoP: PDE 0000000059e9c7e0
Amd64VtoP: PTE 000000003251d080
Amd64VtoP: Mapped phys 0000000014306000
Virtual address 6ea45f810000 translates to physical address 14306000.
root@kitploit:~
0: kd> .process ffff9803d9f6b080
Implicit process is now ffff9803`d9f6b080
0: kd> db 0x1A45F810000 l2
000001a4`5f810000  4d 5a       MZ

0: kd> !vtop 564f6000 0x1A45F810000
Amd64VtoP: Virt 000001a45f810000, pagedir 00000000564f6000
Amd64VtoP: PML4E 00000000564f6018
Amd64VtoP: PDPE 000000005849b488
Amd64VtoP: PDE 0000000059e9c7e0
Amd64VtoP: PTE 000000003251d080
Amd64VtoP: Mapped phys 0000000014306000
Virtual address 1a45f810000 translates to physical address 14306000.

Beide Adressen entsprechen denselben Seitentabelleneinträgen: PDP, PD, PT und einer physischen Adresse. Wenn wir also den Puffer des zugrunde liegenden Prozesses ändern, wird die Änderung auch im Zielprozess sichtbar. Dies ist dem Shared Memory unter Windows sehr ähnlich, mit dem Unterschied, dass der Speicherbereich im Zielprozess in keiner VAD-Eintrag seines Prozesses angezeigt wird. Andererseits, wenn der Puffer des zugrunde liegenden Prozesses freigegeben wird, geschieht dies auch im Zielprozess, jedoch ohne Bereinigung der Seitentabelleneinträge des Zielprozesses – was dazu führt, dass der Speicher-Manager einen Bugcheck MEMORY_MANAGEMENT auslöst oder sogar einen schwerwiegenden Triple-Fault auf der CPU verursacht.

Das Problem

Diese Technik hat massive Stabilitätsprobleme, da der injizierte schädliche PML4-Eintrag – wie bereits erwähnt – weder vom Windows-Speicher-Manager noch vom Kernel verwaltet wird. Es gibt keine Garantie, dass der zugrunde liegende Prozess so lange lebt, bis der Zielprozess beendet wird, und der Zielprozess hat auch nichts mit der Bereinigung des schädlichen PML4-Eintrags zu tun, wenn der zugrunde liegende Prozess beendet wird.

Lizenz

MIT Copyright Kento Oki <[email protected]>

Der Quellcode kann externe Inhalte enthalten; diese Inhalte unterliegen den Rechten ihrer jeweiligen Inhaber.

Tool herunterladen