А прежде чем приступить к прочтению - загляни в мой бложик, там я публикую свои авторские статьи по программированию, вирусологии и прочим интересным вещам Скрытый контент. https://t.me/ims0rryblog Нажмите, чтобы раскрыть... Оригинал статьи - Скрытый контент. http://telegra.ph/Pishem-nerezidentnyj-RunPE-loader-na-C-12-12 Нажмите, чтобы раскрыть... Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.Вступление Начнем с того, что такое лоадер. Существует 2 версии лоадеров: резидентная и нерезидентная. Резидентная Эта версия в 100% случаев имеет какую-либо ПУ/Админку, после запуска -закрепляется в системе и удаленно получает команды на выполнение. Скрытый контент. В пример приведу свое творение, https://darkwebs.ws/threads/41806/. Нажмите, чтобы раскрыть... Нерезидентная Данная версия чаще всего не имеет панели управления, но есть продукты, которые ее предоставляют. После запуска - выполняет все задания, которые предустановлены в лоадере, либо получены из админ-панели, затирает все свои файлы и самоудаляется. Скрытый контент. Ярким примером является продукт @foxovsky - http://miped.ru/f/threads/arkei-stealer-non-resident-loader.56575/. Нажмите, чтобы раскрыть... В этой статье я хочу рассмотреть пример одной из функций нерезидентного лоадера: загрузка и запуск файла в памяти (средствами RunPe). Архитектура Для начала, нужно продумать алгоритм работы лоадера. В идеале, с сервера должен подгружаться не файл в чистом виде (иначе его сразу задетектит антивирус), а зашифрованный бинарник, который, впоследствии, будет расшифрован лоадером. Т.е. нужен отдельный энкодер. Далее, необходим какой-нибудь RunPe, функция скачивания файла и его дешифровка. Алгоритм получится, примерно, такой: Скачивание файла -> Дешифровка -> Запуск в памяти Encoder Особо сильно заморачиваться с энкодером не нужно, можно написать обычное вычитание байт из оригинального значения: https://image.prntscr.com/image/l7iUCt1VR6aViT0OPVb4hg.png Открываем файл, считываем его в unsigned char *, далее, вычитаем 0x56 из каждого значения массива, получившееся записываем в файл out.exe, пробуем таким же методом дешифровать и записываем дешифрованный файл в decrypted.exe. Loader Начнем по порядку алгоритма: https://image.prntscr.com/image/wogFJ-CEQYOQWbQsic1HKA.png Скачивание файла реализуем средствами URLMON, важный момент, преобразование char * в LPCWSTR, без этого файл будет качаться рядом с лоадером с непонятным названием (проблемы кодировки). https://image.prntscr.com/image/grFTyEeNSLixO4_pN_xyag.png Далее пишем метод дешифровки и запуска файла. Открываем файл, считываем его и отнимаем ключ от изначального значения массива в цикле, после чего запускаем полученный массив байт в памяти (метод RunPe можно найти в интернете, для особо ленивых выложу в сорцах). Метод Main будет выглядеть следующим образом: https://image.prntscr.com/image/383UoeCSTeaNWC5zwbBHbA.png Качаем файл в %temp%\pld.exe. Передаем в параметры DecryptAndRun полный путь до файла и значение, которое мы использовали в энкодере (0x56). Также, сюда можно прикрутить паунс всех файлов в корзину, но оставлю это на вас. Ссылки Scantime - http://viruscheckmate.com/id/BW8mQjZE15mx Исходники - https://github.com/ims0rry/Non-resident-RunPE-Loader