Scheda programma d'esame
SYSTEM AND NETWORK HACKING
GIUSEPPE LETTIERI
Academic year2023/24
CourseCOMPUTER ENGINEERING
Code912II
Credits9
PeriodSemester 1
LanguageEnglish

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 orale a conclusione di ogni esame.

Assessment criteria of knowledge

Verification of knowledge will be the subject of an oral test at the conclusion of each examination.

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 web che potrà essere sviluppato da piccoli gruppi di studenti o singolarmente, e tramite una prova pratica che verterà sulle vulnerabilità dei programmi scritti in C/C++.

Assessment criteria of skills

Skills will be tested through the development of a web project that can be developed by small groups of students or individually, and through a practical test that will focus on the vulnerabilities of programs written in C/C++.

Comportamenti

Lo studente svilupperà una maggiore attenzione e consapevolezza verso le vulnerabilità dei sistemi informatici, e possiederà un bagaglio delle pratiche migliori 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 web, che potrà essere sviluppato da piccoli gruppi di studenti o singolarmente.

Assessment criteria of behaviors

Skills will be tested through the development of a web 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) e macchine virtuali; 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; attacchi diretti al kernel (return to userspace, protezione tramite SMEP/SMAP); attacchi diretti all'hypervisor, fuga da una VM.

RETI E WEB: tecniche di raccolta di informazioni; forzatura DNS; sniffing e scansione di rete; identificazione della pila TCP/IP; inondazione e spoofing MAC; avvelenamento ARP; spoofing IP; attacchi e difese DoS e DDoS; attacchi uomo-nel-mezzo; mappatura di applicazioni web; vulnerabilità nell'autenticazione web; forzatura dell'autenticazione; blocco dell'account; tecnologie CAPTCHA; vulnerabilità nella gestione delle sessioni; dirottamento di sessione; vulnerabilità nel controllo degli accessi; iniezione SQL; iniezione SQL cieca; iniezione LDAP; iniezione di comandi del sistema operativo; inclusione di file remoti; iniezione di entità esterne XML; scripting intersito; regola della stessa origine; falsificazione di richiesta intersito.

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) and virtual machines; 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; kernel attacks (return-to-userspace, protection via SMEP/SMAP); hypervisor attacks and VM escaping.

NETWORKS AND WEB: intelligence gathering; DNS bruteforcing; network sniffing and scanning; TCP/IP stack fingerprinting; MAC spoofing and flooding; ARP poisoning; IP spoofing; DoS and DDoS attacks and defenses; man-in-the-middle attacks; web application mapping; web authentication vulnerabilities; login bruteforcing; account locking; CAPTCHAs; session management vulnerabilities; session hijacking; access control vulnerabilities; SQL injection; blind SQL injection; LDAP injection; OS command injection; remote file inclusion; injection of XML external entities; cross-site scripting; same-origin policy; cross-site request forgery.

Bibliografia e materiale didattico
  • Dafydd Stuttard and Marcus Pinto. The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws (2nd Edition). John Wiley & Sons, 2011.
  • Stuart McClure, Joel Scambray, George Kurtz, Hacking Exposed 7: Network Security Secrets and Solutions, (7th Edition), McGraw-Hil, 2012.
  • Chris Anley, The Shellcoder's Handbook: Discovering and Exploiting Security Holes, (2nd
    Edition), John Wiley & Sons, 2007.
  • Dispense fornite dai docenti.
Bibliography
  • Dafydd Stuttard and Marcus Pinto. The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws (2nd Edition). John Wiley & Sons, 2011.
  • Stuart McClure, Joel Scambray, George Kurtz, Hacking Exposed 7: Network Security Secrets and Solutions, (7th Edition), McGraw-Hil, 2012.
  • Chris Anley, The Shellcoder's Handbook: Discovering and Exploiting Security Holes, (2nd
    Edition), John Wiley & Sons, 2007.
  • Handouts provided by teachers.
Modalità d'esame

Progettino (su parte web), prova pratica (su parte system) e orale. Per sostenere la prova pratica gli studenti sono tenuti a portare con sé il proprio calcolatore portatile.

Assessment methods

Practical and oral tests. To undergo the prctical test, students must bring their own laptop.

Altri riferimenti web

http://www.iet.unipi.it/p.perazzo/teaching

Updated: 12/09/2023 13:46