Sandbox para GNU / Linux lo suficientemente seguro como para ejecutar malware en él sin daño [cerrado]

1

Parece que estoy buscando una caja de arena para Linux lo suficientemente segura para ejecutar malware en ella de forma segura. Debería permitir

  1. crear diferentes sandboxes

  2. ejecuta diferentes programas en ellos, incluidos los que requieren privilegios de administrador (en este caso, Sandbox debe proporcionarles un administrador simulado, que no se puede distinguir del administrador real si no se necesita un acceso de bajo nivel a los componentes internos y al hardware). >

  3. restringe su acceso a diferentes API, por ejemplo, restringe el acceso a Internet a procesos no incluidos en la lista blanca, instalación de controladores, acceso a diferentes carpetas, procesos de inicio excepto los de la lista blanca, acceso a medios de bajo nivel, etc. las restricciones deben ser configurables.

  4. cada sandbox debe tener su propia carpeta / fs donde se almacenan los archivos modificados, se debe usar copy-on-write para permitir que los procesos de sandboxed escriban

  5. Los procesos de espacio aislado en el mismo recinto deben poder interactuar entre sí, pero no con el resto de los procesos (a menos que esté permitido).

  6. todos los cambios realizados en el sistema principal deben estar disponibles en el espacio aislado

  7. Debería poder transferir archivos de sandbox al sistema operativo principal fácilmente

  8. Debería poder ejecutar aplicaciones utilizando GPU en él.

El ejemplo de un sandbox para Windows es SandboxIE . A veces tuve que ejecutar malware en la caja de arena, el malware no se ha infiltrado en el sistema principal. Incluso hay una solución de análisis de malware (bsa.isoftware.nl) basada en SandboxIE.

¿Existe alguna solución para Linux que ofrezca una seguridad comparable sin virtualizar todo el sistema operativo en KVM / Xen? ¿Es posible lograr este efecto combinando SELinux con LXC y algún sistema de archivos de copia en escritura? ¿Hay alguna solución que haga esto?

    
pregunta KOLANICH 28.09.2015 - 15:48
fuente

1 respuesta

4
  

Crea diferentes cajones de arena

Actualmente, Linux es compatible con seis tipos de espacio de nombres de kernel :

  • espacio de nombres IPC
  • espacio de nombres de red
  • espacio de nombres de montaje
  • espacio de nombres PID
  • espacio de nombres de usuario
  • espacio de nombres UTS
  

ejecute diferentes programas en ellos, incluidos los que requieren privilegios de administrador (en este caso, SandboxIE les da un administrador simulado).

fakeroot puede dar a los programas acceso raíz simulado, pero encontrarás que esto no es tan útil como crees. Un programa completamente en caja de arena es un programa inútil y un programa que no tiene la suficiente capacidad para cumplir con los requisitos de seguridad.

  

restringe su acceso a diferentes API, por ejemplo, restringe el acceso a Internet a procesos que no están incluidos en la lista blanca, a la instalación de controladores, al acceso a diferentes carpetas, a los procesos de inicio excepto a los de la lista blanca, al acceso a medios de bajo nivel, etc. ...

En Linux, estos accesos están restringidos usando el mecanismo de privilegios regulares del sistema. Hay varios sistemas:

  • permiso del sistema de archivos Unix tradicional: restringe quién puede acceder a qué archivos
  • capacidades : restringe las llamadas al sistema que pueden realizarse mediante un proceso raíz
  • SELinux / AppArmor / TOMOYO: control de acceso obligatorio para hacer cumplir las políticas de seguridad
  

cada sandbox tiene su propia carpeta donde se almacenan los archivos modificados, se utiliza copy-on-write para permitir que los procesos de sandboxed escriban

Linux admite la copia en el sistema de archivos de escritura como btrfs, o se puede usar un sistema de archivos de superposición como UnionFS o OverlayFS.

  

los procesos de espacio aislado dentro del mismo recinto pueden interactuar entre sí, pero no con el resto de los procesos (a menos que esté permitido).

Esto son los espacios de nombres del kernel.

  Los procesos de

espacio aislado en realidad tienen el nivel de integridad más bajo, pero no lo perciben en la mayoría de los casos.

Linux no tiene un concepto como nivel de integridad. Sin embargo, Linux permite una configuración de integridad mucho más precisa con el sistema de capacidades y los marcos de control de acceso obligatorios.

  

todos los cambios realizados en el sistema principal están disponibles en el espacio aislado

Puedes hacer esto con un overlayfs.

  

puede transferir archivos de sandbox al sistema operativo principal fácilmente

Esto depende de cómo están configurados los contenedores.

Estas son las características del kernel que existen para los programas que el programa puede utilizar para aprovecharlas. Los programas de usuario que usaría para usar estas funciones del kernel generalmente son contenedores de Linux (LXC) o Docker.

    
respondido por el Lie Ryan 28.09.2015 - 17:34
fuente

Lea otras preguntas en las etiquetas