Scrivere malware in java?

6

Per me, sembrava che il malware non potesse mai essere scritto in java. Chi mi ha insegnato java ha detto che era "sicuro" e non permetteva "accesso a basso livello" come c, c ++.

Ma ho scoperto che può essere fatto - link

note sulla stessa cosa - link

Ecco la mia domanda - Possiamo usare java per eseguire TUTTE le "cose brutte / attività richieste dal malware" che c, c ++, può fare?
Se questo è il caso, allora possiamo dire che java è anche un bene per la scrittura di malware? Dopo tutto, la maggior parte dei criminali vorrebbe che il loro malware fosse multipiattaforma.

    
posta FirstName LastName 08.01.2013 - 17:27
fonte

4 risposte

8

Il codice Java può invocare codice nativo (ad esempio codice scritto in C o qualsiasi altra cosa e compilato in una sequenza di codici opzionali della CPU) attraverso uno standard interfaccia . Java può in realtà scrivere un file DLL da qualche parte (come un mucchio di byte) e caricarlo, quindi tutto il codice nativo può fare, quindi anche Java.

Java offre anche una ricca libreria standard che consente di leggere e scrivere file in modi arbitrari.

Le parti difficili per il malware basato su Java sono:

  1. È necessaria una VM Java. Java non è installato di default in molti sistemi operativi moderni.
  2. La Java VM tende alle applet Java sandbox. Per eseguire il codice nativo o accedere a file arbitrari, un'applet Java deve richiedere l'autorizzazione, che implica firme digitali e certificati che possono essere rintracciati al perpetratore. O deve essere sfruttato un errore di escape sandbox specifico; tali errori vengono scoperti regolarmente, ma sono anche corretti con alacrità encomiabile.
  3. Le implementazioni Java VM esistenti sono grasse. Sono ottimizzati per le grandi applicazioni che utilizzano comunque molta RAM, quindi qualsiasi codice Java ha un ingombro di memoria minimo. Il malware di solito preferisce l'appariscenza.
  4. Le implementazioni di Java VM sono dotate di strumenti di debug avanzati che consentono il collegamento a una VM in esecuzione e l'ispezione di ciò che accade al suo interno. Questo può aiutare a ripulire un'infestazione da malware basata su Java.

Questi sono i motivi per cui Java non sarà la migliore lingua mai vista dagli autori di malware. Inoltre, anche se Java è nominalmente portatile, il malware multipiattaforma è un obiettivo inafferrabile, perché il malware tende a fare cose a un livello piuttosto basso - cioè, un livello che è molto specifico per il sistema operativo. Modificare il file /etc/passwd è una cosa molto maliziosa da fare su un sistema simile a Unix; ma non avrebbe alcun impatto su Windows, che non ha un file /etc/passwd . Pertanto, gli autori di malware non sono incentivati a utilizzare Java.

(Tutto ciò si applicherebbe quasi invariato a una domanda sulla scrittura di malware in C # /. NET + SilverLight.)

    
risposta data 08.01.2013 - 18:55
fonte
6

Il malware ha così tante forme e dimensioni, questa domanda è difficile da rispondere. Scrivere malware in Java è facile come;

(new File("/path/to/important/file")).delete();

Posso scrivere un'applicazione java che ruba i tuoi dati? Facilmente. Potrei scrivere un rootkit Linux in Java? Quasi certamente no, ma questo non mi impedisce di fare tutte le cose che posso fare con le autorizzazioni con cui JVM sta girando.

Quindi in questo senso, sì puoi scrivere malware in Java, ma saresti un po 'più limitato di se stessi scrivendo in un linguaggio di sistema come C; un keylogger è molto più difficile da scrivere in Java rispetto a C, e nasconderlo bene è probabilmente impossibile.

    
risposta data 08.01.2013 - 18:21
fonte
4

Forse stai fraintendendo cosa si intendeva quando hai sentito che java era più sicuro. Intendevano dire che la tua applicazione è più sicura o che il malware non può essere scritto in questa lingua?

In passato sono state scoperte numerose vulnerabilità nella java api (e successive alle patch) che permettevano a un programma java di eseguire codice dannoso senza il consenso dell'utente. Questo accade spesso tramite applet poiché molti browser abilitano java.

Vedi il database CVE dove potresti trovare alcune precedenti vulnerabilità java.

Tuttavia forse queste persone hanno significato che le tue applicazioni possono essere scritte per essere più sicure dagli hacker. In questo senso è parzialmente vero. Ad esempio, le applicazioni java (di solito) non possono essere sfruttate tramite attacchi buffer overflow poiché lo stack è gestito da jvm. Penso che questo fosse il significato quando ti è stato detto che java è più sicuro.

Qui sono ulteriori informazioni sul perché la programmazione in Java potrebbe essere sicuro.

    
risposta data 08.01.2013 - 17:47
fonte
4

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.

    
risposta data 08.01.2013 - 18:26
fonte

Leggi altre domande sui tag