dgt_net02 – Pacchetti TCP e UDP in C

Titolo del modulo: dgt_net02 – Pacchetti TCP e UDP in C

Panoramica:
Il modulo “dgt_net02 – Pacchetti TCP e UDP in C” tratta il networking e l’hacking al livello più basso. Con un focus sul Transmission Control Protocol (TCP) e sullo User Datagram Protocol (UDP), i partecipanti studieranno come si costruiscono pacchetti di rete personalizzati con il linguaggio C: socket, header, payload e le strutture dati che li sostengono. Il modulo unisce teoria e pratica e tratta la comunicazione di rete a basso livello e il suo impiego nella cybersecurity.

Secondo il metodo dell’academy, il codice C non si scrive a mano. Una volta chiara la teoria, specifichi in linguaggio naturale cosa deve fare un programma (aprire un server TCP su una determinata porta, inviare un datagramma UDP con un certo payload, impostare uno specifico campo dell’header), la macchina lo scrive e lo compila, e tu leggi il codice generato, verifichi byte order, dimensioni dei buffer e controlli sugli errori, catturi i pacchetti che invia davvero e li confronti con ciò che hai chiesto.

Obiettivi del modulo:
– Comprendere i fondamenti dei protocolli di rete TCP/IP.
– Comprendere come si creano e si manipolano i socket TCP e UDP in C, abbastanza da revisionare il codice prodotto da una macchina.
– Specificare con precisione in linguaggio naturale pacchetti di rete personalizzati e verificare che il codice generato li costruisca in modo corretto e robusto.
– Esplorare applicazioni e scenari pratici in cui queste competenze possono essere impiegate in modo etico.
– Approfondire le tecniche di network hacking da una prospettiva difensiva.

Contenuti del modulo:
1. Introduzione ai protocolli di rete:
– Panoramica della suite TCP/IP
– Differenze tra TCP e UDP

  1. Programmazione C per il networking:
  2. Basi della programmazione dei socket in C
  3. Comprendere le strutture dati per il networking, ad es. struct e puntatori

  4. Creare socket TCP:

  5. Come si crea un server e un client TCP usando i socket
  6. Gestire le connessioni, leggere/scrivere dati e chiudere i socket

  7. Creare socket UDP:

  8. Stabilire canali di comunicazione UDP
  9. Lavorare con i datagrammi per inviare e ricevere dati in modo efficiente

  10. Costruire pacchetti personalizzati:

  11. Manipolare header e payload dei pacchetti
  12. Implementare protocolli personalizzati su TCP/UDP

  13. Esempi di codice per creare socket in C:

  14. Esempi di socket TCP e UDP generati dalla macchina, richiesti in linguaggio naturale e letti passo per passo.
  15. Individuare bug e inefficienze nel codice di rete generato e chiedere alla macchina di correggerli.

  16. Ethical hacking e sicurezza di rete:

  17. Capire come queste competenze possono essere usate nei penetration test
  18. Sottolineare le considerazioni etiche e la conformità legale

  19. Laboratori e progetti in linguaggio naturale:

  20. Progetti reali in cui guidi la macchina a creare, inviare e ricevere pacchetti personalizzati, e li verifichi sulla rete.
  21. Laboratori collaborativi che simulano ambienti di rete.

  22. Argomenti avanzati (facoltativi):

  23. Esplorare i raw socket per un controllo ancora maggiore sulla costruzione dei pacchetti
  24. Integrare la programmazione di rete con altre pratiche a livello di sistema

Prerequisiti:
– Conoscenza di base del C, sufficiente a leggere e seguire un programma
– La conoscenza dei concetti di networking è utile ma non obbligatoria

Destinatari:
Questo modulo è rivolto a sviluppatori software, persone che si occupano di cybersecurity, ethical hacker e professionisti IT che lavorano con la comunicazione di rete a basso livello. È accessibile sia ai principianti con una base di programmazione sia a chi ha già esperienza.

Al termine di questo modulo, i partecipanti comprenderanno come si costruiscono i pacchetti TCP e UDP in C e sapranno farli realizzare a una macchina secondo specifica, verificando il codice e il traffico che genera, ponendo le basi per studi avanzati o per attività professionali nel network engineering e nella cybersecurity.
Gli studenti possono caricare i propri esercizi nel Progetto Git dell’Academy DevOps & SRE. Per questo modulo, crea una cartella con il tuo username come nome nella seguente sottocartella: https://github.com/Garanti-Del-Talento/gdt_academy