Un modello integrato control-flow e data-flow per il rilevamento automatico di intrusioni

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Un modello integrato control-flow e data-flow per il rilevamento automatico di intrusioni"

Transcript

1 Università degli Studi di Udine Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea Specialistica in Informatica Tesi di Laurea Un modello integrato control-flow e data-flow per il rilevamento automatico di intrusioni Candidato: Matteo Cicuttin Relatore: Prof. Marino Miculan Anno Accademico 2010/2011 Università degli Studi di Udine Via delle Scienze, Udine Italia

2

3 Alla mia famiglia, che mi ha sempre supportato.

4

5 Ringraziamenti In questo percorso mi sono trovato ad affrontare molte situazioni impegnative, quindi desidero innanzitutto ringraziare chi mi era vicino in quei momenti per avermi sopportato, Ilaria in particolare. Spesso il suo aiuto è stato determinante e spesso non sono stato capace di ricambiarlo. Il successivo ringraziamento va al mio relatore, Prof. Miculan, per l opportunità che mi ha dato e per il clima in cui questo lavoro si è svolto. Sono in debito con lui. Tra quelli che devo ringraziare ci sono anche gli amici, interni ed esterni all università, compresi quelli che ultimamente hanno perso un po la testa. Con loro ho condiviso momenti di divertimento e importanti scambi di idee. Naturalmente il ringraziamento più grande va alla mia famiglia per avermi supportato in questo percorso, nonostante i momenti difficili. Anche se non leggeranno mai questi ringraziamenti, desidero dire grazie a chiunque sia coinvolto nello sviluppo dei software che ho usato per mettere insieme questa tesi. Per scriverla ho usato Vim ma mi sono serviti anche un sacco di altri programmi, tra cui: L A TEX, GraphViz, GHC, GCC, GDB, NASM, Subversion, le shell Bourne e Korn, DTrace e anche qualcosina closed source come OmniGraffle. Questi software mi hanno permesso tra l altro di creare dei tool che hanno automatizzato molte parti del mio lavoro, semplificandolo enormemente. Il loro denominatore comune però è il sistema operativo che li fa girare, ovvero Unix. Ho usato in particolare Mac OS X per elaborare il testo e la grafica e Solaris (OpenIndiana) per tutta la parte legata a DTrace. FreeBSD invece sul mio server garantiva tutta una serie di servizi che mi sono stati assai utili, storage e backup in primis. Senza Unix e tutto quello che ci sta sopra tutto questo sarebbe stato infinitamente più difficile e frustrante. Desidero infine rivolgere un ringraziamento particolare a Chad Mynhier, che mi ha fornito materiale e consigli preziosissimi relativamente a DTrace. Durante questa laurea specialistica poche cose sono andate come pensavo e sono particolarmente felice di essere finalmente giunto al traguardo, anche se purtroppo la felicità di questi giorni è offuscata dalla cattiva salute del mio Micio. Con la laurea triennale avevo visto la punta di un iceberg, con la laurea specialistica ho

6 iv Ringraziamenti scoperto nuovi mondi. Spero che il futuro mi riservi una strada che mi consenta di non smettere di studiare.

7 Indice 1 Introduzione Anomaly detection e system call Obiettivo del lavoro Struttura della tesi Modelli per l anomaly detection Modelli control flow Automi a stati finiti VtPath Execution graphs Abstract stack, un modello costruito staticamente Modelli data flow Un modello data flow Discussione dei modelli studiati Un modello che integra control flow e data flow Debolezze dei modelli esistenti Primo scenario: vulnerabilità nel codice Secondo scenario: errore di configurazione di un server Terzo scenario: debolezza delle relazioni binarie Proposta Costruzione del modello Algoritmo di apprendimento delle relazioni unarie Algoritmo di apprendimento delle relazioni binarie Descrizione dell algoritmo L algoritmo completo per la costruzione del modello Relazione con l algoritmo originale rispetto ai falsi positivi Una possibile variante

8 vi Indice 3.5 L algoritmo per la verifica delle tracce rispetto al modello Gestione delle anomalie L implementazione Struttura generale del sistema Introduzione a DTrace Interfacciamento a DTrace tramite libdtrace(3lib) Note riguardo a DTrace Implementazione del sistema Lo script di data collection Implementazione di NewArgs() Costo computazionale del modello Costo del learning Costo della verifica Alcuni dati sperimentali Conclusioni e sviluppi futuri Riepilogo del lavoro svolto Il modello L implementazione Sviluppi futuri L uso dello stack nell apprendimento delle relazioni binarie Una dimensione statistica per il modello Costruzione statica del modello Applicazione del modello a sistemi virtualizzati Bibliografia 69

