ims0rry
Omae wa mou shindeiru
Please note, if you want to make a deal with this user, that it is blocked.
А прежде чем приступить к прочтению - загляни в мой бложик, там я публикую свои авторские статьи по программированию, вирусологии и прочим интересным вещам
Оригинал статьи -
Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Для просмотра содержимого вам необходимо авторизоваться.
Оригинал статьи -
Для просмотра содержимого вам необходимо авторизоваться.
Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Начнем с того, что такое лоадер.
Существует 2 версии лоадеров: резидентная и нерезидентная.
Резидентная
Эта версия в 100% случаев имеет какую-либо ПУ/Админку, после запуска -закрепляется в системе и удаленно получает команды на выполнение.
Для просмотра содержимого вам необходимо авторизоваться.
Нерезидентная
Данная версия чаще всего не имеет панели управления, но есть продукты, которые ее предоставляют. После запуска - выполняет все задания, которые предустановлены в лоадере, либо получены из админ-панели, затирает все свои файлы и самоудаляется.
Для просмотра содержимого вам необходимо авторизоваться.
В этой статье я хочу рассмотреть пример одной из функций нерезидентного лоадера: загрузка и запуск файла в памяти (средствами RunPe).
Архитектура
Для начала, нужно продумать алгоритм работы лоадера. В идеале, с сервера должен подгружаться не файл в чистом виде (иначе его сразу задетектит антивирус), а зашифрованный бинарник, который, впоследствии, будет расшифрован лоадером. Т.е. нужен отдельный энкодер.
Далее, необходим какой-нибудь RunPe, функция скачивания файла и его дешифровка.
Алгоритм получится, примерно, такой:
Скачивание файла -> Дешифровка -> Запуск в памяти
Скачивание файла -> Дешифровка -> Запуск в памяти
Encoder
Особо сильно заморачиваться с энкодером не нужно, можно написать обычное вычитание байт из оригинального значения:

Открываем файл, считываем его в unsigned char *, далее, вычитаем 0x56 из каждого значения массива, получившееся записываем в файл out.exe, пробуем таким же методом дешифровать и записываем дешифрованный файл в decrypted.exe.
Loader
Начнем по порядку алгоритма:

Скачивание файла реализуем средствами URLMON, важный момент, преобразование char * в LPCWSTR, без этого файл будет качаться рядом с лоадером с непонятным названием (проблемы кодировки).

Далее пишем метод дешифровки и запуска файла. Открываем файл, считываем его и отнимаем ключ от изначального значения массива в цикле, после чего запускаем полученный массив байт в памяти (метод RunPe можно найти в интернете, для особо ленивых выложу в сорцах).
Метод Main будет выглядеть следующим образом:

Качаем файл в %temp%\pld.exe. Передаем в параметры DecryptAndRun полный путь до файла и значение, которое мы использовали в энкодере (0x56).
Также, сюда можно прикрутить паунс всех файлов в корзину, но оставлю это на вас.
Ссылки
Scantime - http://viruscheckmate.com/id/BW8mQjZE15mx
Исходники - https://github.com/ims0rry/Non-resident-RunPE-Loader