Sovrascrittura Argomenti di Processo: Overwrite Process Arguments (T1036.011)

La tecnica T1036.011 - Overwrite Process Arguments rientra nella tattica TA0005 (Defense Evasion) e sfrutta una caratteristica architetturale del kernel Linux: gli argomenti della riga di comando vengono memorizzati nello stack del processo in memoria user-space e passati alla funzione main() tramite l'array argv. Il primo elemento, argv[0], contiene per convenzione il nome o il percorso del binario invocato, ed è proprio questo valore che il pseudo-filesystem /proc espone attraverso /proc/<PID>/cmdline, la fonte primaria consultata da utility come ps, top e htop per rappresentare i processi in esecuzione.

Un attaccante può manipolare a runtime questa regione di memoria senza alcun privilegio elevato, azzerandone il contenuto con byte nulli e riscrivendo una stringa arbitraria che simuli un demone di sistema legittimo. Il risultato è duplice: da un lato viene distrutta l'evidenza del comando originale, dall'altro il processo malevolo assume un'identità cosmetica credibile agli occhi di analisti e strumenti di monitoraggio superficiali.

La tecnica si colloca tipicamente nelle fasi post-exploitation della kill chain, subito dopo l'esecuzione iniziale e prima delle attività di persistenza o command and control. L'unico software documentato nel dataset che la implementa è BPFDoor (S1161), che seleziona nomi da un pool hardcoded di dieci demoni Linux comuni per mimetizzare la propria presenza su host compromessi.

La simulazione di T1036.011 in un contesto di red team è concettualmente semplice ma richiede attenzione ai dettagli implementativi. Il principio operativo si basa sul fatto che il kernel Linux espone la regione arg_start-arg_end del processo (visibile in /proc/<PID>/stat) come memoria scrivibile dal processo stesso.

Un proof-of-concept minimale in C sfrutta direttamente argv[0] all'avvio del programma. Dopo aver salvato la lunghezza cumulativa originale degli argomenti, si azzera l'intera regione con memset(argv[0], 0, total_len) e si scrive la stringa di spoofing con strncpy(argv[0], "/sbin/udevd -d", total_len - 1). È fondamentale non eccedere la lunghezza originale, altrimenti si corrompe l'environment adiacente in memoria.

In Python il pattern equivalente si realizza con la libreria setproctitle (open source), che incapsula la logica di manipolazione di argv[0] e gestisce anche la primitiva prctl(PR_SET_NAME) per il nome del thread. Un'invocazione tipica è setproctitle.setproctitle("dbus-daemon --system") eseguita subito dopo l'avvio dello script. Per Go esiste una logica analoga tramite manipolazione diretta di os.Args[0] combinata con syscall a basso livello.

Una catena d'attacco realistica in laboratorio prevede tre passaggi. Prima si ottiene l'esecuzione iniziale, ad esempio tramite un payload dropped da una web shell in una VM di test. Il payload, all'avvio, invoca la routine di rewriting di argv[0] scegliendo un nome coerente con il contesto (un host di produzione ha tipicamente systemd-journald, dbus-daemon, rsyslogd attivi). Infine si valida l'efficacia della mimetizzazione confrontando l'output di ps auxf con quello di cat /proc//cmdline e cat /proc//comm: quest'ultimo, alimentato dalla struttura task_struct del kernel e non dalla memoria user-space, può divergere dal cmdline manipolato e diventare un tell-tale sign.

Per emulare specificamente BPFDoor in ambiente controllato si può utilizzare Atomic Red Team (open source), che include test procedurali per varie sottotecniche di masquerading, oppure costruire un binario custom che replichi il pool di dieci nomi hardcoded documentato. È essenziale eseguire questi test in VM isolate e ripulire gli artefatti al termine dell'esercizio, poiché la persistenza di processi con nomi spoofati può confondere anche gli operatori legittimi del laboratorio.

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.