Un pezzo di malware Java può probabilmente eseguire la maggior parte, se non tutte, delle funzionalità che un pezzo di malware C può eseguire.
Tuttavia, ci sono alcune caratteristiche del linguaggio Java che probabilmente rendono gli autori di malware inclini a personaggi come C.
Java Virtual Machine richiesta
Un programma Java non può essere eseguito su un computer a meno che una Java Virtual Machine (JVM) sia installata su quel computer. La scrittura del malware in Java ti limita automaticamente da qualsiasi target che non esegue una JVM.
Questo è diverso da C o da altri linguaggi che possono essere compilati su un eseguibile nativo che verrà eseguito sul sistema di destinazione senza alcun software aggiuntivo.
Ciò non esclude completamente Java come linguaggio di programmazione di scelta per i produttori di malware, specialmente se stavano pianificando di diffondersi tramite uno dei tanti Vulnerabilità del Java runtime environment
Limitazioni di Java Virtual Machine
Questo requisito JVM può anche rendere molto più difficile il nascondiglio di un'applicazione Java dannosa. Si basa sulla JVM installata dell'utente; tutto quello che devono fare è rimuoverlo e fermeranno il malware nelle sue tracce.
La compatibilità multipiattaforma non è così semplice
A questo punto potresti pensare "Sì, ma non ne vale la pena, per far funzionare magicamente il tuo malware su tutte le piattaforme?"
Sebbene Java sia effettivamente compatibile su più piattaforme (purché sia disponibile una JVM), ciò potrebbe non significare necessariamente ciò che pensi che significhi.
Ad esempio, una caratteristica comune del malware è la capacità di avviarsi all'avvio del sistema operativo. Java non fornisce un metodo cross-platform startWhenComputerStarts
. Quindi, questo dovrebbe ancora essere implementato separatamente per ogni piattaforma.
Un sacco di malware userà bug o funzionalità specifici della piattaforma per nascondersi, lanciarsi sui dati di avvio e snarf degli utenti. Quindi l'autore dovrebbe comunque fare questo lavoro per ogni piattaforma!
Inoltre, non dimentichiamo che il codice C può essere compilato su più piattaforme diverse. Il vantaggio di Java rispetto a C è che può essere compilato una sola volta ed eseguito ovunque, ma lo stesso codice C può ancora essere eseguito su piattaforme diverse - solo con un ulteriore passaggio.
Se ci pensi, considerato che il malware viene spesso rilevato attraverso le firme, sarebbe più sensato che l'autore scrivesse singoli pezzi di malware per ogni piattaforma. Rendere il rilevamento meno probabile.