1 of 40

Detección Automatizada de Archivos Maliciosos en PyPI

Cristina Muñoz

2 of 40

Quien Soy Yo

  • Ingeniera
  • <3 seguridad cibernética
  • Desilusionada con BigTech

3 of 40

4 of 40

PyPI

Fuente canónico de paquetes de Python

5 of 40

pip install requests

6 of 40

Solicitud de Propuesta

1. Firma criptográfica verificable de artefactos

2. Sistema para detección automatizada de malware en subidas

7 of 40

Requisitos del Sistema

  • Extensible
  • Infraestructura almacenamiento
  • Interfaz Administrativa
  • Documentación

8 of 40

Otra Perspectiva

Esto es simplemente un SIEM.

9 of 40

10 of 40

11 of 40

12 of 40

13 of 40

Typosquatting

pip install python3-dateutil

pip install jeIlyfish

14 of 40

pip install jeIlyfish

15 of 40

16 of 40

17 of 40

18 of 40

setup.py

from setuptools import setup

from setuptools.command.install import install

from my_evil_module import root_reverse_shell

class PostInstallCommand(install):

def run(self):

root_reverse_shell()

install.run(self)

setup(

name='0wned',

version='0.0.1',

description='Code execution via Python package installation.',

...

cmdclass={

'install': PostInstallCommand,

},

)

19 of 40

20 of 40

Tipos de chequeos

  1. Enganches de eventos: Creación de proyectos, versiones, archivos
  2. Enganches prevista: Investigar patrones y comportamientos

21 of 40

Chequeos de enganche de evento

  • Enviar subidas a VirusTotal
  • Hacer analisis estatico o dinamico
  • Utilizar reglas YARA

22 of 40

SetupPatternCheck

Reglas YARA que avisen cuando encuentren:

  • Generación de procesos
  • Conexiones de red
  • Deserialización
  • Metaprogramación

23 of 40

24 of 40

Chequeos de enganche previstos

  • Cambios de propiedad
  • Cambios del nivel de seguridad de cuentas usuarios
  • Reputación de usuarios
  • Direcciones IP asociados con VPNs

25 of 40

PackageTurnoverCheck

Vector de amenaza: Un mantenedor cambia o baja el nivel de seguridad de su cuenta, y transfiere propiedad de su proyecto a otro usuario

26 of 40

Warehouse

27 of 40

Warehouse

28 of 40

Warehouse

29 of 40

Warehouse

30 of 40

Warehouse

31 of 40

Warehouse

32 of 40

33 of 40

34 of 40

Interfaz Administrativa

https://test.pypi.org/admin/

35 of 40

36 of 40

El Desarrollo de Chequeos Nuevos

  • Descargar Warehouse
  • Heredar la clase MalwareCheckBase y escribir el chequeo
  • Cambiar una variable de entorno
  • Implementar con un script
  • Activarlo en la interfaz administrativa
  • ¡Ejecutarlo!

37 of 40

Documentación

https://warehouse.pypa.io/development/malware-checks/

38 of 40

39 of 40

Agradecimientos

Marco Palacios, Christian Navarrete, Ernest W. Durbin, William Woodruff

40 of 40

Preguntas? Comentarios?

Pongase en contacto: hi@xmunoz.com