Para un servidor C & C, desea obtener las siguientes características:
-
El sistema infectado debe poder hablar con C & C. Esto implica obtener algunos datos de la máquina, a través del acceso a la red que tenga. El caso fácil es cuando la máquina tiene acceso completo a Internet (posiblemente a través de algunos NAT ); sin embargo, hay redes (especialmente en entornos empresariales) donde las máquinas solo tienen direcciones locales, no hay NAT y las comunicaciones salientes deben pasar por un proxy HTTP. Posiblemente, el proxy necesitará alguna autenticación, que puede ser proporcionada automáticamente por el sistema operativo (Windows ...) siempre que se utilicen las bibliotecas del sistema operativo para hacerlo.
Por lo tanto, HTTP aumenta la probabilidad de éxito al conectarse a un servidor externo, mientras que IRC no puede manejar el caso "solo proxy".
En el lado negativo, HTTP es un protocolo controlado por el cliente, por lo que la máquina infectada debe "sondear" el servidor (emitir solicitudes con regularidad); no puede simplemente esperar un comando entrante. Esta actividad regular puede permitir una detección más fácil de la infección y también aumentará los requisitos de ancho de banda para el C & C, especialmente para botnets grandes. IRC sería más ligero en esa situación.
-
Desea que las transferencias de datos no sean detectadas por el administrador de la red. Tales administradores de sistemas tienden a reaccionar fuertemente a cualquier actividad de red que use los puertos tradicionales para IRC (por ejemplo, freenode usa 6665, 6666, 6667 y algunos otros). Una vez más, HTTP será más probable que "vuele bajo el radar".
Las solicitudes HTTP simples pueden ser inspeccionadas por cortafuegos nosy. HTTPS puede ayudarte aquí; el descifrado de solicitudes HTTPS requiere la instalación y el mantenimiento de una autoridad de certificación personalizada que produzca certificados falsos sobre la marcha para los sitios web contactados. Hay dispositivos que ofrecen ese tipo de servicio, pero esto aún no está completamente difundido.
-
Desea ocultar el verdadero paradero del servidor C & C. Si tienes una botnet grande, entonces es seguro que algún administrador de sistemas, en algún lugar, notará algo sospechoso e intentará adivinar dónde está la C & C. Las solicitudes HTTP requieren que el cliente conozca la dirección IP del servidor de destino. Por otro lado, con IRC, el host infectado se conectaría a un servidor IRC "honesto" cercano y, por la magia del flujo de datos entre los servidores de IRC, los datos pueden llegar a la C & dondequiera que se esconde actualmente.
Para obtener una solución más completa, desea que la C & C esté oculta como un Tor servicio oculto . Tenga en cuenta que la verdadera dirección IP de un servicio oculto permanece oculta solo mientras se sostengan los supuestos detrás de la teoría de la red de cebolla, en particular que los enrutadores de cebolla "no corrompidos" siguen siendo una gran mayoría. Si esto es cierto en la práctica, nadie lo sabe.
Una red de bots realmente eficiente se estructuraría como una red de espías anticuada, con células descentralizadas ; Las máquinas botnet no sabrían la dirección C & C, sino simplemente cómo hablar con las otras máquinas en la celda, así como con una o dos máquinas de otras celdas. Los mensajes se transmitirían saltando de celda en celda. Ese tipo de estructura requiere mucha más reflexión en la fase de diseño, pero sería mucho más resistente al desmantelamiento por parte de las fuerzas policiales.
(Afortunadamente, las personas malintencionadas que desean ejecutar botnets no son menos perezosas e incompetentes que el resto del mundo, por lo que las estructuras de redes de bots bien diseñadas siguen siendo una rareza).