Non è meglio né peggio, dipende dal fatto che le macchine che si stanno compromettendo abbiano IP pubblicamente instradabili o meno.
Se lo sono, il vantaggio di chi ascolta e di essere il server è che puoi connetterti da qualsiasi parte e il tuo controller / comando e computer di controllo non ha bisogno di essere sempre connesso a loro - parla solo con loro dove c'è un vero comando.
Se i computer di destinazione non hanno un IP instradabile pubblicamente, come fa la maggior parte dei computer domestici (sono dietro un NAT), allora è meglio che il computer controller sia il server e le macchine compromesse per connettersi ad esso, tuttavia questo ha il rovescio della medaglia di essere meno subdolo (una connessione permanente, in uscita è più probabile che venga notata rispetto a una rara connessione in ingresso come nel primo scenario) e il computer del controller deve essere sempre raggiungibile allo stesso IP - se improvvisamente cambia, e non hai modo di tornare al vecchio IP per riprendere il controllo dei bot e dire loro il nuovo IP, quindi hai perso i bot a meno che tu non abbia un altro modo di contattarli.
Personalmente, tuttavia, raccomanderei di utilizzare un protocollo P2P per questo, simile a Tor, dove i robot sono interconnessi e inoltrano i comandi a se stessi, in questo modo non hai un punto centrale di errore e devi solo raggiungere un singolo bot per controlla l'intera botnet, poiché trasmetterà il tuo comando a tutti gli altri. Assicurati di utilizzare firme, crittografia e steganografia se possibile, per nascondere il tuo traffico e impedire a qualcuno (come i ricercatori di sicurezza) di falsificare comandi validi e assumere il controllo della tua botnet.