9 Elenco delle figure 1.1 Codice semanticamente equivalente Buffer overflow Architettura generale di un sistema black-box FSA d esempio Esempio riguardante la parte induttiva della definizione dell EG Rappresentazione grafica del significato di successore Time to check to time of use Banale programma vulnerabile ad un non-control data attack Informazioni apprese a runtime dall analisi data flow Programma vulnerabile d esempio FSA per il primo esempio Execution graph per il primo esempio Passi dell attacco al programma Programma per il secondo esempio FSA per il secondo esempio Execution graph per il secondo esempio Codice d esempio per il terzo scenario Nuovo modello per l esempio del primo scenario Nuovo modello per l esempio del terzo scenario Esecuzione dell algoritmo su una traccia Esecuzione dell algoritmo su una traccia Struttura generale del sistema Script di DTrace per monitorare lo stack Tempi di esecuzione di ls senza e con tracing Script di DTrace per monitorare lo stack Strutture dati usate da un consumer DTrace

10 viii Elenco delle figure 4.6 Snippet di walk() Struttura dati di supporto all implementazione di NewArgs() Automa senza e con peso sugli archi

11 1 Introduzione Dai tempi della dot-com bubble stiamo assistendo ad una crescita enorme della diffusione di dispositivi informatici di ogni tipo e, a differenza di dieci anni fa, è abbastanza difficile pensare di poter vivere senza interagire ogni giorno con un computer potenzialmente connesso alla rete. Router casalinghi e telefonini montano CPU sufficientemente potenti da poter far girare un kernel Unix, per non parlare di televisori e media-center. Se pensiamo a quanti di questi dispositivi ognuno di noi ha in casa e, soprattutto, alla quantità di dati personali che essi manipolano, la loro protezione da attacchi informatici diventa un obiettivo primario. Le minacce per un computer, comprendendo negli oggetti indicati con questa parola anche i dispositivi appena citati, sono dei tipi più svariati ed impensabili e le tecniche di difesa sono letteralmente centinaia, ognuna volta a proteggere da determinati tipi di attacchi. Volendo prescindere dalla tipologia d attacco possiamo distinguere due metodologie fondamentali nel rilevamento, la misuse detection, altrimenti detta signaturebased detection e la anomaly detection. Gli antivirus in buona approssimazione fanno un lavoro di misuse detection: essi infatti, dato ad esempio un file eseguibile, sono in grado di cercare al suo interno delle sequenze di byte corrispondenti a payload malevoli già noti. Il confronto è puramente sintattico e quindi una versione B del payload sintatticamente diversa ma semanticamente equivalente potrebbe non venire rilevata. Prendiamo i due frammenti di assembler x86 di Figura 1.1: jmp 0x01ab23cd push 0x01ab23cd ret (a) (b) Figura 1.1: Codice semanticamente equivalente. l effetto netto del codice è esattamente lo stesso, quindi semanticamente sono identici

12 2 1. Introduzione ma nel caso (a) la signature è E9 C2 23 AB 01 mentre nel caso (b) è 68 CD 23 AB 01 C3, quindi sintatticamente sono diversi. Se un programma antivirus conosce la prima signature ma non la seconda il payload passa inosservato e il virus può fare il suo lavoro. Naturalmente gli antivirus sono un po più furbi di così, ma anche chi scrive i virus è molto furbo e si serve di payload polimorfici, crittografati e quant altro, molto difficili da rilevare (si veda ad esempio [23]). Al fine di contrastare questo tipo di payload sono stati proposte diverse soluzioni basate sulla semantica [19, 5, 20] ma, purché molto potenti, anche queste sono aggirabili. Un idea fondamentale da tenere in considerazione però è che per poter attaccare un sistema è necessario interagire con esso, ed è qui che entra in gioco l anomaly detection. Per quanto l affermazione precedente possa sembrare banale è abbastanza naturale chiedersi se le interazioni che avvengono sono lecite o meno. Quello che in genere succede è infatti che tramite interazioni non lecite un sistema viene spinto a comportarsi in un modo non previsto originariamente dai suoi progettisti creando quindi un anomalia nel suo comportamento, una deviazione rispetto a quello che dovrebbe essere il comportamento corretto. Rilevare un attacco dunque corrisponde all accorgersi della presenza di questa anomalia. Sorgono alcune domande: Quale è il comportamento corretto di un sistema? Come può essere rappresentato? Come si può rilevare un anomalia? L anomaly detection prevede l esistenza di un modello che descriva quali sono i comportamenti corretti del sistema. A runtime il sistema viene monitorato costantemente e viene verificata la conformità delle sue azioni rispetto al modello. Naturalmente più il modello è dettagliato più il rilevamento di anomalie sarà accurato e più il suo costo computazionale sarà elevato: la costruzione del modello è un punto critico. In letteratura è possibile trovare moltissimi modelli per l anomaly detection costruiti nei modi più svariati e con gli obiettivi più svariati. La distinzione fondamentale che però va fatta tra tutti i vari modelli esistenti è dovuta alla modalità con cui sono costruiti, ovvero se con tecniche black-box o con tecniche white-box. Le prime prevedono soltanto l osservazione di un processo a runtime, le seconde richiedono che sia fatta un analisi sul codice sorgente o comunque sul codice binario del programma. La ricaduta fondamentale ovviamente è sull applicabilità. Il codice sorgente non sempre è disponibile e le analisi sul binario sono tutt altro che semplici. Nel caso

13 1.1. Anomaly detection e system call 3 dell architettura x86, attualmente la più diffusa in ambiente desktop e server, il problema di disassemblare correttamente un binario è addirittura indecidibile [25, 14]. Certamente disassemblatori come IDAPro fanno un egregio lavoro ma il loro output, per quanto vicino al codice vero, è inerentemente non corretto. Una conseguenza di questo fatto è che la ricostruzione del control flow di un programma dato il suo binario non è possibile, se non in modo approssimato. Un interessante lavoro in questa direzione basato sull interpretazione astratta è [11]. Le tecniche blackbox di contro, pur essendo universalmente applicabili, possono osservare soltanto le interazioni di un processo con l ambiente (ad esempio col sistema operativo o con la rete). Potrebbe succedere però che, pur osservando per tempi molto lunghi un processo, non si riesca ad osservare tutte le interazioni ottenendo anche in questo caso un quadro incompleto. Le tecniche white-box tipicamente sono di tipo statico, mentre le black-box di tipo dinamico. Le prime quindi necessitano della capacità di riconoscere ed elaborare sintassi e semantica del programma che si vuole analizzare (quindi devono avere la capacità di leggere ed interpretare il codice sorgente o il codice eseguibile) e questo richiede il supporto di tool abbastanza complessi, come ad esempio il compilatore, il che introduce un ulteriore livello di complessità. Le tecniche black-box al contrario richiedono una fase di apprendimento in cui tramite l osservazione viene costruito il modello. La bontà di quest ultimo è direttamente legata al training svolto. Come nel caso del testing del software, anche il training del modello deve essere fatto cercando di massimizzare la copertura dei casi. Nel caso del testing però se la copertura non è adeguata non si scoprono possibili bug, nel caso dei modelli black-box invece si ha una quantità inaccettabile di falsi positivi. 1.1 Anomaly detection e system call Una tecnica d attacco notevolmente diffusa è quella di fornire ad un programma un input confezionato ad hoc per far si che esso esca dal suo comportamento previsto ed esegua delle azioni utili al malintenzionato. Nel 1996 Aleph One in [17] mostrava come, sfruttando una copia di stringhe fatta senza controllare i bound, fosse possibile iniettare codice arbitrario in un programma e portarlo a lanciare una shell. Come si può immaginare, se il programma gira con privilegi di superutente, in questo modo è possibile ottenere il controllo completo sul sistema. L idea di questo tipo di attacco è molto semplice e in Figura 1.2 è riportato un programma vulnerabile. Nel frammento di codice la stringa some other string viene copiata in buf, che è un vettore allocato sullo stack. Non essendoci alcun controllo sul numero di caratteri

14 4 1. Introduzione 1 void g(void) 2 { 3 char buf[128]; 4 strcpy(buf, some_other_string); 5 } 6 7 void f(void) 8 { 9 g(); 10 } Figura 1.2: Buffer overflow. copiati è possibile scrivere oltre la fine del vettore, fino ad arrivare al record di attivazione della procedura g. Nel record di attivazione è memorizzato il punto del programma al quale restituire il controllo una volta che g è terminata: se lo sovrascriviamo con l indirizzo di buf e in buf inseriamo del codice eseguibile, esso verrà eseguito senza problemi. Una buona prassi da seguire durante la stesura del codice consiste quindi nell evitare di allocare vettori sullo stack e preferire l utilizzo di malloc(). Naturalmente questo non evita totalmente questo tipo di problemi, tant è che dal buffer overflow (il tipo di attacco appena visto) si è passati ad altri attacchi più sofisticati che vanno sotto i nomi di jump to register, heap overflow, return into libc solo per citarne alcuni. Questo tipo di approccio ha avuto (ed ha) un successo tale che esistono dei framework (Metasploit) che permettono la costruzione semiautomatica dell attacco. Gli sforzi fatti per contrastare questo tipo di attacchi sono stati svariati e vanno da tecniche puramente software, tipo la Address Space Layout Randomization oppure lo Stack Protector di gcc a tecniche assistite dall hardware, tipo il noto execute disable bit (XD) implementato nelle recenti CPU Intel e AMD. Nella stragrande maggioranza dei casi attaccare tramite l iniezione di codice malevolo comporta l esecuzione di chiamate di sistema estranee al normale flusso d esecuzione di un programma: per lanciare una shell ad esempio è necessario eseguire almeno una execve(). In Solaris è esistito un buffer overflow nel comando ping (CVE ) che permetteva appunto l esecuzione di codice arbitrario. Tale comando necessita di usare le raw socket, che però possono essere aperte solo dal superutente: ping quindi era installato setuid root e dunque anche il codice iniettato veniva eseguito a privilegi elevati. Ora è chiaro che se ping esegue una execve, questo è un evento del tutto anomalo perché per svolgere le sue funzioni il comando in questione non ha bisogno di lanciare in esecuzione alcun processo. Avendo questa

