¿Cómo se usa el almacenamiento local Thread por malware / Virus?

1

Me han dicho que el código en TLS se ejecuta antes de que se alcance el punto de entrada de un archivo ejecutable, por lo que si se coloca un punto de interrupción en esta dirección TLS, este podría depurar el comportamiento del virus. ser utilizado para fines maliciosos. La dirección y el tamaño de TLS se almacenan en el Directorio de datos del encabezado opcional de la estructura de PE, donde puedo encontrar la dirección y el tamaño de FLS. ¿Puede un TLS de un hilo ser usado por otro hilo?

De acuerdo con mi comprensión de TLS: cada proceso puede tener muchos subprocesos ejecutándose en su espacio de direcciones virtuales y cada subproceso tiene su propio TLS. Se utiliza TLS cuando es necesario crear una instancia de variables globales para cada instancia.

    
pregunta rebel87 27.12.2014 - 07:18
fuente

2 respuestas

2

Nunca he visto "ejecutar" datos TLS primero, sin embargo, en el caso de un PE no cargado dinámicamente, la sección .tls se carga antes de que se ejecute el punto de entrada. Las ranuras TLS también son inicializadas por el cargador antes de que se llame al punto de entrada. El malware puede usar TLS y FLS para crear en el almacenamiento de memoria que es un poco más difícil de inspeccionar durante el tiempo de ejecución.

Si sabe que el malware está leyendo / escribiendo TLS / FLS, probablemente podría poner un punto de interrupción de hardware en la memoria que se está utilizando para el TLS / FLS. Cuando el malware lee / escribe esa memoria, el depurador debería interrumpirse, y podrá inspeccionar el estado del proceso mientras el depurador está roto. Supongo que esto podría ser útil si el malware estaba muy confuso y era difícil rastrear el flujo de control del malware.

Además, si el malware está almacenando código ejecutable en las secciones TLS, podría escribir un 0x3C (int3) en el primer byte del código, lo que causaría que el depurador se rompa si / cuando se ejecutó el código.

TLS se usa normalmente de una de dos maneras. Primero, es usar las funciones tls (TlsAlloc, TlsSetValue, TlsGetValue, TlsFree, etc.). El segundo sería definir las variables locales de subprocesos con __declspec(thread) , que agregaría una sección .tls con el valor inicializado al archivo PE compilado (que debería ser un exe, no una dll si está usando __declspec(thread) ). FLS solo está disponible a través de las funciones Fls *, no hay __declspec(fiber) que yo sepa.

No hay nada intrínsecamente malicioso en TLS o FLS, pero son utilizados por algunas formas de malware en un intento de ocultar los datos del análisis.

    
respondido por el superultranova 02.01.2015 - 07:17
fuente
3

Estás pensando en devoluciones de llamada TLS! TLS incluye devoluciones de llamada TLS, una serie de punteros a funciones que se ejecutarán antes de que se alcance el EP.

Esta funcionalidad existe para que el desarrollador pueda inicializar los datos TLS antes de ejecutar el programa. Poner su código malicioso aquí lo haría algo inesperado para el analista, ya que su depurador normalmente se interrumpiría en el punto de entrada (y después de que se ejecuten las devoluciones de llamada TLS). Esto haría que el análisis sea un poco más difícil.

    
respondido por el dNetGuru 05.03.2017 - 11:31
fuente

Lea otras preguntas en las etiquetas