Differenze tra le versioni di "Progetto della sicurezza di rete/2006-2007"
IuZ (discussione | contributi) (→Diario del corso) |
IuZ (discussione | contributi) (→Lezione di Lunedì 06 novembre 2006) |
||
Riga 232: | Riga 232: | ||
* Debugging | * Debugging | ||
* Schema di un programma | * Schema di un programma | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* Istruzioni di controllo | * Istruzioni di controllo | ||
* Salti | * 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 ==== | ==== HMW consigliato ==== | ||
Riga 251: | Riga 250: | ||
* 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). | * 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 | * 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 #4 ==== | ||
+ | (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. |
Versione delle 11:26, 13 nov 2006
Indice
- 1 News
- 2 Informazioni generali
- 3 Informazioni specifiche
- 4 Materiale didattico
- 5 Diario del corso
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 DICo: http://www.dico.unimi.it/occorrenza.php?z=0;id_occ=1209
- 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 #4
(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.