15 1.2. Obiettivo del lavoro 5 informazione diventa quindi possibile approntare un semplice sistema che osserva le chiamate di sistema e se non sono pertinenti prende provvedimenti quali impedirle o addirittura uccidere il processo dal quale sono state fatte. Già a metà degli anni 90 ci si è resi conto che l osservazione delle chiamate di sistema effettuate da un programma durante la sua esecuzione è un buon modo per capire se il suo comportamento è normale o meno. In [9] ad esempio viene proposto un semplice metodo che, osservando le ultime tre chiamate di sistema effettuate da un processo, è in grado di stabilire con buona approssimazione se il suo comportamento è anomalo. Negli anni successivi sono stati proposti svariati nuovi metodi basati sulle più disparate tecniche, sia statiche che dinamiche. Di queste ultime molte di esse sono di tipo probabilistico, molte di esse si basano su analisi più formali. Le più recenti tecniche dinamiche presenti in letteratura sono in grado di ricostruire una parte significativa del control flow di un programma. Successivamente queste tecniche sono state applicate con successo a sistemi virtualizzati, permettendo di monitorare le attività dei processi in modo completamente invisibile dall interno della macchina virtuale [15]. Presto ci si è resi conto che osservare soltanto qual era la system call effettuata era limitativo e si è iniziato a prendere in considerazione anche i parametri. Anche in questo caso sono state proposte idee molto diverse, prevalentemente di tipo statistico. Recentemente però è stato proposto un modello in grado di apprendere il data flow tra le chiamate di sistema. 1.2 Obiettivo del lavoro Il lavoro presentato in questa tesi è centrato proprio sull anomaly detection basata sull osservazione delle system call. Tra i vari modelli che si possono costruire a questo scopo ne esistono alcuni basati su automi o su grafi, che si differenziano per la loro precisione nel rappresentare il control flow del programma. Dal lato data flow i modelli sono invece tutt altro che numerosi. In questa tesi verranno prese in considerazione entrambe le tipologie di modelli, verranno studiate le loro possibilità sia considerando i modelli presi singolarmente sia se integrati tra di loro (control flow + data flow) e verranno evidenziate delle debolezze. Verrà quindi proposto un nuovo modello integrato che cerca di superarle.

16 6 1. Introduzione 1.3 Struttura della tesi La tesi si sviluppa in 4 ulteriori capitoli oltre a quello presente. Nel secondo capitolo verranno esaminati alcuni modelli per il control flow presenti in letteratura, sia costruiti dinamicamente che staticamente. Verranno mostrate le tecniche necessarie alla loro costruzione e verranno discussi vantaggi e svantaggi dei modelli. Finita la discussione dei modelli control flow si osserverà come la protezione di quest ultimo non sia sufficiente a impedire che un processo venga attaccato e verrà mostrato un semplice programma che è vulnerabile ad un attacco che permette di ottenere una shell senza che il suo control flow sia alterato. Si osserverà quindi che è necessario proteggere anche il data-flow e dopo una breve discussione verrà presentato un modello in grado di apprendere relazioni tra i parametri delle chiamate di sistema, anch esso presente in letteratura. Il terzo capitolo si aprirà vedendo come anche unendo un execution graph (uno dei più potenti modelli control flow) con il modello data flow si possa comunque trovare dei casi in cui è possibile attaccare il sistema senza essere scoperti. Si osserverà quindi che questo è dovuto principalmente a due motivi che sono dati da un basso accoppiamento tra i due modelli e dalla relativa povertà delle informazioni data flow raccolte. Il modello data flow può infatti trarre notevole vantaggio da informazioni già raccolte per la costruzione del modello control flow, inoltre verrà data la capacità al modello data flow di apprendere delle alternative. Senza il loro apprendimento vi sono casi in cui l informazione raccolta è veramente povera. Si proporrà dunque un nuovo modello integrato per control flow e data flow in grado di risolvere i problemi osservati, assieme a tutti gli algoritmi necessari a costruirlo. Il quarto capitolo tratterà l implementazione. In una prima parte verrà analizzato il framework DTrace che permetterà la raccolta dati necessaria alla costruzione del modello. Dopo aver visto come specificare quali dati si vuole raccogliere si passerà ad alcuni dettagli di libdtrace(3lib), necessaria per l interfacciamento low-level al framework e per l estrazione dei dati raw. Verranno poi trattati alcuni dei dettagli implementativi salienti del sistema e infine, in modo del tutto informale, si discuterà sulla complessità computazionale del modello, sia dal punto di vista del training sia dal punto di vista della verifica online. Il quinto capitolo è dedicato alle conclusioni e alla descrizione dei possibili sviluppi futuri di questo lavoro. In particolare saranno proposte tre possibili estensioni. La prima cerca di spremere ulteriormente i dati già raccolti per la costruzione del modello per carpire più informazioni sulla struttura interna del programma. La

