Scheda programma d'esame
SYSTEM AND NETWORK HACKING
GIUSEPPE LETTIERI
Academic year2020/21
CourseCOMPUTER ENGINEERING
Code912II
Credits9
PeriodSemester 1
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
SYSTEM AND NETWORK HACKINGING-INF/05LEZIONI90
GIUSEPPE LETTIERI unimap
PERICLE PERAZZO unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Lo studente avrà acquisito conoscenze in merito alle vulnerabilità più comuni dei sistemi software, delle architetture di elaborazione, delle reti e delle applicazioni web, ai modi in cui queste vulnerabilità sono sfruttate dagli attaccanti e alle contromisure messe in atto per mitigare gli attacchi.

Knowledge

The student will acquire knowledge about the most common vulnerabilities of software systems, computer architectures, networks and web applications, the ways in which these vulnerabilities are exploited by attackers and the countermeasures put in place to mitigate attacks.

Modalità di verifica delle conoscenze

La verifica delle conoscenze sarà oggetto di una prova scritta e/o orale a conclusione di ogni esame.

Assessment criteria of knowledge

The knowledge check will be the subject of a written and / or oral test at the end of each exam.

Capacità

Lo studente sarà in grado di scrivere codice e configurare i sistemi in modo da mitigare le vulnerabilità più comuni, ma anche di portare a termine attacchi mirati a dimostrare la presenza di tali vulnerabilità.

Skills

The student will be able to write code and configure systems to mitigate the most common vulnerabilities, but also to carry out attacks aimed at demonstrating the presence of such vulnerabilities.

Modalità di verifica delle capacità

Le capacità saranno verificate tramite lo sviluppo di un progetto software, che potrà essere sviluppato da piccoli gruppi di studenti o singolarmente.

Assessment criteria of skills

Skills will be tested through the development of a software project, which can be developed by small groups of students or individually.

Comportamenti

Lo studente svilupperà una maggiore attenzione e consapevolezza verso le vulnerabilità dei sistemi informatici, e possiederà un bagaglio di "best practice" atte a mitigare tali vulnerabilità.

Behaviors

The student will develop a greater attention and awareness towards the vulnerabilities of computer systems, and will possess a set of "best practices" to mitigate these vulnerabilities.

Modalità di verifica dei comportamenti

I comportamenti saranno verificati tramite lo sviluppo di un progetto software, che potrà essere sviluppato da piccoli gruppi di studenti o singolarmente.

Assessment criteria of behaviors

Skills will be tested through the development of a software project, which can be developed by small groups of students or individually.

Prerequisiti (conoscenze iniziali)
  • architetture degli elaboratori
  • linguaggio macchina e assembler
  • C/C++
  • sistemi operativi
  • reti e programmazione di rete
  • programmazione web
  • basi di dati
Prerequisites
  • computer architectures
  • machine language and assembler
  • C / C ++
  • operating systems
  • networks and network programming
  • web programming
  • databases

 

Indicazioni metodologiche
  • lezioni frontali con l'ausilio di slide e condivisione dello schermo del PC
  • per le esercitazioni ogni studente deve essere dotato del proprio PC, con software consigliato dai docenti
  • i docenti saranno reperibili per ricevimento ed email
  • il materiale didattico sarà reso disponibile tramite il sito web del corso
  • sarà previsto lo sviluppo di un progetto sugli argomenti del corso
  • lezioni ed esercitazioni si svolgeranno in lingua inglese
Teaching methods
  • lectures with the help of slides and PC screen sharing
  • for the hands-on sessions, each student must have their own PC, with software recommended by the teacher
  • the teachers will be available for office hours and will be reachable via email
  • the teaching material will be made available through the course website
  • students will be required to develop a small project on the course topics
  • lectures and hands-on sessions will be held in English
