Amadey Loader - PoC автозагрузки

NullX

Участник
Клуб
Студент
Регистрация
30.06.18
Сообщения
141
Лучшие ответы
0
Реакции
320
Баллы
12
Введение
Немного отдохнем от анализов, ведь, нужно набраться сил перед следующим крупным разбором.
Перекинули мне на днях статью-отзыв про лоадер Amadey и обратили мое внимание на способ автозагрузки там:

Способ получается очень простой:
  • Получаем путь до директории нашей программы
  • Меняем значения ключа в реестре
Пишем код
Писать будем на языке C. Для начала объявим нужные нам функции для работы и подключим пару заголовков:

Функции _memcpy, _malloc, _free не обязательно писать, вместо них можно использовать те же самые memcpy, malloc, free.
Писать сразу буду в main, потому что это просто пример реализации.
Для начала нужно получить полный путь до нашего .exe файла, для этого будем использовать функцию GetModuleFileName, где в первый аргумент мы будем передавать NULL (таким образом, выбирая модуль нашего .exe файла):

Теперь в переменную path будет получен полный путь до .exe вида:

Далее нам нужно найти адрес (индекс) слеша перед названием файла и скопировать в отдельный буфер все от начала строки до этого слеша, не включая его:

И получаем нужную нам директорию:

Далее дело за малым: заменить значение в реестре. Для этого нужно, в начале, "открыть" ключ, а далее поменять значение в поле Startup на то, что мы обрезали:

Вот и вся реализация метода загрузки из лоадера Amadey.
Тесты
После запуска программы, мы увидим следующее в реестре:

И при запуске системы откроется консоль:


Заключение
Метод и в правду очень интересный, но обладает рядом минусов:
  • Нужно лезть в реестр и менять важно значение, не известно как на это могу реагировать антивирусные решения
  • Не будут загружаться файлы из бывшей Startup директории, что может показаться странным пользователю (решаемо)
Для полного счастья остается написать дроп файла в любую директорию и закрепление в системе готово. Не пропускайте коммиты на гитхабе.

Github: https://github.com/Alexuiop1337/AmadeyStartup
 
Сверху