17 1.3. Struttura della tesi 7 seconda parte dall osservazione che questi modelli sono totalmente ciechi di fronte al denial of service e quindi la proposta in questo caso è di aggiungere una dimensione statistica al modello che vada in questa direzione. La terza idea è quella di cercare di costruire il modello control flow staticamente invece che dinamicamente, in modo che il compilatore oltre a restituire l eseguibile restituisca un modello della sua struttura che verrà successivamente controllato a runtime.

18 8 1. Introduzione

19 2 Modelli per l anomaly detection In questa tesi si è interessati al rilevamento e alla conseguente segnalazione di comportamenti anomali tenuti da parte di un processo in esecuzione su un elaboratore. Questo obiettivo prevede innanzitutto il possesso di un modello del comportamento del processo e successivamente la capacità di verificare che il processo, durante l esecuzione, si comporti conformemente al modello (Figura 2.1). Offline Online Processo Processo Eventi Eventi Algoritmo di apprendimento Modello Motore di verifica del modello Figura 2.1: Architettura generale di un sistema black-box. In letteratura si possono trovare decine di metodologie volte alla costruzione di modelli per l anomaly detection basate su idee anche molto differenti tra di loro. La distinzione fondamentale però è forse quella tra metodologie white-box e black-box. Le prime prevedono di avere a disposizione il codice sorgente (o anche il binario) del programma in modo da poterlo analizzare staticamente e costruire un modello. Le seconde invece prevedono esclusivamente l osservazione dell esecuzione di un programma e, in base agli eventi generati, costruiscono un modello.

20 10 2. Modelli per l anomaly detection Le tecniche white-box e black-box hanno entrambe vantaggi e svantaggi: se per esempio si è interessati alla struttura del programma è difficile ricostruirla solo guardandone varie esecuzioni. Se ci sono dei rami di codice morto per un sistema black-box è impossibile scoprirli, mentre per un sistema white-box è immediato. Tuttavia, come vedremo, anche dalle sole osservazioni (a patto di eseguirle correttamente) è possibile ottenere un incredibile quantità di informazioni. Una delle molte situazioni in cui invece le tecniche black-box sono avvantaggiate è ad esempio quella in cui si sta osservando dove si trovano i file che una chiamata ad open() apre: se in un numero ragionevolmente grande di osservazioni si vede che i file stanno tutti in una data directory dir si può affermare che quella open() deve aprire solo file che stanno in dir. Questa, non conoscendo la struttura interna del programma osservato è sicuramente un informazione tutt altro che certa ma nonostante l incertezza è comunque un informazione che l analisi statica nella maggioranza dei casi non può dare. In questa tesi si cercherà di modellare per via black-box sia il control flow del programma che il data flow. Verranno prese in considerazione diverse tecniche già note, le quali però in certi contesti presentano delle debolezze e dunque l obiettivo è di migliorarle e di combinarle in modo da eliminare i problemi che presentano, ottenendo un modello in grado di rilevare un numero maggiore di attacchi. 2.1 Modelli control flow I modelli che analizzeremo in questa sezione sono basati sulla descrizione di proprietà che riguardano il flusso di controllo di un programma. Analizzando gli eventi che si osservano a runtime è possibile costruire degli automi che rappresentano in modo più o meno fine le transizioni ammesse per un dato programma Automi a stati finiti Il modello di automi a stati finiti sicuramente più interessante è stato proposto in [21]. Gli autori osservano come tutti i modelli precedenti abbiano problemi o limitazioni più o meno gravi, o di carattere computazionale [10, 18] o dovute al fatto che semplicemente è stata proposta una metodologia che poco si presta all implementazione [12] e propongono una tecnica molto veloce per apprendere un automa in grado di rilevare una consistente categoria di attacchi. L automa viene costruito a partire da una o più tracce ottenute dall osservazione del sistema. Ogni traccia è composta da un certo numero di eventi, rappresentabili

21 2.1. Modelli control flow 11 con una coppia (s i, p i ). Ogni evento contiene due informazioni e in particolare la chiamata di sistema che è stata eseguita e il punto del programma dal quale è stata eseguita. L automa è rappresentabile come un grafo G = (V {end}, E = V V L) e, dati due eventi consecutivi (s i, p i ) e (s i+1, p i+1 ) di una traccia di lunghezza k, la costruzione avviene nel seguente modo: per 0 i k: V = V {p i } per 0 i k: E = E {(p i, p i+1, s i )} infine: E = E {(p k, end, s k )} L idea dietro a questo automa è che per passare da uno stato ad un altro del programma deve avvenire una transizione causata da una chiamata di sistema. Intuitivamente, questa costruzione porta quindi ad un automa in cui gli stati sono etichettati con il punto del programma dal quale viene eseguita la system call e gli archi con la chiamata di sistema coinvolta nella transizione. Vediamo un esempio. 1 void f(int cond) 2 { 3 open(); 4 if (cond % 2) 5 read(); 6 else 7 write(); 8 close(); 9 } int main(void) 12 { 13 int i = 3; 14 while (i--) 15 f(i); 16 } La traccia di una esecuzione del programma d esempio sarebbe la seguente: (open, 3), (write, 7), (close, 8), (open, 3), (read, 5), (close, 8), (open, 3), (write, 7), (close, 8)

