come funziona il malware senza file su Linux?


10

Comprendo la definizione di malware senza file:

Codice dannoso che non è basato su file ma esiste solo in memoria ... Più in particolare, codice dannoso senza file ... si aggiunge a un processo attivo in memoria ...

Qualcuno può spiegare come funziona questo accodarsi a un processo attivo in memoria?

Inoltre, quale protezione / kernel (hardening) è disponibile contro tali attacchi?


Ad esempio, sfruttando un buffer overflow in un'applicazione di rete e quindi scaricare codice dannoso che viene eseguito all'interno dell'applicazione e si diffonde attraverso la rete. Nessun file coinvolto. La seconda parte della domanda è molto ampia, equivale essenzialmente a "quali contromisure esistono contro il malware"?
Dirkt,

È possibile rispondere meglio a questa domanda all'indirizzo https://security.stackexchange.com/ .
rubynorails

@rubynorails - Sono interessato solo alle risposte specifiche di Linux. SecuritySE è generale. Se richiedo una risposta specifica per Linux, mi invieranno qui.
Martin Vegter,

Risposte:


6

Il malware senza file attacca l'obiettivo sfruttando una vulnerabilità, ad esempio nel plug-in Flash di un browser o in un protocollo di rete.

Un processo Linux può essere modificato usando la chiamata di sistema ptrace(). Questa chiamata di sistema viene generalmente utilizzata dai debugger per ispezionare e gestire lo stato interno del processo di destinazione ed è utile nello sviluppo del software.

Ad esempio, consideriamo un processo con PID 1234. L'intero spazio degli indirizzi di questo processo può essere visualizzato nello pseudo file system /procnella posizione /proc/1234/mem. È possibile aprire questo pseudofile, quindi collegarlo a questo processo tramite ptrace(); dopo averlo fatto, è possibile utilizzare pread()e pwrite()scrivere nello spazio del processo.

char file[64];
pid = 1234;

sprintf(file, "/proc/%ld/mem", (long)pid);
int fd = open(file, O_RDWR);
ptrace(PTRACE_ATTACH, pid, 0, 0);

waitpid(pid, NULL, 0);
off_t addr = ...; // target process address

pread(fd, &value, sizeof(value), addr);
// or
pwrite(fd, &value, sizeof(value), addr);

ptrace(PTRACE_DETACH, pid, 0, 0);
close(fd);

(Codice preso da qui . Un altro documento su un exploit ptrace è disponibile qui .)

Per quanto riguarda la difesa orientata al kernel contro questi attacchi, l'unico modo è installare patch del fornitore del kernel e / o disabilitare il particolare vettore di attacco. Ad esempio, nel caso di ptrace è possibile caricare un modulo di blocco ptrace nel kernel che disabiliterà quella particolare chiamata di sistema; chiaramente questo rende anche impossibile utilizzare ptrace per il debug.


Proprio come l'altra risposta , anche questa è obsoleta - come spiegato qui non è più necessario avviare un processo per leggere o scrivere sulla sua /proc/PID/mem. Spero che tu sia meno refrattario dell'altro individuo ad aggiornare e correggere la tua risposta, invece di perpetuare miti e disinformazione.
seleziona il

... che in questo caso può avere conseguenze, poiché le persone possono erroneamente supporre che, seguendo un processo, possono impedire ad altri processi di leggere la sua memoria.
seleziona il

@pizdelect Grazie per il link. Sarebbe bene se aggiungi il contenuto come un'altra risposta.
dr_

No, non aggiungerò un'altra risposta. Mi aspetto che aggiusti il ​​tuo.
seleziona il

Ricorda che puoi modificare anche le risposte di altre persone. Sembra che tu abbia una conoscenza migliore di me su questo particolare argomento, quindi sei invitato a farlo.
dr_

1

Quando si riesce a arrestare in modo anomalo un processo, è possibile che il processo inserisca dati nella memoria. Un modo molto popolare per farlo è usare gli overflow del buffer .

Come funziona ? Sai, ad esempio, che un processo è in ascolto sulla porta x e ha un buffer per una determinata funzione che è, diciamo, grande 15 byte. Questa funzione viene chiamata con 15 byte di dati + n byte (il codice da eseguire). Se il programma non convalida correttamente i dati, sovrascriverà la memoria adiacente con il codice e quindi il codice risiederà nella memoria. Se riesci a ottenere questo codice da eseguire, sei il proprietario del sistema. Esistono limitazioni, ad esempio, un processo non può scrivere in memoria al di fuori del suo spazio allocato .

Esistono lunghi elenchi di vulnerabilità su tutti i sistemi operativi in ​​cui i sovraccarichi del buffer consentono ai cracker di iniettare dati nella memoria del target.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.