Cliente - Servidor


Troyano que permite modificar y monotorizar en vivo un equipo, tanto en redes locales como externas.

Creada con Python y Sockets

Implementación de Sockets para gestionar conexiones

TCP/IP Protocols para gestionar la transmisión de datos

Network Security para protegernos frente a accesos no solicitados

Port-Forwarding para permitir el acceso remoto a través de redes NAT

Configuración de Redes para operar tanto en redes locales como en redes de mayor escala

Gestión de Conexiones Simultáneas para aceptar y gestionar múltiples conexiones de clientes en paralelo

Optimización de Transferencia de Datos para reducir el tiempo de respuesta

Recuperación de Conexiones para restablecer conexiones interrumpidas

Control de Acceso para permitir solo el acceso a clientes autorizados

Video Explicativo de como funciona el troyano 👇

En este video explico paso a paso como funciona el cliente - servidor

¿Algunas preguntas?

¿Porqué un Malware?

Siempre me ha fascinado el mundo de la ciberseguridad: cómo se crean los virus, cómo los hackers logran que sean indetectables y cómo funcionan los antivirus.

¿Y qué mejor manera de entenderlo que desarrollando yo mismo un malware en un entorno controlado y seguro?


Este proyecto ha resultado especialmente enriquecedor, ya que no solo aborda cuestiones de ciberseguridad, sino también aspectos de conexión de redes remotas.

Para llevarlo a cabo, he tenido que aprender desde los fundamentos hasta conceptos más avanzados, como las diferencias entre IPs públicas y privadas, Port Forwarding, entre otros.


Además, hasta ahora nunca había desarrollado un software; mi experiencia se limitaba a la creación de páginas web y es por ello que este proyecto ha sido todo un desafio.

¿Que técnologias has usado para el proyecto?

Para este proyecto utilizé Python.

Lo tuve que aprender de manera autodidacta dado que no estuvo en mi plan de estudios y aunque fue todo un desafio, es un lenguaje de programación al que definitivamente he cogido cariño.


Ademas, tambien use Sockets, que me sirvieron para implementar la comunicación en tiempo real entre sistemas, lo que fue clave para el funcionamiento del proyecto.

¿El proyecto es seguro?
Sí, todo el desarrollo se realizó en un entorno controlado y seguro, aislado de sistemas reales.
El malware nunca se probó en equipos que pudieran verse comprometidos.
¿Cual fue el mayor desafio?

Hubieron muchos desafios, como por ejemplo usar un lenguaje de programación completamente nuevo y aprenderlo de manera autodidacta.


Sin embargo el desafio mas grande fue conseguir la conexión entre cliente - servidor en redes distintas: Para entender la dificultad, primero hay que saber los conceptos básicos. Cada equipo tiene dos IPS distintas.


La IP pública es la dirección visible externamente y la que permite que otros dispositivos en internet se comuniquen con nuestra red.


En cambio, la IP privada es asignada a cada dispositivo dentro de la red local y permite que estos dispositivos se comuniquen entre sí sin exponerse directamente a internet. En la mayoría de los casos, tanto la IP pública como la privada suelen ser dinámicas, es decir, cambian cada cierto tiempo. Esto es gestionado por el proveedor de internet (ISP) para optimizar su propio uso de direcciones IP y reducir costos. Sin embargo, las IP dinámicas pueden causar problemas para establecer conexiones consistentes a lo largo del tiempo, ya que la dirección puede variar y hacer que las configuraciones se desajusten.


Para habilitar la comunicación cliente-servidor en este proyecto, fue necesario habilitar port forwarding (redireccionamiento de puertos) en el router.


El problema radicaba en que mi ISP bloqueaba el port forwarding, lo cual impedía que las solicitudes entrantes llegaran al puerto del servidor a pesar de haber configurado todo correctamente. Debido a estos obstáculos, decidí utilizar una VPN (Red Privada Virtual).


Las VPN ofrecen una solución eficaz en estos casos, ya que, al conectarse a una VPN, el servicio proporciona una IP pública fija y, en muchos casos, un puerto abierto. Esto facilita la conexión, ya que la IP permanece estable y evita el bloqueo del port forwarding por parte del ISP. Además, la VPN proporciona una capa adicional de seguridad, ya que cifra el tráfico entre el cliente y el servidor, minimizando el riesgo de interceptación de datos.