22 12 2. Modelli per l anomaly detection open 5 read 3 open 7 write 8 close end close Figura 2.2: FSA d esempio. che da luogo agli insiemi V ={3, 5, 7, 8, end} E ={(3, 5, open), (3, 7, open), (5, 8, read), (7, 8, write), (8, 3, close), (8, end, close)} corrispondenti all automa rappresentato in Figura VtPath VtPath [6] è un metodo che migliora gli FSA, andando a guardare l intero user space stack del processo nel momento della chiamata di sistema invece di osservare soltanto il punto del programma in cui la chiamata è stata fatta. Questo sistema si basa sul concetto di virtual path, di seguito delineato. Siano A = {a 1,..., a n } e B = {b 1,..., b m } gli stack osservati in due system call consecutive. Essi vengono confrontati finché non si trova un indice l tale che a l b l. A questo punto si definisce il path tra le due system call come: P = a n Exit;... ; a l+1 Exit; a l b l ; Entry b l+1 ;... ; Entry b m Entry ed Exit sono dei nodi fittizi che rappresentano rispettivamente il punto d ingresso e il punto d uscita di una funzione. Questi path vengono appresi durante il training e, a training completato, vengono utilizzati per verificare il corretto comportamento del programma. Possono generarsi differenti anomalie, in particolare: Stack anomaly, se lo stack osservato non è tra quelli appresi durante il training Return address anomaly, se uno qualunque dei return address sullo stack non è corretto rispetto a quelli osservati durante il training System call anomaly, se la system call eseguita non è corretta

23 2.1. Modelli control flow 13 Virtual path anomaly, se non è possibile trovare il percorso effettuato tra quelli appresi Execution graphs Gli execution graphs costituiscono forse il più potente modello control flow presente in letteratura ottenuto con tecniche black-box [7] ed è uno dei due componenti da cui si è partiti per sviluppare il modello presentato in questa tesi. L obiettivo dell execution graph è quello di ottenere, osservando le esecuzioni di un programma, un modello che accetta le stesse sequenze di chiamate di sistema che sarebbero accettate da un modello basato sul control flow graph, quindi costruito staticamente. Naturalmente questo non è possibile perché nel codice potrebbero esserci dei rami morti, rilevabili solo a tempo di compilazione. Tuttavia utilizzando solo tecniche black-box si riesce a costruire un execution graph con due proprietà molto importanti: accetta solo sequenze di chiamate di sistema che sono consistenti con il control flow graph del programma il linguaggio accettato dall execution graph è massimale rispetto ai dati appresi durante il training: in altre parole ogni estensione dell execution graph potrebbe far passare inosservati degli attacchi Definizione 1 (Osservazione ed esecuzione) Un osservazione è una n-pla di interi positivi r 1, r 2,..., r k con k > 1. Un esecuzione è una sequenza di lunghezza arbitraria di osservazioni. In particolare in un osservazione r 1, r 2,..., r k, r 1 è un indirizzo in main(), r k 1 è il return address corrispondente all istruzione che esegue la system call ed r k è il numero corrispondente alla system call eseguita. In altre parole un osservazione è una fotografia dello stack del processo al momento in cui viene eseguita una system call. Definizione 2 (Execution graph, foglia, crs ) Un execution graph per un insieme di esecuzioni X è un grafo EG(X ) = (V, E call, E crs, E ret ) in cui V è un insieme di nodi mentre E call, E crs, E ret V V sono insiemi di archi diretti, definiti come segue:

La protezione dai memory error exploit

La protezione dai memory error exploit Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Intrusion Detection System

Intrusion Detection System Capitolo 12 Intrusion Detection System I meccanismi per la gestione degli attacchi si dividono fra: meccanismi di prevenzione; meccanismi di rilevazione; meccanismi di tolleranza (recovery). In questo

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Inter Process Communication (IPC) in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Inter Process Communication (IPC) in POSIX E.Mumolo, DEEI mumolo@units.it Pipe Cos'è un pipe? E' un canale di comunicazione che unisce due processi Caratteristiche: La più vecchia

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

Ricorsione. Corso di Fondamenti di Informatica

Ricorsione. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Ricorsione Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e

Dettagli

Esercizi Capitolo 5 - Alberi

Esercizi Capitolo 5 - Alberi Esercizi Capitolo 5 - Alberi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

CREAZIONE DI UN FILE

CREAZIONE DI UN FILE #include #include CREAZIONE DI UN FILE fd = creat(filename, mode); int fd, mode; char *filename; La primitiva creat crea un file, se non ne esiste uno col nome specificato, oppure

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Oggetti sintattici e oggetti semantici Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P.

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software.

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software. Generalità Definizione Un firewall è un sistema che protegge i computer connessi in rete da attacchi intenzionali mirati a compromettere il funzionamento del sistema, alterare i dati ivi memorizzati, accedere

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Manuale di KDE su Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci

