Sicurezza Informatica

Docenti: Danilo Bruschi & Andrea Lanzi

AA 2015/2016

Contenuti

News

  • Risultati Finali. Per qualsiasi problema mandare e-mail al docente. Inoltre si notifica che verranno stabiliti una serie di seminari che permettono di aumentare il voto finale fino a 3 punti. Chiunque fosse interessato mi mandi un e-mail. Per chi volesse registrare subito il voto mandi una e-mail al Professor Bruschi
  • Risultati del primo compitino Risultati
  • L'ultima lezione del corso si svolgera` Mercoledi 13 Gennaio dalle 8:30 alle 12:30 presso la sala lauree di via comelico 39.
  • 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 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:

    • Descrivere le principali forme di memory error exploit
    • Descrivere le forme di malware più diffuse
    • Descrivere le principali vulnerabilità presenti in un sistema informatico
    • Effetture l'analisi del codice per programmi di piccole dimensioni
    • Scrivere shell code
    • Usare un debugger
    • Usare un disassemblatore per codice di piccole dimensioni
    • Comprendere l'importanza di avere sistemi sicuri
    • Descrivere le tecniche piu importanti di memory forensic
    • Descrivere le tecniche piu importanti di reverse engineering

    Prerequisiti

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

    • Saper gestire autonomamente un sistema Linux/Windows/MacOS
    • Saper scrivere programmi in C
    • Saper usare un emulatore QEMU/VMware
    • Aver frequentato il corso di Sicurezza 1

    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

      • Debugger
      • Disassembler
    3. Memory error exploits

      • Shell code
      • Buffer overflow
      • Integer overflow: accenni
      • Proteggersi dai memory error exploit
    4. Reverse Engineering

      • Conoscenze degli eseguibili
      • Tecniche di Analisi degli eseguibili
      • Gestione delle tecniche di Obfuscation
    5. Computer Forensic

      • Tecniche di Analisi della Memoria
      • Individuazione delle informazioni nel sistemi operativi
      • Tecniche di ricerca dei dati

    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:

    • macchina virtuale VMWare Linux: Sec2.tar.gz
    • Si consiglia l'uso di VMware player 6, disponibile gratuitamente qui: VMware

    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 attivita Altro
    30 Sett. Programmazione Assembler (parte prima) GNU Assembler
    Instruction set
    SLIDES: lezione1
    Didattica frontale
    7 Ott. Programmazione Assembler (parte seconda) Programming from the Ground Up
    SLIDES: lezione2
    Didattica frontale
    14 Ott. Debugging: GDB GDB Tutorial, Didattica frontale
    22 Oct. Memory error: buffer overflow (prima parte) Smashing the stack Didattica frontale
    29 Oct. Memory error: buffer overflow (seconda parte), shellcode. Tecniche di protezione Didattica frontale
    4 Nov. Memory error: return into libc, off by one, integer overflow. Ret-into-libc by c0ntex Off by one by klog Basic Integer Overflows Buffer overflow 64 bits Tutorial Didattica frontale
    11 Nov. Introduzione e tecniche di reverse engineering Executable Format (1) Executable Format (2) Didattica frontale
    18 Nov. Tecniche di reverse engineering e Obfuscation Debugging Internals, Obfuscation Didattica frontale
    25 Nov. Tecniche di reverse engineering and Exercises homework4, System Protection I, System Protection II, IDA Shortcut, IDA Download, IDA Tutorial. Didattica frontale + Lab.
    2 Dic. Introduzione al Computer Forensic (Volatility) Slide:memory_forensics1.pdf.gpg Volatility CheatSheet Didattica frontale
    9 Dic. Computer Forensic Tools (Malware Analysis) silentbanker.vmem.zip
    laqma.vmem.zip
    stuxnet.vmem.zip
    zeus.vmem.zip
    zeus.vmem.zip
    forensic-book.gpg
    Slide:memory_forensics2.pdf.gpg
    DLL injection I
    DLL Injection II
    Didattica frontale + Lab
    13 Gennaio Tecniche di Network Computer Forensic Slide:network_forensics.pdf.gpg
    Prendere i pcap dalla directory "PUBLIC FROM WWW"
    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:

    • al termine delle parte relativa ai memory error exploit
    • al termine del corso

    Dettagli

    Ore di lezione

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

    Docenti

    • Prof. Danilo Bruschi
      • Ufficio: P115 in Via Comelico 39
      • Ricevimento studenti: su appuntamento
    • Dott. Andrea Lanzi
      • Ufficio: S242 in Via Comelico 39
      • Ricevimento studenti: su appuntamento
      • E-mail: