¿Cómo carga el malware un dll de la memoria?

2

Estoy tratando de entender cómo el malware carga una DLL de la memoria, como en una sección de recursos. Estoy viendo códigos en todo Google, pero no puedo encontrar una especie de pseudocódigo como en inglés simple que pueda explicar el proceso. Entiendo el formato de archivo c ++ y pe en su mayor parte, parece que puede dar sentido a cómo se puede cargar un dll en la memoria.

    
pregunta jammy47 30.11.2016 - 20:59
fuente

2 respuestas

1

En primer lugar, el malware normalmente no carga sus propias DLL en la memoria. Creo que confunde esto con código malintencionado de inyección de código ejecutable en otro proceso (OpenProcess (), WriteProcessMemory ()) e iniciando un nuevo hilo en ese proceso (CreateRemoteThread ()) que ejecuta ese código. Esto no tiene nada que ver con cargar una DLL en la memoria, que es mucho más difícil que simplemente ejecutar código. ¿Por qué el malware debe consistir en múltiples DLL que se cargan en la memoria? Es mucho más fácil escribir UN ejecutable de malware en lugar de múltiples DLL.

Vuelve a tu pregunta: si quieres engañar a Windows para que cargue un DLL desde la memoria, esto es algo entre una programación muy avanzada y un cracking.

Una desventaja es que no puedes usar los depuradores si algo sale mal en tu DLL.

Puede usar, por ejemplo, este código: enlace para cargar un archivo DLL en la memoria. No lo probé porque la desventaja es que debes usar funciones especiales para acceder a esa DLL en la memoria después. Por ejemplo, para leer un recurso de cadena de esa DLL, no puede usar la API de Windows habitual. Debe utilizar una función de la misma biblioteca.

Algunos problemas que ocurren se enumeran con más detalle aquí: enlace El autor dice que con su código su DLL no tiene un identificador de HINSTANCIA. Esto es una gran desventaja.

    
respondido por el Elmue 23.02.2018 - 04:03
fuente
0

Realmente no estoy muy seguro de lo que está preguntando, según mi conocimiento, la única manera de trabajar con el sistema operativo es llamar a sus API documentadas y no documentadas.

Aquí es lo que considero la forma más fácil de entender los diferentes ataques de inyección y cubre los métodos que estaba preguntando

Diez técnicas de inyección de procesos

Los números 2 y 3 de la lista describen procesos que permiten la inyección de código sin tener la DLL en el disco, ambos trabajando con la estructura PE.

La inyección reflectiva construye la estructura de PE en la memoria y luego le asigna el código binario. Con la estructura de PE y el binario asignado correctamente, ahora está esencialmente en la memoria y no se ha llamado a ninguna API de biblioteca para cargarlo desde el disco.

El proceso de vaciado desasignará las secciones de un subproceso suspendido dll cargado y luego se asignará en un código malicioso y volverá a ubicar el punto de ejecución antes de que el subproceso esté configurado para ejecutarse. Intenté que esto funcionara como un proyecto de C #, pero nunca conseguí que funcionara la rebase :(

    
respondido por el McMatty 27.02.2018 - 02:47
fuente

Lea otras preguntas en las etiquetas