
Una raccolta di campioni e materiale relativo all'iniezione di processi
Una raccolta completa di tecniche di process injection per Linux, che dimostra vari metodi per iniettare codice in processi in esecuzione. Questi esempi sono pensati per scopi educativi, ricerca sulla sicurezza e comprensione della manipolazione dei processi Linux a basso livello.
La process injection è una tecnica utilizzata per eseguire codice nel contesto di un altro processo. Sebbene spesso associata a malware, queste tecniche sono utili anche per:
Directory: ptrace/
Il classico metodo di process injection che utilizza la chiamata di sistema ptrace() per scrivere direttamente shellcode nella memoria di un processo e reindirizzarne l'esecuzione.
Caratteristiche Principali:
Caso d'Uso: Comprendere il controllo dei processi a basso livello e l'iniezione diretta di codice
Directory: ld_preload/
Interposizione di funzioni tramite la variabile d'ambiente LD_PRELOAD per caricare una libreria dannosa prima di tutte le altre librerie.
Caratteristiche Principali:
Caso d'Uso: Hooking di funzioni, monitoraggio di API, modifica del comportamento
Directory: proc_mem/
Scrittura diretta in memoria tramite l'interfaccia del filesystem /proc/<pid>/mem, combinata con ptrace per il controllo del processo.
Caratteristiche Principali:
Caso d'Uso: Iniezione rapida di memoria in blocco, bypassando i limiti tradizionali di ptrace
Directory: dlopen_inject/
Tecnica sofisticata che forza un processo in esecuzione a caricare una libreria condivisa dirottando l'esecuzione per chiamare dlopen().
Caratteristiche Principali:
Caso d'Uso: Iniezione persistente avanzata, manipolazione di librerie a runtime
# Compila l'iniezione ptrace
cd ptrace && make all
# Compila l'iniezione LD_PRELOAD
cd ../ld_preload && make all
# Compila l'iniezione /proc/mem
cd ../proc_mem && make all
# Compila l'iniezione dlopen
cd ../dlopen_inject && make all
Ogni tecnica segue un modello simile:
Avvia il processo vittima:
cd <tecnica>/victim-process
./sample
Annota il PID visualizzato
Esegui l'iniezione:
cd <tecnica>
sudo ./<iniettore> <PID> [argomenti aggiuntivi]
Osserva i risultati: Controlla l'output del processo vittima per l'esecuzione del codice iniettato
Consulta i singoli file README per le istruzioni specifiche di ciascuna tecnica.
Yama ptrace_scope: Limita ptrace agli utenti privilegiati
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
SELinux/AppArmor: Controlli di accesso obbligatori
Monitoraggio: Usa auditd per registrare i tentativi di ptrace e process injection
auditctl -a exit,always -F arch=b64 -S ptrace
Verifica dell'Integrità a Runtime: Controlla periodicamente la memoria dei processi
Firma del Codice: Verifica le firme delle librerie
/proc/<pid>/maps per regioni di memoria o librerie inatteselsof, pmap e utility di monitoraggio dei processiIMPORTANTE: Queste tecniche dovrebbero essere utilizzate solo in contesti autorizzati:
Questo repository è solo per scopi educativi e di ricerca. Gli autori non sono responsabili dell'uso improprio di queste tecniche. Ottieni sempre la dovuta autorizzazione prima di testare su qualsiasi sistema.
Errori di permesso negato:
sudo/proc/sys/kernel/yama/ptrace_scopeL'iniezione fallisce silenziosamente:
Segmentation fault:
Consulta i README delle singole tecniche per indicazioni specifiche sulla risoluzione dei problemi.
I contributi sono benvenuti! Aggiunte potenziali:
man 2 ptrace - Chiamata di sistema per il tracing dei processiman 5 proc - Documentazione del filesystem /procman 3 dlopen - Caricamento dinamico delle librerieVedi LICENSE.txt per i dettagli.
Questo software è fornito "così com'è" per scopi educativi. Usalo in modo responsabile ed etico. Ottieni sempre la dovuta autorizzazione prima di testare tecniche di sicurezza su qualsiasi sistema che non possiedi.
| Tecnica | Complessità | Furtività | Persistenza | Velocità | Funziona su Processo in Esecuzione |
|---|
| ptrace | Media | Bassa | No | Media | Sì |
| LD_PRELOAD | Bassa | Molto Bassa | No | Veloce | No |
| /proc/mem | Media | Bassa | No | Veloce | Sì |
| dlopen | Alta | Media | Sì | Media | Sì |