Sicurezza Informatica

Docente: Prof. Danilo Bruschi

AA 2011/2012

Contenuti

News

Descrizione del corso

In questo corso saranno analizzate approfonditamente una serie di vulnerabilità presenti nei sistemi informatici a livello di sistema operativo ed applicazioni web e si analizzeranno le tecniche utilizzate per lo sfruttamento di tali vulnerabilità ai fini dell'accesso non autorizzato nei sistemi informatici. La trattazione sarà particolarmente articolata e approfondita al fine di consentire allo studente di poter cogliere appieno l'importanza della problematica trattata ed i suoi risvolti. Particolare enfasi verrà posta sugli aspetti pratici dei vari problemi trattati senza ovviamente trascurare le implicazioni teoriche ad essi correlate. Viste le modalità di svolgimento del corso e delle prove d'esame si incoraggiano vivamente gli studenti interessati al corso a frequentarne assiduamente le lezioni.

Logistica e organizzazione

Le lezioni del corso si terranno nell'aula 5 di Via Comelico dalle 10,30 alle 13.30 il giovedì. Durante il corso si terranno anche delle prove intermedie, che si svolgeranno in date da concordare con gli studenti. Al corso sono riconosciuti 6 CFU, per un carico di studio complessivo di 150 ore di cui 47 di didattica e prove intermedie e 100 di studio. Qualora lo studente non sia in regola con i prerequisiti, questo numero di ore dovrà essere opportunamente adeguato. Gli studenti che intendono seguire il corso sono invitati a installare sul proprio PC le utility (apt-get install binutils) necessarie alla programmazione GAS, che dovranno essere disponibili sin dalla prima lezione.

Obiettivi Formativi

Al termine del corso lo studente che avrà superato con profitto l'esame sarà in grado di:

Prerequisiti

Al fine di poter trarre il massimo profitto dal corso gli studenti interessati a frequentarlo devono possedere i seguenti requisiti:

Studenti che NON posseggono questi requisiti possono comunque seguire il corso ma dovranno autonomamente provvedere al recupero delle suddette nozioni e capacità.

Programma del corso

  1. Introduzione alla programmazione assembler IA-32

    • Richiami sull'architettura IA-32
    • Principali istruzioni Assembler
    • GAS: GNU Assembler
    • Puntatori
    • System call in assembler
  2. Elementi di reverse engineering

    • Il formato degli eseguibili (ELF - PE)
    • Debugger
    • Disassembler
  3. Memory error exploits

    • Shell code
    • Buffer overflow
    • Format bug: accenni
    • Proteggersi dai memory error exploit
  4. Sicurezza delle applicazioni web

    • Modelli di applicazioni web
    • SQL injection
    • Cross site scripting
    • Protezioni per le applicazioni web
  5. Malware e botnet

    • Tecniche di infezione e propagazione
    • Tecnologie anti-malware
    • Tecniche di self-defense
    • Introduzione alle botnet

Materiale didattico

Gli argomenti trattati nel corso fanno riferimento a materiale in inglese reperibile direttamente dalla rete, per ulteriori riferimenti consultare il calendario del corso.

Altro materiale:

Orario e argomenti delle lezioni

Segue l'orario settimanale del corso, con gli argomenti trattati nelle lezioni e il relativo materiale di riferimento per lo studio e l'approfondimento dei temi trattati a lezione. Questo elenco può essere modificato senza preavviso per motivi di ordine didattico.

Data Argomento Materiale didattico Tipo attività Altro
6 Ott. Programmazione Assembler (parte prima) GNU Assembler
Instruction set
Didattica frontale homework
13 Ott. Programmazione Assembler (parte seconda) Linux assembly I
Linux assembly II
Programming from the Ground Up
Didattica frontale slides
20 Ott. Reverse engineering: PE e ELF Formato PE I,Formato PE II
Formato ELF
Didattica frontale slides
27 Ott. Reverse engineering: disassembling IDA Pro Freeware Didattica frontale slides, homework
3 Nov. Reverse engineering: debugging Documentazione GDB Didattica frontale slides, homework
.gdbinit
NX bit (No eXecute)
10 Nov. Buffer Overflow (prima parte) Smashing the stack Didattica frontale N/A
16 Nov. Prima prova d'esame (reverse engineering) 13:30, laboratorio LaSER (S223)
17 Nov. Buffer Overflow (seconda parte) Didattica frontale N/A
24 Nov. Buffer Overflow (terza parte) Ret-into-libc by c0ntex Didattica frontale N/A
1 Dic. Tecniche di protezione dai memory error exploit Protezioni a runtime
Off by one by klog
Didattica frontale homework
8 Dic. Festività
15 Dic. Sicurezza delle applicazioni web (prima parte) SQL injection attacks Didattica frontale Web 1
Web 2
22 Dic. Sicurezza delle applicazioni web (seconda parte) Cross site scripting explained Didattica frontale
11 Gen. Seconda prova d'esame (memory error) 13:00, laboratorio LaSER (S223)
12 Gen. Malware & Underground Economy Materiale Didattica frontale slides
19 Gen. Rootkit Materiale Didattica frontale slides
30 Gen. Terza prova d'esame (applicazioni web) 13:00, laboratorio LaSER (S223)
10 Feb. Quarta prova d'esame (teoria) 14.30 Aula V3 Via Venezian

Modalità d'esame

L'esame per il corso di sicurezza prevede lo svolgimento di:

La prova scritta

La prova scritta è composta da 4 domande di teoria che coprono tutti gli argomenti di tipo teorico trattati durante l'intero corso. Per preparare accuratamente l'esame è quindi necessario studiare tutti il materiale didattico distribuito durante il corso e riportato nel calendario delle lezioni.
Per ogni risposta corretta lo studente ha a disposizione da 0 a 3 punti, in funzione della completezza della risposta. Per essere tale una risposta deve contenere tutti i seguenti elementi:

Le risposte errate non sono penalizzate, ed alle stesse viene assegnato il punteggio zero. Complessivamente la prova scritto avrà un peso di 10 punti sulla valutazione complessiva dell'esame.

La prova di laboratorio

Con la prova di laboratorio lo studente dovrà dimostrare di avere acquisito le nozioni teoriche e operative per effettuare alcune forme elementari di attacco e per installare le relative contromisure. La prova di laboratorio richiede che lo studente abbia acquisito un sufficiente livello di conoscenza in queste tre tematiche:

La prova di laboratorio avrà un peso di 17 punti sulla valutazione complessiva dell'esame.

Homework

Gli homework verranno assegnati al termine delle lezioni e avranno cadenza periodica. Il materiale da consegnare verrà specificato di volta in volta e dovrà essere consegnato entro la scadenza comunicata inviandolo all'indirizzo: homework1112@security.di.unimi.it. Gli homework avranno un peso di 5 punti sulla valutazione complessiva dell'esame.

Dettagli

Ore di lezione

Il corso si svolge nell'auletta 5 di Via Comelico 39, il Giovedì dalle 10.30 alle 13.30.

Docenti

Teaching assistants