<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Medio on u-random</title><link>https://u-random.dev/tags/medio/</link><description>Recent content in Medio on u-random</description><generator>Hugo -- gohugo.io</generator><language>it-it</language><lastBuildDate>Sun, 07 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://u-random.dev/tags/medio/index.xml" rel="self" type="application/rss+xml"/><item><title>Cisco Packet Tracer: Cinque Router, Una Catena, Nessun GPS</title><link>https://u-random.dev/blog/cisco-packet-tracer-cinque-router/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/cisco-packet-tracer-cinque-router/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Un router conosce solo le reti a cui e' direttamente collegato. Tutto il resto va detto esplicitamente con rotte statiche&lt;/li&gt;
&lt;li&gt;Ogni router ha piu' IP - uno per ogni interfaccia. &amp;quot;Marco e' 10.0.0.2&amp;quot; e' incompleto: Marco e' anche 10.10.10.1&lt;/li&gt;
&lt;li&gt;Le rotte statiche funzionano come indicazioni stradali: &amp;quot;se vuoi andare la', chiedi a lui&amp;quot;&lt;/li&gt;
&lt;li&gt;Se manca una rotta il pacchetto si ferma - il TTL serve esattamente per questo&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip route [rete] [maschera] [next-hop]&lt;/code&gt; - aggiunta rotta statica&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show ip route&lt;/code&gt; - tabella di routing corrente&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ping [ip]&lt;/code&gt; - test connettivita' end-to-end&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;hr&gt;
&lt;p&gt;Prima di toccare Linux voglio vedere il routing con gli occhi. In Linux i namespace sono invisibili - sono processi, non oggetti fisici. In Cisco Packet Tracer posso vedere i router come scatole, i cavi come linee, e guardare i pacchetti muoversi.&lt;/p&gt;</description></item><item><title>DLP e Wazuh</title><link>https://u-random.dev/blog/dlp-e-wazuh/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/dlp-e-wazuh/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DLP fatto in casa&lt;/strong&gt;: con 50 righe di Python e &lt;code&gt;inotify&lt;/code&gt; monitoriamo in tempo reale la scrittura di file sensibili.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pattern matching&lt;/strong&gt;: uno switch &lt;code&gt;match/case&lt;/code&gt; in Python 3.10+ intercetta SSN, carte di credito e codici fiscali.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wazuh in Docker&lt;/strong&gt;: integrazione con il manager tramite regole custom, superando i limiti di permessi e decodificatori.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tre errori reali&lt;/strong&gt;: come risolvere il blocco PEP 668 su Ubuntu 24.04, i permessi di &lt;code&gt;docker cp&lt;/code&gt; e l'errore del decoder &lt;code&gt;syslog&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;python3 -m venv ~/dlp-venv&lt;/li&gt;
&lt;li&gt;source ~/dlp-venv/bin/activate&lt;/li&gt;
&lt;li&gt;pip install inotify&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/docker/" &gt;docker&lt;/a&gt; cp single-node-wazuh.manager-1:/var/ossec/etc/rules/local_rules.xml ./local_rules.xml&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/docker/" &gt;docker&lt;/a&gt; exec single-node-wazuh.manager-1 chown wazuh:wazuh /var/ossec/etc/rules/local_rules.xml&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tail/" &gt;tail&lt;/a&gt; -f /var/log/syslog&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Apro la dashboard Wazuh. Nella colonna &lt;code&gt;full_log&lt;/code&gt; c'è scritto:&lt;/p&gt;</description></item><item><title>ESP cifra, AH no: IPsec visto dal vivo</title><link>https://u-random.dev/blog/ipsec-strongswan-esp-ah/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/ipsec-strongswan-esp-ah/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IPsec Suite:&lt;/strong&gt; Una suite di protocolli di rete sicuri (IKE + ESP + AH) implementata a livello IP per garantire autenticazione, integrità e riservatezza.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IKE (Internet Key Exchange):&lt;/strong&gt; Negozia gli algoritmi di sicurezza e stabilisce le Security Association (SA) scambiando chiavi tramite Diffie-Hellman (UDP 500/4500).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ESP (Encapsulating Security Payload):&lt;/strong&gt; Cifra il payload dei pacchetti (ad es. con AES-256) garantendo riservatezza ed autenticazione. Supporta il NAT tramite incapsulamento NAT-T.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AH (Authentication Header):&lt;/strong&gt; Firma crittograficamente i pacchetti per garantirne l'integrità, ma &lt;strong&gt;non cifra il payload&lt;/strong&gt;, lasciando i dati in chiaro ed esposti allo sniffing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tunnel vs Transport:&lt;/strong&gt; Tunnel mode cifra l'intero pacchetto originale aggiungendo un nuovo header IP (ideale per VPN Site-to-Site); Transport mode cifra solo il payload (ideale per host-to-host).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;apt install strongswan -y&lt;/li&gt;
&lt;li&gt;ipsec version&lt;/li&gt;
&lt;li&gt;ipsec restart&lt;/li&gt;
&lt;li&gt;ipsec up mustache&lt;/li&gt;
&lt;li&gt;ipsec statusall&lt;/li&gt;
&lt;li&gt;tcpdump -i enp0s1 udp port 500&lt;/li&gt;
&lt;li&gt;tcpdump -i enp0s1 proto 50&lt;/li&gt;
&lt;li&gt;tcpdump -i enp0s1 proto 51 -v&lt;/li&gt;
&lt;li&gt;ping 192.168.64.3&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Configurare IPsec host-to-host con StrongSwan e vedere con tcpdump la differenza tra ESP e AH. ESP cifra il payload - AH no. Questa distinzione è una domanda classica Security+ e fondamentale per la sicurezza di rete.&lt;/p&gt;</description></item><item><title>Il Tunnel che Sceglie: Split vs Full VPN con WireGuard</title><link>https://u-random.dev/blog/il-tunnel-che-sceglie/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/il-tunnel-che-sceglie/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WireGuard:&lt;/strong&gt; VPN moderna basata su Curve25519 e ChaCha20, integrata direttamente nel kernel Linux come interfaccia di rete virtuale (&lt;code&gt;wg0&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPN Concentrator:&lt;/strong&gt; Il dispositivo (in questo lab Ubuntu) che termina il tunnel cifrato, decifra il traffico e lo instrada verso la rete interna.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split Tunnel (&lt;code&gt;AllowedIPs = 10.0.0.0/24&lt;/code&gt;):&lt;/strong&gt; Solo il traffico destinato alla subnet della VPN passa nel tunnel; il traffico internet esce in chiaro tramite il gateway locale.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full Tunnel (&lt;code&gt;AllowedIPs = 0.0.0.0/0&lt;/code&gt;):&lt;/strong&gt; Tutto il traffico, incluso quello internet, viene convogliato nel tunnel cifrato e richiede IP forwarding e MASQUERADE sul concentratore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visibilità di rete:&lt;/strong&gt; &lt;code&gt;tcpdump&lt;/code&gt;/&lt;code&gt;tshark&lt;/code&gt; mostrano solo pacchetti UDP cifrati sull'interfaccia fisica (&lt;code&gt;enp0s1&lt;/code&gt;), mentre svelano il traffico ICMP/IP decifrato su quella virtuale (&lt;code&gt;wg0&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;apt install wireguard -y&lt;/li&gt;
&lt;li&gt;wg genkey | tee privatekey | wg pubkey &amp;gt; publickey&lt;/li&gt;
&lt;li&gt;wg-quick up wg0&lt;/li&gt;
&lt;li&gt;wg-quick down wg0&lt;/li&gt;
&lt;li&gt;ip route show&lt;/li&gt;
&lt;li&gt;traceroute 8.8.8.8&lt;/li&gt;
&lt;li&gt;tcpdump -i wg0&lt;/li&gt;
&lt;li&gt;tcpdump -i enp0s1 udp port 51820&lt;/li&gt;
&lt;li&gt;tshark -r capture.pcap&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Configurare un tunnel WireGuard tra due VM e vedere con i propri occhi la differenza tra split tunnel e full tunnel. Non teoria - routing table e traceroute che lo dimostrano empiricamente.&lt;/p&gt;</description></item><item><title>816 tentativi zero successi</title><link>https://u-random.dev/blog/816-tentativi-zero-successi/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/816-tentativi-zero-successi/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HIDS&lt;/strong&gt; (Wazuh agent) monitora il singolo host dall'interno - log, file, processi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SIEM&lt;/strong&gt; (Wazuh manager) raccoglie tutto, correla, genera alert.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HIPS&lt;/strong&gt; (fail2ban) agisce automaticamente dopo la detection - blocca l'IP attaccante.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IDS&lt;/strong&gt; e &lt;strong&gt;IPS&lt;/strong&gt; non sono prodotti diversi: è la stessa categoria, con o senza capacità di blocco.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://192.168.64.3 -t 4&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tail/" &gt;tail&lt;/a&gt; -f /var/log/auth.log&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tail/" &gt;tail&lt;/a&gt; -f /var/log/fail2ban.log&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Il lab è semplice: Ubuntu con Wazuh, Kali con Hydra, una wordlist da 14 milioni di password. Obiettivo: vedere cosa succede dall'altra parte quando un attaccante tenta il brute force SSH.&lt;/p&gt;</description></item><item><title>Il Campo che Parlava Troppo</title><link>https://u-random.dev/blog/il-campo-che-parlava-troppo/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/il-campo-che-parlava-troppo/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;SQL Injection avviene quando l'input utente viene concatenato direttamente nella query - il DB esegue codice che non dovrebbe&lt;/li&gt;
&lt;li&gt;Un apostrofo nel campo username è spesso sufficiente per rilevare la vulnerabilità&lt;/li&gt;
&lt;li&gt;La difesa corretta è la parameterized query - non l'input validation da sola&lt;/li&gt;
&lt;li&gt;Il WAF può rallentare l'attacco ma non sostituisce il fix nel codice&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;curl -s -X POST url -d &amp;quot;username=test&amp;amp;password=test&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tshark/" &gt;tshark&lt;/a&gt; -r capture.pcap -Y &amp;quot;http.request.method == POST&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Mi hanno dato tre ore e un URL. Un'applicazione web interna - gestionale ordini, usato dal reparto commerciale. &amp;quot;Testala. Dimmi cosa non va.&amp;quot;&lt;/p&gt;</description></item><item><title>Il Fantasma nella Rete</title><link>https://u-random.dev/blog/il-fantasma-nella-rete/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/il-fantasma-nella-rete/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Un honeypot è un sistema esca - qualsiasi connessione ricevuta è per definizione sospetta&lt;/li&gt;
&lt;li&gt;La ricognizione interna (lateral movement iniziale) lascia tracce nei log prima che l'attaccante agisca&lt;/li&gt;
&lt;li&gt;Analizzare chi ha contattato il honeypot rivela quali host sono compromessi o controllati da un attaccante&lt;/li&gt;
&lt;li&gt;IDS/IPS signature-based non rileva zero-day - il comportamento anomalo verso risorse inesistenti lo fa&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tshark/" &gt;tshark&lt;/a&gt; -r capture.pcap -Y &amp;quot;ip.dst == 192.168.10.99&amp;quot; -T fields -e ip.src -e tcp.dstport&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/dig/" &gt;dig&lt;/a&gt; -x 192.168.10.99&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Sono le 14:33. Il SIEM ha flaggato una connessione TCP verso &lt;code&gt;192.168.10.99&lt;/code&gt;. Il problema: a quell'IP non c'è nessun server. Non c'è nessun servizio. Non c'è nessun device registrato nell'inventario.&lt;/p&gt;</description></item><item><title>Il Postino Lavora di Notte</title><link>https://u-random.dev/blog/il-postino-lavora-di-notte/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/il-postino-lavora-di-notte/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;SMTP consegna le email, IMAP/POP3 le recuperano - protocolli separati con porte e ruoli distinti&lt;/li&gt;
&lt;li&gt;Una workstation che apre connessioni dirette sulla porta 25 è anomala: quel traffico spetta al mail server aziendale&lt;/li&gt;
&lt;li&gt;base64 negli allegati non è cifratura: su SMTP senza TLS, qualsiasi allegato è estraibile dal pcap in chiaro&lt;/li&gt;
&lt;li&gt;SPF, DKIM e DMARC sono i tre record DNS che distinguono un dominio difeso da uno esposto allo spoofing&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tshark/" &gt;tshark&lt;/a&gt; -r capture.pcap -Y &amp;quot;smtp&amp;quot; -T fields -e ip.src -e ip.dst -e smtp.req.command -e smtp.req.parameter&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/dig/" &gt;dig&lt;/a&gt; MX dominio.com&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/dig/" &gt;dig&lt;/a&gt; TXT _dmarc.dominio.com&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="Il Postino Lavora di Notte"
 width="2752"
 height="1536"
 src="https://u-random.dev/assets/email-routing-smtp_hu_8e9b834350c07076.webp"
 srcset="https://u-random.dev/assets/email-routing-smtp_hu_8e9b834350c07076.webp 800w, https://u-random.dev/assets/email-routing-smtp_hu_dd83c9b5ac0ab8a9.webp 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://u-random.dev/assets/email-routing-smtp.webp"&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Le Autostrade di Internet</title><link>https://u-random.dev/blog/le-autostrade-di-internet/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/le-autostrade-di-internet/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Internet non è una singola rete: è un insieme di reti indipendenti (Autonomous Systems) collegate da BGP&lt;/li&gt;
