Авторские статьи Низкоуровневое шифрование самописных вирей

Discussion in 'Статьи' started by hidden, 18 Aug 2006.

  1. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Полиморфные и метаморфные, это значит они самомодифицируются, изменяя себя до неузнаваимости, но я считаю это не кчиму, в моём примере он меняется примерно также но только на стадии компиляции, причём даже размер кода меняется.
     
  2. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    >>Так у VMProtect'ора ВМ не заморфлена вроде.
    а я разве такое говорил?

    по-моему, полиморф - просто замена функций "синонимами", метаморф - все 4то им не есть, тоесть обратный проход покоду и создание его мутации (дизасм, минимизация кода, пермутация, расширение, сборка), и неважно делается ли это для куска кода, или для всей кодовой секции...
     
    #22 ProTeuS, 21 Aug 2006
    Last edited: 21 Aug 2006
  3. BUG(O)R

    BUG(O)R Elder - Старейшина

    Joined:
    15 Aug 2006
    Messages:
    63
    Likes Received:
    15
    Reputations:
    16
    >>Так что они туда пихать будут если она заморфлена будет?
    сигатуру ВМ, как было с VmProtect и каспером (на 4то я намикал)

    Хорошо, начнем с основ. Для тех, кто еще не знает что такое метаморфизм, скажу, что суть этой техники заключается в ПОЛНОМ изменении тела вируса без изменения его функциональности. Проще говоря, это то же самое, что и полиморфизм декриптора, но примененный ко всему телу вируса. (C) Billy Belcebu

    Поверим бывшему мемберу 29a? :)
     
  4. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    >>сигатуру ВМ, как было с VmProtect и каспером (на 4то я намикал)
    "заморфлен" (с то4ки зрения анализатора; незнаю по4ему ты так любишь это слово) будет ПИ-КОД()!!!, выпоняемый на декектируемой ВМ

    >>Поверим бывшему мемберу 29a?
    =) ну раз уж так, то в свою о4ередь процитирую ms-rem (Спец Хакер, №57, стр 58)

    Полиморф обы4но просто ДОБАВЛЯЕТ в код мусорные инструкции, 4тобы затруднить дизассмеблировние и анализ кода, а метаморф старается целиком ИЗМЕНИТЬ ВИД кода, сохряняя при этом оригинальный алгоритм его работы, для 4его он заменяет интрукции синонимами, состоящими в свою о4ередь из нескольких других инструкций.

    тоесть, вывод в обеих цитатах делается с упором на ПОЛНОЕ изменение кода, а не на ТЕЛО ВСЕГО ВИРУСА, т.к. цель всех манипуляций полиморфов\метаморфов - обмануть анализатор ТОЛЬКО в тех кусках кода, которые в этом нуждаются, а морфировать весь код не представляется нужным, т.к. это, за4астую, дополнительно такты процессора...
     
    #24 ProTeuS, 21 Aug 2006
    Last edited: 21 Aug 2006
  5. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    вот примерная структура метаморфного движка:

    Disassembler -> Shrinker -> Permutator -> Expander ->
    Assembler

    имхо неважно где код находится(сохраняется), а важно просто 4тобы входной файл(дамп и т.д.) пропускался 4ерез такую последовательность
     
  6. BUG(O)R

    BUG(O)R Elder - Старейшина

    Joined:
    15 Aug 2006
    Messages:
    63
    Likes Received:
    15
    Reputations:
    16
    Ну это понятно, но я имел ввиду, что сами вызовы ВМ(например у VMProtect'a они выглядят вроде так: push reg/mem puah reg/mem call xxx) тоже можно метморфизировать и за что тогда цепляться АВ?
     
  7. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    не пробовал (по крайней мере если виртуализировать темидой, то она будет о4ень не довольна =), 4то понятно), но даже если это и работает, то я намекал на другое - про политику аверей, кидать в блэк саму VM даже не имея других вариантов - имхо неуважительно не только относительно девелоперов, но и коне4ных пользователей
     
    #27 ProTeuS, 21 Aug 2006
    Last edited: 21 Aug 2006
  8. BUG(O)R

    BUG(O)R Elder - Старейшина

    Joined:
    15 Aug 2006
    Messages:
    63
    Likes Received:
    15
    Reputations:
    16
    Да только, что друг попросил глянуть файл т.к. он начал палиться каспером как Trojan.Win32.Pakes, оказывается он был просто запакован приватным пакером, который наверное или вышел на паблик или попал в руки какому-нибудь любителю пинчей)
     
  9. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Дизассемблирование и ассемблирование - имхо слишком геморный просесс, лучьше зашифровать код, разбить расшифровщик на байты(может есщё на слова и двойные слова), а потом сгенерировать случайную последовательность из набора инструкций или набора груп инструкций, способных модифицировать первую часть себя в расшифровщик кода вируса и передать на него управление, а ко всему прочему можно их(инструкции) ещё и поменять местами. А чем больше закладываешь в него инструкций, тем длинее получается код способный его найти, а значит и быстродействие АВ падает.
    А вот телько-что придумал, если между каждыми 3-5 инструкциями вставить вызовы функций, только-что расшифрованных предидущими, думаю тогда и регулярные выражения не помогут, потому-что будут палиться большая часть запускаемых файлов. Или добавить безполезные инструкции например:
    Code:
    mov [pos], val
    
    mov eax, val
    mov [pos], eax
    
    mov [pos], not val
    not val
    
    lea eax, [val+25]
    mov [pos], eax
    sub [pos], 25
    
     
    #29 hidden, 21 Aug 2006
    Last edited: 21 Aug 2006