> Windows Syscalls
ntoskrnl.exeT1106

NtOpenPartition

Ouvre un objet partition mémoire existant par son nom et renvoie un handle pour gestion ou attachement de processus.

Prototype

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

Arguments

NameTypeDirDescription
PartitionHandlePHANDLEoutReçoit le handle de l'objet partition ouvert.
DesiredAccessACCESS_MASKinMasque d'accès demandé ; ex. MEMORY_PARTITION_QUERY_ACCESS (0x0001) ou MEMORY_PARTITION_MODIFY_ACCESS (0x0002).
ObjectAttributesPOBJECT_ATTRIBUTESinChemin Object Manager de la partition, ex. \KernelObjects\Sandbox1.

IDs de syscalls par version de Windows

Version 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

Module noyau

ntoskrnl.exeNtOpenPartition

APIs liées

NtCreatePartitionNtManagePartitionOpenPartition

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

Notes non documentées

Pendant `Open` de `NtCreatePartition`. La résolution est purement object-manager : la partition doit déjà exister sous son chemin de namespace (couramment `\KernelObjects\…`) et le token appelant doit satisfaire le descripteur de sécurité de la partition pour les droits demandés. Contrairement à `NtCreatePartition`, ouvrir une partition pour query/inspection ne requiert pas `SeLockMemoryPrivilege` — seuls les chemins modify/attach le font. La résolution dynamique du syscall est triviale via Hell's Gate car le SSN dérive de façon prévisible.

Usage courant par les malwares

Pratiquement aucun abus direct dans le malware commodity. Un défenseur ou chercheur pourrait l'appeler pour introspecter les partitions de containers Hyper-V sur un hôte, et un implant sophistiqué pourrait *théoriquement* utiliser une partition créée par l'utilisateur préexistante pour héberger ses allocations et polluer les compteurs de working-set vus par l'EDR de l'hôte — mais le gain par rapport à un simple `NtAllocateVirtualMemory` est négligeable relativement au coût en privilèges.

Opportunités de détection

Couplez avec le signal `NtCreatePartition` : ouvrir une partition nommée que l'opérateur n'a pas créée lui-même est anormal en dehors de vmcompute/vmwp/SystemSettings. L'évènement 9 (`PartitionOpened`) du provider ETW `Microsoft-Windows-Kernel-Memory` porte l'image appelante et le nom de l'objet partition. La plupart des environnements de production auront ici une liste blanche vide.

Exemples de syscalls directs

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

Mappings MITRE ATT&CK

Last verified: 2026-05-20