
Рефлексивный загрузчик x64 PE/DLL, реализованный с использованием динамических косвенных системных вызовов
Atlas — это рефлексивный x64-загрузчик, обладающий следующими возможностями:
Для корректной работы Atlas требуются следующие параметры:
Usage: atlas_x64.exe [Process name / PID] [Cleanup] [Server] [Port] [AtlasPatcher DLL] [DLL/PE to inject] <Entrypoint>
| Параметр | Описание |
|---|---|
| Name / PID | Имя или PID целевого процесса |
| Cleanup | Указывает, нужно ли удалять внедрённые DLL из целевого процесса по завершении (Cleanup принимает значения 1 или 0) |
| Server | IP-адрес удалённого сервера, на котором находятся ваши DLL |
| Port | Порт, используемый вашим сервером |
| AtlasPatcher DLL | Имя DLL AtlasPatcher (по умолчанию atlas_patcher.dll), размещённой на вашем сервере (после компиляции DLL можно найти в каталоге /AtlasLdr/bin) |
| DLL/PE to inject | Имя DLL или PE, которое вы хотите внедрить и которое размещено на вашем сервере |
| Entrypoint | Необязательный аргумент; имя экспортируемой функции, которую вы хотите использовать в качестве точки входа при внедрении DLL |

Обычный подход к загрузчику обычно предполагает наличие инжектора, который отвечает за внедрение DLL, содержащей загрузчик, в целевой удалённый процесс. После внедрения управление передаётся загрузчику, который отвечает за сопоставление (mapping) вредоносной DLL. В отличие от этого, Atlas использует несколько иной подход: он выполняет весь процесс сопоставления в собственном контексте, за исключением пропатчивания таблицы импорта (IAT), которое откладывается.
После того как вредоносная DLL сопоставлена в контексте Atlas, она копируется в память, предварительно зарезервированную в удалённом процессе. На этом этапе вредоносная DLL уже сопоставлена в удалённом процессе, но IAT не пропатчена. Чтобы исправить это, AtlasLdr внедряет во вредоносный процесс DLL с минимальными зависимостями (atlas_patcher.dll), которая выполняет пропатчивание IAT вредоносной DLL, а затем передаёт ей контекст выполнения.
Такой подход позволяет уменьшить размер и сложность DLL загрузчика, внедряемой в удалённый процесс, и минимизирует вероятность обнаружения инжектора, поскольку мы можем загрузить DLL с помощью самого загрузчика.
Atlas необходимо компилировать с помощью x86_64-w64-mingw32-g++. После установки достаточно выполнить make (или mingw32-make.exe) в папке проекта.