Programma (contenuti dell'insegnamento)

SISTEMI OPERATIVI: controllo degli accessi discretionary/mandatory; programmi suid/sgid; metacaratteri; attacchi tramite variabili di ambiente (PATH, IFS, ...); attacchi tramite collegamenti simbolici; "sandboxing" tramite contenitori (namespace, control group); monitor sicuri (AppArmor).

PROGRAMMAZIONE: concetti e pratiche di programmazione sicura in C e C++; i processi e il loro spazio di indirizzamento: la pila e lo heap, dlmalloc, mmap()/mprotect(), le librerie dinamiche, la "Global Offset Table" (GOT) e la Procedure Linkage Table (PLT); overflow sugli interi; buffer overflow su pila e heap; vulnerabilità delle stringhe di formattazione; errori di "use-after-free" e "double-free"; iniezione e riuso di codice: "return-to-libc", "Return Oriented Programming" (ROP); "Address Space Layout Randomization" (ASLR) e codice indipendente dalla posizione; integrità del flusso di controllo; errori di "Time-of-Check to Time-of-Use" (TOCTOU); iniezione di comandi shell, attraversamento di directory.

RETI E WEB: scansione delle reti e dei servizi, "fuzzing", rilevamento del Sistema Operativo tramite "fingerprinting", attacchi di forza bruta al DNS, "packet sniffing"; applicazioni web: mappatura, vulnerabilità nei sistemi di autenticazione, attacchi di forza bruta all'autenticazione, vulnerabilità nel sistema di gestione delle sessioni, furto della sessione, vulnerabilità nel sistema di controllo accessi, iniezione di codice SQL, iniezione LDAP, "cross-site scripting", "web spidering", entità XML esterne.

Syllabus

OPERATING SYSTEMS: discretionary/mandatory access control; suid/sguid programs; metacharacters; attacks via environment variables (PATH, IFS, ...); attacks via symbolic links; Time-Of-Check-to-Time-Of-Use (TOCTOU); sandboxing through containers (namespaces, control groups); secure monitors (AppArmor).

PROGRAMMING: safe programming concepts and practices in C and C ++; processes and their address space: the stack and the heap, dlmalloc, mmap()/mprotect(), dynamic libraries, the Global Offset Table (GOT) and the Procedure Linkage Table (PLT); integer overflow; buffer overflows on stack and heap; formatt strings vulnerabilities; use-after-free and double-free errors; code injection and code reuse: return-to-libc, Return Oriented Programming (ROP); Address Space Layout Randomization (ASLR) and position independent code; control flow integrity; shell command injection, directory traversal.

NETWORKS AND WEB: network scannin, service scanning, fuzzing, OS fingerprinting, DNS bruteforcing, packet sniffing; web applications: mapping, authentication vulnerabilities, login bruteforcing, session management vulnerabilities, session hijacking, access control vulnerabilities, SQL injection, LDAP injection, cross-site scripting, web spidering, external XML entities.

Bibliografia e materiale didattico
  • Robert Seacord. Secure Coding in C and C++ (2nd edition). Addison-Wesley Professional, 2013.
  • Dafydd Stuttard and Marcus Pinto. The Web Application Hacker's Handbook: Finding and
  • Exploiting Security Flaws. John Wiley & Sons, 2011.
  • Chris Anley, The Shellcoder's Handbook: Discovering and Exploiting Security Holes, (2nd
    Edition), John Wiley & Sons, 2007.
  • Dispense fornite dai docenti
Bibliography
  • Robert Seacord. Secure Coding in C and C++ (2nd edition). Addison-Wesley Professional, 2013.
  • Dafydd Stuttard and Marcus Pinto. The Web Application Hacker's Handbook: Finding and
  • Exploiting Security Flaws. John Wiley & Sons, 2011.
  • Chris Anley, The Shellcoder's Handbook: Discovering and Exploiting Security Holes, (2nd
    Edition), John Wiley & Sons, 2007.
  • papers provided by the teachers
Modalità d'esame

Prova scritta e orale, più progetto.

Assessment methods

Written and oral exam, plus project.  

Updated: 03/10/2020 17:14