|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2016
Messaggi: 6
|
[C/C++] Nascondere processo
Buonasera a tutti,
vorrei sapere come faccio a nascondere dalla lista dei processi di Windows un eseguibile scritto in C/C++. Se vi state chiedendo perché desidero nasconderlo la risposta è semplice: sto sviluppando un software di sicurezza informatica che dovrà essere in grado di scansionare qualsiasi programma giri sul pc. Ho quindi deciso di ampliare le funzioni anche per i software che non vengono visualizzati in lista processi. Il programma è infatti un semplice "Hello Word", che userò per i miei test. Ho fatto diverse ricerche online ma nessuna sembra risolva questo quesito. Ringrazio in anticipo chi vorrà dare il proprio contributo. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 8699
|
Argomento borderline per dire poco, ti sconsiglio di entrare nei dettagli. Parlando in modo generico, anche se un virus-rootkit riesce a nascondersi dalla lista dei processi del task manager non é invisibile agli occhi di chi ha un monitor per le API come CreateProcess, CreateWindow e così via, deve usarne una o più di una, quindi al tuo "software di sicurezza" non sfugge.
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Dec 2016
Messaggi: 6
|
Quote:
Grazie ancora! |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 8699
|
Ti invito ad una ricerca su MSDN. Puoi iniziare da qui:
https://msdn.microsoft.com/en-us/lib...(v=VS.85).aspx Puoi usare anche WMI se per te é più semplice.
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Dec 2016
Messaggi: 6
|
Quote:
E' possibile creare un monitor che legga le funzioni utilizzate dai vari programmi? Ad esempio posso scegliere di vedere quando viene utilizzato un printf("prova") in un programma? Oppure ci si limita a chiamate di sistema? Grazie! |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 8699
|
Spiegare cosa? Su MSDN trovi tutte le informazioni che cerchi comunque sì devi basarti sulle chiamate di sistema ma non capisco cosa c'entri il printf con la questione del processo.
__________________
. Thread Ufficiali: EasyCrypt ~ Old Files Manager ~ OSD Clock The real me is no match for the legend . |
|
|
|
|
|
#7 | |
|
Bannato
Iscritto dal: Nov 2014
Messaggi: 292
|
Quote:
![]() Comunque: cio' che facevo io era di creare una DLL anziche' un EXE, cosicche' rilevarla fosse un po' piu' difficile perche' un programma come Task Manager non bastava piu'. Poi mi sono evoluto e ho creato una DLL che appena caricata allocava un'area di memoria nel processo ospite, ci si ricopiava, e restituiva FALSE dalla DllMain cosi' da "fallire" il caricamento. La DLL vera e propria non veniva caricata, ma la copia in memoria rimaneva. Per quanto riguarda il modo in cui triggeravo il caricamento iniziale, ora purtroppo non ricordo cosa avevo arrangiato ma probabilmente installavo un qualche componente OLE che veniva usato da explorer.exe, cosicche' questi fosse il processo ospite. Poi pero' mi sono evoluto anche su questo e ho creato un installer che di fatto modificava explorer.exe aggiungendo sezioni di codice e dati che erano quelle della "DLL", che a quel punto non era piu' una DLL perche' veniva di fatto linkata in explorer.exe. Ho potuto fare questa roba perche' ero gia' abbastanza esperto del format PE/COFF, le cui specifiche ho appena ritrovato qui: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx Tutto cio' ovviamente funzionava solo su installazioni di Windows dove l'utente che eseguiva l'installer aveva la possibilita' di modificare explorer.exe, cosa che si e' protratta per molti anni vista la longevita' di XP e delle sue installazioni di default. Da notare che l'installazione di un componente OLE richiedeva invece meno permessi, l'utente che lanciava l'installer di solito poteva installarne per se' stesso anche senza essere amministratore (solo per se' stesso ovviamente, non per altri utenti). Per quanto riguarda l'intercettazione delle API, purtroppo non ho mai conosciuto a fondo il sopracitato WMI e non so esattamente a che serva. Io all'epoca usai sta roba qua: https://www.microsoft.com/en-us/rese...oject/detours/ |
|
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Nov 2014
Messaggi: 292
|
Quote:
Ora, tutta sta roba sono mie reminescenze di prima che passassi prima allo sviluppo web e poi a Linux, ossia almeno 5-6 anni fa. Nel frattempo non so piu' neanche a che versione siamo di Windows (la 10?), Windows non e' piu' su nessuno dei miei sistemi e non ho piu' idea di come funzioni. |
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Nov 2014
Messaggi: 292
|
Altra cosa. Se oltre ai processi vuoi enumerare anche tutte le DLL caricate nel sistema, questa API ti sara' fondamentale:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx Tuttavia non e' sufficiente poiche', come ho scritto sopra, non sarebbe stata in grado di enumerare le DLL che ho creato io: ne' quella che si ricopiava in memoria e poi falliva il caricamento, ne' quella che veniva linkata dentro explorer.exe. |
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Nov 2014
Messaggi: 292
|
Ah, e in tutto cio' non abbiamo neanche toccato tutto il discorso "drivers". Immagina se il modulo che "si ricopia in memoria e poi fallisce il caricamento" fosse un driver anziche' una DLL. A quel punto non esiste nessun approccio ragionevole per il rilevamento di un simile malware.
Tuttavia la situazione dei driver su Windows oggi potrebbe essere migliorata molto rispetto ad allora. Ricordo che gia' quando ancora arrangiavo porcate cominciava a essere obbligatoria la firma. |
|
|
|
|
|
#11 | |
|
Junior Member
Iscritto dal: Dec 2016
Messaggi: 6
|
Quote:
Ho fatto diverse ricerche e mi sembra di capire che scrivere un driver è paradossalmente più semplice ed inoltre tu mi confermi che renderebbe il compito ancor più arduo, quindi direi che è la soluzione ideale. Sbaglio oppure basta creare un nuovo driver e come codice inserisco il mio "Hello World" ? |
|
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Nov 2014
Messaggi: 292
|
Non ho idea di come tu abbia fatto a giungere alla conclusione che scrivere un driver e' "semplice".
|
|
|
|
|
|
#13 | |
|
Junior Member
Iscritto dal: Dec 2016
Messaggi: 6
|
Quote:
Inoltre ho trovato online diversi tutorial che spiegano come iniziare a far ciò e, che tu ci creda o no, in 10 minuti sviluppano un driver di prova (che non fa nulla di utile). Ti ricordo che il mio quesito non riguarda lo sviluppo di un driver reale ma la conversione di un normale "Hello World" in un driver. Tornando alla dll non mi è chiara una cosa: una volta che "converto" l'exe in dll posso aprire e chiudere il programma quando mi pare? Potrei utilizzarlo normalmente? Grazie! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:16.





















