Крипторы

Discussion in 'WASM.BEGINNERS' started by Orbit, May 6, 2017.

  1. Orbit

    Orbit Member

    Blog Posts:
    0
    Joined:
    Dec 13, 2016
    Messages:
    112
    Location:
    г. Москва
    Добрый день!
    Объясните мне пожалуйста принципы криптования exe dll
    Хочу написать самый простой криптор на fasm, от нечего делать
    Что такое полиморфный криптор, xor и какие еще бывают
    В общем мне пригодится всё
     
  2. rmn

    rmn Well-Known Member

    Blog Posts:
    0
    Joined:
    Nov 23, 2004
    Messages:
    2,347
    Оригинальные секции pe-фаела переводятся в свой формат, пакуются, шифруются, етц. В секцию кода вставляется код декриптора, который получает управление при старте ехе, перемещает свое тело в свободную область, расшифровывает/распаковывает оригинальные секции и раскладывает их по своим местам; после чего выполняет работу лоадера по настройке импортов/релоков и передает управление на оригинальную точку входа.

    Криптор, код дешифровщика которого будет уникальным и не похожим на предыдущие при каждом билде.

    Все ограничено только твоей фантазией :)
     
  3. Orbit

    Orbit Member

    Blog Posts:
    0
    Joined:
    Dec 13, 2016
    Messages:
    112
    Location:
    г. Москва
    Это очень сложно реализовать пока для меня. Возьму что ни будь попроще и поэффективнее. Спасибо.
     
  4. rmn

    rmn Well-Known Member

    Blog Posts:
    0
    Joined:
    Nov 23, 2004
    Messages:
    2,347
    Orbit,
    Возьми лучше исходники какого-нибудь готового пакера (вот прям upx и взять) и что-нибудь переделай в нем по-своему: другой алго шифрования, обход эмуляторов (не абсолютный, без vmbe, лол), етц.
     
  5. yashechka

    yashechka Ростовский фанат Нарвахи

    Blog Posts:
    90
    Joined:
    Jan 2, 2012
    Messages:
    1,449
    Location:
    Россия
  6. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    Orbit,

    Ключевой вопрос - почему вы этим интересуетесь ?

    Крипторы не имеют отношения к виксам. Далее вы это поймёте. Целью криптования является скрытие модуля от ав. Любая обработка запускаемого файла для очистки от детекта именуется криптованием. Криптор же это приложение, которое делает такую очистку.

    Любые сильные техники, которые используются виксами - мутации етц крайне редко используются в крипторах, лишь частично. Потому что крипторы пишуться школотой. Это загрузчики из памяти с довесом кучи костылей, необходимых для сбивания сигнатур, детекта отладчиков и пр.

    Уровень таких приложений низкий. Обычно это копипаст древних кодов. Из за полного отсутствия актуальности используемых техник, впрочем как их отсутствия это не используется виксами.

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

    rmn,

    > обход эмуляторов (не абсолютный, без vmbe, лол

    Это типо сарказм ?
    Тот мотор является первой имплементацией юзер стекового визора. Это сильная техника, которая была развита до анклавов. Но видимо вы не в теме.
     
    galenkane likes this.
  7. galenkane

    galenkane Active Member

    Blog Posts:
    0
    Joined:
    Jan 13, 2017
    Messages:
    317
    Мы верим в вас, на другой борде о вас отзываются как о маге волшебнике, который не хочет пилить до конца. Утрите им нос. RunPE есть где в сети для быстрого сбивания сигнатур от ав?
     
  8. _edge

    _edge Well-Known Member

    Blog Posts:
    1
    Joined:
    Oct 29, 2004
    Messages:
    631
    Location:
    Russia
    Тоже для сбития сигнатур:

    В сети Vazonez выкладывал утилиту с неприличным названием, АВзвезда (вместо "звезда" матерное слово).
     
  9. Fail

    Fail Active Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2012
    Messages:
    503
  10. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    galenkane,

    > RunPE есть где в сети для быстрого сбивания сигнатур от ав?

    Полноценной реализации нет(без запуска процесса), нет норм способа повторно выполнить инициализацию процесса, отвалится на коннекте к csrss. Смысла такое делать тоже особо нет.

    https://yadi.sk/d/a0n1noAB3Fa3pM
     
  11. R307

    R307 New Member

    Blog Posts:
    0
    Joined:
    May 26, 2017
    Messages:
    12
    А почему хотите именно на асме писать ?
    Чем С++ не устраивает ? Например в той-же визуалке, можно делать асм. вставки для доступа к нужным регистрам и т.д.
    Тем самым у вас будет понятный код, в котором легко разобраться.
    Крипторы выполняют роль сбития сигнатурного детекта, но они не могут обходить проактивную защиту и т.д., это должно-быть реализованно в самом вирусе.
    Полиморфизм можно добится, путём генерации мусора в рандомном порядке например, а также шифруя с разным ключом.
    Простой алгоритм криптора:
    По сути криптор - Это две программы: Стаб и конструктор с гуем, который поместит в конец стаба наш зашифрованный файл.
    1)Криптуем вирус конструктором, например этим https://ru.wikipedia.org/wiki/XTEA Там пример реализации, просто можно твзять код.
    2)Помещаем криптованный файл в конец стаба.
    3)Далее алгоритм стаба:
    - Считываем по смещению наш криптованный вирус.
    - Делаем антиэмуляцию, это может-быть мусор, задержки, динамическое выделение памяти и т.д.
    - Расшифровываем вирус.
    - Запуск нашего вируса в памяти, путём создания процесса например, можите воспользоваться этим например:https://github.com/jozemberi/PE-Crypter/blob/master/runPE.h
    Итог, простой криптор - Это Расшифровка, антиэмуляция и запуск в памяти.
     
  12. sniper

    sniper Member

    Blog Posts:
    0
    Joined:
    Mar 10, 2017
    Messages:
    54
    Orbit Начни с джойнера, проще нет ничего
     
  13. R307

    R307 New Member

    Blog Posts:
    0
    Joined:
    May 26, 2017
    Messages:
    12
    Джойнер скучно делать, хотя отличие только-что в джойнере запуск идёт с диска.

    Лучше начинать на языках высокого уровня, асм сложно слишком, да и смысла нет для написания таких программ.
     
  14. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    крипторы в 2к17 писать - признак плохого тона... пилите обфускаторы/полиморфы...
     
  15. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    R307,

    > 1)Криптуем вирус конструктором, например этим https://ru.wikipedia.org/wiki/XTEA

    Каким есчо конструктором, вы термины попутали. Конструктор это двиг для пересборки кода, точнее для сборки кода по графу. Не надо чепухи, её и так много.
     
  16. R307

    R307 New Member

    Blog Posts:
    0
    Joined:
    May 26, 2017
    Messages:
    12
    Конструктор в данном случае - Это гуй, который "обработает" файл, по мойму по контексту моего поста это должно-быть понятно, что-то типо этого:
    [​IMG]

    Далее по ссылке я указал просто алгос шифрования, там уже готовые функи, вот эти взять, что-бы самому не делать:
    Code (Text):
    1. #include <stdint.h>
    2.  
    3. void xtea_encipher(unsigned int num_rounds, uint32_t *v, uint32_t const *k) {
    4.     unsigned int i;
    5.     uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9;
    6.     for (i=0; i < num_rounds; i++) {
    7.         v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
    8.         sum += delta;
    9.         v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
    10.     }
    11.     v[0]=v0; v[1]=v1;
    12. }
    13.  
    14. void xtea_decipher(unsigned int num_rounds, uint32_t *v, uint32_t const *k) {
    15.     unsigned int i;
    16.     uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds;
    17.     for (i=0; i < num_rounds; i++) {
    18.         v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
    19.         sum -= delta;
    20.         v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
    21.     }
    22.     v[0]=v0; v[1]=v1;
    23. }
    Ну по мойму ТС не спрашивал какой это тон, а задал конкретный вопрос, если честно то всем пофиг на "Хороший/плохой" тон, пока крипторы работают, а основная задача таких программ - Это сбитие детекта, с этой задачей такие программы справляются и делаются легко, поэтому криптры как писались/продавались, так и будут писаться/продаваться, изучаться, как-то так...:)