> Windows Syscalls
ntoskrnl.exeT1106

NtOpenPartition

Abre un objeto partición de memoria existente por nombre y devuelve un handle para gestión o asociación de procesos.

Prototipo

NTSTATUS NtOpenPartition(
  PHANDLE            PartitionHandle,
  ACCESS_MASK        DesiredAccess,
  POBJECT_ATTRIBUTES ObjectAttributes
);

Argumentos

NameTypeDirDescription
PartitionHandlePHANDLEoutRecibe el handle al objeto partición abierto.
DesiredAccessACCESS_MASKinMáscara de acceso solicitada; p. ej. MEMORY_PARTITION_QUERY_ACCESS (0x0001) o MEMORY_PARTITION_MODIFY_ACCESS (0x0002).
ObjectAttributesPOBJECT_ATTRIBUTESinRuta del Object Manager de la partición, p. ej. \KernelObjects\Sandbox1.

IDs de syscalls por versión de Windows

Versión de WindowsID de syscallBuild
Win10 15070x112win10-1507
Win10 16070x117win10-1607
Win10 17030x11Bwin10-1703
Win10 17090x11Dwin10-1709
Win10 18030x11Fwin10-1803
Win10 18090x120win10-1809
Win10 19030x121win10-1903
Win10 19090x121win10-1909
Win10 20040x126win10-2004
Win10 20H20x126win10-20h2
Win10 21H10x126win10-21h1
Win10 21H20x127win10-21h2
Win10 22H20x127win10-22h2
Win11 21H20x12Dwin11-21h2
Win11 22H20x12Fwin11-22h2
Win11 23H20x12Fwin11-23h2
Win11 24H20x131win11-24h2
Server 20160x117winserver-2016
Server 20190x120winserver-2019
Server 20220x12Cwinserver-2022
Server 20250x131winserver-2025

Módulo del kernel

ntoskrnl.exeNtOpenPartition

APIs relacionadas

NtCreatePartitionNtManagePartitionOpenPartition

Stub del syscall

4C 8B D1                  mov r10, rcx
B8 31 01 00 00            mov eax, 0x131
F6 04 25 08 03 FE 7F 01   test byte ptr [0x7FFE0308], 1
75 03                     jne short +3
0F 05                     syscall
C3                        ret
CD 2E                     int 2Eh
C3                        ret

Notas no documentadas

Contraparte `Open` de `NtCreatePartition`. La resolución es puramente del object-manager: la partición debe ya existir bajo su ruta de namespace (comúnmente `\KernelObjects\…`) y el token llamante debe satisfacer el descriptor de seguridad de la partición para los derechos solicitados. A diferencia de `NtCreatePartition`, abrir una partición para query/inspección no requiere `SeLockMemoryPrivilege` — solo las rutas modify/attach lo hacen. La resolución dinámica del syscall es trivial vía Hell's Gate porque el SSN deriva de forma predecible.

Uso común por malware

Esencialmente nulo abuso directo en malware commodity. Un defensor o investigador podría llamarlo para introspectar particiones de contenedores Hyper-V en un host, y un implante sofisticado podría *teóricamente* usar una partición creada por el usuario preexistente para alojar sus asignaciones y contaminar los contadores de working-set vistos por el EDR del host — pero la ganancia sobre un simple `NtAllocateVirtualMemory` es despreciable frente al coste en privilegios.

Oportunidades de detección

Empareje con la señal de `NtCreatePartition`: abrir una partición nombrada que el operador no creó él mismo es anómalo fuera de vmcompute/vmwp/SystemSettings. El evento 9 (`PartitionOpened`) del provider ETW `Microsoft-Windows-Kernel-Memory` lleva la imagen llamante y el nombre del objeto partición. La mayoría de entornos de producción tendrán aquí una lista blanca vacía.

Ejemplos de syscalls directos

cOpen an existing partition for query

#include <windows.h>
#include <winternl.h>

#define MEMORY_PARTITION_QUERY_ACCESS  0x0001

typedef NTSTATUS (NTAPI* pNtOpenPartition)(
    PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES);

HANDLE open_partition(LPCWSTR name) {
    UNICODE_STRING us;
    RtlInitUnicodeString(&us, name);
    OBJECT_ATTRIBUTES oa;
    InitializeObjectAttributes(&oa, &us, OBJ_CASE_INSENSITIVE, NULL, NULL);

    pNtOpenPartition f = (pNtOpenPartition)GetProcAddress(
        GetModuleHandleA("ntdll.dll"), "NtOpenPartition");

    HANDLE h = NULL;
    f(&h, MEMORY_PARTITION_QUERY_ACCESS, &oa);
    return h;
}

asmx64 direct stub (Win11 24H2, SSN 0x131)

NtOpenPartition PROC
    mov  r10, rcx
    mov  eax, 131h
    syscall
    ret
NtOpenPartition ENDP

Mapeos MITRE ATT&CK

Last verified: 2026-05-20