Sugerencia: para mejor comprensión, lea las anteriores entregas sobre botnets. La primera entrega está acá, la segunda está acá, la tercera está acá y la cuarta está acá.
En las redes P2P o peer-to-peer cualquier nodo o máquina conectada puede hacer tanto de servidor como de cliente; este protocolo ganó notoriedad con el lanzamiento de Napster, por cuanto los clientes, es decir el software que los usuarios de la red instalaban en sus propias máquinas, permitía a todos los demás usuarios encontrar en ellos y compartir archivos de contenido musical; la indexación de esos archivos era hecha de manera centralizada en un servidor, por lo que Napster no era per se una red P2P: los usuarios se conectaban al servidor para descargar el index de los archivos disponibles en la red, de manera que pudieran encontrarlos en, y descargarlos desde, las máquinas de los demás usuarios.
La aparición de la primera red enteramente P2P se da con el protocolo Gnutella (1); un aparte del Gnutella Protocol Specification v0.4 indica que «todo cliente es un servidor y vice versa… Debido a su naturaleza distribuida, una red de máquinas en las que se haya implementado Gnutella es altamente tolerante a las fallas, por cuanto las operaciones de la red no serán interrumpidas si un subconjunto de máquinas es desconectado» (2). Es decir, la arquitectura de las redes P2P resuelve el gran problema de los botmasters al no existir en ellas de forma necesaria un servidor que se constituya en ese central point of failure del que se pueden servir los investigadores de seguridad para inutilizar la botnet.
El principio básico sobre el que se fundamenta el desarrollo de las redes P2P, similar al fundamento de la computación «en malla» o «en parrilla» (grid computing), es el de poner a disposición y usar coordinadamente grandes conjuntos de recursos distribuidos (3) incluso geográficamente. Puesto que todos los usuarios aportan espacio de memoria en disco, ancho de banda y capacidad de procesamiento, mientras más grande sea la red, más poderosa será porque en el agregado general tendrá una capacidad de procesamiento, una memoria y un ancho de banda igual a aquel aportado por todos sus miembros que se encuentren conectados en un momento determinado.
Analizando la botnet Peacomm, Grizzard, Sharma, Nunnery y Kang (4) encontraron que tras la infección, la máquina correspondiente se conecta a la red P2P e inicia una descarga automática de códigos maliciosos adicionales, que pueden ser modificados por el botmaster y que son usados por él para controlar esas máquinas infectadas.
Saludos desde California,
Carlos S. Álvarez
blogladooscuro @ gmail.com
@isitreallysafe
Notas:
(1) LimeWire, popular programa de software para descarga de contenidos (música, películas, videos, software y otros) fue implementado sobre los protocolos BitTorrent y Gnutella. Ver: http://www.limewire.com/about .
(2) «The Gnutella Protocol Specificaciont v0.4, Document Revision 1.2»; en: http://www9.limewire.com/developer/gnutella_protocol_0.4.pdf .
(3) Foster, Ian y Iamnitchi, Adriana; ensayo titulado «On Death, Taxes, and the Convergence of Peer-to-Peer and Grid Computing» (Sobre la muerte, los impuestos y la convergencia del peer-to-peer de la computación «en malla»). En: «Peer-to-Peer Systems II», Springer Berlin / Heidelberg, 2003. Págs. 118 a 128.
(4) Op. cit.