Puoi scrivere virus relativi al sistema operativo usando linguaggi di alto livello come Python

0

È risaputo che i virus del sistema operativo sono comunemente scritti in linguaggi di basso livello come C o C ++ che richiedono l'accesso diretto al kernel della CPU, mi chiedo solo se è possibile che i virus possano essere scritti in alto linguaggi di livello come Python o Java che non hanno tanto accesso al kernel della CPU ???

    
posta Computernerd 16.04.2014 - 17:36
fonte

3 risposte

10

Sì, il malware esiste in tutti i tipi di lingue. Spesso, però, alcuni dei bit più critici di molti exploit sono scritti non in C o C ++, ma piuttosto direttamente nel codice macchina, assemblati con cura spesso a mano. Questo potrebbe essere l'unico desiderio di ottenere il dimensionamento e l'allineamento corretti per quello che stai cercando di fare.

La distanza dal "metallo" è una questione di astrazioni e ipotesi.

Scrittura nel codice macchina non utilizza astrazioni e non crea presupposti.

La scrittura in assembly fornisce un certo livello di astrazione, ma ora hai a che fare con le ipotesi fatte dall'assemblatore. Quindi il codice potrebbe non essere allineato come vuoi, ma le istruzioni saranno prevedibili.

Scrittura in C aggiunge un altro livello di astrazione, ma ora sei limitato ai tipi di codice assembly che il compilatore C produrrà.

Scrivere in C ++ aggiunge un sacco di astrazione, in particolare per quanto riguarda la gestione della memoria e le chiamate di funzione. Ora il tuo codice potrebbe essere riorganizzato un po 'e potresti ottenere più codice nel tuo file binario di quello che hai effettivamente scritto. A seconda del target, questo non è in genere un problema, ma molti programmi (notoriamente il kernel di Linux, ma anche altri) evitano il C ++ perché non vogliono alcuna imprevedibilità.

Scrivere in Python cambia le cose in modo abbastanza significativo. Ora non stai nemmeno producendo il codice macchina, stai producendo le istruzioni per un interprete. Il modo in cui il codice viene eseguito dipende dalla versione e dalla build dell'interprete installato e le tue ipotesi devono essere ottimizzate di conseguenza. Puoi usarlo solo dove è installato un interprete python e solo in contesti in cui Python può essere invocato.

Utilizzi lo strumento per il lavoro. Molti exploit coinvolgono persino il codice Bash, che è molto meno capace di Python, ma è semplice ed è disponibile. Se sai davvero cosa stai facendo, allora questa non è nemmeno una domanda su cui vale la pena di riflettere; usi lo strumento che ottiene il risultato che stai cercando.

    
risposta data 16.04.2014 - 19:08
fonte
3

Puoi scrivere un virus in qualsiasi lingua. La condizione è la vulnerabilità del sistema operativo che viene sfruttata e gli strumenti linguistici disponibili per trarne vantaggio.

Le lingue di "alto livello" non sono "ulteriori" dal kernel del sistema operativo, ma piuttosto sono più astratte dal punto di vista del programmatore dal kernel. Anche Python può accedere a socket di rete, indirizzi di memoria e manipolare i buffer.

    
risposta data 16.04.2014 - 17:47
fonte
0

Se per "virus" intendi "codice autoreplicante", ovviamente può essere scritto in qualsiasi lingua.

C'era una volta, ho scritto un virus che si propagava tramite Pascal come un esperimento educativo per mostrare proprio questo punto, in realtà. Consisteva in una subroutine eseguibile. Che cosa ha fatto la subroutine:

  1. cerca nel disco locale i file con estensione .pas
  2. copia il file .pas in .clean, quindi apri il file .pas per modificarlo
  3. verifica che il file .pas non abbia alcuna subroutine chiamata "infettare" o esci
  4. trova una subroutine di grandi dimensioni e aggiunge una chiamata a "infettare".
  5. si aggiunge alla fine, come una subroutine chiamata "infettare".

Quando è stato eseguito, si è copiato su qualsiasi file .pas trovato localmente, quindi, se il file si spostava in un'altra posizione ed era infetto, si propagava in altri file.

Era grande, rumoroso e ovvio (in realtà era una caratteristica) e scrivere in un linguaggio di alto livello probabilmente avrà molte delle stesse caratteristiche.

Penso che se volessi un worm, probabilmente lo scriverei in perl. Ma poi, scrivo tutto in perl.

    
risposta data 29.04.2015 - 17:01
fonte

Leggi altre domande sui tag