> Windows Syscalls
ntoskrnl.exeT1106

NtCreatePartition

Erzeugt ein Memory-Partition-Objekt, das den physischen Working-Set einer Prozessgruppe isoliert.

Prototyp

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

Argumente

NameTypeDirDescription
PartitionHandlePHANDLEoutEmpfängt das Handle auf das neu erstellte Partitionsobjekt.
ParentPartitionHandleHANDLEinOptionale Eltern-Partition; NULL erbt von der Systempartition. Dient zum Aufbau von Hierarchien.
DesiredAccessACCESS_MASKinZugriffsmaske; üblicherweise MEMORY_PARTITION_ALL_ACCESS (0x000F0003).
ObjectAttributesPOBJECT_ATTRIBUTESinObjektname (z. B. \KernelObjects\MyPartition) und Security-Descriptor.
PreferredNodeULONGinNUMA-Knoten-Hinweis für den Backing-Speicher; 0xFFFFFFFF für keine Präferenz.

Syscall-IDs pro Windows-Version

Windows-VersionSyscall-IDBuild
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

Kernel-Modul

ntoskrnl.exeNtCreatePartition

Verwandte APIs

NtOpenPartitionNtManagePartitionNtSetInformationProcess (ProcessAttachToMemoryPartition)

Syscall-Stub

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

Undokumentierte Hinweise

Eingeführt mit Windows 10 Redstone 2 (1703) als Teil des Memory-Partition-Subsystems, ursprünglich für die Speicher-Isolation von Game-Mode und Hyper-V-Containern gebaut. Eine Partition besitzt eigene Page Lists, verfügbare Seiten, Modified-Page-Writer-Thread und Standby-Cache; assoziierte Prozesse (`ProcessInformationClass = ProcessAttachToMemoryPartition`) beziehen ihren physischen Speicher ausschließlich von ihr. Der Standard-Wrapper `CreatePartition` lebt in `api-ms-win-core-memorypartition-l1` (kernel32-Stub), die Mehrheit der Nutzung ist intern — Hyper-V, das Windows-Container-Runtime und `SystemSettings` für die Game-Mode-Reservierung konsumieren ihn alle. Erfordert `SeLockMemoryPrivilege` plus die `MEMORY_PARTITION_ALL_ACCESS`-ACL auf der Eltern-Partition.

Häufige Malware-Nutzung

Sehr schwaches offensives Signal. Die Privilegienanforderung (`SeLockMemoryPrivilege`) sperrt fast jede interessante Nutzung weg, und die operative Komplexität, Prozesse zwischen Partitionen zu verschieben, bringt Malware nichts, was simples Section-Mapping nicht ohnehin böte. Der einzige echte Forschungs-Use-Case ist **Side-Channel-Isolation in Red-Team-Telemetrie-Sandboxes** — den Working-Set eines Sensors zu partitionieren, damit Pagefile-Druck-Timing-Leaks vom Opfer nicht mehr mit den Messungen des Sensors korrelieren. Keine öffentlich dokumentierte Commodity-Malware-Familie nutzt es.

Erkennungs­möglichkeiten

`NtCreatePartition`-Aufrufe aus anderem als `lsass.exe` (kurz beim Boot), `vmcompute.exe`, `vmwp.exe`, `SystemSettings.exe` und ein paar dedizierten Game-Mode-Diensten sind inhärent verdächtig. Der Provider `Microsoft-Windows-Kernel-Memory` emittiert Event 8 (`PartitionCreated`) mit dem aufrufenden Image-Pfad. `SeLockMemoryPrivilege`-Anpassungen auf Nicht-Service-Tokens zu auditieren ist das günstigste Upstream-Signal — das Privileg ist erforderlich und wird im User-Mode-Code selten legitim gehalten.

Direkte Syscall-Beispiele

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

MITRE ATT&CK-Mappings

Last verified: 2026-05-20