In che modo il malware diventa codice eseguibile? [chiuso]

2

Sono un ingegnere del software e I ancora non capisco come funzioni il malware o quale sia un exploit in termini di ingegneria del software. In che modo i contenuti di un sito Web, ad esempio, o un allegato di file a un'e-mail, diventano codice eseguibile su un PC?

I formati di file come HTML, JPEG, MP3, PNG, BMP, ecc. sono tutti letti da un altro software e quindi dovrebbero essere solo in grado di fare ciò che quel lettore gli permette di fare. Qualcosa che legge un file JPEG può fondamentalmente accendere pixel usando determinati valori RGB in una finestra di visualizzazione; non c'è nulla nelle specifiche JPEG che dice "crea un file .exe e mettilo qui nel file system e poi eseguilo". Quindi, come fanno a corrompere un file JPEG per ottenerlo? Perché un lettore JPEG legittimo ha la capacità di eseguire codice arbitrario su un PC e in che modo questi bit vengono scritti sul PC?

Anche javascript, che è un linguaggio di scripting, è ancora letto da un interprete e non ha accesso diretto al file system dell'host - è in modalità sandbox e non può scrivere direttamente sul file system dell'host.

I moderni linguaggi di programmazione non hanno nemmeno accesso diretto alla memoria con puntatori come eravamo abituati a fare con C negli anni '80 e presumo che le vulnerabilità "sovraccarico di buffer" che esistevano nei vecchi tempi siano un ricordo del passato con i moderni Sistemi operativi e gestione della memoria hardware. Quindi, anche se volessi, non so come scriverei bit in un blocco di memoria a cui non avevo accesso legale, e anche se fossi riuscito a farlo, come avrei ingannato il sistema operativo nel trattare quei bit come codice eseguibile ed eseguirli?

Quindi, come fa esattamente un sito Web malvagio a creare un codice eseguibile su un PC moderno con un sistema operativo moderno?

    
posta user316117 15.05.2017 - 23:02
fonte

2 risposte

2

Molte delle domande nel post originale sono già state poste e risposte altrove su questo sito. Interi libri sono stati scritti su alcuni di questi argomenti.

I'm a software engineer and I still don't understand how malware works or what an exploit actually is in software engineering terms.

Se la definizione di ciò che un exploit è nel contesto della sicurezza del computer non è abbastanza chiara, può essere utile guardare esempi di codice di exploit. exploit-db è una buona risorsa per questo.

File formats like HTML, JPEG, MP3, PNG, BMP, etc, are all read by another piece of software and so should only be able to do what that reader allows it to do. Something that reads a JPEG file can basically light up pixels using certain RGB values in a display window; there's nothing in the JPEG spec that says "create a .exe file and put it here in the file system and then execute it". So how do they corrupt a JPEG file to achieve that? Why would a legitimate JPEG reader have the capacity to execute arbitrary code on a PC, and how would those bits get written to the PC?

Come iniettare codice eseguibile e dannoso in PDF, JPEG, MP3, ecc.

Come possono i normali file nascondere un virus?

È possibile che un file non eseguibile e di sola lettura esegua codice dannoso?

Come può esistere un virus in un'immagine?

Modern programming languages don't even do direct memory access with pointers like we used to with C in the 80's and I assume that the "buffer-overrun" vulnerabilities that existed in the old days are a thing of the past with modern OSes and hardware memory management. So even if I wanted to, I don't know how I would write bits into a block of memory I didn't have legal access to, and even if I managed to do that, how would I trick the OS into treating those bits as executable code and execute them?

Stack Overflow - Defeating Canaries, ASLR, DEP, NX

So how, exactly, does a nefarious website create executable code on a modern PC with a modern OS?

Come può un moderno sistema Windows / Linux essere compromesso da un overflow di heap in Chrome?

Sfruttamenti del browser: attacchi e difesa

L'attacco AnC

CWE-94: Controllo improprio della generazione di codice ("Iniezione di codice")

    
risposta data 16.05.2017 - 00:34
fonte
0

Un modo molto diffuso di sfruttare ad esempio jpeg-viewer e altri strumenti software innocui è quello di attivare un buffer overflow. E poi potresti fare dell'eserything ...

    
risposta data 17.05.2017 - 18:42
fonte

Leggi altre domande sui tag