Tutti i programmi in esecuzione su un computer vengono visualizzati nella scheda Processi in Task Manager? [duplicare]


Risposte:


48

Esiste una classe di malware che può nascondersi completamente dal sistema operativo noto come rootkit .

I rootkit vengono utilizzati per nascondere l'evidenza di altri malware durante il lavoro e sono integrati in modo molto approfondito nel sistema operativo. Grazie alla loro profonda integrazione sono in grado di manipolare al volo elenchi di processi, tabelle di filesystem e altre importanti strutture.

Manipolando le strutture dei filesystem in memoria, possono restituire risultati falsi o fuorvianti per le directory, in particolare non mostrando i file relativi al malware principale stesso. I file sono lì e l'avvio in un sistema operativo non infetto come un LiveCD di Linux mostrerà i file, poiché devono essere archiviati da qualche parte.

Allo stesso modo, i rootkit possono semplicemente eliminare alcuni processi dalla segnalazione a programmi come Task Manager. Il nucleo del sistema operativo li conosce, come è necessario per programmarli, è stato appena bloccato dal far conoscere al mondo esterno.


1
Sono curioso, come riescono a raggiungere quell'impresa? Sembra qualcosa che Windows non dovrebbe consentire in primo luogo. Voglio dire, anche "mostrare il processo da tutti gli utenti" sono meno "nascosti" e più "categorizzati"
Raestloz,

2
@Raestloz: ottengono l'impresa ottenendo l'accesso come root e riscrivendo Windows per rimuovere i bit che lo impediscono. Ho sentito che alcuni di loro lo fanno "avviando" nel rootkit come un sistema operativo, modificando Windows, e quindi eseguono Windows, quindi né l'utente né Windows hanno idea che qualcosa sia insolito.
Mooing Duck,

3
beh, forse qualcuno dovrebbe inventare un antivirus che gira su BIOS lol
Raestloz,

1
@zyboxenterprises Gli aggiornamenti di Windows reali sono firmati e non possono essere falsificati, ma è possibile creare solo la finestra di dialogo della richiesta di riavvio o indurre l'utente a riavviare in altro modo o forzare un riavvio ( shutdown -r -t 0, non sono richiesti privilegi) oppure attendere il riavvio dell'utente.
gronostaj,

4
@zyboxenterprises Forse, forse no;) Flame ha sfruttato Windows Update per i propri scopi falsificando un certificato, ma quella vulnerabilità è già stata patchata. Non ci sono exploit WU noti pubblicamente, ma ciò non significa che non ne esistano. Anche quello usato da Flame non era conosciuto prima. (vedi attacco di 0 giorni
gronostaj,

16

Tutti i normali programmi appariranno lì, ma ...

  • senza un account amministratore sarai in grado di vedere solo il tuo processo (gli account amministratore possono scegliere di visualizzare i processi di tutti)
  • i rootkit proveranno a nascondere la sua esistenza nascondendo il suo processo dall'elenco, compromettendo il task manager (quindi non lo mostra), nascondendosi all'interno di un altro spazio di indirizzi del processo ...
  • i servizi verranno eseguiti come thread nell'ambito di un svchostprocesso (nella maggior parte dei casi), quindi non esiste un punto facile in cui il servizio è in esecuzione in una determinata istanza svchost.

Esistono alcuni programmi progettati per rilevare i rootkit. Lo fanno controllando ad esempio l'elenco dei thread programmati per l'esecuzione e l'elenco dei processi nel sistema (un thread che non appartiene a nessun processo è un segno di un processo nascosto) o l'elenco dei file visti ad alto livello, e confrontandolo con i file che legge manualmente dalla partizione del disco.

Tuttavia, una volta infettato, è possibile che un virus ne nasconda la presenza così bene che è quasi impossibile da rilevare. Questi sono generalmente chiamati APT (minaccia persistente avanzata).


2
Alcuni di questi punti sono in qualche modo invalidati da Sysinternals Process Explorer : gli utenti con limitazioni possono vedere i nomi dei file dei processi eseguiti da un altro utente e le descrizioni degli svchosts elencano ciò che ospitano.
Kirb,

Intendevi scrivere "minaccia" o intendi "filo"? In realtà funziona lì;)
Konerak

In che modo un rilevatore di rootkit enumera i thread o i processi? Se è un modo tipico / WinAPI, un rootkit non può manipolare l'enumerazione e il rilevatore rootkit non lo noterà?
Ray

1
@DebugErr, guardano ad alto e basso livello, quindi riportano le differenze (a volte producono falsi positivi, come quando un file è stato cambiato nel mezzo). Con il controllo della lista delle discussioni programmate per l'esecuzione mi riferivo alla lista doppio-linked utilizzato dal sistema operativo di pianificazione cioè. completamente di basso livello: se non è presente, non ottiene una fascia oraria (althogh ci sono più posti da controllare, come l'ISR).
Ángel,

5

sfondo

Il sistema operativo ha un componente noto come kernel. Una delle (molte) responsabilità del kernel è la gestione della memoria di sistema (sia fisica che virtuale).

Come parte di ciò, il kernel divide la memoria disponibile in due distinte regioni note come modalità utente e modalità kernel. Il kernel e i driver condividono la memoria in modalità kernel e i programmi utente e i componenti di sistema meno critici risiedono nell'area di memoria in modalità utente.

I processi in modalità utente non possono generalmente comunicare con quelli in modalità kernel, tranne che attraverso canali appositamente designati e controllati.

Per completezza, è opportuno ricordare che anche i processi in esecuzione in modalità utente sono isolati l'uno dall'altro, ma possono comunicare più liberamente tra loro utilizzando le funzionalità fornite dal sistema operativo a condizione che i programmi siano progettati per farlo.

