<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on u-random</title><link>https://u-random.dev/blog/</link><description>Recent content in Blog on u-random</description><generator>Hugo -- gohugo.io</generator><language>it-it</language><lastBuildDate>Mon, 08 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://u-random.dev/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Cisco Packet Tracer: La Rete che Protegge Se Stessa</title><link>https://u-random.dev/blog/cisco-packet-tracer-la-rete-che-protegge-se-stessa/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/cisco-packet-tracer-la-rete-che-protegge-se-stessa/</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;Una DMZ e' una zona di mezzo: esposta verso internet, isolata dalla LAN&lt;/li&gt;
&lt;li&gt;Due firewall significa che anche se Sofia/nginx viene compromessa, Giulia/MySQL e' ancora protetta da FW2&lt;/li&gt;
&lt;li&gt;Su ASA il traffico da security-level basso verso alto e' bloccato per default - non serve scrivere nessuna regola 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;&lt;code&gt;nameif&lt;/code&gt; - assegna nome logico all'interfaccia ASA (outside, dmz, inside)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;security-level&lt;/code&gt; - livello di fiducia: 0=esterno, 50=DMZ, 100=LAN&lt;/li&gt;
&lt;li&gt;&lt;code&gt;route outside 0.0.0.0 0.0.0.0 x.x.x.x&lt;/code&gt; - default route su ASA&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show nameif&lt;/code&gt; - interfacce ASA con security level&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;hr&gt;

&lt;h2 class="relative group"&gt;Perche' questo lab
 &lt;div id="perche-questo-lab" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#perche-questo-lab" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;corsobitcoin.com e' una piattaforma di corsi online. Ha iscritti, sessioni, video, dati di pagamento.&lt;/p&gt;</description></item><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>Il Kernel Sospende il Giudizio</title><link>https://u-random.dev/blog/suricata-ips-nfqueue/</link><pubDate>Fri, 29 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/suricata-ips-nfqueue/</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;IDS (af-packet):&lt;/strong&gt; copia del traffico → Suricata vede tutto, non può bloccare niente → &lt;code&gt;[**]&lt;/code&gt; in fast.log&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IPS (nfqueue):&lt;/strong&gt; traffico originale trattenuto → il kernel aspetta il verdetto → &lt;code&gt;[Drop]&lt;/code&gt; in fast.log&lt;/li&gt;
