¿Depurar todos los procesos para reducir el riesgo de un ataque de malware exitoso?

0

He visto que un poco de malware (en particular ransomware) busca un depurador y descarga si se encuentra uno.

¿Sería (a) práctico y (b) reduciría el riesgo de un ataque de malware exitoso si uno de ellos:

  • adjunta un depurador ficticio a cada proceso de espacio de usuario en la creación?

  • tiene un gancho que le dice a los procesos de un usuario que hay un depurador conectado, si se le pregunta? p.ej. LD_PRELOAD en Linux, y creo que a partir de las grietas de WGA que Windows también tiene algunas API para esto.

Supongo que, particularmente en Windows, puede ser necesario tener una lista blanca de programas para no depurar (p. ej., software comercial que también se cancela si se está depurando).

    
pregunta Mark K Cowan 12.07.2017 - 18:08
fuente

1 respuesta

1
  

¿Sería (a) práctico y (b) reduciría el riesgo de un ataque de malware exitoso si uno de ellos:

     
  • adjunta un depurador ficticio a cada proceso de espacio de usuario en la creación?
  •   
  • tiene un gancho que le dice a los procesos de un usuario que un depurador está conectado, si se le pregunta? p.ej. LD_PRELOAD en Linux, y creo que a partir de las grietas WGA que Windows también tiene algunas API para esto.
  •   

Desde una perspectiva de Linux

LD_PRELOAD solo se puede utilizar con binarios enlazados dinámicamente. No es infrecuente que los binarios de ELF desarrollados con fines criminales estén vinculados estáticamente; los ejemplos incluyen

y así sucesivamente.

En cuanto a adjuntar un depurador ficticio a cada proceso de espacio de usuario en la creación, considere lo siguiente:

  • aprovechar el hecho de que un proceso no puede llamar a ptrace(PTRACE_TRACEME,...) más de una vez es solo uno de varios técnicas de depuración . Si el uso de cualquier técnica anti-depuración única produce una alta tasa de detección / falla, los creadores de malware se adaptarán y la técnica simplemente ya no se utilizará. Algunos ejecutables bien conocidos ni siquiera se molestan con trucos anti-depuración: Mirai y su tipo son un ejemplo destacado. de esto.
  • la creación del proceso del espacio de usuario es administrada por el kernel (y si el programa está vinculado dinámicamente, el enlazador dinámico también). Esto significa que si uno desea realizar cambios en la forma en que se asigna un programa a la memoria virtual, debe hacer cambios en el kernel. ¿Tiene sentido alterar fundamentalmente la forma en que el kernel carga los programas en la memoria en todas las arquitecturas para hacer algo como adjuntar un depurador ficticio a cada proceso de espacio de usuario en la creación, solo para ver a los autores de malware simplemente dejar de llamar a ptrace(PTRACE_TRACEME,...) en sus binarios como un resultado?
  • adjuntar un depurador ficticio giraría en torno al uso de la llamada al sistema ptrace . El uso de ptrace tiene implicaciones de gran alcance para el comportamiento del proceso e incluso podrían inutilizar el sistema, debido a que la ejecución de un programa rastreado se detiene al recibir una señal:

      

    Mientras se está rastreando, el tracee se detendrá cada vez que se envíe una señal.      Entregado, incluso si la señal está siendo ignorada. (Una excepción es      SIGKILL, que tiene su efecto habitual.) El marcador se notificará a      su próxima llamada a waitpid (2) (o uno de los sistemas de "espera" relacionados      llamadas); esa llamada devolverá un valor de estado que contiene información      Eso indica la causa de la parada en el tracee. Mientras que el tracee      se detiene, el trazador puede usar varias solicitudes de seguimiento para inspeccionar y      modificar el tracee. El marcador hace que el tracee continúe,      opcionalmente ignorando la señal entregada (o incluso entregando un      diferente señal en su lugar).

Así que no, ninguna de estas propuestas es práctica o mejora la seguridad.

    
respondido por el SYS_V 12.07.2017 - 20:36
fuente

Lea otras preguntas en las etiquetas