Manuale di KDE su Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci Geert Jansen Traduzione del documento: Dario Panico Traduzione del documento: Samuele Kaplun Traduzione del documento: Daniele Micci 2 Indice 1 Introduzione 5 2 Usare KDE su 6 3 Funzionamento interno 8

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it

Introduzione ai Device Drivers in Linux. E.Mumolo, DEEI mumolo@units.it Introduzione ai Device Drivers in Linux E.Mumolo, DEEI mumolo@units.it 1 Device Drivers Moduli software che gestiscono le periferiche attraverso il file system Tutte le periferiche sono viste come file

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 Matricole congr. 0 mod 3 File & Directory #include #include stat,fstat e lstat int stat (const char *pathname, struct stat *buf); int fstat (int

Dettagli

Inter-Process Communication

Inter-Process Communication Inter-Process Communication C. Baroglio a.a. 2002-2003 1 Introduzione In Unix i processi possono essere sincronizzati utilizzando strutture dati speciali, appartenti al pacchetto IPC (inter-process communication).

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione Processi (di sviluppo del) software Fase di Analisi dei Requisiti Un processo software descrive le attività (o task) necessarie allo sviluppo di un prodotto software e come queste attività sono collegate

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it il server? virtualizzalo!! Se ti stai domandando: ma cosa stanno dicendo? ancora non sai che la virtualizzazione è una tecnologia software, oggi ormai consolidata, che sta progressivamente modificando

Dettagli

Introduzione allo Scilab Parte 3: funzioni; vettori.

Introduzione allo Scilab Parte 3: funzioni; vettori. Introduzione allo Scilab Parte 3: funzioni; vettori. Felice Iavernaro Dipartimento di Matematica Università di Bari http://dm.uniba.it/ iavernaro felix@dm.uniba.it 13 Giugno 2007 Felice Iavernaro (Univ.

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Modulo 2 - Appendice 3 L'editor vi e cenni su sed

Modulo 2 - Appendice 3 L'editor vi e cenni su sed 1 Modulo 2 - Appendice 3 L'editor vi e cenni su sed Laboratorio di Sistemi Operativi I Anno Accademico 2008-2009 Copyright 2005-2007 Francesco Pedullà, Massimo Verola Copyright 2001-2005 Renzo Davoli,

Dettagli

Processi di business sovra-regionali relativi ai sistemi regionali di FSE. Versione 1.0 24 Giugno 2014

Processi di business sovra-regionali relativi ai sistemi regionali di FSE. Versione 1.0 24 Giugno 2014 Processi di business sovra-regionali relativi ai sistemi regionali di FSE Versione 1.0 24 Giugno 2014 1 Indice Indice... 2 Indice delle figure... 3 Indice delle tabelle... 4 Obiettivi del documento...

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Se a e b sono numeri interi, si dice che a divide b, in simboli: a b, se e solo se esiste c Z tale che b = ac. Si può subito notare che:

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

Le system call: fork(), wait(), exit()

Le system call: fork(), wait(), exit() Le system call: fork(), wait(), exit() Di seguito viene mostrato un programma che fa uso di puntatori a funzione, nel quale si mette in evidenza il loro utilizzo. Programma A1 #include int add(a,b,c)

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

Marco Giorgi. Palazzo di Giustizia di Torino 30 marzo 2012

Marco Giorgi. Palazzo di Giustizia di Torino 30 marzo 2012 Marco Giorgi Palazzo di Giustizia di Torino 30 marzo 2012 Post mortem (Dopo lo spegnimento del sistema) Si smonta il dispositivo e lo si collega ad un PC dedicato all'acquisizione Live forensics (Direttamente

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Architetture CISC e RISC

Architetture CISC e RISC FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Architetture CISC e RISC 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n.

Dettagli

Ricorsione. Rosario Culmone. - p. 1/13

Ricorsione. Rosario Culmone. - p. 1/13 Ricorsione Rosario Culmone - p. 1/13 Induzione e Ricorsione Spesso utilizzeremo le definizioni induttive. Sono forme di definizione compatte che descrivono un numero infinito di elementi. I contesti di

Dettagli

Dall italiano alla logica proposizionale

Dall italiano alla logica proposizionale Rappresentare l italiano in LP Dall italiano alla logica proposizionale Sandro Zucchi 2009-10 In questa lezione, vediamo come fare uso del linguaggio LP per rappresentare frasi dell italiano. Questo ci

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

COME FRODE. la possibilità propri dati. brevissimo. Reply www.reply.eu

COME FRODE. la possibilità propri dati. brevissimo. Reply www.reply.eu FRAUD MANAGEMENT. COME IDENTIFICARE E COMB BATTERE FRODI PRIMA CHE ACCADANO LE Con una visione sia sui processi di business, sia sui sistemi, Reply è pronta ad offrire soluzioni innovative di Fraud Management,

Dettagli

Appunti di Logica Matematica

