Master in Cybersecurtiy...Shareware (1) • Software distribuito sulla base di un sistema d'onore....
Transcript of Master in Cybersecurtiy...Shareware (1) • Software distribuito sulla base di un sistema d'onore....
Master in Cybersecurtiy
Lez. 2 Introduzione all’architettura degli elaboratori
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 2
Obiettivi
• Comprendere il principio di funzionamento di un calcolatore
• Comprendere che cosa significa scrivere un programma
• Sperimentare cosa significa scrivere un programma prestando attenzione a quanto è facile commettere errori
• Soffermarsi a considerare come la modifica anche minima di un dato all’interno del programma può sconvolgerne il significato.
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3
Hardware
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 4
Schema di un calcolatore
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 5
CPU and main memory
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 2-6
Machine Instruction Types
• Data Transfer: copiano i dati dalla memoria ai registri e dai registri alla memoria
• Arithmetic/Logic: modificano i dati presenti nei registri • Input: acquisiscono i dati dai dispositivi di Inputoutput
e li trasferiscono all’interno della memoria del calcolatore
• Output: prelevano i dati dalla memoria del calcolatore e li trasferiscono sui dispositivi di output
• Controllo: determinano il flusso di esecuzione delle istruzioni in funzione dei valori di alcuni parameteri
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 2-7
Esempio #1
.text
.global_start_start:
mov num1,%eaxmov num2,%ebxadd %eax, %ebxmov %ebx, num2hlt
.datanum1: .byte 4num2: .byte 3
MANCANO ISTRUZIONI DI INPUT/OUTPUT !!!
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 8
INSTRUZIONI DI OUTPUT
# COME SCRIVERE UN DATO SUL VIDEO
mov $msg,%ecx #Msg. Da visualizzaremov $21, %edx #Lung. Messaggiomov $1, %ebx # Video Identifiermov $4, %eax # WRITE commandint $0x80
.datamsg: .asciiz “Messaggio di prova: \n“ A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 9
INSTRUZIONI DI INPUT
# COME ACQUISIRE UN DATO DA TASTIERA
mov $dato,%ecx # Dato da leggeremov $2, %edx # Num. Caratterimov $0, %ebx # KeyB Identifiermov $3, %eax # read commandint $0x80
.datadato: .byte 0 A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 10
Esercizio #2
• Scrivere un programma assembler che visualizza un messaggio per l’acquisizione di un intero <9, legge il dato e lo visualizza
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 11
Analisi del problema
• La soluzione dell’esercizio richiede la stesura di un programma che: 1. Svolge un’operazione di output à visualizza msg 2. Svolge un’operazione di input à acquisisce il dato 3. Svolge un’operazione di output à visualizza il dato letto
I dati di cui abbiamo bisogno sono:
1. Il messaggio da stampare 2. La locazione in cui memorizzare il dato letto
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 12
Soluzione
.datamsg: .asciiz “Please insert a number: \n“num2: .byte 0
.byte 0x0a.text.global_start_start:# Visualizza il messaggio sul video
mov $msg, %ecxmov $25, %edxmov $1, %ebx # Video Identifiermov $4, %eax # WRITE codeint $0x80
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 13
Soluzione cont.
#Acquisizione dato da tastieramov $num2, %ecxmov $1, %edxmov $0, %ebx # Keyboard Identifiermov $3, %eax # READ codeint $0x80
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 14
Soluzione cont.
# Visualizza il dato acquisitomov $num2, %ecxmov $2, %edxmov $1, %ebxmov $4, %eaxint $0x80
# EXITmov $0, %ebxmov $1, %eaxint $0x80
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 15
Esercizio #3
• Scrivere un programma assembler che acquisisce da tastiera due numeri (la cui somma deve essere minore di 10), dopo aver visualizzato un opportuno messaggio di inserimento dati, ne fa la somma e stampa il risultato.
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 16
Esempio
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 17
Shellcode.s
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 18
SOFTWARE
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 19
Che cosè il software
• L’insieme dei programmi di cui è fornito un computer, il cui scopo è rendere utile e produttivo l’uso di un computer
• Il software è oggi la componente che caratterizza una piattaforma informatica e ne determina il suo valore
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 20
The Importance of Software in Business
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 21
time 1950 today
$ Software
Hardware
High
Low
Due tipologie principali di SW
• SW applicativo • Programmi che generalmente interagiscono con
l'utente per eseguire lavori utili all'utente. Questi programmi generalmente parlano all'HW attraverso l'assistenza del sistema SW
• SW di sistema • Programmi che generalmente eseguono le attività
in background in un computer. Questi programmi, interagiscono anche direttamente con l'HW
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 22
Hardware
Operating System
Utility Language Translator
Device Driver
Scientific Apps.
Business Apps.
Productivity Apps.
Entertainment Apps.
System software
Application software
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 23
Application software
Hardware
System software
Users
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 24
Application Vs System
• La classificazione del Sw tra applicativo e di sistema non è netta
• Possono esserci discrepanze tra autori diversi, ad esempio pe alcuni autori I DBMS vanno classificati tra il Sw di sistema per altri tra gli applicativi
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 25
In genere …
• I software applicativi sono programmi che interagiscono direttamente con l'utente per l'esecuzione di un determinato tipo di lavoro
• Generalmente non parlano “direttamente” con l'HW (cioè stampante, unità disco, ecc.), Ma attraverso interfacce fornite dal sistema operativo
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 26
Modalità di interazione
• Interactive-mode • L'utente esegue il programma sul computer e
continua a interagire con il computer durante l'esecuzione del programma
• Esempio: word processor • Batch-mode
• L'utente avvia il programma e il computer elabora i dati forniti e produce risultati senza ulteriori interventi da parte dell'utente
• Esempio: paghe e stipendi A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 27
Area applicativa
• Scientific/engineering/graphics • Business • Productivity • Entertainment • Educational
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 28
Application software
Off-the-shelf software
Standard package
Customized package
Contract
Proprietary software
In-house developed
In-house customized
Contract customization
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 29
Ownership
• Freeware • Shareware • Public-domain software
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 30
Freeware
• Software protetto da copyright fornito gratuitamente dall'autore. Sebbene disponibile gratuitamente, l'autore mantiene il copyright,
• il che significa che è l'autore che decide cosa si pyò fare del prodotto. Di solito, l'autore consente alle persone di utilizzare il software, ma non venderlo.
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 31
Shareware (1)
• Software distribuito sulla base di un sistema d'onore. Maggior parte shareware viene fornito gratuitamente, ma l'autore di solito chiede di dare un piccolo contributo.
• Si può copiare shareware e trasmetterlo ad amici e colleghi, ma anche loro dovrebbero pagare un contributo se usano il prodotto.
• Lo shareware differisce dal software di dominio pubblico in quanto lo shareware è protetto da copyright.
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 32
Public-domain Software
• Si riferisce a qualsiasi programma che non sia protetto da copyright.
• il software è gratuito e può essere utilizzato senza restrizioni.
• Il termine software di dominio pubblico viene spesso utilizzato in modo errato per includere freeware, software gratuito che è comunque protetto da copyright
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 33
Software open source (OSS)
• OSS è software gratuito • per il quale il codice sorgente viene reso disponibile
sotto una licenza di copyright ben specifica (Open Source)
• Questa licenza in genere consente agli utenti di utilizzare, modificare e migliorare il software per ridistribuirlo
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 34
Software di sistema
• ll software preposto a: • gestire in modo ottimale le risorse hardware
del computer • fornire agli utenti strumenti di base per gestire
le informazioni • fornire gli strumenti di base per la
realizzazione di ambienti di programmazione
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 35
Esempi
• SO • Editor • Compilatori • Utility di sistema per la gestione dei file • Utility di sistema per il monitoraggio del
sistema
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 36
IL SISTEMA OPERATIVO
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 37
Figure 3.3 Software classification
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-38
Funzioni di un sistema operativo
• Supervisionare il funzionamento del computer
• Archiviare e recuperare i file (cartelle) • Pianificare i programmi per l'esecuzione • Coordinare l'esecuzione dei programmi
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-39
Tipologie di sistemi operativi
• Batch processing • Time-sharing • Real time
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-40
Operating System Components
• Interfaccia utente: l’insieme dei comandi con cui gli utenti comunicano direttamente con OS • Text based (Shell) • Interfaccia utente grafica (GUI)
• Kernel: esegue le funzioni di base richieste • File manager • I driver di periferica • Gestore della memoria • Scheduler A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-41
Graficamente
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-42
File Manager
• Directory (o cartella): un gruppo di file e altre directory creati dall'utente (sottodirectory)
• Percorso directory: una sequenza di directory all'interno di directory
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-43
Memory Manager
• Alloca spazio nella memoria principale • Può creare l'illusione che la macchina
abbia più memoria di quanta ne abbia effettivamente (memoria virtuale)
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-44
Getting it Started (Bootstrapping)
• Avvio di un sistema: • programma nella ROM (esempio di firmware) • Trasferisce il sistema operativo dalla memoria di
massa alla memoria principale • Esegue il salto al sistema operativo
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-45
Figure 3.5 The booting process
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 3-46
Protezioni
• Dal punto di vista della protezione, il computer è costituito da una raccolta di oggetti, hardware o software
• Ogni oggetto ha un nome univoco ed è possibile accedervi attraverso una serie ben definita di operazioni
• Problema di protezione: assicurarsi che ogni oggetto sia accessibile correttamente e solo da quei soggetti autorizzati a farlo
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 47
Linux Has Many Distributions
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 48
What is Linux? Linux + GNU Utilities = Free Unix
• Linux is an O/S core written by Linus Torvalds and others AND
• a set of small programs written by Richard Stallman and others. They are the GNU utilities.
http://www.gnu.org/ A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 49
Unix
• One of the major practical advances of the time was the introduction of the UNIX operating system, primarily thanks to Ken Thompson and Dennis Ritchie at Bell Labs
• UNIX took many good ideas from different operating systems, particularly from Multics, and some from systems like TENEX and the Berkeley Time-Sharing System [S+68]
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 50
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 51
The modern era
• Beyond the minicomputer came a new type of machine, cheaper, faster, and for the masses: the personal computer, or PC as we call it today.
• Led by Apple’s early machines (e.g., the Apple II) and the IBM PC, this new breed of machine would soon become the dominant force in computing, as their low-cost enabled one machine per desktop instead of a shared minicomputer per workgroup
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 52
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 53
macOS
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 54
MacOS
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 55
Android
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 56
Android
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 57
Embedded System • A combination of hardware and software designed to
perform a dedicated function • Often, embedded systems are part of a larger system or
product, • e.g., antilock braking system in a car
• Embedded systems are tightly coupled to their environment à imposes real-time constraints by the need to interact with the environment
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 58
Embedded OS
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 59
Embedded OS: example
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 60
Embedded OS • fast and lightweight process or thread switch • Scheduling real time • small size • responds to external interrupts quickly • minimizes intervals during which interrupts are disabled • provides fixed or variable-sized partitions for memory
management • provides special sequential files that can accumulate
data at a fast rate
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 61
Embedded OS • Embedded Linux • Windows CE • FreeRTOS • embOS • QNX • Vxworks • TinyOS • Contiky • SOS
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 62
Linux File System Basics
• I file Linux sono archiviati in un singolo file system gerarchico con radice
• I file di dati sono memorizzati in directory (cartelle)
• Le directory possono essere nidificate in profondità quanto necessario
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi
63
Directories
User home directories
Data files
root
Naming Files
• Files are named by • naming each
containing directory • starting at the root
• This is known as the pathname
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi
64
/etc/passwd
/home/neale/b
The Current Directory
• Una directory è designata come directory corrente
• se si omette il simbolo / il percorso è relativo alla directory di lavoro corrente
• Usa pwd per scoprire dove sei
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi
65
Current working directory
Some Special File Names
• Alcuni nomi di file sono speciali: • / La directory root (da non confondere con l'utente root) • . La directory corrente • .. La directory principale (precedente) • ~ La directory home
• Esempi: • ./a uguale a • ../jane/x salite di un livello quindi cercate nella directory jane
il file x
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 66
Special Files
• /home - all users’ home directories are stored here
• /bin, /usr/bin - system commands • /sbin, /usr/sbin - commands used by
sysadmins • /etc - all sorts of configuration files • /var - logs, spool directories etc. • /dev - device files • /proc - special system files A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 67
Linux Command Basics
• Per eseguire un comando, digitare il nome e gli argomenti nella riga di comando
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 68
ls -l /etc
Command name Options (flags)
Arguments
Common Commands
• pwd - stampa (visualizza) la directory di lavoro
• cd <dir> - cambia la directory di lavoro corrente in dir
• ls - elenca i file nella directory di lavoro corrente
• ls -l - elenca i file nella directory di lavoro corrente in formato lungo
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 69
File Commands
• cp <fromfile> <tofile> • Copia da <fromfile> a <tofile>
• mv <fromfile> <tofile> • Spostare / rinominare <fromfile> in <tofile>
• rm <file> • Rimuove il file denominato <file>
• mkdir <newdir> • Crea una nuova directory chiamata <newdir>
• rmdir <dir> • Rimuovi una registadirectory (vuota)
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 70
More Commands
• who • Elenca chi è attualmente connesso al sistema
• whoami • Segnala quale utente ha effettuato l'accesso
• ps • Elenca i processi dell’utente sul sistema
• ps aux • Elenca tutti i processi sul sistema
• echo "Una stringa da ripetere" • Visualizza l’argomento al terminale
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 71
More Commands
• kill - sends a signal to a process or process group
• You can only kill your own processes unless you are root
A.A. 2019/2020 Cybersecurity Master © Danilo Bruschi 72
UID PID PPID C STIME TTY TIME CMD root 6715 6692 2 14:34 ttyp0 00:00:00 sleep 10h root 6716 6692 0 14:34 ttyp0 00:00:00 ps -ef [root@penguinvm log]# kill 6715 [1]+ Terminated sleep 10h