
Cargador reflexivo de PE/DLL x64 implementado mediante syscalls indirectas dinámicas
Atlas es un cargador reflectivo x64 que tiene las siguientes características:
Atlas requiere los siguientes parámetros para funcionar correctamente:
Usage: atlas_x64.exe [Process name / PID] [Cleanup] [Server] [Port] [AtlasPatcher DLL] [DLL/PE to inject] <Entrypoint>
| Parameter | Description |
|---|---|
| Name / PID | El nombre o PID del proceso objetivo |
| Cleanup | Indica si deseas eliminar los DLLs inyectados del proceso objetivo al finalizar (Cleanup admite 1 o 0 como valores) |
| Server | La dirección IP del servidor remoto donde tienes los DLLs |
| Port | El puerto utilizado por tu servidor |
| AtlasPatcher DLL | El nombre del DLL AtlasPatcher (por defecto atlas_patcher.dll) alojado en tu servidor (puedes encontrar el DLL en /AtlasLdr/bin una vez compilado) |
| DLL/PE to inject | El nombre del DLL o PE que deseas inyectar, alojado en tu servidor |
| Entrypoint | Un argumento opcional; el nombre de la función exportada que deseas utilizar como punto de entrada cuando se inyecta el DLL |

El enfoque convencional de un cargador generalmente implica tener un inyector responsable de inyectar un DLL que contiene el cargador en el proceso remoto al que apuntamos. Una vez inyectado, la ejecución se transfiere al cargador, que es responsable de mapear el DLL malicioso. En contraste, Atlas adopta un enfoque ligeramente diferente al realizar todo el proceso de mapeo dentro de su propio contexto, excepto el parcheo de la Tabla de Direcciones de Importación (IAT), que se difiere.
Una vez que el DLL malicioso ha sido mapeado en el contexto de Atlas, se copia en la memoria previamente reservada en el proceso remoto. En este punto, el DLL malicioso está mapeado en el proceso remoto, pero la IAT no ha sido parcheada. Para solucionar esto, AtlasLdr inyecta un DLL (atlas_patcher.dll) con dependencias mínimas en el proceso malicioso, que se encarga de parchear la IAT del DLL malicioso y luego transfiere el contexto de ejecución a este.
Este enfoque ayuda a reducir el tamaño y la complejidad del DLL cargador que se inyecta en el proceso remoto y minimiza las posibilidades de que el inyector sea detectado, ya que podemos cargar el DLL con el propio cargador.
Atlas debe compilarse utilizando x86_64-w64-mingw32-g++; una vez que lo tengas en tu sistema, solo ejecuta make (o mingw32-make.exe) en la carpeta del proyecto
