knowledgebase/pages/Lezioni di Cybersecurity con sistemi Linux.md
2023-11-10 16:52:53 +01:00

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 wgete scp per effettuare download e copia di file tra sistemi remoti
    • Ripasso di ps e top 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
  • Lezione 3 (4 ore)

    • Web hacking e web fundamental
      • Principi di funzionamento di un'applicazione web
  • Lezione 3 (4 ore)

    • Web hacking e web fundamentals
      • Architettura client/server
      • Comunicazione tramite protocollo HTTP
      • Semplice webserver in #golang

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