&lt;li&gt;&lt;code&gt;iptables -I INPUT -j NFQUEUE --queue-num 0&lt;/code&gt; è la singola regola che trasforma il sistema&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fail-open: no&lt;/code&gt; = fail-closed: se Suricata muore, tutto il traffico viene droppato&lt;/li&gt;
&lt;li&gt;Il Docker bridge (&lt;code&gt;br-XXXX&lt;/code&gt;) bypassa NFQUEUE - la SYN-ACK di ritorno viene bloccata e Wazuh si disconnette&lt;/li&gt;
&lt;li&gt;La persistenza al reboot richiede un systemd service dedicato (non &lt;code&gt;iptables-persistent&lt;/code&gt;, che rimuove UFW)&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;suricata -T -c /etc/suricata/suricata.yaml -v&lt;/li&gt;
&lt;li&gt;suricata-update&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/concetti/iptables/" &gt;iptables&lt;/a&gt; -I INPUT 1 -j NFQUEUE --queue-num 0&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/concetti/iptables/" &gt;iptables&lt;/a&gt; -L INPUT -n -v --line-numbers&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/nmap/" &gt;nmap&lt;/a&gt; --min-rate 1000 -p 1-1000 192.168.64.3&lt;/li&gt;
&lt;li&gt;hping3 -S --flood 192.168.64.3&lt;/li&gt;
&lt;li&gt;cat /proc/net/tcp&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;hr&gt;
&lt;p&gt;Voglio vedere cosa succede quando Suricata non si limita a guardare il traffico, ma lo blocca davvero.&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 CEO Non Ha Scritto Quella Email</title><link>https://u-random.dev/blog/il-ceo-non-ha-scritto-quella-email/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/il-ceo-non-ha-scritto-quella-email/</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;BEC (Business Email Compromise) non richiede malware - basta falsificare il campo &lt;code&gt;From:&lt;/code&gt; in SMTP&lt;/li&gt;
&lt;li&gt;SPF, DKIM e DMARC sono i tre record DNS che rendono verificabile l'identità del mittente&lt;/li&gt;
&lt;li&gt;Un dominio senza questi tre record è impersonabile in cinque minuti da chiunque&lt;/li&gt;
&lt;li&gt;Leggere gli header &lt;code&gt;Received:&lt;/code&gt; di un'email dal basso verso l'alto rivela il percorso reale del messaggio&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/dig/" &gt;dig&lt;/a&gt; TXT 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;Arianna gestisce i pagamenti. Quella mattina ha ricevuto un'email dal CEO: cambio fornitore urgente, nuovo IBAN, bonifico entro fine giornata. 47.000 euro. Il tono era quello di sempre - formale, diretto, niente spiegazioni superflue.&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>Tutti Potevano Leggere Tutto</title><link>https://u-random.dev/blog/tutti-potevano-leggere-tutto/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/tutti-potevano-leggere-tutto/</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;DAC = il proprietario del file decide i permessi - flessibile ma dipende dall'utente&lt;/li&gt;
&lt;li&gt;MAC = il sistema decide in base a etichette di classificazione - usato in ambienti ad alta sicurezza&lt;/li&gt;
&lt;li&gt;RBAC = permessi assegnati ai ruoli, utenti assegnati ai ruoli - il modello più usato in azienda&lt;/li&gt;
&lt;li&gt;Rule-based = regole condizionali (orario, IP, dispositivo) - usato nei firewall e nel controllo accessi contestuale&lt;/li&gt;
&lt;li&gt;ABAC = combina attributi utente + risorsa + contesto - il più granulare, il più complesso&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Giovedì mattina. Silvia, amministrativa HR, apre la share aziendale per caricare un documento. Trova una cartella che non riconosce. La apre. Dentro ci sono i file di stipendio di tutti i 140 dipendenti dell'azienda - compresi quelli dei dirigenti.&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>La Lettera che Cambia Busta</title><link>https://u-random.dev/blog/la-lettera-che-cambia-busta/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/la-lettera-che-cambia-busta/</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;traceroute -n 8.8.8.8&lt;/code&gt; mostra i 14 router tra te e Google - ogni riga è un salto (hop)&lt;/li&gt;
&lt;li&gt;IP address = destinazione finale, non cambia mai; MAC address = tratto corrente, cambia ad ogni hop&lt;/li&gt;
&lt;li&gt;Il router legge l'IP dentro (la lettera), riscrive il MAC fuori (la busta) e passa il pacchetto al prossimo salto&lt;/li&gt;
&lt;li&gt;&lt;code&gt;* * *&lt;/code&gt; non significa percorso interrotto - solo che quel router non risponde a ICMP/UDP; prova con &lt;code&gt;-T&lt;/code&gt; (TCP)&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;traceroute -n 8.8.8.8&lt;/li&gt;
&lt;li&gt;traceroute -I -n 8.8.8.8&lt;/li&gt;
&lt;li&gt;sudo traceroute -T google.com&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/ip/" &gt;ip&lt;/a&gt; route show&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;&lt;strong&gt;Sistema:&lt;/strong&gt; Linux (testato su Kali 2024 e Ubuntu 24.04)
&lt;strong&gt;Tools:&lt;/strong&gt; &lt;code&gt;traceroute&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt; - già installati di default
&lt;strong&gt;Conoscenze:&lt;/strong&gt; nessuna - si parte da zero&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>Cosa succede davvero sulla rete mentre il tuo codice gira</title><link>https://u-random.dev/blog/tcp-handshake-per-developer/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/tcp-handshake-per-developer/</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 di ogni richiesta HTTP il kernel fa un handshake in 3 pacchetti: SYN → SYN+ACK → ACK&lt;/li&gt;
&lt;li&gt;I flag TCP (&lt;code&gt;[S]&lt;/code&gt;, &lt;code&gt;[S.]&lt;/code&gt;, &lt;code&gt;[.]&lt;/code&gt;, &lt;code&gt;[P.]&lt;/code&gt;, &lt;code&gt;[R]&lt;/code&gt;, &lt;code&gt;[F]&lt;/code&gt;) si leggono tutti in tcpdump in tempo reale&lt;/li&gt;
&lt;li&gt;RST = chiusura brusca (porta chiusa, firewall, crash) - molti RST consecutivi sono segnale sospetto&lt;/li&gt;
&lt;li&gt;I log applicativi non vedono un SYN scan - serve tcpdump a livello di rete&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/tcpdump/" &gt;tcpdump&lt;/a&gt; -i any -n 'host api.example.com'&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/tcpdump/" &gt;tcpdump&lt;/a&gt; -i any -n 'tcp and port 443'&lt;/li&gt;
&lt;li&gt;tcpdump 'tcp[tcpflags] &amp;amp; tcp-syn != 0'&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Stai costruendo un'API. Il client manda una richiesta, il server risponde. Funziona. Ma cosa succede esattamente tra il momento in cui scrivi &lt;code&gt;fetch(&amp;quot;https://api.example.com/data&amp;quot;)&lt;/code&gt; e quello in cui arriva la risposta?&lt;/p&gt;</description></item><item><title>Offline. Non al buio.</title><link>https://u-random.dev/blog/offline-non-al-buio/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/offline-non-al-buio/</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;apropos parola&lt;/code&gt; trova il comando quando non ne conosci il nome&lt;/li&gt;
&lt;li&gt;&lt;code&gt;comando --help&lt;/code&gt; ti dà i flag in cinque secondi senza uscire dal terminale&lt;/li&gt;
&lt;li&gt;&lt;code&gt;man comando&lt;/code&gt; è il manuale completo, navigabile con &lt;code&gt;/parola&lt;/code&gt; per cercare&lt;/li&gt;
&lt;li&gt;&lt;code&gt;whatis comando&lt;/code&gt; ti dice in una riga cosa fa qualcosa che hai trovato nei log&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/man/" &gt;man&lt;/a&gt; ls&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/man/" &gt;man&lt;/a&gt; 5 passwd&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/man/" &gt;man&lt;/a&gt; -k password&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/man/" &gt;man&lt;/a&gt; -f passwd&lt;/li&gt;
&lt;li&gt;apropos permission&lt;/li&gt;
&lt;li&gt;apropos -r &amp;quot;^ssh&amp;quot;&lt;/li&gt;
&lt;li&gt;whatis find&lt;/li&gt;
&lt;li&gt;tar --help&lt;/li&gt;
&lt;li&gt;tar --help | grep extract&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="Offline. Non al buio."
 width="1536"
 height="2752"
 src="https://u-random.dev/assets/offline-non-al-buio_hu_70342d2531d28f5e.webp"
 srcset="https://u-random.dev/assets/offline-non-al-buio_hu_70342d2531d28f5e.webp 800w, https://u-random.dev/assets/offline-non-al-buio_hu_61c1e927da7b19e6.webp 1280w"
 sizes="(min-width: 768px) 50vw, 65vw"
 data-zoom-src="https://u-random.dev/assets/offline-non-al-buio.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>Anatomia di una query DNS</title><link>https://u-random.dev/blog/anatomia-di-una-query-dns/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/anatomia-di-una-query-dns/</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 di mandare qualsiasi pacchetto in rete, il sistema cerca la risposta in cache - browser, OS, &lt;code&gt;/etc/hosts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Se non trova niente, chiede al resolver ISP (es. 8.8.8.8) che fa il lavoro sporco&lt;/li&gt;
