Analisi del Malware
Anno Accademico: 2024/2025 - Docente: Marco Cesati ATTENZIONE: NON EROGATO IN QUESTO ANNO ACCADEMICO!
Insegnamento da 6 CFU dell'ordinamento DM270/2004
Primo e Secondo anno del corso di Laurea Magistrale in Ingegneria Informatica
Informazioni generali sull'insegnamento
Analisi del Malware (6 CFU) è stato istituito nell'A.A. 2020/21 ed è stato erogato per la prima volta nell'A.A. 2021/22.
Svolgimento
23 settembre 2024 - 18 gennaio 2025 (primo semestre)
Il corso viene erogato ad anni alterni in avvicendamento con l'insegnamento di Sistemi Embedded e Real-Time (6 CFU). In pratica, nell'A.A. 2024/25 verrano erogate le lezioni di SERT ma non quelle di AMW; nel successivo anno accademico verranno erogate le lezioni di AMW ma non quelle di SERT. Le sessioni di esami per entrambi i corsi si svolgeranno regolarmente in tutti gli anni accademici.
Obiettivo degli insegnamenti
L'insegnamento si propone di fornire agli studenti gli strumenti teorici, metodologici e pratici che consentono l'analisi di programmi "malevoli" in formato eseguibile il cui codice è potenzialmente nascosto, offuscato o protetto. Con riferimento alle linee guida riportate nel documento: "ACM/IEEE-CS- Computer Science Curricula 2013", il corso contribuisce a coprire le seguenti aree e relativi obiettivi: Operating Systems (OS), Architecture and Organization (AR), Systems Fundamentals (SF).
Al termine dell'insegnamento lo studente sarà in grado di classificare i diversi tipi di malware e di saper valutare l'utilizzo di diverse tecniche di analisi per ricostruire il funzionamento e le operazioni di un qualsiasi programma, anche non preventivamente noto. Sarà inoltre in grado di applicare tecniche basate su sandbox, monitor, disassemblatori e debugger, superando eventuali meccanismi di protezione ed offuscamento ed inibendo i meccanismi di comunicazione e replicazione. Saprà integrare le varie e diverse conoscenze richeste dal lavoro di analisi dei programmi e formulare giudizi di merito sull'impatto e la pericolosità di programmi malevoli nei sistemi informatici interessati. Sarà in grado di comunicare efficacemente con i responsabili dei sistemi informativi, anche se non specializzati nel campo della sicurezza informatica. Sarà infine in grado di aggiornare autonomamente le proprie conoscenze per tenere conto della rapidissima evoluzione della tecnologia del malware.
Programma sintetico
Tecniche di base di Reverse Code Engineering "black box" e "white box".
Analisi statica del codice.
Uso di macchine virtuali.
Linguaggio Assembly Intel x86.
Utilizzo di Ghidra.
Ricostruzione di un programma ad alto livello dalle istruzioni Assembly.
Esercizi di analisi statica di malware per Windows.
Metodologia di RCE "gray box".
Uso di un debugger per l'analisi del codice.
Utilizzo di OllyDbg per l'analisi di eseguibili per Windows.
Funzionalità del malware.
Comportamento generale.
Operazioni di base: lancio, codifica dei dati, comunicazioni.
Meccanismi di protezione anti-RCE: anti-disassembler, anti-debugger, anti-sandboxing.
Programmi pacchettatori e contromisure.
Casi speciali: analisi di shellcode e analisi di codice ad oggetti.
Pre-requisiti
Gli insegnamenti sono progettati per gli studenti del primo o secondo anno del corso di Laurea Magistrale in Ingegneria Informatica. Studenti di altri corsi di laurea magistrale sono ovviamente accolti con piacere.
Affinché le prove d'esame siano legalmente valide l'insegnamento deve essere inserito nel piano di studi valido per l'Anno Accademico corrente.
Iscrizione
Per poter sostenere le prove di verifica e di esame è necessario iscriversi all'insegnamento, sempre prima della consegna del primo elaborato personale.
Sistema di gestione online dell'insegnamento
Questo insegnamento fa uso di un sistema software (G.O.C.U.) per la gestione delle iscrizioni all'insegnamento e le prenotazioni alle prove di esame (entrambe le cose sono sempre obbligatorie).
Si deve accedere alla piattaforma GOCU per iscriversi all'insegnamento (è necessario indicare un indirizzo email valido, vedi la sezione sulle 'regole' in GOCU) e per prenotarsi alle prove d'esame. Al termine della procedura di iscrizione si ottiene il proprio codice studente (valido per l'anno accademico 2024/2025) necessario per accedere all'area studenti.
Il sistema:
permette di prenotarsi alle prove di esame ed invia un'email di conferma,
invia un'email con l'esito della prova non appena il docente pubblica i risultati,
riassume l'esito di tutte le prove di esame sostenute,
se necessario calcola la media delle prove e mostra un eventuale voto utile alla verbalizzazione,
permette di richiedere un nuovo invio del vostro codice studente (ad esempio in caso di smarrimento).
ATTENZIONE!
Non è possibile registrarsi su GOCU con indirizzi di posta elettronica di tipo "@students.uniroma2.eu", perché il relativo server rifiuta sistematicamente tutti i messaggi spediti da GOCU
Talvolta i messaggi di posta elettronica provenienti da GOCU sono identificati come "spam" e finiscono quindi automaticamente in una cartella diversa dalla "inbox", oppure sono semplicemente cancellati. Apparentemente questo si verifica più frequentemente con il provider "hotmail"
La procedura di registrazione richiede la ricezione di un codice di conferma da parte del sistema GOCU via posta elettronica: se lo studente non inserisce il codice di controllo ricevuto su GOCU entro 24 ore dall'iscrizione, il sistema considera l'iscrizione non avvenuta e cancella completamente i dati immessi dallo studente.