Appunti di Logica Matematica Appunti di Logica Matematica Francesco Bottacin 1 Logica Proposizionale Una proposizione è un affermazione che esprime un valore di verità, cioè una affermazione che è VERA oppure FALSA. Ad esempio: 5

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore)

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Autore: Matteo Veroni Email: matver87@gmail.com Sito web: matteoveroni@altervista.org Fonti consultate: http://openmeetings.apache.org/

Dettagli

Sistemi avanzati di gestione dei Sistemi Informativi

Sistemi avanzati di gestione dei Sistemi Informativi Esperti nella gestione dei sistemi informativi e tecnologie informatiche Sistemi avanzati di gestione dei Sistemi Informativi Docente: Email: Sito: Eduard Roccatello eduard@roccatello.it http://www.roccatello.it/teaching/gsi/

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni

Dettagli

Software 2. Classificazione del software. Software di sistema

Software 2. Classificazione del software. Software di sistema Software 2 Insieme di istruzioni e programmi che consentono il funzionamento del computer Il software indica all hardware quali sono le operazioni da eseguire per svolgere determinati compiti Valore spesso

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Lezione 15 File System

Lezione 15 File System Lezione 15 File System Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Dettagli

TELECOMUNICAZIONI (TLC) Generico sistema di telecomunicazione (TLC) Trasduttore. Attuatore CENNI DI TEORIA (MATEMATICA) DELL INFORMAZIONE

TELECOMUNICAZIONI (TLC) Generico sistema di telecomunicazione (TLC) Trasduttore. Attuatore CENNI DI TEORIA (MATEMATICA) DELL INFORMAZIONE TELECOMUNICAZIONI (TLC) Tele (lontano) Comunicare (inviare informazioni) Comunicare a distanza Generico sistema di telecomunicazione (TLC) Segnale non elettrico Segnale elettrico TRASMESSO s x (t) Sorgente

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Progetto VirtualCED Clustered

Progetto VirtualCED Clustered Progetto VirtualCED Clustered Un passo indietro Il progetto VirtualCED, descritto in un precedente articolo 1, è ormai stato implementato con successo. Riassumendo brevemente, si tratta di un progetto

Dettagli

Boot Camp Guida all installazione e alla configurazione

Boot Camp Guida all installazione e alla configurazione Boot Camp Guida all installazione e alla configurazione Indice 4 Introduzione 5 Cosa ti occorre 6 Panoramica dell installazione 6 Passo 1: verifica la presenza di aggiornamenti. 6 Passo 2: apri Assistente

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

I Valori del Manifesto Agile sono direttamente applicabili a Scrum:!

I Valori del Manifesto Agile sono direttamente applicabili a Scrum:! Scrum descrizione I Principi di Scrum I Valori dal Manifesto Agile Scrum è il framework Agile più noto. E la sorgente di molte delle idee che si trovano oggi nei Principi e nei Valori del Manifesto Agile,

Dettagli

CARATTERISTICHE DELLE CRYPTO BOX

CARATTERISTICHE DELLE CRYPTO BOX Secure Stream PANORAMICA Il sistema Secure Stream è costituito da due appliance (Crypto BOX) in grado di stabilire tra loro un collegamento sicuro. Le Crypto BOX sono dei veri e propri router in grado

Dettagli

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it Sicurezza delle reti wireless Alberto Gianoli alberto.gianoli@fe.infn.it Concetti di base IEEE 802.11: famiglia di standard tra cui: 802.11a, b, g: physical e max data rate spec. 802.11e: QoS (traffic

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

ALGEBRA I: CARDINALITÀ DI INSIEMI

ALGEBRA I: CARDINALITÀ DI INSIEMI ALGEBRA I: CARDINALITÀ DI INSIEMI 1. CONFRONTO DI CARDINALITÀ E chiaro a tutti che esistono insiemi finiti cioè con un numero finito di elementi) ed insiemi infiniti. E anche chiaro che ogni insieme infinito

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Come difendersi dai VIRUS

Come difendersi dai VIRUS Come difendersi dai VIRUS DEFINIZIONE Un virus è un programma, cioè una serie di istruzioni, scritte in un linguaggio di programmazione, in passato era di solito di basso livello*, mentre con l'avvento

Dettagli

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT Introduzione Un file batch è un file di testo di tipo ASCII che contiene una sequenza di comandi DOS. I file batch devono avere estensione.bat I comandi DOS all interno dei programmi batch sono eseguiti

Dettagli

Gestione dinamica di una pila

Gestione dinamica di una pila Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.

Dettagli

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Dettagli

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi:

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Routing (instradamento) in Internet Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Stub AS: istituzione piccola Multihomed AS: grande istituzione (nessun ( transito Transit AS: provider

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante

Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante Introduzione Il problema del massimo flusso. Preflow-push e augmenting path: un approccio unificante Il problema del massimo flusso è uno dei fondamentali problemi nell ottimizzazione su rete. Esso è presente

Dettagli

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN per Expert NANO 2ZN Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie Expert NANO 2ZN Nome documento: MODBUS-RTU_NANO_2ZN_01-12_ITA Software installato: NANO_2ZN.hex

Dettagli