> Windows Syscalls
ntoskrnl.exeT1106

NtCreatePartition

Crée un objet partition mémoire qui isole le working-set physique d'un groupe de processus.

Prototype

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

Arguments

NameTypeDirDescription
PartitionHandlePHANDLEoutReçoit le handle de l'objet partition nouvellement créé.
ParentPartitionHandleHANDLEinPartition parente optionnelle ; NULL hérite de la partition système. Sert à construire des hiérarchies.
DesiredAccessACCESS_MASKinMasque d'accès ; couramment MEMORY_PARTITION_ALL_ACCESS (0x000F0003).
ObjectAttributesPOBJECT_ATTRIBUTESinNom d'objet (ex. \KernelObjects\MyPartition) et descripteur de sécurité.
PreferredNodeULONGinIndication de nœud NUMA pour la mémoire de support ; 0xFFFFFFFF pour aucune préférence.

IDs de syscalls par version de Windows

Version 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

Module noyau

ntoskrnl.exeNtCreatePartition

APIs liées

NtOpenPartitionNtManagePartitionNtSetInformationProcess (ProcessAttachToMemoryPartition)

Stub du 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

Notes non documentées

Introduit dans Windows 10 Redstone 2 (1703) dans le cadre du sous-système de partitions mémoire bâti à l'origine pour l'isolation mémoire du mode-jeu et des containers Hyper-V. Une partition possède ses propres page lists, pages disponibles, thread modified-page-writer et standby cache ; les processus associés (`ProcessInformationClass = ProcessAttachToMemoryPartition`) tirent leur mémoire physique exclusivement d'elle. Le wrapper standard `CreatePartition` vit dans `api-ms-win-core-memorypartition-l1` (stub kernel32), mais l'usage majoritaire est interne — Hyper-V, le runtime de containers Windows, et `SystemSettings` pour la réservation Game Mode le consomment tous. Requiert `SeLockMemoryPrivilege` plus l'ACL `MEMORY_PARTITION_ALL_ACCESS` sur le parent.

Usage courant par les malwares

Signal offensif très faible. L'exigence de privilège (`SeLockMemoryPrivilege`) verrouille presque tout usage intéressant, et la complexité opérationnelle de déplacer des processus entre partitions n'apporte pas grand-chose qu'un simple section-mapping n'offre déjà. Le seul usage réellement au niveau recherche est l'**isolation de canal auxiliaire dans les sandboxes de télémétrie red-team** — partitionner le working-set d'un capteur pour que les fuites de timing par pression sur pagefile depuis la victime ne corrèlent plus avec les mesures du capteur. Aucune famille de malware commodity public n'est documentée en train d'utiliser ceci.

Opportunités de détection

Les appels à `NtCreatePartition` venant de quoi que ce soit en dehors de `lsass.exe` (brièvement au boot), `vmcompute.exe`, `vmwp.exe`, `SystemSettings.exe` et quelques services dédiés au mode-jeu sont intrinsèquement suspects. Le provider `Microsoft-Windows-Kernel-Memory` émet l'évènement 8 (`PartitionCreated`) avec le chemin d'image appelant. Auditer les ajustements de `SeLockMemoryPrivilege` sur des tokens non-service est le signal en amont le moins coûteux — le privilège est requis et rarement détenu légitimement par du code user-mode.

Exemples de syscalls directs

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

Mappings MITRE ATT&CK

Last verified: 2026-05-20