Skip to content

Windows Internals - Security Reference

Cette rรฉfรฉrence couvre les concepts fondamentaux de l'architecture de sรฉcuritรฉ Windows, essentiels pour comprendre les techniques offensives et dรฉfensives.

Durรฉe estimรฉe : 15 minutes


Vue d'Ensemble - Architecture Sรฉcuritรฉ

flowchart TB
    subgraph usermode["User Mode (Ring 3)"]
        APP[Applications]
        SUBSYS[Subsystems<br/>Win32, WoW64]
        NTDLL[ntdll.dll]
    end

    subgraph kernelmode["Kernel Mode (Ring 0)"]
        NTOSKRNL[ntoskrnl.exe]
        HAL[hal.dll]
        DRIVERS[Drivers]
    end

    subgraph security["Security Components"]
        LSASS[lsass.exe]
        SAM[SAM]
        LSA[LSA Secrets]
    end

    APP --> SUBSYS --> NTDLL
    NTDLL -->|"syscall"| NTOSKRNL
    NTOSKRNL --> HAL
    LSASS --> NTOSKRNL

    style LSASS fill:#e74c3c,color:#fff
    style NTOSKRNL fill:#3498db,color:#fff

1. Processus & Threads

1.1 Structure d'un Processus

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        PROCESS                               โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  PID (Process ID)                                           โ”‚
โ”‚  PPID (Parent Process ID)                                   โ”‚
โ”‚  Token (Security Context)                                    โ”‚
โ”‚  Virtual Address Space                                       โ”‚
โ”‚  Handle Table                                                โ”‚
โ”‚  PEB (Process Environment Block)                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Threads:                                                    โ”‚
โ”‚  โ”œโ”€โ”€ Thread 1 (TID, TEB, Stack, Context)                   โ”‚
โ”‚  โ”œโ”€โ”€ Thread 2                                               โ”‚
โ”‚  โ””โ”€โ”€ Thread N                                               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

1.2 Structures Kernel

// EPROCESS - Structure kernel d'un processus
typedef struct _EPROCESS {
    KPROCESS Pcb;                    // Process Control Block
    EX_PUSH_LOCK ProcessLock;
    LARGE_INTEGER CreateTime;
    LARGE_INTEGER ExitTime;
    EX_RUNDOWN_REF RundownProtect;
    HANDLE UniqueProcessId;          // PID
    LIST_ENTRY ActiveProcessLinks;   // Liste des processus
    // ...
    PVOID Token;                     // Access Token
    // ...
} EPROCESS, *PEPROCESS;

// ETHREAD - Structure kernel d'un thread
typedef struct _ETHREAD {
    KTHREAD Tcb;                     // Thread Control Block
    LARGE_INTEGER CreateTime;
    LARGE_INTEGER ExitTime;
    LIST_ENTRY ThreadListEntry;
    CLIENT_ID Cid;                   // Process ID + Thread ID
    // ...
} ETHREAD, *PETHREAD;

1.3 PEB (Process Environment Block)

// Structure accessible depuis user mode
typedef struct _PEB {
    BOOLEAN InheritedAddressSpace;
    BOOLEAN ReadImageFileExecOptions;
    BOOLEAN BeingDebugged;           // Utilisรฉ pour anti-debug
    // ...
    PPEB_LDR_DATA Ldr;               // Liste des DLLs chargรฉes
    PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
    // ...
} PEB, *PPEB;

// Accรจs au PEB
// x64: gs:[0x60]
// x86: fs:[0x30]
# Lister les processus avec leur PEB
Get-Process | ForEach-Object {
    $proc = $_
    $modules = $proc.Modules | Select-Object -First 3 -ExpandProperty ModuleName
    [PSCustomObject]@{
        PID = $proc.Id
        Name = $proc.Name
        Path = $proc.Path
        Modules = $modules -join ", "
    }
}

1.4 Intรฉgritรฉ des Processus

Niveau Valeur Description
Untrusted 0x0000 Processus sandboxรฉ (Chrome)
Low 0x1000 Navigateur, IE Protected Mode
Medium 0x2000 Utilisateur standard
High 0x3000 Administrateur รฉlevรฉ
System 0x4000 Services SYSTEM
Protected 0x5000 Processus protรฉgรฉs (AV)
# Vรฉrifier le niveau d'intรฉgritรฉ
whoami /groups | findstr "Label"

# Via PowerShell
Get-Process -Id $PID | Select-Object Name, Id, @{N='Integrity';E={
    $token = (Get-Process -Id $_.Id).Handle
    # Requiert P/Invoke pour GetTokenInformation
}}

2. Tokens & Privileges

2.1 Access Token Structure

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     ACCESS TOKEN                             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  User SID          : S-1-5-21-...-1001                      โ”‚
โ”‚  Group SIDs        : [Administrators, Users, ...]          โ”‚
โ”‚  Privileges        : [SeDebugPrivilege, SeBackupPrivilege] โ”‚
โ”‚  Owner SID         : S-1-5-21-...-1001                      โ”‚
โ”‚  Primary Group     : S-1-5-21-...-513                       โ”‚
โ”‚  Default DACL      : (permissions par dรฉfaut)               โ”‚
โ”‚  Token Type        : Primary / Impersonation                โ”‚
โ”‚  Impersonation Lvl : Anonymous/Identify/Impersonate/Delegateโ”‚
โ”‚  Integrity Level   : Medium                                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2.2 Privileges Intรฉressants

Privilege Usage Offensif
SeDebugPrivilege Accรจs ร  tous les processus (LSASS dump)
SeImpersonatePrivilege Potato attacks โ†’ SYSTEM
SeAssignPrimaryTokenPrivilege Crรฉer processus avec autre token
SeBackupPrivilege Lire n'importe quel fichier (SAM, NTDS)
SeRestorePrivilege ร‰crire n'importe quel fichier
SeTakeOwnershipPrivilege Prendre possession de fichiers
SeLoadDriverPrivilege Charger des drivers (rootkit)
SeTcbPrivilege Agir comme partie du systรจme (rare)
# Lister ses privileges
whoami /priv

# Activer un privilege (si disponible mais dรฉsactivรฉ)
# Requiert code C# ou outil comme PowerSploit
[System.Reflection.Assembly]::LoadWithPartialName('System.Runtime.InteropServices')
# AdjustTokenPrivileges via P/Invoke

2.3 Token Types

PRIMARY TOKEN
โ”œโ”€โ”€ Associรฉ ร  un processus
โ”œโ”€โ”€ Crรฉรฉ au logon
โ””โ”€โ”€ Dรฉfinit le contexte de sรฉcuritรฉ du processus

IMPERSONATION TOKEN
โ”œโ”€โ”€ Associรฉ ร  un thread
โ”œโ”€โ”€ Permet d'agir comme un autre utilisateur
โ”œโ”€โ”€ Niveaux:
โ”‚   โ”œโ”€โ”€ Anonymous      : Aucune info
โ”‚   โ”œโ”€โ”€ Identification : Peut identifier, pas agir
โ”‚   โ”œโ”€โ”€ Impersonation  : Peut agir localement
โ”‚   โ””โ”€โ”€ Delegation     : Peut agir sur le rรฉseau
โ””โ”€โ”€ Crรฉรฉ via ImpersonateLoggedOnUser, etc.

2.4 Token Manipulation

// Techniques d'abus de token

// 1. Token Stealing
OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, targetPID);
OpenProcessToken(hProcess, TOKEN_DUPLICATE, &hToken);
DuplicateTokenEx(hToken, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &hNewToken);
CreateProcessWithTokenW(hNewToken, LOGON_WITH_PROFILE, ...);

// 2. Token Impersonation (SeImpersonatePrivilege requis)
ImpersonateLoggedOnUser(hToken);
// Thread agit maintenant comme l'utilisateur du token

// 3. Make Token (credentials requis)
LogonUser("user", "DOMAIN", "password", LOGON32_LOGON_NEW_CREDENTIALS, ...);

3. Security Descriptors & ACLs

3.1 Structure du Security Descriptor

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  SECURITY_DESCRIPTOR                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Owner SID      : S-1-5-21-...-500 (Administrateur)         โ”‚
โ”‚  Group SID      : S-1-5-21-...-513 (Domain Users)           โ”‚
โ”‚  DACL           : Discretionary Access Control List          โ”‚
โ”‚  SACL           : System Access Control List (Audit)         โ”‚
โ”‚  Control Flags  : SE_DACL_PRESENT, SE_SACL_PRESENT, ...     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

3.2 DACL (Discretionary ACL)

DACL = Liste d'ACE (Access Control Entries)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ACE 1: ALLOW | Administrators | Full Control               โ”‚
โ”‚  ACE 2: ALLOW | SYSTEM         | Full Control               โ”‚
โ”‚  ACE 3: ALLOW | Users          | Read, Execute              โ”‚
โ”‚  ACE 4: DENY  | Guest          | All Access                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Ordre d'รฉvaluation:
1. Explicit Deny
2. Explicit Allow
3. Inherited Deny
4. Inherited Allow
5. Pas de match = Deny implicite

3.3 Permissions Communes

Permission Valeur Description
READ_CONTROL 0x20000 Lire le SD
WRITE_DAC 0x40000 Modifier la DACL
WRITE_OWNER 0x80000 Changer le propriรฉtaire
DELETE 0x10000 Supprimer l'objet
GENERIC_READ 0x80000000 Lecture gรฉnรฉrique
GENERIC_WRITE 0x40000000 ร‰criture gรฉnรฉrique
GENERIC_EXECUTE 0x20000000 Exรฉcution gรฉnรฉrique
GENERIC_ALL 0x10000000 Tous les droits

3.4 Vรฉrifier les Permissions

# Permissions sur un fichier
Get-Acl C:\Windows\System32\config\SAM | Format-List

# Permissions sur un objet AD
Import-Module ActiveDirectory
(Get-Acl "AD:CN=AdminSDHolder,CN=System,DC=corp,DC=local").Access

# Permissions sur un service
sc sdshow [service_name]
# Dรฉcoder le SDDL
ConvertFrom-SddlString "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)..."

# Trouver les permissions faibles
accesschk.exe -uwcqv "Users" *

4. Logon Types & Sessions

4.1 Types de Logon

Type Valeur Description Credentials en mรฉmoire
Interactive 2 Console locale Oui (NTLM, Kerberos)
Network 3 SMB, WinRM Non (pas en cache)
Batch 4 Tรขches planifiรฉes Oui
Service 5 Services Windows Oui
Unlock 7 Dรฉverrouillage Oui
NetworkCleartext 8 IIS Basic Auth Oui
NewCredentials 9 RunAs /netonly Non (localement)
RemoteInteractive 10 RDP Oui
CachedInteractive 11 Logon avec cache Variable

4.2 Sessions & Stations

SYSTEM
โ”œโ”€โ”€ Session 0 (Non-interactive)
โ”‚   โ”œโ”€โ”€ Services
โ”‚   โ””โ”€โ”€ Background processes
โ”‚
โ”œโ”€โ”€ Session 1 (Console user)
โ”‚   โ”œโ”€โ”€ Window Station: WinSta0
โ”‚   โ”‚   โ”œโ”€โ”€ Desktop: Default
โ”‚   โ”‚   โ””โ”€โ”€ Desktop: Winlogon
โ”‚   โ””โ”€โ”€ Processes utilisateur
โ”‚
โ””โ”€โ”€ Session 2 (RDP user)
    โ””โ”€โ”€ Window Station: WinSta0
        โ””โ”€โ”€ Desktop: Default
# Lister les sessions
query session
# ou
Get-CimInstance Win32_LogonSession | Select-Object LogonId, LogonType, StartTime

# Lister les processus par session
Get-Process | Group-Object SessionId | ForEach-Object {
    [PSCustomObject]@{
        Session = $_.Name
        ProcessCount = $_.Count
        Processes = ($_.Group | Select-Object -First 5 -ExpandProperty Name) -join ", "
    }
}

5. LSASS & Credential Storage

5.1 Architecture LSASS

flowchart TB
    subgraph lsass["lsass.exe"]
        LSA[LSA Server]
        AP1[msv1_0.dll<br/>NTLM]
        AP2[kerberos.dll<br/>Kerberos]
        AP3[wdigest.dll<br/>WDigest]
        AP4[tspkg.dll<br/>CredSSP]
        SSP[SSP Interface]
    end

    subgraph storage["Credential Storage"]
        SAM[SAM<br/>Local accounts]
        CACHE[Cached Creds<br/>DCC2]
        LSA_SEC[LSA Secrets<br/>Service accounts]
    end

    LSA --> AP1 & AP2 & AP3 & AP4
    AP1 --> SAM
    AP1 --> CACHE
    LSA --> LSA_SEC

    style lsass fill:#e74c3c,color:#fff

5.2 Ce que contient LSASS

Donnรฉe Condition Extractible
NTLM Hash Logon interactif Oui (sekurlsa::logonpasswords)
Mot de passe clair WDigest activรฉ Oui (si UseLogonCredential=1)
Kerberos TGT Logon Kerberos Oui (sekurlsa::tickets)
Kerberos Keys Logon Kerberos Oui
DPAPI Keys Utilisateur connectรฉ Oui

5.3 Protections LSASS

# Vรฉrifier si LSA Protection est activรฉe
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL"

# Vรฉrifier Credential Guard
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard |
    Select-Object SecurityServicesRunning, VirtualizationBasedSecurityStatus

# Dรฉsactiver WDigest (empรชche le stockage des mots de passe en clair)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest" -Name "UseLogonCredential" -Value 0

6. Services & Drivers

6.1 Structure des Services

SERVICE_STATUS
โ”œโ”€โ”€ Type (WIN32_OWN_PROCESS, WIN32_SHARE_PROCESS, KERNEL_DRIVER)
โ”œโ”€โ”€ State (STOPPED, START_PENDING, RUNNING, ...)
โ”œโ”€โ”€ Controls Accepted (STOP, PAUSE, SHUTDOWN, ...)
โ”œโ”€โ”€ Win32ExitCode
โ””โ”€โ”€ ServiceSpecificExitCode

6.2 Permissions sur les Services

# Lister les services avec permissions faibles
accesschk.exe -uwcqv "Users" * /accepteula
accesschk.exe -uwcqv "Authenticated Users" * /accepteula

# Permissions intรฉressantes:
# SERVICE_CHANGE_CONFIG - Modifier le binaire
# SERVICE_START - Dรฉmarrer le service
# SERVICE_STOP - Arrรชter le service
# WRITE_DAC - Modifier les permissions

# Modifier un service vulnรฉrable
sc config [service] binpath= "C:\evil.exe"
sc stop [service]
sc start [service]

6.3 Drivers (Kernel Mode)

# Lister les drivers chargรฉs
Get-WmiObject Win32_SystemDriver | Select-Object Name, State, PathName

# Drivers signรฉs (Secure Boot)
bcdedit /enum | findstr "testsigning"

# Vulnรฉrabilitรฉs de drivers (LOLDrivers)
# https://www.loldrivers.io/
# Drivers vulnรฉrables utilisรฉs pour bypass AV/EDR

7. Registry Security

7.1 Hives Principales

Hive Fichier Contenu
HKLM\SAM C:\Windows\System32\config\SAM Comptes locaux
HKLM\SECURITY C:\Windows\System32\config\SECURITY Politiques, LSA secrets
HKLM\SOFTWARE C:\Windows\System32\config\SOFTWARE Config logiciels
HKLM\SYSTEM C:\Windows\System32\config\SYSTEM Config systรจme
HKU.DEFAULT C:\Windows\System32\config\DEFAULT Profil par dรฉfaut
HKCU C:\Users[user]\NTUSER.DAT Profil utilisateur

7.2 Clรฉs Sensibles

# LSA Secrets (service accounts passwords)
HKLM\SECURITY\Policy\Secrets

# Cached Domain Credentials
HKLM\SECURITY\Cache

# SAM (hashes locaux)
HKLM\SAM\SAM\Domains\Account\Users

# Boot Key (pour dรฉchiffrer SAM)
HKLM\SYSTEM\CurrentControlSet\Control\Lsa

# Autorun (persistence)
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

# Services
HKLM\SYSTEM\CurrentControlSet\Services

7.3 Permissions Registry

# Vรฉrifier les permissions sur une clรฉ
Get-Acl "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" | Format-List

# Trouver les clรฉs modifiables
accesschk.exe -kwsu "Users" HKLM\SOFTWARE

# Modifier les permissions (admin requis)
$acl = Get-Acl "HKLM:\SOFTWARE\TestKey"
$rule = New-Object System.Security.AccessControl.RegistryAccessRule("Users","FullControl","Allow")
$acl.SetAccessRule($rule)
Set-Acl "HKLM:\SOFTWARE\TestKey" $acl

8. Named Pipes & Objects

8.1 Named Pipes

# Lister les named pipes
Get-ChildItem \\.\pipe\

# Pipes intรฉressants pour Red Team
\\.\pipe\epmapper     # RPC
\\.\pipe\lsarpc       # LSA RPC
\\.\pipe\samr         # SAM RPC
\\.\pipe\netlogon     # Netlogon
\\.\pipe\spoolss      # Print Spooler (PrintNightmare)

# Pipes C2 courants
\\.\pipe\msagent_*    # Cobalt Strike
\\.\pipe\postex_*     # Cobalt Strike

8.2 Windows Objects

Namespace d'objets Windows:
\
โ”œโ”€โ”€ BaseNamedObjects     # Objets nommรฉs globaux
โ”œโ”€โ”€ Sessions\[n]\BaseNamedObjects  # Par session
โ”œโ”€โ”€ Device              # Devices
โ”œโ”€โ”€ Driver              # Drivers
โ”œโ”€โ”€ FileSystem          # Systรจmes de fichiers
โ”œโ”€โ”€ GLOBAL??            # Symlinks globaux
โ””โ”€โ”€ RPC Control         # Endpoints RPC
# Explorer avec WinObj (Sysinternals)
# Voir les objets kernel, leurs types, leurs permissions

# Lister les handles d'un processus
handle.exe -p [PID]

# Trouver les fichiers ouverts
handle.exe -a "file"

9. Cheatsheet Rapide

Tokens

# Infos token actuel
whoami /all

# Privileges
whoami /priv

# Groupes
whoami /groups

Processus

# Liste avec dรฉtails
Get-Process | Select-Object Id, Name, Path, Company

# Process tree
Get-CimInstance Win32_Process | Select-Object ProcessId, ParentProcessId, Name

# Integrity level (requiert DVTA)
tasklist /v

Services

# Liste des services
Get-Service | Where-Object {$_.Status -eq 'Running'}

# Permissions
sc sdshow [service]

# Config
sc qc [service]

Registry

# Autorun
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
Get-ItemProperty "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

# Services
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\[name]"

10. Ressources

Livres

  • Windows Internals, Part 1 & 2 - Russinovich, Solomon, Ionescu
  • The Art of Memory Forensics - Ligh, Case, Levy, Walters

Outils

Outil Usage
Process Hacker Analyse processus avancรฉe
WinObj Explorer les objets kernel
AccessChk Audit des permissions
ProcMon Monitoring systรจme
WinDbg Debugging kernel

Rรฉfรฉrences


Retour au Programme OPSEC & Tradecraft โ†’