&lt;li&gt;BGP decide il percorso tra AS diversi - IGP gestisce il routing interno, iBGP sincronizza i border router&lt;/li&gt;
&lt;li&gt;Un attaccante può annunciare rotte false (BGP Hijacking) e dirottare traffico globale&lt;/li&gt;
&lt;li&gt;Ogni IP appartiene a un ASN: saperlo leggere è un'abilità base di triage SOC&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;whois [IP]&lt;/li&gt;
&lt;li&gt;whois [IP] | grep -i &amp;quot;origin|asn|orgname&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="bgp autonomous systems"
 width="2752"
 height="1536"
 src="https://u-random.dev/assets/bgp-autonomous-systems_hu_d6dc4af6556545b2.webp"
 srcset="https://u-random.dev/assets/bgp-autonomous-systems_hu_d6dc4af6556545b2.webp 800w, https://u-random.dev/assets/bgp-autonomous-systems_hu_82399596e7b72d5e.webp 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://u-random.dev/assets/bgp-autonomous-systems.webp"&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Il Gateway Sono Io</title><link>https://u-random.dev/blog/blog-arp-poisoning/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/blog-arp-poisoning/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;ARP non ha autenticazione - chiunque può convincere una rete che il gateway è lui&lt;/li&gt;
&lt;li&gt;Per fare un MITM silenzioso servono tre passi: IP forwarding, avvelenare entrambi i lati, disabilitare ICMP Redirect&lt;/li&gt;
&lt;li&gt;La firma del MITM in Wireshark è inequivocabile: stesso pacchetto, stesso seq number, TTL decrementato di 1&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ip route flush all&lt;/code&gt; su una macchina remota equivale a spegnerla - lezione imparata a caro prezzo&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/arpspoof/" &gt;arpspoof&lt;/a&gt; -i eth0 -t 192.168.64.3 192.168.64.1&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/sysctl/" &gt;sysctl&lt;/a&gt; -w net.ipv4.ip_forward=1&lt;/li&gt;
&lt;li&gt;sysctl -w net.ipv4.conf.all.send_redirects=0&lt;/li&gt;
&lt;li&gt;sysctl -w net.ipv4.conf.eth0.send_redirects=0&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/ip/" &gt;ip&lt;/a&gt; neighbor show&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tcpdump/" &gt;tcpdump&lt;/a&gt; -i eth0 -n 'host 192.168.64.3 and icmp' -c 10&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;hr&gt;
&lt;p&gt;Sono le 21:00. Il lab è acceso da qualche ora. Ho appena finito di leggere
come funziona il Gratuitous ARP - quella tecnica dove un dispositivo annuncia
a tutta la rete &amp;quot;questo IP sono io&amp;quot;, senza che nessuno lo abbia chiesto.&lt;/p&gt;</description></item><item><title>Il Processo che Non Dorme Mai</title><link>https://u-random.dev/blog/il-processo-che-non-dorme-mai/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/il-processo-che-non-dorme-mai/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Alert alle 2:47: processo &lt;code&gt;bash&lt;/code&gt; con connessione aperta verso IP esterno su porta 4444 → reverse shell attiva&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ss -tnp | grep ESTABLISHED&lt;/code&gt; identifica il processo e il PID in tempo reale&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tcpdump -i eth0 -n -A&lt;/code&gt; legge il payload in chiaro: comandi dell'attaccante visibili direttamente&lt;/li&gt;
&lt;li&gt;Prima di bloccare: raccogliere &lt;code&gt;history&lt;/code&gt;, &lt;code&gt;auth.log&lt;/code&gt;, &lt;code&gt;find -mmin -120&lt;/code&gt; - agire troppo presto distrugge le prove&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/ss/" &gt;ss&lt;/a&gt; -tnp&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tcpdump/" &gt;tcpdump&lt;/a&gt; -i eth0 -n -A host 185.220.101.34&lt;/li&gt;
&lt;li&gt;ip a&lt;/li&gt;
&lt;li&gt;history&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/grep/" &gt;grep&lt;/a&gt; &amp;quot;185.220.101.34&amp;quot; /var/log/auth.log&lt;/li&gt;
&lt;li&gt;find / -mmin -120 -type f 2&amp;gt;/dev/null&lt;/li&gt;
&lt;li&gt;kill -9 [PID]&lt;/li&gt;
&lt;li&gt;ufw deny from [IP]&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="Anatomia di una Reverse Shell: Timeline di Reazione"
 width="1536"
 height="2752"
 src="https://u-random.dev/assets/il-processo-che-non-dorme-mai_hu_bfbec6d0b0bbc58f.webp"
 srcset="https://u-random.dev/assets/il-processo-che-non-dorme-mai_hu_bfbec6d0b0bbc58f.webp 800w, https://u-random.dev/assets/il-processo-che-non-dorme-mai_hu_687b5c6ccfaece7e.webp 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://u-random.dev/assets/il-processo-che-non-dorme-mai.webp"&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Cancellato. Ma non abbastanza.</title><link>https://u-random.dev/blog/utente-cancellato-non-abbastanza/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/utente-cancellato-non-abbastanza/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;testuser&lt;/code&gt; compare all'01:14, tenta l'escalation, poi viene cancellato alle 04:47&lt;/li&gt;
