Process Injection
Voir sur attack.mitre.org →40 syscalls implémentent cette technique
- NtAllocateVirtualMemory
Réserve, valide ou les deux une région de mémoire virtuelle dans un processus cible.
- NtAllocateVirtualMemoryEx
Réserve ou valide de la mémoire virtuelle avec paramètres étendus (nœud NUMA préféré, CFG, contraintes d'adresse).
- NtProtectVirtualMemory
Modifie la protection d'une région de mémoire virtuelle validée dans un processus cible.
- NtWriteVirtualMemory
Écrit un tampon de l'appelant dans l'espace d'adressage virtuel d'un processus cible.
- NtFreeVirtualMemory
Décommit ou libère une région de mémoire virtuelle dans un processus cible.
- NtSetInformationVirtualMemory
Applique une classe d'information à une liste de plages mémoire virtuelle : préchargement, priorité de page ou opt-in CFG.
- NtAllocateUserPhysicalPages
Alloue des pages de mémoire physique pour Address Windowing Extensions (AWE).
- NtMapUserPhysicalPages
Mappe des pages physiques allouées via AWE dans une fenêtre d'adresse virtuelle préalablement réservée.
- NtOpenProcess
Ouvre un handle vers un processus existant avec un masque d'accès demandé.
- NtCreateSection
Crée un objet section adossé à un fichier ou au pagefile système pour le mappage mémoire partagée.
- NtCreateSectionEx
Crée un objet section avec des paramètres étendus (nœud NUMA, contraintes d'adresse, pages physiques utilisateur).
- NtMapViewOfSection
Mappe une vue d'un objet section dans l'espace d'adressage virtuel d'un processus cible.
- NtUnmapViewOfSection
Démappe une vue de section précédemment mappée de l'espace d'adressage d'un processus.
- NtCreateThread
Syscall historique de création de thread nécessitant une INITIAL_TEB construite à la main ; remplacé par NtCreateThreadEx.
- NtCreateThreadEx
Crée un nouveau thread dans un processus cible, éventuellement suspendu, avec support des listes d'attributs.
- NtQueueApcThread
Place un appel de procédure asynchrone (APC) en mode utilisateur dans la file d'un thread cible.
- NtQueueApcThreadEx
Place un APC utilisateur dans la file d'un thread avec un objet réserve optionnel ou un flag special-user-APC pour livraison forcée.
- NtTestAlert
Vérifie si le thread appelant a une alerte en attente et délivre, le cas échéant, les APC user-mode en file.
- NtAllocateReserveObject
Pré-alloue un reserve object noyau (APC ou completion) afin que les opérations futures ne puissent échouer sous pression mémoire.
- NtCreateProcess
Création de processus NT historique à partir d'un objet section préconstruit — prédécesseur de NtCreateProcessEx et NtCreateUserProcess.
- NtCreateUserProcess
Crée un nouveau processus en mode utilisateur et son thread initial à partir d'une image exécutable.
- NtSuspendProcess
Suspend tous les threads d'un processus cible en incrémentant le compteur de suspension de chacun.
- NtResumeProcess
Décrémente le compteur de suspension de chaque thread d'un processus cible et relance ceux qui atteignent zéro.
- NtResumeThread
Décrémente le compteur de suspension d'un thread, reprenant l'exécution lorsque le compteur atteint zéro.
- NtAlertResumeThread
Reprend un thread suspendu et l'alerte simultanément pour délivrer toute APC en attente.
- NtCreateTimer2
Crée un objet timer moderne haute résolution prenant en charge manual-reset et no-wake en un seul appel.
- NtCreateIoCompletion
Crée un port de complétion d'E/S — la file noyau qui sous-tend la livraison de travail du threadpool, la notification d'E/S asynchrone et (dans PoolParty) les items de travail injectés.
- NtSetIoCompletion
Poste un paquet de complétion sur un port de complétion d'E/S — le côté noyau de PostQueuedCompletionStatus et le vecteur de livraison des items forgés de PoolParty.
- NtCancelWaitCompletionPacket
Annule un wait-completion packet précédemment associé, supprimant la liaison à l'objet dispatcher.
- NtAssociateWaitCompletionPacket
Lie un wait-completion packet à un dispatcher object pour que son signal poste une entrée dans un IOCP.
- NtCreateWorkerFactory
Crée un objet worker factory noyau — la primitive de threadpool que l'injection PoolParty détourne pour exécuter du shellcode sans NtCreateThreadEx.
- NtShutdownWorkerFactory
Signale à une worker factory d'arrêter la création de threads et indique combien de workers sont encore en attente.
- NtSetInformationWorkerFactory
Définit une classe de configuration sur une worker factory — y compris, dans certaines variantes PoolParty, la StartRoutine exécutée par les threads de travail.
- NtQueryInformationWorkerFactory
Interroge la configuration et l'état d'exécution d'une worker factory, y compris la StartRoutine actuelle et le nombre de workers.
- NtReleaseWorkerFactoryWorker
Demande au noyau de rendre au moins un worker disponible dans la factory — utilisé par le threadpool utilisateur pour réveiller le pool à la soumission de travail.
- NtWaitForWorkViaWorkerFactory
Bloque un worker de threadpool jusqu'à ce qu'un item soit disponible sur la file de complétion de la factory — la boucle chaude détournée par PoolParty.
- NtAddAtom
Ajoute (ou incrémente le refcount) d'une chaîne dans la table d'atomes globale du noyau et renvoie son ID 16 bits.
- NtFindAtom
Recherche un atome global existant par son nom et renvoie son ID 16 bits sans incrémenter le refcount.
- NtDeleteAtom
Décrémente le compteur de références d'un atome global et le supprime quand le compteur atteint zéro.
- NtQueryInformationAtom
Renvoie des métadonnées sur un atome unique ou sur toute la table d'atomes globale — nom, refcount, pin count, compteurs d'usage.