Stockholm: entendiendo el ransomware desde dentro
Dentro del bootcamp de ciberseguridad de 42Madrid, el proyecto Stockholm supone un salto interesante hacia el lado más ofensivo (y delicado) de la seguridad informática. El objetivo no es otro que comprender cómo funciona un ransomware implementándolo tú mismo siempre con fines educativos y en entornos controlados.
Stockholm es un proyecto que te obliga a pensar como un atacante para aprender a defender mejor tus sistemas.
⚠️ Aviso importante
Antes de entrar en materia, conviene dejar algo muy claro:
-
Este programa se ha desarrollado exclusivamente con fines educativos.
-
El uso y la distribución de la herramienta es responsabilidad de quien la ejecute.
-
El programa solo afecta, de forma controlada, a los archivos ubicados en el directorio
~/infection. -
Al cifrar los archivos se genera un fichero
totem.key, que contiene la clave de cifrado.
👉 Si pierdes este archivo, no hay vuelta atrás. -
Se recomienda encarecidamente ejecutar el proyecto dentro de un contenedor Docker o una máquina virtual.
En resumen: experimenta, aprende… pero con cuidado 🧯.

🧩 Objetivo del proyecto
El propósito de Stockholm es crear un programa pequeño, pero con un impacto claro: cifrar archivos de forma masiva, simulando el comportamiento básico de un ransomware real.
El programa debe:
-
Ejecutarse en sistemas Linux o macOS.
-
Analizar el directorio
/home/$user/infectiony todos sus subdirectorios. -
Detectar archivos con extensiones similares a las afectadas por el ransomware WannaCry.
-
Cifrar dichos archivos utilizando un algoritmo criptográfico seguro.
-
Renombrar los archivos cifrados añadiendo la extensión
.ft.
Aunque no se busca propagación en red, el proyecto sirve para entender cómo un ataque de este tipo puede causar daños significativos si no se toman medidas de seguridad adecuadas.
🔐 Criptografía y seguridad
El proyecto está desarrollado en Python, utilizando el módulo cryptography, concretamente su implementación de Fernet.
Fernet se apoya en el algoritmo AES (Advanced Encryption Standard), uno de los estándares de cifrado más utilizados y robustos a día de hoy:
-
AES-128
-
AES-192
-
AES-256
AES es usado tanto por empresas privadas como por organismos gubernamentales, lo que da una buena idea del nivel de seguridad que ofrece.
En el caso de Stockholm:
-
El programa escanea el directorio
infection. -
Genera una lista de archivos objetivo.
-
Cifra cada archivo usando AES a través de Fernet.
-
Guarda la clave de cifrado en
totem.key.
Cuando se ejecuta el modo de descifrado, el proceso se invierte siempre que:
-
Los archivos no hayan sido modificados.
-
La clave
totem.keysiga intacta.
🧪 Pruebas con Docker
Para minimizar riesgos, el proyecto incluye soporte para Docker, lo que permite probarlo de forma segura.
El flujo recomendado es:
-
Instalar Docker Desktop.
-
Usar el Makefile para construir la imagen y lanzar el contenedor.
-
Ejecutar los scripts de prueba dentro del entorno aislado.
-
Probar el binario generado sobre los archivos de test.
De este modo, puedes experimentar libremente sin comprometer tu sistema real.

🚀 Conclusión
Stockholm es un proyecto tan delicado como interesante. Te permite:
-
Comprender cómo funciona un ransomware real desde dentro.
-
Aprender criptografía aplicada (AES, Fernet).
-
Trabajar con sistemas de archivos de forma recursiva.
-
Adoptar buenas prácticas de testing en entornos aislados.
-
Tomar conciencia real del impacto de los ataques de cifrado.
Es un proyecto clave para cualquiera que quiera profundizar en ciberseguridad ofensiva y defensiva 🔐💻.
📌 Código fuente disponible en GitHub
- Date: 2025-12-29
- Categories: Python - Seguridad
- Código Fuente goldcod3/Stockholm