Olen kirjoittanut ytimen hyödyntämisen (uusimmalle Win10 64-bittiselle versiolle), joka suorittaa (tai palaa ytimestä) token varastavan shell-koodin, joka on sijoitettu käyttäjän maan VirtulAlloc-muistiin.
Ongelmana on, että kun järjestelmänvalvojan käyttäjä suorittaa hyödyntämisen, se toimii hyvin, mutta jos tavallinen käyttäjä suorittaa sen (keskitasoinen eheys), se kaatuu ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY (fc)
-kohdassa. FFFF8500B7D94400 sisältää 8A000000269B1867 sisältää 0A0000001C4F2867 sisältää 0A0000002673C867 sisältää 0000000032E84025pfn 269b1 --- DA - UW-V pfn 1c4f2 --- DA - UWEV pfn 2673c --- DA - UWEV4 -
kun taas järjestelmänvalvojalla
PXE at FFFF8944A2512028 PPE at FFFF8944A2405E48 PDE at FFFF894480BC9F28 PTE at FFFF8901793E5800contains 0A000000060BD867 tartalmaz 0A0000003535E867 - 0ab --DA - UWEV pfn fbab --- DA - UWEV pfn 1dff4 ---- A - UREV
Ero on PXE-tasolla, ei ole E
-bitti asetettu vakiokäyttäjälle, kun taas järjestelmänvalvojan käyttäjällä on käyttöoikeus usermode-kuorikoodiin.
Yritin ottaa komentotulkkikoodin käyttöön hyödyntämisen (.exe) toiminto, joten se sijoitetaan koodisegmenttiin (mikä sillä todennäköisesti on suoritusoikeus), mutta se on sama (Ei E
-asetusta PXE-tasolla) ja kaatuu vaikka ! vad
-komento tuottaa EXECUTE_WRITECOPY
.
Olen tarkistanut, että ProcessMitigationPolicy
: n ProhibitDynamicCode
-arvoksi on asetettu 0, joten en usko, että tämä on ongelma.
Kuinka te suoritat shell-koodin kirjoittaessasi ytimen hyödyntämistä näinä päivinä? (FYI Olen poistanut käytöstä SMEP: n, SMAP: n ytimen ROP: n kautta).
Kiitos jo etukäteen!