Processi

Il kernel offre la possibilità di avviare i processi in modalità utente. Quando viene creato un processo, questo viene aggiunto a un elenco interno di processi attualmente esistenti. Quando un programma come Task Manager richiede un elenco di processi, riceve un sottoinsieme delle informazioni in questo elenco, filtrate per autorizzazioni utente.

Un modo per malware come un rootkit di nascondere la sua esistenza è di rimuoverlo direttamente da questa tabella. Fatto ciò, può ancora essere eseguito, ma non apparirebbe più in un elenco di processi ottenuto con mezzi normali.

Dato che questi processi esistono ancora ed eseguono, possono essere trovati esaminando altre strutture di dati del kernel, come le tabelle di gestione, che contengono informazioni sulle risorse che un processo ha aperto (ad es. File) o esaminando le allocazioni di memoria da cui sono più difficile da nascondere senza ostacolare la capacità di funzionamento del software.

Driver in modalità kernel

Driver in modalità Kernel usati per molte cose tra cui l'interazione con dispositivi hardware fisici. Eseguono sotto il controllo del kernel se necessario, ma poiché non sono un processo in modalità utente non compaiono nella tabella dei processi. e quindi non apparirà in Task Manager o altri strumenti interessati esclusivamente ai processi.

Essere in grado di eseguire il codice in modalità kernel è un passo importante per poter nascondere efficacemente l'esistenza dell'esecuzione del codice. In circostanze normali, Windows richiede che il codice in modalità kernel sia firmato per essere eseguito, quindi potrebbe essere necessario che il malware utilizzi exploit nel sistema operativo, altri software o persino social engineering per arrivare qui, ma una volta che il codice viene eseguito in modalità kernel, nascondendosi diventa più facile.

Sommario

In sintesi, è possibile nascondere le prove dell'esistenza di un processo, è probabile che ci sia sempre qualche indicazione dell'esistenza del processo, perché generalmente dovrà sempre usare una qualche forma di risorsa per fare qualunque cosa sia stata progettata, quanto sia difficile tale rilevamento dipende dal malware specifico.


3

I virus sono piuttosto sofisticati al giorno d'oggi. Ci può essere un virus sul computer, ma non rivela in Task Manager . È possibile che Task Manager (e altre parti del sistema operativo) vengano compromessi, nascondendo così il virus. Ad esempio, un rootkit.

Se stai pensando di fare affidamento su Task Manager per verificare la presenza di virus, allora dovresti smettere ora. Installa un antivirus e talvolta anche un antivirus non riesce a rilevare un virus sul tuo PC.


0

Esiste un altro modo semplice per "nascondere un virus" a parte altri già ben spiegati in altre risposte:

Una DLL compromessa (libreria collegata dinamicamente)

Un gran numero di programmi - quasi tutti quelli poco banali - richiedono una o più DLL per funzionare. Alcuni appartengono al sistema operativo stesso (ad esempio hal.dll, che impedisce l'accesso all'hardware per Windows), altri sono utilizzati da un solo programma, suddiviso in più piccoli pezzi (un file .exe e più file .dll con funzionalità di base, plugin ecc.) Non riesci a far funzionare il tuo virus tutto il tempo come un normale processo o servizio, ma il tuo virus sarà davvero difficile da trovare, poiché sembrerà un programma o un componente del programma completamente innocente.

Ulteriori letture: http://msitpros.com/?p=2012


E c'è una cosa molto allettante in questo tipo di produzione di virus: ci sono tonnellate di siti Web che offrono un download gratuito (non richiede pagamento) di dlls che per questo o per quel motivo potrebbero non essere presenti sul tuo computer. Poiché la possibilità di confrontare i checksum dell'originale e del nuovo file .dll è molto limitata e non interessa quasi a nessuno, i virus DLL possono entrare e rimanere nel sistema per lungo tempo inosservati (a meno che, ovviamente, un programma antivirus rilevi loro e l'utente sono d'accordo con la cancellazione - vedi già lo schema).

Dalla domanda presumo che parliamo di Windows qui, ma questa tecnica potrebbe benissimo applicarsi anche ad altri sistemi operativi.


0

TL; DR: Task Manager di Windows è piuttosto limitato in ciò che può fare e * non mostrerà mai tutti i processi in esecuzione sul tuo sistema. Vuoi una prova? Contare (approssimativamente) la quantità di RAM utilizzata dai processi mostrati in Task Manager e confrontarla con l'utilizzo della RAM del sistema; dovresti avere almeno 100 MB di RAM non contabilizzati, e talvolta sale a circa 1 GB, a seconda di cosa stai usando il sistema. Le schede grafiche possono anche prendere un po 'di memoria dalla RAM insieme alla propria RAM GDDR. *

Per espandere la risposta di Pavel Petman, potrei aggiungere che molti cheat engine sofisticati per i giochi si basano sull'iniezione di codice nelle DLL dei giochi che ne abilitano i cheat.

Questo tipo di compromissione è piuttosto difficile da rilevare e la stessa tecnica può essere applicata in questa domanda. Se, per esempio, un virus vuole passare inosservato, può rappresentare un aggiornamento di Windows del tipo che si estrae nelle directory di sistema, il virus potrebbe sovrascrivere un file di sistema critico. La maggior parte dei programmi antivirus non rileverà questo tipo di virus, il che significa che il virus può continuare a iniettare il codice del virus nelle DLL critiche di Windows (e anche .exes).

Quando un mio cliente parla di comportamenti insoliti, eseguo sempre Process Explorer (download da Microsoft) per rilevare eventuali virus in esecuzione. Process Explorer può dire esattamente quali processi sono in esecuzione (anche quelli che non sono in Task Manager) e anche quali moduli DLL stanno utilizzando.

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.