Sicurezza Informatica

Docente: Prof. Danilo Bruschi

AA 2013/2014

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 nella Sala Lauree di Via Comelico 39 dalle 8,30 alle 12.30 il mercoledì. 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
    • Integer overflow: accenni
    • Proteggersi dai memory error exploit
  4. Web Security

    • 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
  6. Mobile Security

    • Android security architecture
    • Application sandboxing
    • Application permission e signing
    • Android malware

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
2 Ott. Programmazione Assembler (parte prima) GNU Assembler
Instruction set
SLIDES: lezione1
Didattica frontale Homework
Due: OCT. 9 @ 23:59:59
9 Ott. Programmazione Assembler (parte seconda) Programming from the Ground Up
SLIDES: lezione2
Didattica frontale Homework
Due: OCT. 16 @ 23:59:59
16 Ott. Reverse engineering: PE e ELF Formato PE I,
Formato PE II,
Formato ELF
SLIDES: parte1 - parte2
Didattica frontale Homework
Due: OCT. 23 @ 23:59:59
23 Ott. Reverse engineering: disassembling e debugging IDA Pro Freeware
Documentazione GDB
Paper obfuscation
SLIDES: parte1 - parte2
Didattica frontale .gdbinit
Homework
Due: NOV. 3 @ 23:59:59
30 Oct. Memory error: buffer overflow (prima parte) Smashing the stack Didattica frontale
6 Nov. Sospensione didattica per Career day
13 Nov. Memory error: buffer overflow (seconda parte), shellcode. Didattica frontale Homework
Due: NOV. 20 @ 23:59:59
20 Nov. Memory error: return into libc, off by one, integer overflow. Ret-into-libc by c0ntex Off by one by klog Basic Integer Overflows Didattica frontale Homework
Due: NOV. 27 @ 23:59:59
27 Nov. Tecniche di protezione dai memory error exploit, got overwriting. SLIDE
Protezioni a runtime
PAX
(pax.txt, noexec.txt, aslr.txt, pageexec.txt, segmexec.txt, mprotect.txt)
Didattica frontale Homework
Due: DEC. 4 @ 23:59:59
4 Dic. Web Security (prima parte) SLIDES --> versione handout
Didattica frontale
11 Dic. Web Security (seconda parte) SLIDES --> versione handout
Web applications Race Condtions
SQL injection attacks
[L|R]FI-1 [L|R]FI-2 [L|R]FI-3
XSS CSRF
Didattica frontale
18 Dic. Lezione annullata
23 Dic. Android Malware SLIDES
CopperDroid
Dissecting Android Malware: Characterization and Evolution
Didattica frontale
8 Gen. Malware & (a glimpse at) Underground Economy SLIDES
Omniunpack - A fistful of red-pills
Pay-per-Install - IDAPython Intro
Didattica frontale

Modalità d'esame

L'esame per il corso di sicurezza prevede lo svolgimento di due prove scritte/pratiche. Le prove si svolgeranno durante il corso in particolare:

Ogni prova sarà composta da domande di teoria e da esercizi, per lo svolgimento della prova lo studente disporrà di 6 ore. Ogni prova sarà valutata complessivamente 30 punti, il voto finale sarà costituito dalla media dei due voti.

Le domande di teoria riguarderanno gli argomenti di tipo teorico trattati nella parte di corso interessata. Per preparare accuratamente questa parte di esame è quindi necessario studiare il materiale didattico distribuito durante il corso e riportato nel calendario delle lezioni.

Con la prova di laboratorio lo studente dovrà invece dimostrare di avere acquisito le nozioni teoriche e operative per effettuare alcune forme elementari di attacco e per installare le relative contromisure.

È possibile che le prove siano sostituite da una o più prove in itinere, qualora le esigenze del corso lo richiedessero.

Dettagli

Ore di lezione

Il corso si svolge il Mercoledì dalle 8.30 alle 12.30, in Sala Lauree in via Comelico, 39.

Docenti

Teaching assistants