Creazione del server C & C botnet. Quale architettura dovrei usare? IRC? HTTP?

4

Sto facendo un progetto relativo alle botnet e devo creare un server leggero di comando e controllo. Ma sono bloccato: dovrei usare IRC o un C & C? Basato su HTTP?

Anche io non sto ottenendo alcuna architettura approfondita o analisi di nessun server C & C.

Sto usando un dispositivo hardware per collegare C & C, cosa devo tenere a mente?

    
posta tritiya 18.09.2015 - 15:03
fonte

2 risposte

11

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à.)

    
risposta data 18.09.2015 - 21:06
fonte
2

Ci sono molte ragioni per entrambi. Le principali differenze:

  • irc è un tunnel a due vie. Pertanto, l'invio di messaggi o le richieste di contatto avviate da te e dai tuoi robot sarebbe molto più semplice in entrambe le direzioni, se almeno uno di questi è dietro un firewall natting.
  • link
  • il protocollo http è stateless per configurazione principale, il che significa che una comunicazione complessa sarà più difficile da implementare (devi fare un po 'di gestione della sessione). Su irc, puoi semplicemente aprire un thread per i tuoi clienti e poi avrai un unico flusso di controllo procedurale.
  • anche se irc può essere esteso anche da ssl, non è così comune come nel http. Probabilmente dovresti incorporare qualche libreria di comunicazione irc per l'attività, configurarla per usare ssl in modo tale che non verrà rilevata sarà più difficile. In caso di http puoi selezionare un ampio spettro di diverse soluzioni soap / rest / rpc e da librerie che li utilizzano.

Come noto, nei cerchi delle botnet attualmente in esecuzione l'https è molto più comune, ma la maggior parte di esse è un incubo dal punto di vista del programmatore.

Per la ricerca utilizzerei irc non crittografato (più facile da programmare, nessuna necessità di crittografia).

    
risposta data 18.09.2015 - 20:10
fonte

Leggi altre domande sui tag