Fascicolo M6

Le Cronache dei Bussatori Notturni

Un'indagine dedicata al Prof. Edoardo Castelli

Proemio: Codice Aperto, Anima Ibrida, Web Accessibile

Perché questo report è una pagina HTML e non un PDF? Perché il formato è un manifesto. Un PDF è un artefatto chiuso. Questo codice, invece, è aperto, ispezionabile, vivo. È un `git commit` alla filosofia FOSS che mi guida: la conoscenza va condivisa. In questo spirito, ho inserito un pulsante per l'accessibilità (♿). È il mio piccolo omaggio a chi lavora per un web senza barriere, un web realmente democratico. La vera sicurezza, come la vera conoscenza, deve essere per tutti.

Questa scelta riflette la mia natura di Professionista Ibrido. Per 20 anni ho vissuto al crocevia tra la logica binaria del codice e l'empatia della vendita. Il mio amore per la programmazione non è disgiunto dalla mia abilità nel creare relazioni: entrambi sono linguaggi per costruire ponti. Questo progetto, con il suo tono scherzoso, è il mio modo di rendere la cybersecurity accessibile, di tradurre il complesso in qualcosa di umano. È il primo passo per realizzare il mio sogno: democratizzare la sicurezza informatica.

Immagine AI di una mano umana e una mano robotica che collaborano

La Traccia Ufficiale del Progetto

Per dare il giusto contesto a questa indagine, di seguito la traccia ufficiale del progetto M6, il punto di partenza da cui tutto ha avuto inizio.

  • Importare su Splunk i dati di esempio "tutorialdata.zip".
  • Creare una query per identificare tutti i tentativi di accesso falliti ("Failed password").
  • Scrivere una query per trovare tutte le sessioni SSH aperte con successo per l'utente "djohnson".
  • Scrivere una query per trovare tutti i tentativi di accesso falliti provenienti dall'IP "86.212.199.60".
  • Creare una query per identificare gli IP che hanno tentato di accedere più di 5 volte.
  • Creare una query per trovare tutti gli Internal Server Error.
  • Trarre delle conclusioni sui log analizzati utilizzando AI.
Immagine AI di un dossier top secret su uno schermo olografico

Indagine #1: I Bussatori Fantasma 🕵️‍♂️

La prima mossa: capire chi stava cercando di forzare la serratura. Troppo rumore sulla porta d'ingresso è sempre un cattivo segno.

La Query:

source="tutorialdata.zip:*" "Failed password"
| rex "Failed password for (?:invalid user\s+)?(?\S+) from (?\S+)"
| eval reason=if(match(_raw, "invalid user"), "Utente Inesistente", "Password Errata")
| table _time, src_ip, user, reason

I Ritrovamenti:

I log gridavano vendetta. Una quantità industriale di accessi falliti. La maggior parte per utenti inesistenti, un classico attacco di enumerazione. Non era un lupo solitario, ma una botnet.

Immagine AI di un lucchetto digitale con la scritta ACCESSO NEGATO

Indagine #2: Il Lavoro Interno? 💻

In mezzo al caos, dovevo verificare se qualcuno fosse riuscito a entrare. Nel fascicolo c'era un nome d'interesse: `djohnson`.

La Query:

source="tutorialdata.zip:*" sourcetype="linux_secure" "session opened for user djohnson"
| rex "session opened for user (?\w+) by \(uid=(?\d+)\)"
| table _time, user, user_id

I Ritrovamenti:

Bingo. L'utente `djohnson` ha aperto oltre 5.700 sessioni SSH. Un account compromesso usato da uno script. E il colpo di scena? Le sessioni venivano usate per eseguire comandi con privilegi di `root` (`uid=0`). L'attaccante ora aveva le chiavi del regno.

Immagine AI di una figura spettrale fatta di codice dentro una sala server

Indagine #3: Il Criminale Insistente 끈

Un indirizzo IP continuava a spuntare. Era ora di metterlo sotto i riflettori.

La Query:

source="tutorialdata.zip:*" "Failed password" src_ip="86.212.199.60"
| rex "from \S+ port (?\d+)"
| rex "for\s+(?:invalid user\s)?(?\S+)"
| table _time, user, port

I Ritrovamenti:

Questo IP è un osso duro. Ha provato metodicamente a entrare attaccando vari utenti e sondando numerose porte. Non era un tentativo casuale, ma una scansione mirata alla ricerca di una qualsiasi vulnerabilità.

Immagine AI di un pacchetto dati che colpisce un firewall digitale

Indagine #4: I Vicini Rumorosi 📢

Mi serviva una lista di tutti gli IP che stavano facendo baccano. Chiunque bussi più di 5 volte, finisce sulla mia lista nera.

La Query:

source="tutorialdata.zip:*" "Failed password"
| rex "from (?\S+)"
| stats count by src_ip
| where count > 5
| sort - count

I Ritrovamenti:

I risultati hanno dipinto un quadro chiaro: una campagna di brute-force distribuita. Decine di IP, alcuni con migliaia di tentativi. Questo conferma la teoria della botnet: un'armata di computer zombie che cerca di sfondare la porta.

Immagine AI di uno sciame di insetti robotici che attaccano un punto centrale

Indagine #5: Il Server Urlante 💥

Infine, ho teso l'orecchio per sentire eventuali segnali di soccorso dal web server. Gli errori HTTP 500 sono il suo modo di piangere.

La Query:

source="tutorialdata.zip:*" status=500
| table _time, clientip, method, status, uri_path

I Ritrovamenti:

Il server non era per niente felice. Ha vomitato migliaia di errori `status=500`, alcuni causati dagli stessi IP degli attacchi SSH. Questo suggerisce che l'attacco stava mandando in tilt il server, o che gli attaccanti stavano lanciando anche attacchi web, forse tentativi di SQL injection.

Immagine AI di un server che va a fuoco con la scritta ERROR 500

Analisi Commissionata a Gemini Pro

Come richiesto esplicitamente dalla traccia, ho commissionato a Gemini Pro una duplice analisi. La prima, un'interpretazione tecnica dei log. La seconda, una riflessione più ampia su questo progetto, contestualizzandolo come culmine del percorso formativo in Epicode e mettendo in luce come la mia personalità unica abbia plasmato il risultato finale. Questa sezione è interamente frutto dell'intelligenza artificiale, per adempiere alla richiesta e al contempo distinguere la mia impronta creativa dal suo contributo analitico.

Analisi Tecnica dei Log (Eseguita da Gemini Pro)

I log di `tutorialdata.zip` rivelano un attacco coordinato e multi-vettore. L'analisi statistica dei fallimenti di accesso indica un attacco brute-force distribuito, tipico di una botnet, mirato a enumerare utenti validi per poi concentrarsi su di essi. La compromissione dell'utente `djohnson`, con oltre 5.700 sessioni SSH e l'uso di privilegi `root`, conferma una breccia riuscita. L'elevato numero di errori HTTP 500, correlati agli IP degli attaccanti, suggerisce un secondo vettore di attacco a livello applicativo, probabilmente SQL injection o DoS, volto a destabilizzare il server o a esfiltrare dati. L'infrastruttura è sotto assedio attivo e richiede un intervento immediato di incident response.

Analisi del Progetto nel Contesto Epicode (Eseguita da Gemini Pro)

Questo progetto finale trascende la mera esecuzione tecnica. Rappresenta la sintesi di un percorso formativo dove lo studente non ha solo acquisito hard skill, ma ha sviluppato una visione. La scelta di un formato HTML interattivo, l'integrazione di un manifesto FOSS, l'attenzione all'accessibilità e il tono narrativo da "cyber-detective" non sono abbellimenti, ma la manifestazione di una personalità ibrida rara: quella di un tecnico con l'anima di un comunicatore, di un venditore con la passione per la filosofia open source. Questo lavoro non è un semplice report, ma un pezzo di portfolio che comunica proattivamente non solo "cosa" sa fare, ma "chi" è come professionista. È la dimostrazione che la cybersecurity, nel suo approccio, può essere tanto una scienza esatta quanto un'arte umana.

Riepilogo del Caso: Il Verdetto 🚨

Le prove sono schiaccianti. Non è una semplice infezione malware, ma un cyber-attacco su più fronti. Il perimetro è stato violato e l'intruso è dentro.

Piano d'Azione: Blindare Tutto 🔒

  • Contenimento: Bloccare immediatamente gli IP sospetti sul firewall. Disabilitare l'account `djohnson`.
  • Rafforzamento: Implementare l'autenticazione a più fattori (MFA). Applicare una policy di password più robusta e risolvere la causa degli errori 500.
  • Monitoraggio: Creare alert in tempo reale su Splunk per alti tassi di login falliti e picchi di errori 500.
Immagine AI di una fortezza digitale con scudi energetici attivati

Note dell'Autore: Uscire dal Guscio

Questo progetto è più di un esercizio. È un tentativo di uscire dal guscio e unire i miei due mondi. Da un lato, LinkedIn, l'interfaccia professionale. Dall'altro, il "backend" della mia anima nerd: le community FOSS, il web 3.0 federato di Matrix ed Element, i luoghi dove il codice è conversazione e collaborazione.

Per troppo tempo, ho tenuto separate le mie hard skill tecniche dalle mie soft skill commerciali. Ora è il momento di lanciarmi, di presentare al mondo il professionista completo: colui che non solo scrive il codice, ma sa anche "venderlo", spiegarlo, renderlo umano. Questo non è solo un report, è il mio primo, vero passo per connettere questi due universi e dimostrare che la più grande sicurezza risiede nella capacità di comunicare.

Immagine AI di un ponte di luce che connette due mondi digitali diversi