&lt;li&gt;&lt;code&gt;auth.log&lt;/code&gt; registra ogni evento: creazione, tre sudo falliti, disconnessione&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find / -uid 1001 2&amp;gt;/dev/null&lt;/code&gt; trova i file rimasti anche dopo &lt;code&gt;userdel&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cancellare un utente non cancella la sua storia - cancella solo il nome&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/grep/" &gt;grep&lt;/a&gt; -E &amp;quot;useradd|userdel&amp;quot; /var/log/auth.log&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/grep/" &gt;grep&lt;/a&gt; &amp;quot;testuser&amp;quot; /var/log/auth.log&lt;/li&gt;
&lt;li&gt;last testuser&lt;/li&gt;
&lt;li&gt;find / -uid 1001 2&amp;gt;/dev/null&lt;/li&gt;
&lt;li&gt;cat /home/testuser/.bash_history&lt;/li&gt;
&lt;li&gt;journalctl --since &amp;quot;2026-03-25 04:40&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="auto"
 alt="Utente cancellato - post-mortem auth.log"
 width="2752"
 height="1536"
 src="https://u-random.dev/assets/utente-cancellato-non-abbastanza_hu_eda3d265251eef1c.webp"
 srcset="https://u-random.dev/assets/utente-cancellato-non-abbastanza_hu_eda3d265251eef1c.webp 800w, https://u-random.dev/assets/utente-cancellato-non-abbastanza_hu_33e95f69c2ad1a10.webp 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://u-random.dev/assets/utente-cancellato-non-abbastanza.webp"&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>I file erano ancora lì. Solo che non li potevo più leggere.</title><link>https://u-random.dev/blog/cia-triad-ransomware/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/cia-triad-ransomware/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;CIA Triad: Confidentiality, Integrity, Availability - i tre pilastri che ogni attacco viola&lt;/li&gt;
