¿Se encuentran los archivos .dll normalmente en system32 pero ahora en la carpeta AppData de un usuario siempre son sospechosos?

27

Hace poco tuve que leer algunos informes de malware y registros asociados para una detección de malware confirmada y la posterior infección de un activo de Windows. Los registros muestran claramente los archivos .dll en la carpeta AppData de un usuario. Estos archivos .dll tienen el mismo nombre que .dll s que normalmente se encuentra en system32 , por ejemplo, cryptbase.dll .

Sé que en este caso específico, este definitivamente fue un malware y el desempaquetado del rogue .dll s fue parte del proceso normal del malware. Pregunté sobre esto en el chat y me dijeron que la única explicación real y creíble para este comportamiento sería el malware (como lo fue en esta instancia) o una práctica de programación muy mala, e incluso en ese caso es un escenario poco frecuente.

Mi pregunta es doble; ¿Existe un escenario en el que los archivos .dll con el mismo nombre que system32 .dll s se encuentren en la carpeta AppData de un usuario por cualquier motivo que no sea malware o programación deficiente?

Además, ¿es justo tratar los archivos .dll que se encuentran en AppData y parecen ser copias de los archivos .dll en system32 , como un indicador de compromiso?

    
pregunta TheJulyPlot 23.12.2015 - 13:10
fuente

3 respuestas

31

Dado que Microsoft ha enderezado los permisos predeterminados en la carpeta Program Files , muchos desarrolladores han recurrido a AppData como una ubicación alternativa para su código. La lógica es que una aplicación instalada de esta manera se puede actualizar sin requerir el acceso de nivel de administrador o elevación. (Google Chrome, por ejemplo, hace esto).

Esto también significa que, a veces, encontrará bibliotecas legítimas que normalmente viven en la carpeta system32 en algún lugar debajo de la ruta AppData . Por lo general, estos son componentes en tiempo de ejecución (como MSVCRT, GDI + o capicom) que la aplicación mantiene y actualiza (generalmente porque requieren una versión específica para funcionar, pero a veces porque se incorporan como un componente de usuario en lugar de uno del sistema). y necesita ser implementado sin elevación).

Eso no significa que debas encontrar bibliotecas que pertenezcan al sistema operativo allí: no hay ninguna razón legítima para, por ejemplo, encontrar schannel.dll allí, ya que la única aplicación que mantiene esa biblioteca es el sistema operativo.

Por lo tanto, las dlls bajo AppData que tienen el mismo nombre que una dll en system32 no son automáticamente sospechosas.

    
respondido por el Stephane 23.12.2015 - 14:50
fuente
4

Si bien no es adecuado para la distribución , otra razón por la que alguien podría usar la ruta %appdata% para las bibliotecas del sistema sería para el ajuste en tiempo de ejecución.

Específicamente : si quisiera tener una inspección en tiempo de ejecución en una validación de contrato de API determinada (un ejemplo común es malloc / free , pero esto ya está administrado por AppVerifier) o general de perfil de uso, podría escribir una capa shim que realice la validación y luego pasar a la biblioteca del sistema legítima.

En general, las bibliotecas del sistema deben estar en el sistema apropiado o SXS camino. Todos aquellos con certificación del logotipo de Windows se adherirán a esto, pero muchas aplicaciones se distribuyen sin certificación.

    
respondido por el Brycej 23.12.2015 - 23:05
fuente
0

Yo lo llamaría mala programación si en realidad sobrescribieras los DLL predeterminados de Windows. Ponerlos en una ubicación diferente a System32 es una forma de:

  • Use una versión exacta de DLL sin depender del sistema. (Ejemplo: las DLL de Direct 9 no se incluyen de forma predeterminada en Windows 10, y cualquier juego que dependa de eso se bloquea)
  • Actualizar archivos ejecutables sin derechos de administrador (Firefox y Chrome lo hacen)
  • Sobrescriba una DLL del sistema solo para su aplicación (¿Por qué haría eso en primer lugar)?

Si un software está bien hecho, colocará DLL en AppData o su directorio de instalación en lugar de en System32 .

Si un malware está bien hecho, pondrá DLL en System32 .

    
respondido por el Charles Milette 29.01.2016 - 19:23
fuente

Lea otras preguntas en las etiquetas