Porte Non Standard: Non-Standard Port (T1571)

Quando un avversario utilizza HTTPS sulla porta 8088 invece della tradizionale 443, sta sfruttando una tecnica tanto semplice quanto efficace. La comunicazione su porte non standard rappresenta un metodo consolidato per aggirare i controlli di sicurezza basati su associazioni protocol-porta predefinite.

Questa tecnica si manifesta esclusivamente nella fase di Command and Control (TA0011), dove l'obiettivo è mantenere comunicazioni stabili con i sistemi compromessi. L'utilizzo di porte anomale permette di mimetizzare il traffico malevolo, confondendo i sistemi di analisi che si aspettano protocolli specifici su porte standard.

I numeri parlano chiaro: 16 gruppi APT documentati utilizzano attivamente questa tecnica, supportati da 37 diversi malware e osservati in 7 campagne di alto profilo. La semplicità di implementazione la rende particolarmente attraente, richiedendo solo 2 mitigazioni principali per contrastarla efficacemente.

La simulazione di comunicazioni C2 su porte non standard richiede una comprensione profonda delle tecniche di binding e tunneling. Iniziamo con un listener Python che emula il comportamento di Lazarus Group, noto per utilizzare liste ordinate di porte alternative.

Su Windows, possiamo creare rapidamente un listener HTTP sulla porta 8080: python -m http.server 8080 --bind 0.0.0.0

Per testare comunicazioni più sofisticate come quelle di APT32, che usa HTTP su porta 14146, configuriamo un reverse proxy con socat: socat TCP4-LISTEN:14146,fork TCP4:targetserver:80

La tecnica diventa interessante quando replichiamo il comportamento di TrickBot, che invia dati non cifrati sulla porta 443. Questo crea un'anomalia facilmente rilevabile ma spesso ignorata dai controlli superficiali. Configuriamo netcat per ascoltare su una porta HTTPS standard con protocollo non standard: nc -lvnp 443

Per simulare il FakeTLS usato da BADCALL e HARDRAIN, possiamo utilizzare stunnel in modalità server con certificati self-signed: stunnel -d 443 -r localhost:4444 -p cert.pem

Su Linux, replichiamo il comportamento di Rocke che utilizza la porta 51640 per il suo miner. Creiamo uno script che apre connessioni su porte casuali ad alto numero:

#!/bin/bash
for port in $(shuf -i 30000-65535 -n 5); do
    timeout 2 nc -zv target.com $port 2>&1 | grep succeeded
done

La persistenza viene garantita modificando le regole firewall. Su Windows, aggiungiamo eccezioni per porte specifiche come fa FIN7: netsh advfirewall firewall add rule name="CustomC2" dir=in action=allow protocol=TCP localport=59999

Per macOS, simuliamo OSX_OCEANLOTUS.D che usa un protocollo binario custom sulla 443: sudo pfctl -e && echo "pass in proto tcp from any to any port 443" | sudo pfctl -f -

La catena completa prevede l'uso di redirector intermedi. Configuriamo un tunnel SSH su porta non standard come Sandworm Team (porta 6789): ssh -p 6789 -D 9050 user@redirector

L'aspetto cruciale è la randomizzazione delle porte. PlugX eccelle in questo, selezionando porte casuali ad ogni connessione. Implementiamo questa logica in PowerShell:

$port = Get-Random -Minimum 40000 -Maximum 65535
$listener = [System.Net.Sockets.TcpListener]$port
$listener.Start()

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.