Дата: 25/06/17 - 08:15 am   9404 Тем и 93186 Сообщений

Автор Тема: Пример морфинга опкод на примере замены mov и push  (Прочитано 92894 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Октября 28, 2016, 12:11:31 pm
Ответ #10

TrueMind

  • Модератор

  • Оффлайн
  • *

  • 197
  • Reputation:
    57
    • Просмотр профиля
Цитировать
ШИфровать или МОрфить ?  ;D
В каком ключе был задан вопрос, в таком ключе был преподнесен ответ для бОльшей доходчивости для интересующегося.

des, aes в случае шк избыточны, достаточно сделать что-то серъезней порстого ксора и будет норм. например свап ближайших байт с последующим ксором по плавающему ключу.

Октября 30, 2016, 12:08:36 am
Ответ #11

knopkin


  • Оффлайн
  • *

  • 9
  • Reputation:
    0
    • Просмотр профиля
TrueMind, пока что остановился на перестановке и ксоре байт, тем более что нашел подобное в дикой среде. В целом моя ситуация сводится к созданию потока из доверенного процесса и записью в него шеллкода, хвост которого будет расшифровывать тело. Задача в том, чтобы нельзя было вынести мой софт со всех машин одновременно (причем я в юзермоде). Шифрование в данном случае рассматриваю как способ морфинга с целью защиты от детекта при записи байт в поток, т.е. чтобы шк был уникальным для каждой машине (или на небольшом количестве). А когда управление будет передано на шк, детект может произойти только в случае, если аверам не понравится стек вызовов, правильно? Или стоит в том числе морфить исходный (незакриптованный) шк заменой опкодов?
Ушел из темы. Все контакты не актуальны.

Октября 30, 2016, 09:10:41 pm
Ответ #12

TrueMind

  • Модератор

  • Оффлайн
  • *

  • 197
  • Reputation:
    57
    • Просмотр профиля
ESET, MSE а теперь еще AVAST умеют сканировать память неугодного процесса - и соответственно вне зависимости от того, как был пошифрован шк, в памяти в конце концов он окажется в своей естественной форме, соответственно нет ничего сложного чтобы спалить его в этом виде. В таком случае замена опкод их аналогами (морфинг) должен решить
эту проблему. На стек вызовов, в случае когда шк уже в памяти а не эмулируется, аверы на вряд ли отреагируют.

Мая 25, 2017, 07:38:16 pm
Ответ #13

fgov


  • Оффлайн
  • *

  • 1
  • Reputation:
    0
    • Просмотр профиля
Имеет смысл шифровать перестановкой с плавающим ключом, свапом соседних байт, реверсом байт а также заменой одних байт другими (гуглить stolen bytes).

Можно более подробно, что за шифр перестановкой с плавающим ключом? Про плавающий ключ не нашел ничего.

Июня 09, 2017, 10:57:32 pm
Ответ #14

TrueMind

  • Модератор

  • Оффлайн
  • *

  • 197
  • Reputation:
    57
    • Просмотр профиля
Под плавающим ключом понимается (в самом базовом варианте):

for (int i = 0; i < buflen; i++)
{
 b_bytearr[i] = abyte ^ (xor_key + i);
}

где (xor_key + i) = ключ, меняющийся при каждой интерации цикла.