Creando un servidor de C&C de botnets. ¿Qué arquitectura debo usar? IRC? HTTP?

4

Estoy haciendo un proyecto relacionado con botnets y tengo que crear un servidor ligero de comando y control. Pero estoy atascado: ¿debo usar IRC o un C & C basado en HTTP?

Incluso no estoy obteniendo ninguna arquitectura o análisis en profundidad de ningún servidor C & C.

Estoy usando un dispositivo de hardware para conectar C & C, ¿qué debo tener en cuenta?

    
pregunta tritiya 18.09.2015 - 15:03
fuente

2 respuestas

11

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

    
respondido por el Thomas Pornin 18.09.2015 - 21:06
fuente
2

Hay muchas razones para ambos. Las principales diferencias:

  • irc es un túnel de dos vías. Por lo tanto, el envío de mensajes o las solicitudes de contacto iniciadas por usted y sus robots serían mucho más fáciles en ambos sentidos, si al menos uno de ellos está detrás de un firewall de natting.
  • enlace
  • el protocolo http no tiene estado en la configuración principal, lo que significa que la comunicación compleja será más difícil de implementar (hay que realizar un manejo de sesión). En irc, simplemente puede abrir un hilo para sus clientes y luego tendrá un flujo de control único y de procedimiento.
  • aunque irc puede ser extendido por ssl también, no es tan común como en http. Probablemente tendrá que incrustar alguna biblioteca de comunicación irc para la tarea, configurándola para que use ssl de tal manera que no se detecte y sea más difícil. En el caso de http, puede seleccionar un amplio espectro de diferentes soluciones soap / rest / rpc y de las bibliotecas que las utilizan.

Como sé, en los círculos de las botnets actualmente en ejecución, las https son mucho más comunes, pero la mayoría de ellas es una pesadilla desde el punto de vista del programador.

Para investigación, usaría irc sin cifrar (más fácil de programar, sin necesidad de cifrado).

    
respondido por el peterh 18.09.2015 - 20:10
fuente

Lea otras preguntas en las etiquetas