¿Alguna sugerencia al probar un controlador de sandbox?

4

Estoy haciendo pruebas de penetración de un controlador de caja de arena y tratando de romper la caja de arena. Se implementa como un controlador en modo kernel. Un proceso de caja de arena tendrá:

  • Una lista blanca de ubicaciones de disco para operaciones de lectura
  • Una lista blanca de ubicaciones de disco para operaciones de escritura
  • Una lista blanca de direcciones IP / puertos para conexiones salientes
  • Solo debe permitir que se abran las conexiones TCP.

    ¿Hay algún escenario específico que pueda probar? ¿Existen bibliotecas de código abierto para probar un entorno de espacio aislado? Sería fantástico si alguien pudiera compartir su experiencia previa con este tipo de pruebas.
    Gracias de antemano!

    Nota: Necesito probar para Windows Server 2008 R2 64 bit.

        
    pregunta prthrokz 07.01.2013 - 18:37
    fuente

    1 respuesta

    6

    Hay dos enfoques, el cuantitativo y el cualitativo.

    El cuantitativo consiste en difuminar la entrada del controlador de sandboxing. Use un marco de fuzzing como Peach, Sulley u otro para fuzz en la entrada y busque fallos u operaciones de archivos fuera del entorno limitado.

    El enfoque cualitativo implica la ingeniería inversa y comprender el mecanismo de sandboxing. Luego intente combinar esa comprensión con las diferentes características que proporciona Windows y los diferentes niveles de privilegios que otros componentes podrían tener. La zona de pruebas puede restringir las operaciones de archivos y redes, pero ¿restringirá la inyección en un proceso diferente?

    Ideas de escenarios:

    • Manipular otros procesos y el sistema para escribir fuera de la caja de arena
    • Usando rutinas nativas del sistema NtWriteFile y ZwWriteFile
    • Cargando controladores y escribiendo en dispositivos como \Device\Harddisk4\Partition2\mydir\myfile.txt , \DosDevices\c:\path_to_file.txt , \Device\Tcp
    • Cargando DLLs con rundll32.exe
    • Mecanismos de enganche desenganchados o confusos
    • Usar enlaces simbólicos para confundir la caja de arena
    • Usando flujos de datos alternativos fileinsandbox.txt:fileoutsidesandbox.txt
    • Realización de recorridos de directorio path\in\sandbox\..\..\..\outside.txt
    • Usar variables de entorno como %SystemRoot% , %WinDir% , %TEMP%
    respondido por el Cristian Dobre 08.01.2013 - 01:02
    fuente

    Lea otras preguntas en las etiquetas