Differenze tra le versioni di "Progetto della sicurezza di rete/2006-2007"

Da WikiDsy.
(Lezione di Lunedì 06 novembre 2006)
m (HMW #4)
Riga 273: Riga 273:
 
* 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.
 
* 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 ====
+
==== HMW #5 ====
 
(da inviare a: homework [ AT ] idea [ DOT ] sec [ DOT ] dico [ DOT ] unimi [ DOT ] it)
 
(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 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.
 
* 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.
 
* 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


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

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

Orario di ricevimento studenti

  • Ricevimento su appuntamento tramite email
  • Stanza P115

Informazioni specifiche

Siti del corso

Forum del corso (non ufficiale)

Materiale didattico

Programma del corso

Testi

  • Nessun libro di testo è stato consigliato

Altro materiale consigliato

Link utili

Diario del corso

Lezione di Lunedì 02 ottobre 2006

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à
    • Bugtraq
    • CVE - Common Vulnerabilities and Exposures

Lezione di Lunedì 23 ottobre 2006

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.