> Windows Syscalls
ntoskrnl.exeT1106

NtCreatePartition

Crea un objeto partición de memoria que aísla el working-set físico de un grupo de procesos.

Prototipo

NTSTATUS NtCreatePartition(
  PHANDLE            PartitionHandle,
  HANDLE             ParentPartitionHandle,
  ACCESS_MASK        DesiredAccess,
  POBJECT_ATTRIBUTES ObjectAttributes,
  ULONG              PreferredNode
);

Argumentos

NameTypeDirDescription
PartitionHandlePHANDLEoutRecibe el handle al objeto partición recién creado.
ParentPartitionHandleHANDLEinPartición padre opcional; NULL hereda de la partición del sistema. Usado para construir jerarquías.
DesiredAccessACCESS_MASKinMáscara de acceso; comúnmente MEMORY_PARTITION_ALL_ACCESS (0x000F0003).
ObjectAttributesPOBJECT_ATTRIBUTESinNombre de objeto (p. ej. \KernelObjects\MyPartition) y descriptor de seguridad.
PreferredNodeULONGinSugerencia de nodo NUMA para la memoria de respaldo; 0xFFFFFFFF para sin preferencia.

IDs de syscalls por versión de Windows

Versión de WindowsID de syscallBuild
Win10 15070xAAwin10-1507
Win10 16070xACwin10-1607
Win10 17030xAFwin10-1703
Win10 17090xB0win10-1709
Win10 18030xB1win10-1803
Win10 18090xB1win10-1809
Win10 19030xB2win10-1903
Win10 19090xB2win10-1909
Win10 20040xB6win10-2004
Win10 20H20xB6win10-20h2
Win10 21H10xB6win10-21h1
Win10 21H20xB7win10-21h2
Win10 22H20xB7win10-22h2
Win11 21H20xBAwin11-21h2
Win11 22H20xBBwin11-22h2
Win11 23H20xBBwin11-23h2
Win11 24H20xBDwin11-24h2
Server 20160xACwinserver-2016
Server 20190xB1winserver-2019
Server 20220xB9winserver-2022
Server 20250xBDwinserver-2025

Módulo del kernel

ntoskrnl.exeNtCreatePartition

APIs relacionadas

NtOpenPartitionNtManagePartitionNtSetInformationProcess (ProcessAttachToMemoryPartition)

Stub del syscall

4C 8B D1                  mov r10, rcx
B8 BD 00 00 00            mov eax, 0xBD
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

Introducido en Windows 10 Redstone 2 (1703) como parte del subsistema de particiones de memoria construido originalmente para el aislamiento de memoria del game-mode y los contenedores Hyper-V. Una partición posee sus propias page lists, páginas disponibles, hilo modified-page-writer y standby cache; los procesos asociados (`ProcessInformationClass = ProcessAttachToMemoryPartition`) sacan su memoria física exclusivamente de ella. El wrapper estándar `CreatePartition` vive en `api-ms-win-core-memorypartition-l1` (stub kernel32), pero el uso mayoritario es interno — Hyper-V, el runtime de contenedores Windows y `SystemSettings` para la reserva de Game Mode lo consumen. Requiere `SeLockMemoryPrivilege` más la ACL `MEMORY_PARTITION_ALL_ACCESS` sobre el padre.

Uso común por malware

Señal ofensiva muy baja. El requisito de privilegio (`SeLockMemoryPrivilege`) bloquea casi todo uso interesante, y la complejidad operacional de mover procesos entre particiones no aporta a malware mucho más de lo que un simple section-mapping ofrece. El único uso de nivel investigación genuino es el **aislamiento de canal lateral en sandboxes de telemetría red-team** — particionar el working-set de un sensor para que las fugas de timing por presión de pagefile desde la víctima ya no correlacionen con las mediciones del sensor. Ninguna familia de malware commodity pública está documentada usándolo.

Oportunidades de detección

Las llamadas a `NtCreatePartition` desde cualquier cosa fuera de `lsass.exe` (brevemente durante boot), `vmcompute.exe`, `vmwp.exe`, `SystemSettings.exe` y unos pocos servicios dedicados a game-mode son intrínsecamente sospechosas. El provider `Microsoft-Windows-Kernel-Memory` emite el evento 8 (`PartitionCreated`) con la ruta de imagen llamante. Auditar ajustes de `SeLockMemoryPrivilege` en tokens no-servicio es la señal aguas arriba más barata — el privilegio es requerido y rara vez se ostenta legítimamente por código user-mode.

Ejemplos de syscalls directos

cCreate a named child partition under the system partition

// Requires SeLockMemoryPrivilege and a writable SD on the parent.
#include <windows.h>
#include <winternl.h>

#define MEMORY_PARTITION_ALL_ACCESS 0x000F0003

typedef NTSTATUS (NTAPI* pNtCreatePartition)(
    PHANDLE, HANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG);

void make_partition(void) {
    UNICODE_STRING name;
    RtlInitUnicodeString(&name, L"\\KernelObjects\\Sandbox1");
    OBJECT_ATTRIBUTES oa;
    InitializeObjectAttributes(&oa, &name, OBJ_CASE_INSENSITIVE, NULL, NULL);

    pNtCreatePartition f = (pNtCreatePartition)GetProcAddress(
        GetModuleHandleA("ntdll.dll"), "NtCreatePartition");

    HANDLE h = NULL;
    NTSTATUS st = f(&h, NULL /* parent = system */,
                    MEMORY_PARTITION_ALL_ACCESS, &oa,
                    0xFFFFFFFF /* any NUMA node */);
}

asmx64 direct stub (Win11 24H2 / Server 2025, SSN 0xBD)

NtCreatePartition PROC
    mov  r10, rcx
    mov  eax, 0BDh
    syscall
    ret
NtCreatePartition ENDP

Mapeos MITRE ATT&CK

Last verified: 2026-05-20