Admin
Администратор
Криптование
Обзор о криптовании.План:
1)Права, защищающие этот документ, а также в частности обращение к представителям исследовательских компаний.
2)Теория: полиморфизм, метаморфизм, пермутация.
3)Углубление в теорию: реальные примеры из жизни.
4)Снятие крипторов на примере: Mystic(Автор: Михрютка).
demEnergy(Автор: demien).
5)Пояснение разницы между разными способами криптования(их достоинства и недостатки).
6)Тестирование, на примере самодельного антивируса.
7)"Отстой" антивирусной индустрии.
8)Благодарность, повтор первого пункта.
Текст:
1)
Во-первых данный документ носит лишь исследовательский характер и не является призывом к действию
неправомерных поступков, нарушающих законодательство вашей страны!
Во-вторых незаконное копирование частей текста и любых других его составляющих карается законом
по защите авторских прав собственности!
Разрешено копирование на ваш ресурс, только с указанием автора текста, а также гиперссылки на
оригинальную тему.
2)Давайте же приступим к теории:
Полиморфизм:
Нулевой уровень или пермутация(перестановка блоков кода с сохранением работоспособности):
Блоки кода делятся на различные по размеру куски и комбинируются между собой по заданному алгоритму,
причём в зависимости от его сложности в каждом новом файле они могут быть расположены в случайном
порядке!
НО эпогеем полиморфизма пермутацию не назовёшь, т.к при перестановке блоков сигнатура файла остаётся
на месте и не изменяется. Конечно если автор алгоритма не дурак, то при перемешке кода будут
добавлены циклы, препятствующие сигнатурному анализу, мусор, бесконечные вызовы и тому подобные
техники.
Первая ступень полиморфизма(использование случайных переменных, данных, ключей и расшифровщиков):
Блоки кода шифруются определённым методом, затем для них создаются несколько дешифраторов, которые
в последующем используются для расшифровки тела вируса в случайном порядке, тоже самое с переменными
и данными.
Бесспорно такое дело тоже будет быстро детектироваться, т.к полноценным полиморфом тут не пахнет.
Всё же противодействовать анализу тоже можно: перемешка кода, заполнение мусором.
Второй уровень или полная "рандомизация":
Как реализовать ? Проще простого, я вам отвечу: составляется(можно на препроцессорном уровне)
макрос, который при последующем вызове будет изменять команду на её похожую-синоним.
Сигнатурный поиск это обламывает, а в сочетании с первыми двумя методами даёт неплохой результат!
Но всё же ав. эмулятор проходит как нож сквозь масло через такой код, расшифроввывая его и доходя
до цели, бесспорно такой алгоритм требует антиотладки, SSE, FPU, MMX(экзотических я бы назвал) команд.
Третий уровень("король мусора"):
Блоки разделяются на части и между ними вставляются мусорные команды, которые не влияют на код, но
заставляют эмулятор "попотеть".
Хочу вас огорчить: современные ав(не все) обладают противодействующими техниками, которые запустив
код в песочнице, отделяют без какого-либо труда ненужные команды, особенно если частота
их вызова в коде является аномальной.
Теперь усовершенствование этого метода: можно без особого труда составить алго., который будет анализировать
код и заменять обычные инструкции на их синонимы, причём делать это
минимум в 5-20 команд(всё же здесь придётся учитывать энотропию и размеры
получаемого файла, но это преодолимо).
Задача это тяжелая и требует написания дизассемблера длин(можно и взять
готовый) для определения границ команд, чтобы можно было в автоматизированном
действии вставить одну команду между тремя другими.
Четвёртая ступень("Африканская вонючка"):
Идея состоит в том, что в блоках кода используются не только мусорные инструкции, а с ними выполняются полезные действия
(как описывалось в третьем уровне), которые всячески усложняют работу антивирусного анализатора.
С появлением идеи, усложняется и задача написания такого алгоритма, т.к требуется не только добавление мусора между командами,
а последующий просмотр обращений к регистрам, выявление неиспользуемых, мусорных.
Для решения требуется написать полноценный дизассемблер команд, который будет максимально точно
определять внутренности регистров в коде, чтобы в последующем при добавлении мусора не влиять
на них побочным образом
Однако же сделав такое "чудовище" мы обеспечим чуть больший срок недетектированности кода.
Антивирусам для анализа сего требуется составить довольно трудную систему графов(я бы назвал
это чёрным ящиком), которая выявляет зависимость данных и анализирует их по цепочке, найдя
замыкающий элемент она отбрасывает ненужные инструкции, тем самым уничтожая мусорный код.
Пятый уровень("космос"):
Комбинация всех вышеприведённых методов воедино, добавляя при этом динамическую генерацию
алгоритмов при последующей шифровке определённого блока, учитывая случайные обстоятельства.
Также ничего не препятствует нам "забраться на Эверест", модифицируя код прямо в памяти.
Анализ такого монстра представляет антивирусным компаниям большие трудности, однако для
написания требуются огромные познания в математике, работе процессора!
Метаморфизм - смотреть третий и четвёртый уровень.
Антивирусный эмулятор - своеобразная виртуальная среда антивируса(можно сказать песочница), в которой он запускает(изолировав) требуемый
файл и наблюдает за его действиями, в случае каких-либо совпадений по базе, будь-то подозрительный апи вызов или
похожая вирусная сигнатура - происходит оповещение о вирусе в файле.
Вирусная сигнатура - некоторая последовательность байт(причём уникальная), которая при сканировани
идентифицирует вирус по его коду.
Сигнатуры бывают 2 видов(я им дал свои имена): полная и плавающая, иначе поиск по маске, что в современном
антивирусном мире используется чаще всего.
Полная: AB F6 7B 88 99 6A
Плавающая: AB ?? ?? 88 99 **(знак ? - значит любые байты в текующей позиции, знак * - неогр. кол-во байт в текущей позиции).
Эвристика - так называемый в моём понимании анализатор вирусов реального времени на основе
заложенных в него поведенческих знаний.
Благодаря этому детектятся всякие Win шифровшики, локеры, а также вполне легальные
приложения, по причине недоработанности антивирусного ПО.
3)Итак, углубление в теорию...
В реальной же жизни не так часто приходится сталкиваться с такими чудовищами только лишь из-за
того, что написание требует знаний, а также много свободного времени.
В основном на практике народ чаще всего юзает статические крипторы, которые не обеспечивают
должной защиты их творений, но по их мнению затыкают всех ав
Всё дело в том, что большинство крипторов в прямом смысле гумно, обьясняю:
Оптимизация(а именно защита) кода должна всегда быть произведена на уровне исходного кода, а
сверху уже должен быть навещан упаковщик, иначе(как бывает в 8 случаях из 10) попросту криптор
вытягивает ваш файл из себя и запускает его в памяти(есть конечно те, которые совершают некоторые
антиотладочные и прочие методы, затрудняющие анализ, но как таковой защиты они не предоставляют),
тем самым ваш файл оказывается запущенным так, если бы он был запущен без криптора -
в этом вся и соль.
4)Снятие крипторов на примере Mystic(Автор: Михрютка); demEnergy(Автор: demien).
Начинаю со "сложного" Mystic Cryptor(был любезно предоставлен одним товарищем, надеюсь он на меня
не обидится. Текст носит лишь исследовательский характер и не распространяет какие-то отдельные
части криптора).
Первым делом замечаем увеличение билда в размерах(видимо понижение энтропии + мусорный код).
Случайный импорт, случайные апи вызовы, полиморфный код, точка входа в порядке.
Подробно вникать в технологии не буду, а скажу лишь, что используется техника пакера, т.е
код криптованного файла замещается оригинальным в памяти и происходит его выполнение:
расставляются секции, импорт, происходит расшифровка секций, далее переход на ep.
Снятие криптора не представляет вообще никакой сложности(в памяти приложение лежит в оригинальном
виде), т.е посути своеобразная навесная защита в виде полиморфного криптора по сравнению
со статическим не даёт ничего.
Ах, да практика:
Используемые инструменты: OllyDBG, PETools.
В OllyDBG ставим бряк на VirtualProtect, затем прокручиваем вниз до первого ret и ставим бряк на него.
После того как бряк выполнится, нажав F7 мы перейдём на оригинальную точку входа.
Всё, теперь можем дампить приложение.
В моём случае нам даже не пришлось прибегать к восстановлению таблицы импорта.
Проверяем сдампленный файл - работает.
Я также воспользовался опцией Rebuild PE, после неё восстанавливается оригинальный размер.
Следующий по списку demEnergy(Автор: demien), увы сам криптор платный, мне лишь удалось найти один
из его криптованных билдов и изучить его(стаб написан на Visual Basic).
Для своей работы используются нативные апи функции как для расшифровки, так и для распаковки.
В процессе криптовки ваш файл прячется в ресурсах, при последующем запуске создаётся новый процесс и
при помощи тех же самых нативных апи производится запись(NtWriteProcessMemory) во вновь созданный процесс
и запуск в нём трэда(NtSetThreadContext, NtResumeThread).
После выполнения файл оказывается(как в случае с Mystic) в оригинальном виде, что также не даёт желаемого
результата, как в случае с полиморфным криптором
Практика:
Используемые инструменты: OllyDBG, PETools.
В OllyDBG ставлю бряк на NtSetThreadContext.
Затем просто беру и дамплю процесс, не давая ему выполниться в памяти.
Я также воспользовался опцией Rebuild PE, после неё восстанавливается оригинальный размер.
Собственно говоря на этом наша практика заканчивается.
5)Из моего текста, а именно прочитав четвёртый пункт думаю становится понятно многое...
Не тратьте денег зазря - пользуйтесь статичными стабами, разницы всё равно нет, идеально конечно
было бы найти метаморфный криптор, если нет возможности - редактировать исходники.
А самое тру - это написать криптор самому и точить его под свои нужды.
6)Попробуем-ка написать простейший антивирусный монитор и продемонстрируем его работу на примере
двух файлов, обработанных крипторами: Mystic; demEnergy.
План действий:
1)Программа висит в памяти.
2)Каждые 5 секунд она рыщет на наличие подозрительных процессов и затем при удачной находке -
завершает их.
3)Знаю, код не совершенен, но цель написания ав монитора не в этом, а в том, чтобы дать понять,
что всё, что накладывается поверх вашего "палящегося" файла так или иначе приведёт к занесению его
в вирусные базы!
Как проверить работоспособность ?
Берём криптуем файл virus.exe и сохраняем его под тем же именем, затем запускаем его.
Далее пускаем нашу скомпилированную программу и в случае нахождения в памяти сигнатуры 000000E8
программа маячит о том, что вирус найден и убивает его.
То же самое может и произойти в случае с обычным криптором - делайте выводы сами.
7)Кхм, с чего бы начать...
Всем известно, что идеальных антивирусов нету, а порой способы обнаружения вирусов вводят профи в
неутомимый смех
Давайте же разгребём эту кучу дерьма, на примере всеми известного сервиса virustotal.com!
Знайте же их в лицо...
Итак, по-порядку:
Инструменты: сам файл, FSG packer, WinUpack packer, MEW packer, а также те же
самые пакеры, но только с fake import.
Предчувствую недовольство многих, мол сигнатуры пакеров были занесены в базу, как потенциально
опасные, я вам отвечу и на этот вопрос: всё дело в том, что если действовать по такому, назовём
его "алгоритму", то каждая программа так или иначе в скором времени может быть занесена в анти-
вирусную базу.
Второй момент: в текущий период времени развелось огромное количество антивирусов-"пустышек",
которые были созданы по причине заработка на них. Как такового должного внимания вирусам там не
уделяется, а методы отлова напоминают 90-ые
Приступим к практике:
Подопытный кролик: простой двух-килобайтный файл, при запуске он выводит MessageBox и завершается.
FSG(normal pack):
http://www.virustotal.com/file-scan/report...69bb-1297089192
Детект 16/43(37% мусора на антивирусном рынке)
Список откровенного говна: Avira(кто бы сомневался), AVG(suspicious - ему позволено
F-Prot, K7AntiVirus, McAfee-GW-Edition, Norman, PCTools, Sophos, SUPERAntiSpyware, Symantec(м-да...),
TrendMicro, TrendMicro-HouseCall, VirusBuster.
FSG(fake import):
http://www.virustotal.com/file-scan/report...06fb-1297089628
Детект 12/43(27% мусора на антивирусном рынке)
Список откровенного говна: AntiVir, AVG, CAT-QuickHeal, Comodo, McAfee-GW-Edition, PCTools, SUPERAntiSpyware, Symantec, TheHacker,
TrendMicro, TrendMicro-HouseCall, VBA32.
-----------------------
WinUpack(normal pack):
Тут ситуация ужасная.....
http://www.virustotal.com/file-scan/report...c0e3-1297089931
Детект 22/42(52% мусора на антивирусном рынке)
Список откровенного говна: AhnLab-V3, AntiVir, AVG, CAT-QuickHeal, ClamAV, Commtouch, Comodo, eTrust-Vet, F-Prot, Jiangmin, McAfee-GW-Edition,
Microsoft(
TrendMicro, TrendMicro-HouseCall, VIPRE, VirusBuster.
WinUpack(fake import):
http://www.virustotal.com/file-scan/report...cf98-1297090233
Детект 16/43(37% мусора на антивирусном рынке)
Список откровенного говна: AntiVir, AVG, CAT-QuickHeal, ClamAV, eSafe, McAfee, McAfee-GW-Edition, Norman, Sophos, Symantec, TheHacker, TrendMicro,
TrendMicro-HouseCall, VBA32, VIPRE, VirusBuster.
-----------------------
Обычный файл(fake import):
http://www.virustotal.com/file-scan/report...1feb-1297090493
Детект 5/43(11% мусора на антивирусном рынке)
Список откровенного говна: AntiVir, BitDefender, F-Secure, GData, McAfee-GW-Edition.
-----------------------
MEW(normal pack):
http://www.virustotal.com/file-scan/report...a352-1297090657
Детект 17/43(39% мусора на антивирусном рынке)
Список откровенного говна: AntiVir, AVG, CAT-QuickHeal, ClamAV, Commtouch, Comodo, Emsisoft, eSafe, F-Prot, Ikarus, McAfee-GW-Edition, Norman, Sophos,
TheHacker, TrendMicro, TrendMicro-HouseCall, VirusBuster.
MEW(fake import):
http://www.virustotal.com/file-scan/reanal...545a-1297090885
Детект 11/43(25% мусора на антивирусном рынке)
Список откровенного говна: AntiVir, AVG, CAT-QuickHeal, Comodo, eSafe, McAfee-GW-Edition, Norman, Sophos, TrendMicro, TrendMicro-HouseCall, VBA32.
Теперь составляем базу героев по повторам и разместим их в порядке убывания:
AntiVir(also known as Avira) - 7
McAfee-GW-Edition - 7
AVG - 6
TrendMicro - 6
TrendMicro-HouseCall - 6
Norman - 5
Sophos - 5
CAT-QuickHeal - 6
ClamAV - 4
Symantec - 4
VirusBuster - 4
TheHacker - 4
Commtouch - 3
F-Prot - 3
PCTools - 3
eSafe - 3
VBA32 - 3
SUPERAntiSpyware - 2
VIPRE - 2
K7AntiVirus - 1
McAfee - 1
Emsisoft - 1
F-Secure - 1
Ikarus - 1
GData - 1
BitDefender - 1
Microsoft - 1
Jiangmin - 1
eTrust-Vet - 1
AhnLab-V3 - 1
Если в этот список не попали такие ав, как: Kaspersky, NOD32, Dr.Web, Avast и прочие супер-крутые, это не значит, что они обеспечивают 100%-ую защиту,
мне просто времени на доп. проверки не хватает!)