Differenze tra le versioni di "Progetto della sicurezza di rete/2006-2007"
IuZ (discussione | contributi) m (→Lezione di Lunedì 04 dicembre 2006) |
(→Lezione di Lunedì 11 dicembre 2006) |
||
Riga 339: | Riga 339: | ||
=== Lezione di Lunedì 11 dicembre 2006 === | === Lezione di Lunedì 11 dicembre 2006 === | ||
+ | * Sniffing | ||
+ | * IP Spoofing | ||
+ | * Hijacking | ||
+ | * Attacchi al protocollo ARP | ||
+ | ** ARP Poisoning | ||
+ | * Forging Packets: Libnet | ||
+ | * Differenza reti ad HUB e reti Switched | ||
+ | * MAC Flooding | ||
+ | * MAC duplication/cloning | ||
+ | * Man-in-the-middle attacks | ||
+ | * Blind IP Spoofing | ||
+ | * Frammentazione | ||
+ | ** Attacchi alla frammentazione | ||
+ | * Internet Control Message Protocol (ICMP) | ||
+ | ** Attacchi con ICMP echo request | ||
+ | ** ICMP Redirect | ||
+ | ** ICMP Destination Unreachable | ||
+ | * User Datagram Protocol (UDP) | ||
+ | ** UDP Spoofing | ||
+ | * Trasmission Control Protocol (TCP) | ||
+ | ** TCP Seq/Ack | ||
+ | ** TCP Window | ||
+ | ** TCP Flag | ||
+ | ** TCP Port scan | ||
+ | ** TCP Syn Scan | ||
+ | ** Idle scan | ||
+ | ** TCP Spoofing | ||
+ | * OS Fingerprinting | ||
+ | * SYN Flooding | ||
+ | * Tools | ||
+ | ** Libcat/Libnet - Sniffing e Injection | ||
+ | ** Libnids - packet reassembling library | ||
+ | ** Dsnif - sniffing, man-in-the-middle attacks | ||
+ | ** Ettercap - Networking scanner - http://ettercap.sourceforge.net/ | ||
=== Lezione di Lunedì 18 dicembre 2006 === | === Lezione di Lunedì 18 dicembre 2006 === |
Versione delle 13:28, 1 feb 2007
Indice
- 1 News
- 2 Informazioni generali
- 3 Informazioni specifiche
- 4 Materiale didattico
- 5 Diario del corso
- 5.1 Lezione di Lunedì 02 ottobre 2006
- 5.2 Lezione di Lunedì 09 ottobre 2006
- 5.3 Lezione di Lunedì 23 ottobre 2006
- 5.4 Lezione di Lunedì 30 ottobre 2006
- 5.5 Lezione di Lunedì 06 novembre 2006
- 5.6 Lezione di Lunedì 13 novembre 2006
- 5.7 Lezione di Lunedì 20 novembre 2006
- 5.8 Lezione di Lunedì 27 novembre 2006
- 5.9 Lezione di Lunedì 04 dicembre 2006
- 5.10 Lezione di Lunedì 11 dicembre 2006
- 5.11 Lezione di Lunedì 18 dicembre 2006
News
Lezioni cancellate/spostate
La lezione di Lunedì 16 ottobre 2006 non si terrà, causa Lauree in aula Beta.
Appelli
[...]
Informazioni generali
Progetto della Sicurezza di Rete è un corso complementare per le Lauree Magistrali.
Docenti
- Prof. Danilo Bruschi
- Email: bruschi [AT] dico [DOT] unimi [DOT] it
- Pagina personale sul DICo: http://www.dico.unimi.it/persona.php?z=0;id_persona=17
Corsi di laurea
Modalità d'esame
- Homeworks (quasi) settimanali (che costituiranno il 70% della valutazione)
- Prova pratica di laboratorio (che costituirà il 30% della valutazione)
Prerequisiti al corso
- Tanta voglia di impegnarsi e di studiare
- Conoscenza di Linux
- Conoscenza del linguaggio C
- Conoscenze di Reti di Calcolatori
Orari e luogo delle lezioni
- Lunedì, 08:30-11:30 (Aula Beta, via Comelico)
- Dal DICo: http://www.dico.unimi.it/occorrenza.php?z=0;id_occ=1209
- E' molto consigliata la frequenza
Orario di ricevimento studenti
- Ricevimento su appuntamento tramite email
- Stanza P115
Informazioni specifiche
Siti del corso
- In CCDI: http://www.ccdi.unimi.it/it/corsiDiStudio/F75/default/F74-19/index.html
- http://security.dico.unimi.it/sicurezza0607/#spec (è il sito del corso di sicurezza che contiene anche il materiale del corso di Progetto della Sicurezza di Rete)
Forum del corso (non ufficiale)
Materiale didattico
Programma del corso
Testi
- Nessun libro di testo è stato consigliato
Altro materiale consigliato
- Le slide presentate a lezione NON saranno rese disponibili
- Riferimenti, links, articoli e documenti elettronici dati dal Prof. durante le lezioni e disponibili sul sito del corso: http://security.dico.unimi.it/sicurezza0607/#spec
Link utili
- http://www.cert.org
- http://www.hacker-dictionary.com/
- http://catb.org/jargon/
- http://www.nsa.gov/
- http://www.isecom.org/osstmm/
Diario del corso
Lezione di Lunedì 02 ottobre 2006
- Introduzione al corso e informazioni generali
- Sistema sicuro
- Fault, Failure
- Bug, Security Bug, Exploit
- Vulnerability Analisys
- Hackers
- Chi sono?
- Hackers illustri
- Richard Stallman - Richard Stallman's Personal Page - Richard Stallman su it.wikipedia.org
- Steve Wozniak - http://www.woz.org/ - Steve Wozniak su it.wikipedia.org
- Dennis Ritchie - http://cm.bell-labs.com/who/dmr/ - Dennis Ritchie su it.wikipedia.org
- Ken Thompson - Ken Thompson su it.wikipedia.org
- Linus_Torvalds - Linus Torvalds su it.wikipedia.org
- Cracker
- Warez
- Black, White, Grey Hat
- Script Kiddie
- Intrusioni che hanno fatto storia
- Reati connessi e leggi C.P.
- Accesso abusivo [Art. 615-ter]
- Detenzione e diffusione abusiva di codici di accesso [Art. 615-quater]
- Diffusione di programmi [Art. 615-quinques]
- Tutela della corrispondenza informatica [Art. 617-quater]
- Frode informatica [Art. 640-ter]
HMW #1
- Predisporre una relazione in formato elettronico che affronti a livello introduttivo i seguenti argomenti:
- Che cos'è la sicurezza informatica
- Definizione dei termini di riferimento: bug, security bug, vulnerabilità, exploit, fault, failure, safety, dependability
- Breve storia dell'Hacking
- Aspetti etici del computer hacking, full disclosure e responsible disclosure
- Bibliografia di riferimento
- Consegnare via email al Prof. entro Lunedì 16 ottobre 2006
Lezione di Lunedì 09 ottobre 2006
- Sicurezza dei sistemi operativi
- Cos'è un S.O.
- Meccanismi di protezione
- S.O. standard
- S.O. trusted
- Common Criteria, Standard ISO per la sicurezza informatica CC su en.wikipedia.org
- Evaluation Assurance Level (EAL)
- Selinux, esempio di trusted S.O.
- Protezione del S.O.
- Separazione fisica
- Bit di stato
- Controled invocation
- Protezione di oggetti/soggetti del sistema da altri soggetti
- Soggetti, Oggetti, Right
- Protezione dei processi
- Protezione della memoria
- Paginazione, Segmentazione
- Tagged architecture
- Controllo degli accessi
- Problematiche connesse
- Matrice degli accessi
- Controllo discrezionale e Controllo mandatorio
- Access Control List (ACL)
- Capability (directory)
- Token (capability)
- Auditing e Logging
- Struttura di un sistema di audit
- Ciclo di vulnerabilità
- Severity di vulnerabilità
- Politiche di disclosure
- Responsible disclosure
- Database vulnerabilità
Lezione di Lunedì 23 ottobre 2006
- Protezione nei sistemi Unix e Windows
- Unix, le origini
- Windows, le origini
- Identificazione in Unix
- Identificazione in WindowsXP
- Security Identifiers
- [www.sysinternals.com]
- Registry
- Registry rilevanti per la sicurezza
- Processo di autenticazione
- Autenticazione in Unix
- Autenticazione in Windows
- Attacchi contro le password
- Password cracking
- Pwd cracking tools
- Contromisure
- Controllo degli accessi in Unix
- Subjects
- Objects
- Inode
- Owner
- Access Control List
- Rappresentazione ottale
HMW #2
- Predisporre una relazione in formato elettronico sulla sicurezza dei sistemi operativi in cui:
- Siano descritte le principali criticità legate alla sicurezza del S.O.
- Siano descritte le principali protezioni che possono essere implementate a livello di sistema operativo, secondo TCSEC
- Sia descritto come queste misure sono praticamente implementate in un sistema operativo reale a scelta.
- Decodificare (con l'ausilio di un password cracker a scelta) il file delle password presente sul sito del corso e consegnare il listato del file decifrato. Lo studente che sarà riuscito a decifrare il maggior numero di password riceverà un bonus punti.
- Consegna entro Lunedì 6 novembre 2006 alle ore 24.00.
Lezione di Lunedì 30 ottobre 2006
- WINXP
- Subjects and tokens
- Security token
- Oggetti
- Security descriptor
- Owner
- DACL e ACE
- Access rights
- Generic permission
- Access control entry
- NULL DACL
- Type e Object type
- Inheritance
- Inheritance Flags
- ACE Inheritance
- Inheritance ObjectType
- Audit Logs in Unix
- Audit in Windows
- Assembler IA-32
- Linguaggio Assembly
- Processori 80x86
- Memoria
- Memory model
- Flat
- Segmentata
- Real-address
- Modalità CPU
- Protected Mode
- Real-address Mode
- System Management Mode (SMM)
- Registri del processore
- Linguaggio Assembly
- AT&T
- DOS/Intel Syntax (Intel Assembler, NASM) [quello scelto per il corso]
- Direttive
- Istruzioni
- Stack
HMW #3
- Installare sul proprio PC l'assemblatore NASM ed il relativo ambiente di sviluppo
- Studiare i primi due capitoli del libro su NASM
- Le informazioni di riferimento compreso i manuali sono reperibili su:
Lezione di Lunedì 06 novembre 2006
- Istruzioni NASM
- Tipi di istruzioni
- Debugging
- Schema di un programma
- Istruzioni di controllo
- Salti
ClassWork #1
- Scrivere un programma Assembler che chiede in input due numeri interi e stampa la loro somma, differenza, prodotto, quoziente e resto.
- Predisporre il programma affinché durante la sua esecuzione stampi il contenuto delle locazioni di memoria che contengono i dati di input
- Assmblare generando anche il corrispondente listato del compilato
HMW consigliato
- Imparare ad usare il debugger C: gdb (sotto Linux)
HMW #4
- Scrivere un programma assembler che carica un array di 10 numeri interi con segno e calcola:
- la somma e il prodotto degli elementi di posizione pari
- la differenza di quelli di posizione dispari
- il quoziente e il resto tra il prodotto degli elementi di posizione pari e quelli di posizione dispari.
- Scrivere un programma assembler che carica un array di 100 elementi interi senza segno con numeri casuali, li ordina e stampa sia l'array disordinato che quello ordinato (scegliere un algoritmo di ordinamento).
- Consegna entro Domenica 12 novembre 2006 alle 24.00
Lezione di Lunedì 13 novembre 2006
- Puntatori
- Sottoprogrammi
- Stack
- Push e Pop
- Call e Ret
- Calling convention
- Parametri via stack
- Epilogo e Prologo
- Variabili locali
- Enter e Leave
- External
- Assembly e C
- Convenzioni
- Printf
- Lea
- Interrupt ed eccezioni
- Syscall
ClassWork
- Scrivere un programma assembler che legge 5 valori interi e stampa la loro somma, prodotto, il Max e il Min. Per l'effettuazione delle operazioni di I/O il programma deve usare due subroutine esterne che utilizzano le procedure scanf e printf del C.
HMW #5
(da inviare a: homework [ AT ] idea [ DOT ] sec [ DOT ] dico [ DOT ] unimi [ DOT ] it)
- Scrivere un programma assembler che esegue la shell attraverso una chiamata di sistema diretta.
- Scrivere un programma C che genera in output il codice binario del suddetto programma, usando il formato esadecimale.
- Facoltativo: scrivere un programma assembly che usando come subroutine il programma precedente sia in grado di eseguire un qualunque comando di shell fornito in input.
Lezione di Lunedì 20 novembre 2006
- Buffer
- Stack
- Buffer Overflow
- Riferimento all'articolo "Smashing the Stack for Fun and Profit" by Aleph One
- Shellcode
ClassWork (da finire a casa)
- Prove su shellcode
- Correggere
void main() { int *ret; ret = (int *)&ret + 2; (*ret) = (int)shellcode; }
HMW #6
- Scrivere un programma C che, sfruttando uno shellcode appropriato, mandi in esecuzione una shell, attraverso il buffer overflow della variabile smashed così definita:
void main() { char smashed[38] ecc. ecc. }
- N.B: la dimensione di smashed non può essere modificata!
- Consegnare entro domenica 26 novembre 2006 alle h:24.00
Lezione di Lunedì 27 novembre 2006
- Exploit interno
- Esempio programma vulnerabile
- Memory Layout
- Indirizzo di envpn
- Trovare buffer overflow
HMW #7
- Exploitare attraverso stack overflow il programma presente sul sito del corso ( http://security.dico.unimi.it/sicurezza0607/#spec ), in particolare:
- Scrivere un exploit locale: assumendo cioè che il programma sia in esecuzione sulla propria macchina.
- Scrivere un exploit remoto: assumendo cioè che il programma oggetto sia accessibile solo attraverso la rete.
- Per ciascun exploit individuato deve anche essere consegnato:
- un file README che contiene la descrizione dell'attacco oltre che le necessarie istruzioni per eseguire l'exploit
- più alto è il numero di exploit individuati e più alto sarà il punteggio conseguito.
- E' anche possibile che il programma non sia exploitabile, in locale o in remoto, in questo caso il file README dovrà contenere una spiegazione del perché il programma non è exploitabile con la tecnica del buffer overflow.
- Consegnare entro domenica 10 dicembre 2006 alle h:24.00
Lezione di Lunedì 04 dicembre 2006
- Format Bug
- Esempi
- Exploitation - Similar to common buffer overflows
- Exploitation - Throws pure format strings
HMW #8
- Scrivere due programmi C che siano exploitabili attraverso format bug usando le due diverse tecniche
- Exploitation - Similar to common buffer overflows
- Exploitation - Throws pure format strings
- I due sorgenti devono essere accompagnati da un file README che contenga una breve descrizione delle tecniche usate per generare i suddetti exploit e una descrizione degli exploit.
- Consegnare entro domenica 10 dicembre 2006 alle h:24.00
Lezione di Lunedì 11 dicembre 2006
- Sniffing
- IP Spoofing
- Hijacking
- Attacchi al protocollo ARP
- ARP Poisoning
- Forging Packets: Libnet
- Differenza reti ad HUB e reti Switched
- MAC Flooding
- MAC duplication/cloning
- Man-in-the-middle attacks
- Blind IP Spoofing
- Frammentazione
- Attacchi alla frammentazione
- Internet Control Message Protocol (ICMP)
- Attacchi con ICMP echo request
- ICMP Redirect
- ICMP Destination Unreachable
- User Datagram Protocol (UDP)
- UDP Spoofing
- Trasmission Control Protocol (TCP)
- TCP Seq/Ack
- TCP Window
- TCP Flag
- TCP Port scan
- TCP Syn Scan
- Idle scan
- TCP Spoofing
- OS Fingerprinting
- SYN Flooding
- Tools
- Libcat/Libnet - Sniffing e Injection
- Libnids - packet reassembling library
- Dsnif - sniffing, man-in-the-middle attacks
- Ettercap - Networking scanner - http://ettercap.sourceforge.net/