&lt;li&gt;Il resolver risale la gerarchia: Root Server → TLD Server → Nameserver autoritativo&lt;/li&gt;
&lt;li&gt;La risposta torna con un TTL - un timer che dice quanto tenerla in cache prima di richiederla&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/nslookup/" &gt;nslookup&lt;/a&gt; example.com&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/nslookup/" &gt;nslookup&lt;/a&gt; -type=MX example.com&lt;/li&gt;
&lt;li&gt;dig example.com&lt;/li&gt;
&lt;li&gt;dig +trace example.com&lt;/li&gt;
&lt;li&gt;dig -x 8.8.8.8&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Ogni volta che scrivi un dominio nel browser e premi invio, parte una catena di eventi che la maggior parte delle persone non vede mai. Il risultato finale è un indirizzo IP - ma il percorso per arrivarci attraversa cache locali, server distribuiti in tutto il mondo e una gerarchia precisa.&lt;/p&gt;</description></item><item><title>chmod +s - il bit che dimentichi e l'attaccante trova</title><link>https://u-random.dev/blog/privilege-escalation-via-suid/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/privilege-escalation-via-suid/</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;SUID forza l'EUID al proprietario del file al momento dell'esecuzione - se il proprietario è root, ogni utente che lo esegue ottiene EUID=0&lt;/li&gt;
&lt;li&gt;Un interprete con SUID root (python3, perl, bash) è escalation immediata: nessuna vulnerabilità da sfruttare, nessun exploit da compilare&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find / -perm -4000 -type f 2&amp;gt;/dev/null&lt;/code&gt; in 30 secondi elenca tutto quello che conta&lt;/li&gt;
&lt;li&gt;Detection: baseline snapshot dei SUID in CI/CD + auditd rule su &lt;code&gt;execve&lt;/code&gt; con &lt;code&gt;euid=0&lt;/code&gt; e &lt;code&gt;auid!=unset&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;&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;stat /usr/bin/python3&lt;/li&gt;
&lt;li&gt;id&lt;/li&gt;
&lt;li&gt;cat /proc/self/status&lt;/li&gt;
&lt;li&gt;python3 -c &amp;quot;import os; os.execl('/bin/sh', 'sh', '-p')&amp;quot;&lt;/li&gt;
&lt;li&gt;auditctl -l&lt;/li&gt;
&lt;li&gt;ausearch -m execve -k suid_exec&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/ls/" &gt;ls&lt;/a&gt; -la /usr/bin/python3&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Sono le 02:41. Il SIEM ha alzato un flag su &lt;code&gt;prod-api-03&lt;/code&gt;: processo root con parent &lt;code&gt;python3&lt;/code&gt;, nessun deploy in corso, nessuna maintenance window schedulata. Il processo è già terminato quando apro il ticket. Non c'è output, non c'è file scritto. Solo un'esecuzione anomala durata undici secondi.&lt;/p&gt;</description></item><item><title>Il file che si comporta da root - capire il bit SUID</title><link>https://u-random.dev/blog/cosa-sono-i-permessi-suid/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/cosa-sono-i-permessi-suid/</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;I permessi Linux normali controllano &lt;em&gt;chi può eseguire&lt;/em&gt; un file - SUID cambia &lt;em&gt;con quale identità&lt;/em&gt; viene eseguito&lt;/li&gt;
&lt;li&gt;Un file con SUID root gira sempre come root, indipendentemente da chi lo avvia&lt;/li&gt;
&lt;li&gt;Esistono per necessità (es. &lt;code&gt;passwd&lt;/code&gt; deve scrivere &lt;code&gt;/etc/shadow&lt;/code&gt; senza darti root)&lt;/li&gt;
&lt;li&gt;Diventano pericolosi quando vengono impostati su file sbagliati - specialmente interpreti come python3 o bash&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/ls/" &gt;ls&lt;/a&gt; -la /usr/bin/passwd&lt;/li&gt;
&lt;li&gt;stat /usr/bin/passwd&lt;/li&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;id&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Quando esegui un comando su Linux, il sistema controlla chi sei - il tuo user ID - e decide cosa puoi fare. È il modello di base: ogni processo eredita i permessi dell'utente che lo ha lanciato.&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><item><title>Chi Sei per il Kernel</title><link>https://u-random.dev/blog/chi-sei-per-il-kernel/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://u-random.dev/blog/chi-sei-per-il-kernel/</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;Linux non lavora con nomi utente - lavora con numeri: UID e GID&lt;/li&gt;
&lt;li&gt;Ogni file ha tre livelli di permessi: owner, group, others&lt;/li&gt;
&lt;li&gt;Il bit SUID cambia le regole: il processo gira con i privilegi del proprietario del file, non di chi lo esegue&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find / -perm -4000&lt;/code&gt; trova tutti i binari SUID del sistema - un'occhiata vale sempre&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;id&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/ls/" &gt;ls&lt;/a&gt; -la /usr/bin/passwd&lt;/li&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/chmod/" &gt;chmod&lt;/a&gt; u+s /path/to/file&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u-random.dev/comandi/chmod/" &gt;chmod&lt;/a&gt; u-s /path/to/file&lt;/li&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;a href="https://u-random.dev/comandi/grep/" &gt;grep&lt;/a&gt; -v -E &amp;quot;^/(usr/bin|usr/sbin|bin|sbin|usr/lib)&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/details&gt;

&lt;p&gt;Linux non sa chi sei. Sa solo il tuo numero.&lt;/p&gt;</description></item></channel></rss>