• XSS.stack #1 – первый литературный журнал от юзеров форума

[FASM, C, Node JS, Ruby] Криптор

0xDADA11C7

CD-диск
Забанен
Регистрация
13.12.2014
Сообщения
17
Реакции
10
Пожалуйста, обратите внимание, что пользователь заблокирован
Выкладывю криптор, его код написан далеко не идеально - он содержит много багов и много новых и забавных идей. Для написания криптора я использовал pelles c компилер и fasm, а для генератора стабов был использован целый зоопарк языков :) (ruby, node js, fasm)

Главными возможностями криптора являються:
  • поддержка плагинов
  • поддержка TLS
  • небольшой стаб
  • раздельное создание стабов и пакование
  • использование линкера для создания исполняемых файлов
  • нормализация статистики файла
  • уникальная ВМ для каждого стаба
Криптор использует эту виртуальную машину и этот loadpe шеллкод.

Для запуска криптора вы должны передать ему следущие параметры:
Код:
ENCRYPT.CMD input_exe_file output_exe_file stub_directory optional_parameters
Например :
Код:
ENCRYPT.CMD E:\SAMPLES\CALC.exe E:\CALC.E3.EXE E:\STUBS\E3 "PLUGINS?RESTORESEH|ICON?E:\SETUP.ICO"

Для запуска генератора стабов вы должны запусть createStub.cmd со следующими параметрами:

Код:
CREATESTUB.CMD settings.json stub_directory

Пример settings.json файла:
Код:
{
    "pass": {
        "place": 2,
        "val": "AjIx@pHJ[*U3M&eVjk9"
    },
    "vm": {
        "place": 1,
        "dstacksize": 56,
        "rstacksize": 63,
        "order": ["rstack", "dstack", "vmbody", "ctx"],
        "vmbodysize": 1024
    },
    "datapeimage": {
        "place": 2,
        "resnum": 0
    },
    "alphabet": {
        "place": 3,
        "val": [9, 39, 74, 67, 69, 62, 84, 38, 78, 37, 82, 19, 5, 71, 63, 23, 30, 33, 66, 44, 72, 80, 26, 46, 15, 25, 52, 24, 70, 22, 29, 34, 36, 50, 47, 6, 42, 35, 51, 59, 68, 45, 83, 55, 60, 12, 21, 41, 8, 54, 43, 77, 40, 73, 18, 48, 65, 3, 32, 11, 49, 75, 61, 14, 58, 31, 20, 16, 4, 57, 17, 7, 1, 13, 27, 2, 53, 76, 10, 64, 56, 79, 0, 28, 81]
    },
    "pcode": {
        "place": 3
    },
    "loadpe": {
        "requmem": 4672,
        "depth": 120,
        "offset": 6194
    },
    "import": {
        "fncs": ["GetStdHandle", "VirtualAlloc", "WriteFile", "Beep", "GetDC", "BeginPaint", "CreateMutexA", "CreateMutexW", "VirtualFree", "GetLastError", "GetModuleHandleA", "GetModuleHandleW", "GetSystemInfo", "GetVersionExA", "LocalAlloc", "CharUpperA", "CreateDialogParamA", "CreateWindowExA", "DefWindowProcA", "DispatchMessageA", "EndDialog", "EndPaint", "FindWindowA", "FindWindowW", "GetClassInfoExA", "GetMessageA", "GetSystemMetrics", "GetTopWindow", "LoadIconA", "PostQuitMessage", "RegisterClassExA", "RegisterWindowMessageA", "SendMessageA", "SetDlgItemInt", "SetFocus", "ShowWindow", "TranslateMessage", "UpdateWindow", "GetDIBits", "CreateCompatibleBitmap", "GdiFlush"]
    },
    "icon": {
        "resnum": 127
    }
}

Изначально написано для украинского форума программистов

Вложеные файлы:

Все файлы зашифрованы паролем replace
packer.srcnbin.zip содержит исходники криптора
samples.executable.zip содержит windows xp калькулятор, hello.exe (1.5k) небольшой исполняемый файл с дистрибутива fasm и эти же файлы, но криптованные разными стабами
stubs.example.zip содержит несколько сгенерированых стабов для криптования
stubGenerator.zip содержит генератор стабов
 
Вы круты! Серьезно! Желаю и остальным следовать опыту данного мембера.
Только уверенный в своих знаниях и в своем коде человек может взять и вот так запостить !целый проект, писавшийся я уверен не один день и даже неделю.

Если Вы всё писали один, то я восхищен разношерсноастью умений кодинга на разных языках от скриптовых и до асма...

Всё круто, и как протектор исполняемых - будет отличным вариантом, но один вопрос... сам код двига виртуалки всегда статичен ведь и против ав не выстоит?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Только уверенный в своих знаниях и в своем коде человек может взять и вот так запостить !целый проект, писавшийся я уверен не один день и даже неделю.
Я уверен в своей эволюции как кодера (поэтому данный код мне уже кажеться страшноватым) и в необходимости наглядно показать весь процесс криптования.
Если Вы всё писали один, то я восхищен разношерсноастью умений кодинга на разных языках от скриптовых и до асма...
Один
сам код двига виртуалки всегда статичен ведь и против ав не выстоит?
Согласен, недоработка, но на момент написания оно не могло выстоять против 1го АВ со сканированием памяти :) Двиг не храниться статически, а создаеться "рандомной" процедурой. Вобще я сначала писал ВМ на асме, а потом только присобачил его к криптору и оно неоптимально.
 
Не мсе ли это был ?:)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Нет, нод32. Когда я говорю, что на момент написания оно не могло выстоять против 1го АВ со сканированием памяти, то имею ввиду скорее "теоретическую угрозу", чем конкретные детекты - я понимал, что механизмы задетектить меня у ав присутствуют. На момент использования кроме статических детектов по использованым иконкам :) и позже - по коду передачи параметров в виртуальную машину ничего не было.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх