Chiamate Dirette alle API di Sistema: Native API (T1106)

Le Native API rappresentano l'interfaccia più profonda con cui un processo in user-mode può dialogare con il kernel del sistema operativo. Funzioni come NtCreateProcess su Windows, fork() su GNU/Linux e le API del framework Cocoa su macOS permettono di creare processi, manipolare memoria, interagire con dispositivi e gestire servizi — operazioni fondamentali sia per il sistema che per un attaccante.

Questa tecnica appartiene alla tattica Execution (TA0002): l'avversario cerca di eseguire codice malevolo sul sistema compromesso. L'invocazione diretta delle API native consente di aggirare i wrapper di alto livello — quelli normalmente monitorati dagli EDR — e operare a un livello dove la visibilità difensiva è tradizionalmente più debole. Attraverso syscall dirette o la risoluzione dinamica di funzioni tramite GetProcAddress e LoadLibrary, il malware può evitare gli hook in user-mode piazzati dalle soluzioni di sicurezza.

I numeri confermano la pervasività di questa tecnica: 189 software documentati la utilizzano, 18 gruppi APT ne fanno uso attivo, e almeno 4 campagne maggiori l'hanno impiegata in operazioni reali. Dai ransomware come Ryuk, Conti e LockBit 3.0 fino ai tool di spionaggio come ComRAT e PlugX, le Native API sono il substrato comune di quasi ogni catena d'attacco moderna. L'aspetto critico è che si tratta di funzionalità legittime del sistema operativo: ogni processo le usa, rendendo la distinzione tra uso lecito e malevolo una sfida non banale per chi difende.


L'obiettivo in laboratorio è dimostrare come un attaccante possa bypassare il monitoraggio delle API tradizionali invocando syscall direttamente, senza passare per le funzioni esportate da kernel32.dll o ntdll.dll. Questo è esattamente ciò che fanno gruppi come Chimera, che ha utilizzato Dumpert (open source) per eseguire dump di LSASS tramite syscall dirette, aggirando gli hook EDR.

Il primo passo è generare stub di syscall con SysWhispers2 (open source), un tool che produce header C e file assembly per invocare le Nt* API senza toccare ntdll.dll. Dal repository clonato, il comando per generare gli stub necessari è:

python3 syswhispers.py -f NtAllocateVirtualMemory,NtWriteVirtualMemory,NtCreateThreadEx -o syscalls

Questo produce i file syscalls.h, syscalls.c e syscalls-asm.asm, pronti per essere integrati in un progetto C/C++. Il codice compilato risolverà i numeri di syscall a runtime, rendendo il binario trasparente al monitoraggio basato su IAT hooking.

Per una dimostrazione più immediata, Cobalt Strike (a pagamento) permette di eseguire comandi shell senza invocare cmd.exe e comandi PowerShell senza powershell.exe, sfruttando direttamente le API native. In alternativa, Brute Ratel C4 (a pagamento) implementa nativamente syscall dirette per allocazione di memoria e creazione di thread, offrendo un profilo di evasione molto aggressivo.

Su Linux, la simulazione è più diretta. Un semplice programma C che invoca fork() seguito da execvp() replica il pattern usato da RotaJakiro per rigenerare i propri processi. Per monitorare il comportamento dall'altro lato, è utile tracciare le syscall con:

strace -f -e trace=fork,execve,mmap,ptrace -p <PID>

Su macOS, il test deve coinvolgere le API dei framework CoreServices e Foundation. Un binario Swift che utilizza NSTask per lanciare processi — come fa XAgentOSX con il metodo NSTask:launch — è sufficiente per validare le regole di detection dell'Endpoint Security framework di Apple.

Per il red team che vuole simulare la risoluzione dinamica delle API, tecnica usata da decine di malware documentati (da SynAck a Rising Sun), il pattern classico prevede la risoluzione a runtime di LoadLibrary e GetProcAddress su stringhe offuscate o hashate. Il tool SharpDisco (open source) e il framework Empire (open source) offrono moduli che sfruttano questa catena per enumerazione e discovery tramite API call. Donut (open source) è un altro strumento essenziale: genera shellcode position-independent che carica ed esegue assembly .NET, PE e DLL interamente in memoria, utilizzando API native per ogni operazione.


Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.