
Lenovo Diagnostics Driver EoP - Beliebiger Lese-/Schreibzugriff
Eine fehlerhafte Zugriffskontrolle für den Lenovo Diagnostics Driver ermöglicht es einem niedrig privilegierten Benutzer, Geräte-IOCTLs zu senden, um beliebige Lese-/Schreibzugriffe auf physischen/virtuellen Speicher durchzuführen.
Danke an ch3rn0byl für die Hilfe dabei (und ich habe zu 100 % zwei seiner Funktionen geklaut).
IOCTL 0x222000:
IOCTL 0x222008/0x22200C:
IOCTL 0x222010:
IOCTL 0x222014:
Schreiben über MmMapIoSpace
Dieses IOCTL kopiert einen Wert von einem im Eingabepuffer bereitgestellten Zeiger in den abgebildeten physischen Speicher
Um MmPteBase und andere Voraussetzungen zu ermitteln, wird ein physischer „Swap“-Bereich gefunden, indem der physische Speicherbereich 0x1000 - 0x10000 nach 8 Nullbytes durchsucht wird.
Sobald dieser Bereich gefunden ist, wird virtueller Speicher über IOCTL 0x222014 in diesen Swap-Bereich kopiert und über IOCTL 0x222010 zurückgelesen.
Derzeit werden ALLE virtuellen Lesevorgänge über diesen „Swap“-Bereich durchgeführt.
Ist es der beste Weg, virtuelle Lese-/Schreibzugriffe durchzuführen? Wahrscheinlich nicht.
Funktioniert es? Ja.
Oh, und achte auf deine eigenen Offsets -- dies wurde auf Windows 11 21H2 mit deaktiviertem HVCI getestet.