La ratonera perfecta: ¿se puede diseñar un sistema de caja de arena de modo que sea idéntico a una computadora real? [duplicar]

17

Al probar los archivos sospechosos en busca de malware, el método típico es buscar un código malicioso conocido. Esta es la razón por la cual los ataques de malware de día cero pueden ser tan peligrosos: su código malicioso es previamente desconocido para el software antivirus. La solución ideal es probar cada archivo y programa en una caja de arena antes de que se use, y esto se ha intentado, pero, por lo que sé, aparecen procesos típicamente inusuales que pueden detectarse con un mouse lo suficientemente inteligente. El malware detecta que está siendo aislado en un espacio aislado, y retiene su comportamiento malicioso para evitar que lo descubran.

La pregunta es, ¿puede ser posible, y lo que es más importante, construir una caja de arena que sea idéntica a una computadora real y luego implementar en los sistemas operativos de hoy (Windows, OS X, Linux, iOS, Android) un software que ¿Qué lo usa para probar todo antes de ejecutarlo o, mejor aún, lo usa como el entorno de ejecución para ese archivo?

    
pregunta TheEnvironmentalist 22.04.2015 - 09:19
fuente

5 respuestas

17

Sí, puede hacerse como (teóricamente) cada "dispositivo informático" es computacionalmente equivalente a cualquier otro dispositivo informático. Busque la tesis de Church-Turing si está interesado.

Sin embargo, su pregunta se basa en la práctica y, en este caso, la respuesta es "sí, pero costaría demasiado". El esfuerzo en la virtualización de hoy apunta a acelerar el entorno virtual tanto como sea posible hasta el punto donde está bastante trivial a detectar si está ejecutando en una máquina virtual. Lo que significa que cualquier esfuerzo para replicar un sistema que se ejecute al 100% "nativo" está limitado por el número de personas con su mismo interés.

En otras palabras, hay muy poco interés comercial en hacer lo que está buscando y el retorno de la inversión se limitaría solo a los pocos aficionados y empresas que tienen interés en el tema. ¿Cuánto pagaría usted por dicho sistema? ¿Cuánto tiempo puedes dedicar? ¿Cuántas personas conoce que están dispuestas a pasar años en este proyecto?

Si bien hay esfuerzos para investigar , todavía no he visto un sistema que funcione completamente y que no sea terriblemente lento. . Por ejemplo, Skype emplea técnicas anti-depuración que detectan desaceleraciones (consulte diapositiva 30 de esta presentación ). Sospecho que cualquier malware podría hacer trucos similares para medir la ejecución en un servidor de tiempo fijo y detectar cuándo se está ejecutando en un emulador (necesariamente lento).

Creo que un enfoque diferente sería más sólido económicamente: ejecute la muestra de malware en una máquina real y observe lo que sucede. Luego, "fantasma" su disco y memoria y observe las diferencias con una muestra "limpia" idéntica. En general, puede llevar menos tiempo que desarrollar un simulador como el que tiene en mente.

    
respondido por el lorenzog 22.04.2015 - 11:33
fuente
7

En realidad, la respuesta de lorenzo no es suficiente. La tesis de Church-Turing solo nos proporciona un modelo de computación, no puede decirnos nada acerca de la virtualización porque no está relacionada con otros aspectos de una máquina.

Pero hay un análisis teórico de la capacidad de una máquina para ser virtualizada por Popek et al: enlace

Dicho esto, las arquitecturas actuales y, lo que es más importante, x86-64 NO cumplen estos requisitos. Entonces, la conclusión sería que, desafortunadamente, es imposible para las arquitecturas de CPU actualmente en uso. Pero siempre se podría pensar en nuevas arquitecturas de CPU ...

    
respondido por el Tobias Würfl 22.04.2015 - 14:33
fuente
3

Coloque una computadora real en un entorno físico de recinto de seguridad. La computadora en sí no es una caja de arena y no virtualiza nada.

¿Necesita directorio activo? Coloque el directorio activo en el entorno de sandbox.

Haga sus pruebas, verifique lo que ha cambiado, revise los registros de la computadora y la red.

Esto es más práctico que crear un sistema operativo de espacio aislado que limita las funciones normales del hardware.

    
respondido por el ponsfonze 22.04.2015 - 17:32
fuente
1
  

... práctico, para construir una caja de arena que sea idéntica a una computadora real ... pruebe cada archivo y programa en una caja de arena antes de que se use ...

Creo que esta es la pregunta incorrecta. El verdadero desafío no es construir una caja de arena que se comporte como una computadora real, sino una que se comporte como una computadora real utilizada por el usuario objetivo .

El malware realmente usa técnicas para detectar la presencia de un usuario, a veces incluso un usuario específico (ataques dirigidos). Algunas técnicas posibles para las descargas por disco basadas en la web son

  • Compruebe si se hace clic en las posiciones específicas de una página o espere a que se ingrese algún tipo de captcha.
  • Compruebe si algunos recursos están almacenados en caché y otros no, y por lo tanto, verifique la presencia de un navegador realmente utilizado por un humano durante algún tiempo.
  • Compruebe si el usuario ha iniciado sesión en Facebook, tiene acceso a algún sitio web interno específico, recurso, etc.
respondido por el Steffen Ullrich 22.04.2015 - 20:20
fuente
0

Echemos otro vistazo a esta pregunta: es muy difícil detectar el malware que se basa únicamente en el comportamiento: no solo el malware puede intentar detectar si se está ejecutando en un entorno virtualizado, sino que puede (por ejemplo) esperar un tiempo antes de activar el malicioso. comportamientos (un tipo de ejemplo relacionado: hace algún tiempo, una extensión de Chrome que esperó 7 días antes de activar la actividad maliciosa pasó la detección de Google proceso para extensiones de cromo ).

La mayoría de los antivirus ya detectan algunos comportamientos de malware, supongamos que un programa de malware espera 5 minutos antes de intentar borrar la partición / . El antivirus que realiza análisis de comportamiento puede:

  • Ejecuta este programa en un entorno de arena por unos segundos y luego decide que está bien.
  • Ejecutar este programa es un sandbox súper rápido en el que el tiempo pasa muy rápido (más rápido que en tiempo real) --- pero este sandbox sería fácil de detectar al contactar al servidor de tiempo.
  • Ejecute este (y todos los demás!) programas en sandbox durante 5 minutos antes de ejecutarlo en una PC real --- lo que hace que la computadora quede inutilizable.
respondido por el jb. 22.04.2015 - 23:16
fuente

Lea otras preguntas en las etiquetas