&lt;li&gt;Un ransomware li colpisce tutti e tre in sequenza: esfiltra (C), cifra (I), blocca (A)&lt;/li&gt;
&lt;li&gt;L'ingresso era un bit SUID lasciato su &lt;code&gt;python3&lt;/code&gt; - zero exploit, zero CVE&lt;/li&gt;
&lt;li&gt;Senza la CIA Triad come mappa, stai guardando i sintomi senza vedere la malattia&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/find/" &gt;find&lt;/a&gt; -perm -4000 -type f 2&amp;gt;/dev/null&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/ls/" &gt;ls&lt;/a&gt; -la /etc/shadow&lt;/li&gt;
&lt;li&gt;diff /backup/etc/passwd /etc/passwd&lt;/li&gt;
&lt;li&gt;systemctl status ssh&lt;/li&gt;
&lt;li&gt;stat /usr/bin/python3&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Sono le 23:12. Il telefono vibra tre volte di fila - notifiche di monitoring. Mi alzo, apro il portatile.&lt;/p&gt;</description></item><item><title>Il lucchetto verde - cosa succede davvero in quei 250 millisecondi</title><link>https://u-random.dev/blog/come-funziona-una-connessione-https/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/come-funziona-una-connessione-https/</guid><description>&lt;p&gt;


