
Controlador de Diagnóstico de Lenovo EoP - Lectura/Escritura Arbitraria
El control de acceso incorrecto para el controlador Lenovo Diagnostics Driver permite que un usuario con pocos privilegios pueda emitir IOCTLs del dispositivo para realizar lecturas/escrituras arbitrarias de memoria física/virtual.
Gracias a ch3rn0byl por ayudar con esto (y le robé totalmente el 100% dos de sus funciones).
IOCTL 0x222000:
IOCTL 0x222008/0x22200C:
IOCTL 0x222010:
IOCTL 0x222014:
Escritura mediante MmMapIoSpace
Este IOCTL copia un valor desde un puntero proporcionado en el búfer de entrada a la memoria física mapeada
Para resolver MmPteBase y otros requisitos previos, se encuentra un espacio físico de "intercambio" buscando en el rango de memoria física 0x1000 - 0x10000 8 bytes cero.
Una vez que se encuentra ese espacio, la memoria virtual se copia en ese espacio de intercambio a través del IOCTL 0x222014 y se lee de vuelta usando el IOCTL 0x222010.
Tal como está ahora, TODAS las lecturas virtuales se realizan utilizando este espacio de "intercambio".
¿Es la mejor manera de hacer lectura/escritura virtual? Probablemente no.
¿Funciona? Sí.
Ah, y también, ajusta tus propios offsets — esto se probó en Windows 11 21H2 con HVCI desactivado.