Simple Ransomware con Python: Creación y Funcionamiento
En esta entrada veremos la creación de un simple ransomware en python para entender su funcionamiento de como encripta nuestra información.
Antes que nada una breve reseña de que es un ransomware, una de las mayores amenazas a las que se exponen las empresas y usuarios la cual encripta la información de sus equipos solicitando rescate para poder desencriptarla, lo cual no es conveniente dar dicho rescate ya que no siempre se cumple con la desencriptación de la información, si tu o tu empresa se encuentra en este aprieto pueden ingresar a este sitio para mas información nomoreransom.org.
Muy bien, ahora manos a la obra, crearemos nuestro ambiente de pruebas para ejecutar el ransomware:
- Levantaremos una maquina virtual con sistema operativo Windows, si no sabes como crearla puedes revisar el siguiente material:
-
- Instalar VirtualBox
- Instalando Windows 10
-
- En nuestro equipo instalaremos python, lo podemos descargar de: python.org
- Ya que tenemos Python en nuestro equipo, instalaremos la librería Cryptography
- Para ello abriremos una consola de windows e insertamos el siguiente comando:
pip install cryptography
- Para ello abriremos una consola de windows e insertamos el siguiente comando:
- Ahora descargaremos este script en python que contiene la ejecución del cifrado de archivos que tome del blog.tiraquetira.com y realice algunas modificaciones, ya que lo descarguemos lo renombramos de crypt.txt a crypt.py.
- Este Script consta de:
– Extensión personalizada para renombrar cada archivo cifrado (variable extensión).
– Carpetas de Exclusiones.
– Extensiones de archivos a encriptar. - Funciones:
– generar_key: generar la contraseña de cifrado.
– cargar_key: obtener la contraseña de cifrado.
– encrypt: encriptar y renombrar cada archivo cifrado. - Programa:
– Generamos la contraseña de cifrado y la guardamos en una variable (variable key).
– Busca los archivos desde la carpeta raíz en adelante exceptuando las carpetas que agregamos en la lista de exclusiones.
– Compara si las extensiones de los archivos se encuentran en el listado de extensiones de archivos a encriptar.
– Ciframos los archivos y los renombramos.
– Creamos el típico archivo de texto solicitando el rescate.
- Este Script consta de:
- Ejecutando el script los archivos quedarían inservibles con diferente extensión y la información encriptada como se muestra en la siguiente ilustración, por lo que desde un inicio creamos el ambiente de pruebas, es decir una maquina virtual para entender el proceso que realiza el ransomware:De:
A:
- Entonces ahora sigue desencriptar los archivos descargando el siguiente script renombrándolo de decrypt.txt a decrypt.py, si el script de encriptación lo ejecutamos desde el escritorio, este de igual manera lo ejecutaremos desde la misma ruta para que tome la llave correctamente:
Esto regresara los archivos a como se encontraban originalmente, cabe resaltar que esto es en un ambiente controlado, en la realidad si llegamos a ser presa de un ransomware lo mejor es desconectar el equipo, clonar el disco para poder trabajar en el, y no comprometer la información:
- Este Script consta de:
– Extensión personalizada para renombrar cada archivo cifrado (variable extensión).
– Carpetas de Exclusiones. - Funciones:
– cargar_key: obtener la contraseña de cifrado.
– decrypt: encriptar y renombrar cada archivo cifrado. - Programa:
– Busca los archivos desde la carpeta raíz en adelante exceptuando las carpetas que agregamos en la lista de exclusiones.
– Compara si las extensiones de los archivos se encuentra la personalizada que agregamos. – Obtenemos la contraseña utilizada para el cifrado de los archivos y lo guardamos en una variable (variable key).
– Desciframos los archivos y los renombramos, eliminando la extensión agregada.
– Eliminamos el mensaje con el rescate generado durante el cifrado.
- Este Script consta de:
- Para una mejor experiencia en este ambiente de pruebas crearemos de este script un ejecutable con ayuda de pyinstaller, por lo que ahora lo instalaremos:
pip install pyinstaller
- Teniendo pyinstaller instalado ejecutaremos el siguiente comando, si no tienes o no quieres agregar el icono puedes quitar el argumento icon sin problema:
pyinstaller --windowed --onefile --icon=./calc.ico crypt.py
Como se visualiza llamamos la libreria pyinstaller seguido de 3 argumentos los cuales explico:
* windowed.- Cuando ejecutamos un script en python vemos que nos aparece la consola, entonces para evitar esto agregamos este argumento.
* onefile.- Este argumento es para que lo que requiera nuestro script quede compilado en un solo archivo, por ejemplo este script requiere de la librería de cryptography, con este argumento quedaría en el ejecutable y no es necesario instalar la librería en el ambiente de prueba para poder ejecutarlo.
* icon.- Para agregarle un icono a nuestro ejecutable usamos este argumento. - Tendremos ya nuestro ejecutable dentro de la carpeta dist, el cual solo pudiéramos hacer doble clic y nos encriptaría nuestra información:
- Si analizamos este ejecutable con algunos antivirus no detectarían que es una amenaza:
Aquí en virustotal.com:
Una vez que lo carguemos en VirusTotal, queda registrado el hash por lo que ahora si varios antivirus aunque tengan su propio motor, usan también este por lo que será ya detectado. - Como lo indique anteriormente para una mejor experiencia en el tema, para esto podríamos usar algún crypter y esconder esta amenaza, pudiéramos usar como ejemplo pycrypt y posteriormente crear el ejecutable con pyinstaller:
- Por lo que descargamos pycrypt.
- Ya descargado abrimos consola y nos dirigimos a la carpeta en cuestión.
- Ejecutamos el siguiente comando para instalar las librerías que requiere:
pip install requirements.txt
o lo podemos hacer manual:
- Ejecutamos pycript:
python pycrypt.py
- Agregamos el nombre del script del ransomware crypt.py:
- Nos creara un archivo stub.py el cual es el script encriptado que nos genero para hacerlo “indetectable” ante los antivirus, este archivo ahora lo crearemos ejecutable con pyinstaller:
y listo, ya quedo “indetectable”, en este ultimo caso no agrego ilustración ya que como les comento virustotal comparte las firmas a los motores de los AVs.
- Como vemos cualquiera puede caer en alguna amenaza como esta, y es muy sencillo cifrar nuestra información, ya que hasta que los antivirus detectan el movimiento anormal de lo que ejecutemos es cuando dentro su sandbox empieza a revisar si es dañino para luego bloquear la ejecución, para cuando termine ya se encontraran algunos archivos encriptados, por lo que siempre hay que descargar archivos de fuentes confiables.Dejo estos puntos que comparte Kaspersky sobre como prevenir una infección:
- Nunca haga clic en enlaces peligrosos: evite hacer clic en enlaces de mensajes de spam o en sitios web desconocidos. Si hace clic en un enlace malicioso, se podría iniciar una descarga automática, lo que podría provocar la infección de su equipo.
- Evite revelar información personal: si recibe una llamada, un mensaje de texto o un correo electrónico de una fuente que no sea de confianza en donde se le solicita información personal, no responda. Los ciberdelincuentes que planean un ataque de ransomware pueden intentar recopilar información personal con antelación, que luego utilizarán para personalizar los mensajes de phishing específicamente para usted. Si duda sobre si el mensaje es legítimo, póngase en contacto directamente con el remitente.
- No abra archivos adjuntos de correos electrónicos sospechosos: el ransomware también puede llegar hasta su dispositivo a través de archivos adjuntos en el correo. No abra archivos adjuntos que parezcan dudosos. Para asegurarse de que el correo electrónico sea de confianza, preste especial atención al remitente y compruebe que la dirección sea correcta. Nunca abra archivos adjuntos que le soliciten activar las macros para poder verlos. Si el archivo adjunto está infectado, al abrirlo se ejecutará una macro maliciosa, lo que dará al malware el control absoluto sobre el ordenador.
- No utilice nunca memorias USB desconocidas: nunca conecte memorias USB u otros soportes de almacenamiento a su ordenador si no sabe de dónde provienen. Es posible que los ciberdelincuentes hayan infectado el soporte de almacenamiento y lo hayan dejado en un lugar público para incitar a que alguien lo use.
- Mantenga sus programas y sistema operativo actualizados: la actualización periódica de programas y sistemas operativos le ayuda a protegerse del malware. Al instalar las actualizaciones, asegúrese de que cuenta con los parches de seguridad más recientes. Esto dificulta que los ciberdelincuentes puedan aprovechar las vulnerabilidades de sus programas.
- Utilice solo fuentes de descarga conocidas: para minimizar el riesgo de descargar ransomware, no descargue nunca software ni archivos multimedia de sitios desconocidos. Confíe en sitios verificados y de confianza para las descargas. Puede reconocer los sitios web de este tipo por los sellos de confianza. Asegúrese de que la barra de direcciones del navegador de la página que visita utilice «https» y no «http». El símbolo de un escudo o un candado en la barra de direcciones también puede indicar que la página es segura. Tenga también cuidado si descarga cualquier cosa en su dispositivo móvil. Puede confiar en Google Play Store o en el App Store de Apple, según su dispositivo.
- Utilice servicios VPN en las redes Wi-Fi públicas: un uso consciente de las redes Wi-Fi públicas es una medida de protección sensata para evitar el ransomware. Cuando utiliza una red Wi-Fi pública, su equipo es más vulnerable a los ataques. Para mantener la protección, evite utilizar una red Wi-Fi pública para realizar transacciones sensibles o use una VPN segura.
Enlaces de Interés:
No More Ransomware
Python
Cryptography
Ransom0
PyCrypt
Blog Tiraquelibras