&lt;/p&gt;
&lt;div style="border-left:3px solid #6366f1;background:rgba(99,102,241,0.06);padding:12px 16px;border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;div style="font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#6366f1;text-transform:uppercase;margin-bottom:6px;"&gt;TL;DR&lt;/div&gt;
 &lt;div style="font-size:0.95rem;line-height:1.6;"&gt;&lt;ul&gt;
&lt;li&gt;Prima del TLS c'è TCP: tre pacchetti solo per aprire il canale&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ClientHello&lt;/code&gt; è il nome reale del messaggio - lo vedi in Wireshark, è nell'RFC&lt;/li&gt;
&lt;li&gt;Browser e server derivano la stessa chiave senza mai trasmettersela (Diffie-Hellman)&lt;/li&gt;
&lt;li&gt;Ogni sessione usa chiavi nuove e le butta via - anche se qualcuno ruba la chiave del server tra un anno, il traffico di oggi resta illeggibile&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;details style="border-left:3px solid #10b981;background:rgba(16,185,129,0.06);border-radius:0 6px 6px 0;margin:1.5rem 0;"&gt;
 &lt;summary style="padding:10px 16px;font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:#10b981;text-transform:uppercase;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;"&gt;
 &lt;span style="font-size:0.65rem;transition:transform 0.2s;"&gt;▶&lt;/span&gt; $ history
 &lt;/summary&gt;
 &lt;div style="padding:4px 16px 12px;font-size:0.92rem;line-height:1.7;font-family:'JetBrains Mono','Fira Code',monospace;"&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/openssl-s_client/" &gt;openssl s_client&lt;/a&gt; -connect google.com:443 -showcerts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/openssl-s_client/" &gt;openssl s_client&lt;/a&gt; -connect dominio.com:443 2&amp;gt;/dev/null | openssl x509 -noout -dates&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/openssl-s_client/" &gt;openssl s_client&lt;/a&gt; -connect google.com:443 &amp;lt;/dev/null 2&amp;gt;/dev/null | openssl x509 -noout -text | &lt;a href="https://u-random.dev/comandi/grep/" &gt;grep&lt;/a&gt; -E &amp;quot;Subject|Issuer|Not After&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Ogni volta che scrivi &lt;code&gt;https://&lt;/code&gt; nel browser e premi invio, sullo sfondo succede qualcosa che la maggior parte degli sviluppatori web dà per scontato. Il lucchetto verde appare, la connessione è &amp;quot;sicura&amp;quot;, si va avanti.&lt;/p&gt;</description></item></channel></rss>