9.5 KiB
9.5 KiB
Lezione 1 (4 ore)
- Test d'ingresso
- Installazione di Kali Linux
- Ridimensionamento della partizione Windows
- Presentazione della piattaforma TryHackMe e dei moduli relativi al corso
- Configurazione della VPN (risolvere problema su #archlinux )
-
Lezione 2 (4 ore)
- Introduzione a
wget
escp
per effettuare download e copia di file tra sistemi remoti - Ripasso di
ps
etop
per la gestione e il monitoraggio dei processi - Utilizzo di
cron
per l'automatizzazione del sistema - Gestione del package manager
aptitude
- Gestione dei log di sistema utilizzando
journalctl
- Introduzione a
-
Lezione 3 (4 ore)
- Web hacking e web fundamental
- Principi di funzionamento di un'applicazione web
- Web hacking e web fundamental
-
Lezione 3 (4 ore)
- Web hacking e web fundamentals
- Architettura client/server
- Comunicazione tramite protocollo HTTP
- Semplice webserver in #golang
- Web hacking e web fundamentals
Lezione 4 (ore)
- bash scripting
Lezione 5 (ore)
- bash scripting
- smtp
Lezione 6 (4 ore)
- sftp e scp
- cron
Lezione 7 (4 ore)
- https://tryhackme.com/room/networksecurityprotocols
- https://tryhackme.com/room/networksecurityprotocols2
- https://tryhackme.com/room/basicpentestingjt
- Abilitare su interfaccia di rete la modalità hotspot
- dns poisoning
- versione pixel perfect
Lezione 8 (4 ore)
- MITM
- Coding
Lezione 9 (4 ore)
- ## Produzione di un crash-course di Python generato da un LLM
- Converti il seguente script bash in python. A partire dallo script generato produci un crash-course di Python da svolgere in massimo 2 ore di lezione in cui vengono messi in risalto i costrutti fondamentali del linguaggio di programmazione. Per ogni costrutto fondamentale produci dei semplici esempi. Assicurati che la prima parte del corso contenga le istruzioni basilari per verificare che l'interprete Python sia presente sulla macchina supponendo che lo studente stia utilizzando una distribuzione basata su Debian o, in alternativa, fornisci i passi per installare Python su una distribuzione basata su Debian. Non produrre il corso tutto in una volta ma, dopo aver terminato una sezione del corso, aspetta un mio prompt per continuare. Non dimenticare di utilizzare lo script convertito come riferimento per gli argomenti trattati e per gli esempi. Il corso potrebbe essere strutturato come segue. Formatta l'output generato in Markdown. Aspetta il mio prompt per procedere alla generazione dell'argomento successivo. Gli argomenti principali sono quelli di Livello 3 (`###`) nella strutturazione Markdown riportata sotto.
- ### Introduzione a Python (massimo 100 parole)
- Sottolineare il fatto che Python è un interprete
- Raccontare brevemente la storia delle versioni di Python
- ### Installazione di Python su Debian (massimo 50 parole)
- Spiegare come verificare se l'installazione è già presente
- Spiegare come installare Python qualora non fosse già presente sul sistema
- ### Costrutti fondamentali del linguaggio
- #### Variabili (massimo 100 parole di descrizione + esempi)
- Specificare i principali tipi di variabile
- #### Istruzioni (massimo 100 parole di descrizione + esempi)
- #### Cicli (massimo 100 parole di descrizione + esempi)
- #### Branch condizionali (massimo 100 parole di descrizione + esempi)
- #### Strutture di dati (massimo 100 parole di descrizione + esempi)
- ### Esercizi (massimo 3 esercizi)
- ### Compito di realtà
- Assegna un compito di realtà da svolgere in Python che sia inerente al tema della Cybersecurity.
- Configura docker sulla macchina Kali Linux.
- Verificarer che docker sia correttamente installato sulla macchina host e eseguibile non da root.
- Crea un docker-compose.yml per descrivere l'architettura di un servizio SFTP.
- Lancia il container e assicurati di poter accedere tramite ssh senza password al container.
- Assicurati che il servizio sia raggiungibile da tutte le macchine della rete attraverso la porte 8023.
- Prova a fare download/upload di un file da host a container e viceversa.
- Documenta tutti i passaggi su un file Markdown utilizzando l'editor di testi che preferite.
- Inviate il file markdown su accademia@andrefazzi.eu indicando l'indirizzo IP locale della macchina host e allegando alla mail la chiave pubblica che avete inserito nel container per rendere l'accesso *password less*.
id:: 654e277f-3f84-4397-907f-debaddb5d90d
- Per costruire il servizio si può utilizzare un immagina già pronta oppure costruirla attraverso un Dockerfile. Nel primo caso occorrerà giustificare la scelta di quella particolare immagine.
- Converti il seguente script bash in python.
A partire dallo script generato produci un crash-course di Python da svolgere in massimo 2 ore di lezione in cui vengono messi in risalto i costrutti fondamentali del linguaggio di programmazione.
```bash
#!/bin/bash
DRY_RUN=0
REMOVE_USER=0
SMTP_SERVER=""
# Controlla se l'opzione --dry-run, --rm, --smtp sono state specificate
for arg in "$@"
do
if [ "$arg" == "--dry-run" ]
then
DRY_RUN=1
elif [ "$arg" == "--rm" ]
then
REMOVE_USER=1
elif [[ "$arg" =~ ^--smtp=.* ]]
then
SMTP_SERVER="${arg#*=}"
fi
done
# Controlla se pwgen è installato
if ! command -v pwgen &> /dev/null
then
echo "Il programma pwgen non è installato. Installarlo? (s/n)"
read answer
if echo "$answer" | grep -iq "^s"
then
sudo apt-get install -y pwgen
else
echo "Lo script non può continuare senza pwgen. Uscita."
exit 1
fi
fi
# Legge le credenziali SMTP dal file .env
source .env
echo $SMTP_SERVER
echo $SMTP_USER
# Inizia a leggere gli username da stdin
while IFS= read -r username
do
# Se l'opzione --rm è attiva e l'utente esiste, lo rimuove
if [ $REMOVE_USER -eq 1 ] && id -u "$username" >/dev/null 2>&1; then
sudo userdel "$username"
fi
# Controlla se l'utente esiste già
if id -u "$username" >/dev/null 2>&1; then
echo "L'utente $username esiste già. Saltando."
continue
fi
# Genera una password
password=$(pwgen -s -B 8 1)
# Se l'opzione --dry-run è attiva, stampa il comando senza eseguirlo
if [ $DRY_RUN -eq 1 ]
then
echo "sudo useradd -m -s /bin/bash -p \"$(openssl passwd -1 $password)\" \"$username\""
else
# Crea l'utente
if sudo useradd -m -s /bin/bash -p "$(openssl passwd -1 $password)" "$username"
then
echo "$username,$password"
# Se l'opzione --smtp è attiva, invia una mail all'utente
if [ -n "$SMTP_SERVER" ]
then
echo "Invio una mail tramite $SMTP_SERVER..."
# Popola il template della mail
mail_body=$(cat mail.tpl)
mail_body=${mail_body//'{USERNAME}'/$username}
mail_body=${mail_body//'{PASSWORD}'/$password}
echo -e "Subject: Nuovo account\n\n$mail_body" | msmtp --host=$SMTP_SERVER --port=587 --tls=on --tls-starttls=on --user=$SMTP_USER --password=$SMTP_PASS --from=$SMTP_USER posta@andreafazzi.eu
fi
else
echo "Errore nella creazione dell'utente $username. Saltando."
fi
fi
done
```
Per ogni costrutto fondamentale produci dei semplici esempi. Assicurati che la prima parte del corso contenga le istruzioni basilari per verificare che l'interprete Python sia presente sulla macchina supponendo che lo studente stia utilizzando una distribuzione basata su Debian o, in alternativa, fornisci i passi per installare Python su una distribuzione basata su Debian.
Non produrre il corso tutto in una volta ma, dopo aver terminato una sezione del corso, aspetta un mio prompt per continuare.
Non dimenticare di utilizzare lo script convertito come riferimento per gli argomenti trattati e per gli esempi.
Il corso potrebbe essere strutturato come segue. Formatta l'output generato in Markdown. Aspetta il mio prompt per procedere alla generazione dell'argomento successivo. Gli argomenti principali sono quelli di Livello 3 (`###`) nella strutturazione Markdown riportata sotto.
- ### Introduzione a Python (massimo 100 parole)
* Sottolineare il fatto che Python è un interprete
* Raccontare brevemente la storia delle versioni di Python
- ### Installazione di Python su Debian (massimo 50 parole)
* Spiegare come verificare se l'installazione è già presente
* Spiegare come installare Python qualora non fosse già presente sul sistema
- ### Costrutti fondamentali del linguaggio
- #### Variabili (massimo 100 parole di descrizione + esempi)
* Specificare i principali tipi di variabile
- #### Istruzioni (massimo 100 parole di descrizione + esempi)
- #### Cicli (massimo 100 parole di descrizione + esempi)
- #### Branch condizionali (massimo 100 parole di descrizione + esempi)
- #### Strutture di dati (massimo 100 parole di descrizione + esempi)
- ### Esercizi (massimo 3 esercizi)
- ### Compito di realtà
Assegna un compito di realtà da svolgere in Python che sia inerente al tema della Cybersecurity.
Lezione 10 (4 ore)
- Verifica