Per un server C & C, si desidera ottenere le seguenti caratteristiche:
-
Il sistema infetto deve essere in grado di parlare con il C & C. Ciò comporta l'estrazione di alcuni dati dalla macchina, attraverso qualsiasi accesso alla rete. Il caso facile è quando la macchina ha accesso a Internet completo (possibilmente attraverso alcuni NAT ); tuttavia, esistono reti (soprattutto in ambienti aziendali) in cui le macchine hanno solo indirizzi locali, non c'è NAT e le comunicazioni in uscita devono passare attraverso un proxy HTTP. Probabilmente, il proxy avrà bisogno di un'autenticazione, che può essere fornita automaticamente dal sistema operativo (Windows ...) a condizione che le librerie del sistema operativo siano utilizzate per farlo.
Quindi, HTTP aumenta la probabilità di riuscire a connettersi a un server esterno, mentre IRC non può realmente gestire il caso "solo proxy".
Dal lato negativo, HTTP è un protocollo basato su client, quindi la macchina infetta deve "interrogare" il server (invia richieste regolarmente); non può semplicemente aspettare un comando in arrivo. Questa attività regolare può consentire una più facile individuazione dell'infezione e aumenterà anche i requisiti di larghezza di banda per la C & C, in particolare per le grandi botnet. IRC sarebbe più leggero in quella situazione.
-
Si desidera che i trasferimenti di dati non vengano rilevati dall'amministratore di rete. Tali amministratori di sistema tendono a reagire con forza a qualsiasi attività di rete che utilizza le porte tradizionali per IRC (ad esempio, freenode utilizza 6665, 6666, 6667 e un pochi altri). Anche in questo caso, HTTP sarà più propenso a "volare sotto il radar".
Le semplici richieste HTTP possono essere ispezionate da firewall ficcanaso. HTTPS può aiutarti qui; la decrittografia delle richieste HTTPS richiede l'installazione e la manutenzione di un'autorità di certificazione personalizzata che produce certificati falsi al volo per i siti Web contattati. Esistono apparecchi che offrono questo tipo di servizio, ma questo non è ancora del tutto diffuso.
-
Vuoi nascondere la vera ubicazione del server C & C. Se hai una botnet grande, allora è certo che qualche amministratore di sistema, da qualche parte, noterà qualcosa di strano e cercherà di indovinare dove si trova il C & C. Le richieste HTTP richiedono che il client conosca l'indirizzo IP del server di destinazione. D'altra parte, con IRC, l'host infetto si collegherebbe a un server IRC "onesto" nelle vicinanze e, grazie alla magia del flusso di dati tra server IRC, i dati potrebbero raggiungere il C & C ovunque si nascondano.
Per una soluzione più completa, ti piacerebbe che il C & C fosse nascosto come Tor servizio nascosto . Si noti che il vero indirizzo IP di un servizio nascosto rimane nascosto solo fino a quando permangono le ipotesi alla base della teoria della rete di cipolla, in particolare che i router di cipolla "non corretti" rimangono una grande maggioranza. Se questo è vero nella pratica, nessuno lo sa.
Una botnet veramente efficiente sarebbe strutturata come una rete di spionaggio vecchio stile, con celle decentralizzate ; le macchine botnet non conoscono l'indirizzo C & C, ma semplicemente come parlare con le altre macchine nella cella, così come con una o due macchine di altre celle. I messaggi verrebbero quindi trasmessi saltando da una cella all'altra. Quel tipo di struttura richiede molto più pensiero in fase di progettazione, ma sarebbe molto più resistente allo smantellamento da parte delle forze dell'ordine.
(Fortunatamente, le persone malintenzionate che vogliono eseguire botnet non sono meno pigre e incompetenti del resto del mondo, quindi le strutture botnet ben progettate rimangono una rarità.)