Криптор это: Криптор — это… Что такое Криптор?

Содержание

Что такое криптор и стаб ?

< Что такое фаззинг?

06.12.2016 00:55 Давность: 5 yrs
Категория: Безопасность

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


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


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


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

Т.е. надеюсь поняли отличия в первом случае шифруется код программы, и стаб расшифровывает уже команды программы, а во втором случае шифруется сам файл программы и расшифровывается тоже сам файл, ну и понятно, что второй тип криптора это не что иное как ерунда, т.к. практически любой антивирусник спалит вирус при расшифровке ! 😉


Некоторые крипторы напрямую файл на диск не пишут, а запускают его из памяти, но это их не оправдывает, т.к. продвинутый антивирус словит это при запуске.


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


Ну, антивирус, погоди! Создаем EXE-криптор на Python’е — «Хакер»

Содержание статьи

Web мы спасли от антивирусов несколько месяцев назад. Это было нетрудно — область относительно новая, не освоенная. С исполнимыми же файлами антивирусы борются уже десятилетиями. Побороть EXE-модуль будет сложнее, но… мы справимся :).

 

Выпуск 1. Ознакомительный

Ты уже знаешь, что я считаю антивирусы абсолютно бесполезными — хотя бы по той причине, что они помогают только от самых примитивных зверьков, которые в условиях современного денежного малварьбизнеса встречаются не так часто. Современные злокодеры, подогретые денежными вливаниями, научились программировать довольно жестко, но есть у них одна маленькая проблема — криптовка — достаточно сложная штука, для написания которой нужны глубокие знания PE-формата, ассемблера и системного программирования. Из-за высокого «входного барьера» в этой области мало профессионалов.

И найти хорошего криптора ой как сложно.

Но решение проблемы есть! Как мы знаем, антивирусные компании обмениваются технической информацией и создают специальные ресурсы, посредством которых мы сами отсылаем им сэмплы (типа VirusTotal’а). Но ведь и вирмейкеры тоже могут обмениваться информацией! Необязательно палить приватные мазы — публичные технологии тоже сгодятся. Например, было бы круто, если бы в каком-то одном месте лежали функции для генерации PE-файла, генерации импорта, шифрования ресурсов, рабочие функции определения SandBox’ов, тогда мы могли бы создавать крипторы так же непринужденно, как домики из кубиков Лего.

Идеальным местом для обмена, наверное, будет GitHub, и туда я залью исходники написанного нами сегодня криптора — он будет доступен по адресу http://github.com/presidentua/ExePacker.

Кроме того, в решении проблемы здорово помогло бы использование высокоуровневых языков программирования. В паблике сейчас валяются исходники крипторов на С++ или VisualBasic’е, но ведь от этого проще не становится, поскольку разобраться в написанном коде — ой как непросто. На Python’е все выглядит в разы лучше, поэтому именно его мы сегодня и будем использовать. В общем, заложим фундамент этой благородной миссии. Присоединяйся!

 

Выпуск 2. PE-файл

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

PE-файл представляет набор разных служебных структур, связанных между собой, и набор данных, которые размещены в секторах. Загрузчик Windows’a читает структуры, обрабатывает их (например, импортирует DLL’ки) и потом передает управление на инструкцию, указанную в поле «Entry Point».

Теперь посмотрим, что же нужно нам сделать, чтобы изменить файл и при этом не испортить его.

 

Выпуск 3. Теоретический криптор

Для начала выберем файл, который будет у нас исполнять функции лабораторной мыши. Чтобы сделать приятное Андрюшку :), мы, пожалуй, будем издеваться над Putty.exe. Упрощенно его структура будет выглядеть так:

  1. Служебные данные
  2. Первая кодовая секция
  3. Другие секции с данными

Алгоритм криптора следующий. Создать две ассемблерные программы. Первая будет косить под обычную прогу и проверять, что мы не в эмуляторе, а потом передаст управление на вторую программу. Вторая же восстановит оригинальную структуру файла и передаст управление на оригинальную точку входа Putty. И записать эти программы в файл.

В результате получится следующая структура:

  1. Служебные данные
  2. Первая кодовая секция
    1. Наша первая программа, которая передаст управление на 4.2
    2. Шифрованный код первой секции
  3. Другие секции с данными
  4. Добавленная секция
    1. Часть кодовой секции, перезаписанной программой 2.1
    2. Вторая программа, которая оригинальный код из 4.1 поместит на 2.1, а потом расшифрует кодовую секцию и передаст на нее управление.

 

Выпуск 4. Практический криптор

Ну наконец-то мы добрались до сердца нашей статьи. Для работы криптора нам понадобится модуль pefile (будем использовать несколько модифицированную версию), и с помощью либы откроем Putty:

import pefile
pe = pefile.PE("putty.exe")

Теперь, если ты напишешь «print pe», то увидишь подробную инфу обо всех характеристиках файла, по этой инфе я советую искать нужные для изменения поля в файле. А о внутренней работе модуля обязательно прочитай во врезке. Теперь немного математики. У нас будут две программы, которые нужно внедрить в файл. Они будут занимать где-то по 512 байт каждая максимум. Поэтому для размещения добавим новую секцию в 1024 килобайт вызовом:

pe.add_last_section(size=1024)

Закриптуем первую секцию XOR’ом с ключом «1»:

pe.sections[0].xor_data(code=1)

Магия, правда? :). А теперь прикинь, что все это пришлось бы писать на С++!

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

Адрес первой секции в файле находится в переменной — pe.sections[0]. PointerToRawData, а последней, соответственно — в pe.sections[-1].PointerToRawData:

pe.data_copy(pe.sections[0].PointerToRawData, pe.sections[-1].PointerToRawData, 512)

Оригинальный код сохранен, и мы приступим к написанию первой программы. Конечно же, писать мы ее будем на ассемблере, используя FASM для компиляции. Создадим файлик pack.tpl.asm с содержанием:

use32
mov eax, {{ go }}
jmp eax

Ты, наверное, уже догадался, что это не готовый исходник, это лишь шаблон для шаблонизатора из TornadoWeb, а его мы уже отлично знаем, ведь именно его мы использовали при написании HTML-морфера. Сгенерируем первую программу:

asm = Template(open("pack.tpl.asm", "r").read()).generate(
go=pe.OPTIONAL_HEADER.ImageBase + pe.sections[-1].VirtualAddress+512,
)
with open("pack.asm", "w") as f:
f.write(asm)
os.system(r"c:fasmwFASM.EXE pack.asm")

В переменной go мы передаем адрес в памяти, где будет наша вторая программа — то есть, в последней секции, начиная с 512 байта. А в последней строчке компилим результат на FASM’е. Теперь запишем получившийся код в начало первой секции:

new_pack = open("pack.bin", "rb").read()
pe.data_replace(offset=pe.sections[0].PointerToRawData, new_data=new_pack)

Вторую программу запишем в файл copy.tpl.asm. Размер у нее более внушительный, поэтому полный код смотри на диске. Там содержится два цикла, один скопирует 512 байт оригинальной программы с последней секции в первую, а второй цикл расшифрует всю первую секцию. После этого передается управление на оригинальную программу.

При компиляции темплейта нужно передать туда параметры для циклов копирования и расшифровки:

copy_from = pe.OPTIONAL_HEADER.ImageBase+pe.sections[-1].VirtualAddress

copy_to = pe.OPTIONAL_HEADER.ImageBase+pe.sections[0].VirtualAddress
oep = pe.OPTIONAL_HEADER.ImageBase+pe.OPTIONAL_HEADER.AddressOfEntryPoint
asm = Template(open("copy.tpl.asm", "r").read()).generate( copy_from=copy_from, copy_to=copy_to, copy_len=512, xor_len=pe. sections[0].Misc_VirtualSize, key_encode=1, original_oep=oep,)

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

new_copy = open("copy.bin", "rb").read()
pe.data_replace(offset=pe.sections[-1].PointerToRawData+512, new_data=new_copy)

pe.sections[0].Characteristics |= pefi le.SECTION_CHARACTERISTICS["IMAGE_SCN_MEM_WRITE"]
pe.OPTIONAL_HEADER.AddressOfEntryPoint = pe.sections[0].VirtualAddress
pe.write(fi lename="result.exe")

 

Выпуск 5. Завершающий

Если собрать кусочки кода вместе, то будет у нас всего 50 строк. Всего лишь 50 — и криптор готов! А теперь прикинь, сколько строк содержала бы программа на С? Конечно, это еще далеко не готовый продукт, над ним нужно работать и работать. Чтобы довести систему до реального криптора, нужно добавить как минимум шифрование ресурсов и импорта, а также антиэмуляцию.

О том как теоретически эти проблемы решить, смотри во врезках. Удачи!

 

Желательный функционал 1. Обход песочниц

В крипторе нужно делать проверки на запуск в виртуальной машине, SandBox’е или анализаторе типа анубиса. Чтобы их зедетектить, нужно провести небольшое исследование и написать программу, которая будет на экран выводить разные внутренние параметры системы, а дальше — проверить этот файл на том же анубисе и в скриншоте посмотреть параметры, которые показала наша прога. Дальше все просто — при запуске на системе с подобными параметрами — просто уходим в цикл.

 

Обязательный функционал 2. Шифрование ресурсов и импорта

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

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

 

Обязательный функционал 1. АнтиЭмуляция

Кроме избавления от внешних сигнатур, очень важно, чтобы антивирус в своем эмуляторе не добрался до исходного файла. Для этого нужна антиэмуляция. Раньше были очень популярны приемы, основанные на предположении, что эмулятор не понимает все инструкции процессора. Сейчас же ситуация изменилась, и самые эффективные приемы основаны на использовании Windows API. Согласись, что антивирус вряд ли сможет эмулировать все API.

Вот тебе такая идейка для реализации:

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

PS:Никогда не останавливай программу с ошибкой, это лишь прибавит криптору лишний вес. Вечный цикл получения сообщений от Windows — лучший способ.

 

Внутренности Антивирусов

В упрощенном виде, антивирус — это набор правил (сигнатур) и система, которая проверяет файл по этим правилам.

К примеру, пусть в антивирусе будут такие сигнатуры:

  • секция с кодом, записываемая +10;
  • после запуска прописывается в авторан +30;
  • вторая секция с именем Zeus +30;
  • меньше 4 энтропия кодовой секции +20;
  • есть сертификат от майкрософта -10.

Дальше антивирь проверяет те правила, которые возможно проверить без запуска EXE, потом в эмуляторе запускает файл и проверяет все остальные правила. А после этого подсчитывает сумму, если она больше 100, значит вирус, если меньше — значит не вирус.

 

Как работает pefile

При загрузке в pefile экзэхи, библиотека сохраняет сам файл в pe.data, а потом обрабатывает его и создает массив структур pe.structures. Структура — это объект, у которого есть адрес. Адрес, по которому она находится в файле, и есть набор полей.

При сохранении файла pe.write(filename=»result. exe») либа проходит по всем структурам и сохраняет их по указанным адресам. Чтобы что-то добавить, например, в ту же секцию, нам сначала нужно найти адрес в памяти. Это можно посчитать так: адрес в памяти последней секции + размер секции. Дальше заполняем все поля в структуре и добавляем ее в массив pe.structures. Вот и все :).

 

Links

Криптор

Итак, Вы решили стать крутым хакером и вирусописателем, и уже даже купили себе самую нужную книгу «Как стать хакером для чайников»? Быть хакером – это конечно круто, но прочитав книгу подобного рода, максимум, кем Вы станете, это хакером чайников.
В данной статье мы постараемся объяснить некоторые аспекты программирования некоего программного обеспечения, касающегося именно хакерских сторон деятельности – как написать вирус, чтобы его не палили антивирусы, какие программы при этом использовать и где эти программы брать.
Криптор (от английского слова «Cryptor» — шифровщик) – это название одного из вида программных продуктов, которые используются программистами-вирусописателями для того, чтобы скрыть вредоносную сущность написанного ими программного обеспечения от антивирусных программ.
Криптор, используя шифрование программы, содержащей вирус, маскирует и защищает ее от антивирусных программ, которые работают методами поиска по сигнатурам.
Различают два вида крипторов: обычный и полиморфный. Обычные крипторы имеют статическую сигнатуру декриптора-расшифровщика, а у полиморфных данная сигнатура динамическая, и каждый раз при компиляции они (файлы, упакованные такими крипторами) выглядят по иному.
Как же работают крипторы? Все довольно просто: берется исходный оригинальный файл вредоносной программы, затем данная программа шифруется каким-либо криптором, при этом в начало вновь полученного файла записывается код для расшифровки программы. Чтобы было более понятно, объясним на простейшем примере: берется некая троянская программа и архивируется архиватором WinRAR, причем архивируется не просто так, а с парольной защитой. После выполнения данных действий ни одна антивирусная программа не сможет добраться до данного трояна, так как расшифровывать пароли к архивам они не умеют.
Здесь присутствует один небольшой подводный камень. Антивирусы добавляют в свои базы сигнатур коды расшифровки наиболее распространенных программ-крипторов, но если Вы создали какую-либо программу, которая совсем не является вирусом, а выполняет какие-либо только полезные действия, но при этом запаковали ее для уменьшения размера каким-либо популярным криптором, то зачастую может так случиться, что антивирус при попытке скопировать данную программу на компьютер или запустить ее начнет ругаться, что в данной программе содержится страшный вирус. Ну, от этого никуда не деться, если Вы пользуетесь общедоступными крипторами.
Вообще, по типу доступности крипторы подразделяют на Публичные (Public) и Приватные (Private).
Первый вид крипторов является общедоступным, они широко распространены на просторах Интернета и при наличии желания их может скачать любой пользователь. Основной отрицательной стороной таких крипторов является то, что по истечении совсем небольшого срока они начинают палиться практически всеми антивирусами (ведь антивирусные лаборатории тоже не дремлют и стараются отловить свежие виды крипторов, тем более как их не отлавливать, если они лежат в свободном доступе).
Со вторым же видом все не так просто. Эти крипторы доступны только избранному сообществу людей либо же их можно приобрести за вполне реальные деньги (электронные в основном). Данный тип крипторов является более устойчивым к проверке их антивирусами благодаря как постоянно совершенствующимся алгоритмам шифрования, так и постоянно обновляемому стабу. Что такое стаб, спросите Вы? Ответим. Стаб – та часть кода криптора, которая используется для расшифровки данных вредоносной программы, которая и была зашифрована данным криптором.
Часто в раделах форумов, где представлены крипторы, присутствуют аббревиатуры FUD и semiFUD. Расшифруем эти аббревиатуры, чтобы Вам было более понятно. Что же это такое.
1)FUD — Full Undetected — «полностью не определяется антивирусами»
2)semiFUD — Semi-full undetected — «почти не определяется антивирусами».
Помимо крипторов, при написании вредоносного программного обеспечения (вирусов и троянских программ), используются и некоторые другие виды программ. Вкратце перечислим их названия и расскажем, для чего они служат.
Для кражи номеров ICQ, логинов и паролей к аккаунтам электронной почты и социальным сетям используются особые тоянские программы, которые называются пинчи и ксинчи.
Для приема и обработки полученной ворованной информации используются специальные php-скрипты, которые называются гейтами.
Для соединения в один файл безопасной программы и какого-либо вируса служат джойнеры. При этом функциональность как первого (допустим, фотографии), так и второго (например, троянского вируса), остается на высшем уровне.
Вот в принципе и вся основная теоретическая информация по крипторам, которую мы хотели Вам представить.

криптор, который любит держаться в тени / Блог компании Group-IB / Хабр

Ни один атакующий не хочет, чтобы его инструменты обнаружили и раскрыли раньше времени. Поэтому, как правило, в чистом виде никто вредоносные программы не распространяет. Например, пользователю прилетело фишинговое письмо от имени известной транспортной компании и просят проверить документы во вложении. Подобные письма достаточно часто являются началом атаки, так было и на этот раз. Внутри архива находился исполняемый файл Cassandra Crypter — популярный криптор, полезной нагрузкой которого могут выступать различные семейства вредоносного программного обеспечения. Алексей Чехов, аналитик CERT-GIB, рассказывает, как Cassandra проникает на компьютер жертвы и приводит с собой других незваных гостей.

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

Первая стадия

Cassandra маскируется под легитимное приложение. В точке входа располагается стандартная для приложений Windows Forms функция запуска.

Конструктор формы также выглядит стандартным, ничем не отличающимся от легитимного приложения.

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

Для расшифровки используется алгоритм AES.

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

Вторая стадия содержится в изображении, в зашифрованном виде, в исходной сборке.

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

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

Вторая стадия

Вторая стадия представляет собой исполняемый файл .Net Framework.

Конфигурационный файл

Ключ, который используется на первой стадии расшифровки пейлоада

«baAsaBBxDT»

Поле, содержащее пейлоад в расшифрованном виде

Поле содержащее сырой (не разобранный) конфиг

«0||0||0||0||0||||||0||0||0||0||||||||||||||0||0||0||0||0||0||0||0||v2||0||3046||0||0||||||0||0||0||||»

Поле, содержащее подготовленный конфиг

Поле, содержащее флаг типа инжекта

0

Поле, содержащее флаг закрепления в системе

0

Поле, содержащее имя файла после закрепления в системе

«YhwcrydjrNS»

Поле, содержащее название мьютекса

«ljrSLVyCApWxcUE»

Неиспользуемое поле

0

Поле, содержащее информацию об использовании загрузчика

0

Поле, содержащее информацию о пути до загруженного файла

0

Поле, содержащее ссылку на пейлоад

0

Поле, содержащее информацию об использовании Anti-VM/Sandbox-функции, осуществляющей поиск 

0

Поле, содержащее информацию об использовании Anti-VM/Sandbox-функции, осуществляющей поиск строк в пути файла

0

Неиспользуемое поле

0

Неиспользуемое поле

0

Поле, содержащее информацию об использовании Fake MessageBox

0

Текст заголовка Fake MessageBox

0

Текст Fake MessageBox

0

Информация о кнопках Fake MessageBox

0

Информация об иконке Fake MessageBox

0

Количество секунд, в течение которых приложение будет бездействовать

0

Функция, осуществляющая разбор конфигурационного файла

Полезная нагрузка

Полезная нагрузка содержится в крипторе в зашифрованном виде. Расшифровка проходит в два этапа:

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

2. Осуществляется дешифрование, аналогичное тому, что было на первой стадии: используется операция XOR, в качестве ключа используются первые 16 байтов массива, полученного на первом этапе.

Закрепление в системе

Закрепление в системе осуществляется через создание отложенной задачи. Файл копируется в директорию AppData//{имя файла, заданное в конфиге}+”.exe”. После этого исходный файл удаляется и создается задача на выполнение.

Anti-VM

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

Anti-Sandbox

Реализованы три функции противодействия песочнице:

  • Детект изолированной среды. Функция проверяет путь до исполняемого файла и ищет в нём специфические строки, таких как \\VIRUS, SAMPLE, SANDBOX и т.д. Также осуществляется поиск окна, свойственного WindowsJail, и библиотеки SbieDll.dll, загруженной в процесс.

Защита от повторного запуска

Реализована путем создания мьютекса с заданным именем в системе.

Функционал

Downloader

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

Запуск полезной нагрузки

Содержит два варианта запуска пейлоада:

1. Загрузка в память при помощи функций .Net Framework.

2. Инжект полезной нагрузки в запущенный процесс. Есть возможность выбора из нескольких процессов.

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

Исследователи обнаружили и изучили распространенный криптор OnionCrypter

С 2016 года OnionCrypter широко используется одними из самых известных и наиболее распространенных семейств вредоносных программ, таких как Ursnif, Lokibot, Zeus, AgentTesla и Smokeloader.

Исследователи Avast Threat Labs, подразделения компании Avast, мирового лидера в области цифровой безопасности и решений защиты, обнаружили криптор, который с 2016 года широко используется одними из наиболее распространенных семейств вредоносных программ, таких как Ursnif, Lokibot, Zeus, AgentTesla и Smokeloader. За последние три года Avast защитила почти 400 000 пользователей по всему миру от вредоносных программ, содержащих этот криптор.

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

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

Исследователи Avast изучили криптор, который они назвали OnionCrypter: как и лук, он состоит из множества слоев шифрования, защищающих информацию от исследователей, антивируса и решений безопасности. Именно благодаря своей «многослойности» OnionCrypter так необычен. Стоит подчеркнуть, что его название никак не связано с браузером или сетью Tor.

Исследователи лаборатории угроз Avast также отмечают, что OnionCrypter активно используется с 2016 года в самых известных и распространенных семействах вредоносных программ, таких как Ursnif, Lokibot, Zeus, AgentTesla и Smokeloader. За последние три года Avast защитила почти 400 000 пользователей со всего мира от вредоносного ПО, содержащего OnionCrypter. Диаграмма ниже показывает, какие семейства вредоносного ПО, использующие OnionCrypter, были обнаружены Avast.

Учитывая достаточно долгое время использования и распространенность OnionCrypter, исследователи сделали вывод, что разработчики продают его в качестве услуги. За последнее время рынок вредоносного ПО значительно вырос, и вполне объяснимо, почему некоторые люди и компании начали предлагать специализированные услуги. Кроме того, развитость этого рынка свидетельствует о том, что создатели OnionCrypter предлагают покупателям настройку, чтобы сделать его еще менее заметным. В рекламе на форумах OnionCrypter часто называют «совершенно незаметным».

Информация, предоставленная исследователями Avast, упростит задачу по обнаружению OnionCrypter и любого вредоносного ПО, которое его использует.

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

По материалам  Avast

 

PaaS, или Как хакеры ускользают от антивирусов

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

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

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

Packer-as-a-service

Хакерская группа, стоящая за распространением RTM, до конца 2020 года регулярно проводила массовые фишинговые рассылки с вредоносными вложениями. Этот процесс, по всей видимости, происходил автоматически.

Рис. 1. Фишинговое письмо RTM, декабрь 2020

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

Рис. 2. Пример архива RTM

Подобная особенность — естественное следствие применения крипторов. Первоначально группа, стоящая за RTM, использовала свой собственный уникальный криптор, однако в течение 2020 года дважды его сменила.

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

Рис. 3. Сайт одного из крипт-сервисов

Доступ к таким сервисам часто продается на хакерских форумах.

Рис. 4. Пример объявления о продаже услуг по упаковке файлов

Далее мы рассмотрим конкретные примеры крипторов, которые были применены группой RTM.

Rex3Packer

Первое использование этого пакера группой RTM, которое нам удалось обнаружить, относится к ноябрю 2019 года. Активное же его применение, по нашим данным, приходится на период апрель—май 2020 года. Единичные случаи использования этого пакера для распространения старых версий трояна RTM мы также наблюдали в конце января 2021 года.

Рис. 5. Фишинговое письмо RTM, январь 2021

Нам не удалось связать этот упаковщик с каким-либо из ранее описанных публично, поэтому мы дали ему свое название по трем особенностям его устройства: наличию рекурсии (recursion), реверса битов (reverse), и рефлективной загрузки PE-файлов (reflection) — Rex3Packer.

Алгоритм распаковки

Общий алгоритм извлечения полезной нагрузки выглядит так:

  1. С помощью VirtualAlloc выделяется заранее определенное количество памяти с правами на чтение, запись и исполнение.
  2. В выделенный буфер копируется содержимое образа текущего процесса в памяти (в частности, секция .text).
  3. Управление передается на функцию внутри буфера.
  4. Вычисляется разница между положением одних и тех же данных в буфере и в образе PE-файла (разность между адресами в буфере и виртуальными адресами в образе). Эта разность заносится в регистр ebx. Все обращения к виртуальным адресам в коде проиндексированы содержимым этого регистра. За счет этого, везде, где это необходимо, к адресам из PE-образа добавляется поправка, которая позволяет получить соответствующий адрес в буфере. Рис. 6. Обращения к функциям и переменным с учетом поправки в регистре ebx
  5. Выделяется еще один буфер под упакованные данные.
  6. Через вызов VirtualProtect устанавливаются права RWX на весь регион памяти с образом PE-файла.
  7. Упакованные данные копируются в свой буфер.
  8. Происходит декодирование упакованных данных.
  9. Регион памяти с образом PE заполняется нулевыми байтами.
  10. Декодированные данные представляют собой исполняемый файл — PE-нагрузку. Эта полезная нагрузка рефлективно загружается на место исходного PE-образа, и управление передается на ее точку входа.

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

Непосредственно упакованным данным предшествует заголовок размером 16 байт, который содержит 4 поля по 4 байта:

  • размер самого заголовка,
  • размер исходных данных (PE-нагрузки),
  • позиция в исходных данных (*), по которой происходит их разделение (об этом ниже),
  • режим кодирования (1, 2, либо 4).

Декодирование выполняется следующим образом:

  1. Внутри каждого байта выполняется реверс порядка битов (к примеру, 10011000 становится 00011001).
  2. В зависимости от режима кодирования (1, 2, 4) данные разбиваются на блоки размером N = 9, 5, либо 3 байта соответственно. Результат декодирования блока — это (N – 1) байт (то есть 8, 4, или 2).
  3. В первых N-1 байтах блока отсутствует часть битов: их значения всегда равны нулю. Чтобы восстановить оригинальные байты, с помощью масок вида 00000001, 00010001 или 01010101 из последнего байта блока извлекаются недостающие биты. При этом для каждого следующего байта маска сдвигается. То есть последний байт блока фактически составлен из объединенных логической операцией OR битов, которые извлечены из предыдущих байтов.

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

    Рис. 7. Схема получения исходных байтов в режиме 4
  4. После операции по восстановлению битов во всех блоках полученные данные представляют собой исходный PE-файл, который был разделен по позиции (*) на две части. Эти части, в свою очередь, были переставлены между собой. Обратная перестановка с учетом значения (*) позволяет получить оригинальный файл.

Обфускация

Чтобы усложнить анализ, в пакере применяются несколько техник добавления «мусорного» кода :

  • В промежутках между исполнением полезных команд делаются вызовы различных функций WinAPI. Их результаты сохраняются, но не используются, а сами функции выбираются так, чтобы не влиять на работу программы.

    Рис. 8. Примеры вызова функций WinAPI
  • Характерная особенность данного пакера — наличие циклов (не выполняющих полезных операций), которые реализуются через рекурсивную функцию.

    Рис. 9. Функция с рекурсивным вызовом (вариант без обфускации)
  • Для дополнительного запутывания в исполняемый файл добавляется несколько десятков случайно сгенерированных функций. Они могут ссылаться друг на друга, но в процессе работы ни одна из них не получает управления.

    Рис. 10. Пример сгенерированной функции

Использование

Кроме экземпляров RTM, мы обнаружили использование Rex3Packer для упаковки различного ВПО, в основном имеющего происхождение из стран СНГ. Ниже расположен список некоторых примеров таких вредоносов.

Семейство ВПО SHA256
Phobos Ransomware 6e9c9b72d1bdb993184c7aa05d961e706a57b3becf151ca4f883a80a07fdd955
Zeppelin Ransomware 8d44fdbedd0ec9ae59fad78bdb12d15d6903470eb1046b45c227193b233adda6
Raсcoon Stealer 3be91458baa365febafb6b33283b9e1d7e53291de9fec9d3050cd32d98b7a039
KPOT Stealer 9b6af2502547bbf9a64ccfb8889ee25566322da38e9e0ccb86b0e6131a67df1e
Predator The Thief d1060835793f01d1e137ad92e4e38ef2596f20b26da3d12abcc8372158764a8f
QakBot 18cc92453936d1267e790c489c419802403bb9544275b4a18f3472d2fe6f5dea

Также мы отметили использование пакера для упаковки экземпляров ВПО из семейств Nemty, Pony, Amadey. Безусловно, приведенные нами примеры — это далеко не все случаи использования Rex3Packer.

HellowinPacker

В мае 2020 группа RTM переключилась на использование нового упаковщика, который продолжала активно использовать до начала 2021 года. Мы назвали его HellowinPacker из-за встречающихся в некоторых экземплярах строк с именем файла hellowin.wav.

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

Рис. 11. Сравнение кода в двух экземплярах разной структуры

На примере выше можно увидеть сравнение образцов 5b5f30f7cbd6343efd409f727e656a7039bff007be73a04827cce2277d873aa0 (слева) и 1f9a8b3c060c2940a81442c9d9c9e36c31ad37aaa7cd61e1d7aec2d86fe1c585 (справа).

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

Рис. 12. Сравнение кода в двух экземплярах одной структуры

Так же, как и в случае с Rex3Packer, мы имеем дело с массовым использованием HellowinPacker для упаковки различного ВПО. При этом вредоносное ПО из одного семейства, как правило, имеет в упакованном виде одну и ту же структуру. Это можно пронаблюдать, по крайней мере, на протяжении некоторого времени — затем структура может измениться.

Все эти особенности хорошо согласуются с описанием одного из сервисов упаковки, доступ к которому продается на хакерских форумах:

[Уникальность]Для клиента дается уникальный криптор, который не зависит от других клиентов. Если ваши файлы спалились, то только от ваших же прогрузов. Мы не набираем >10000 клиентов, только аккуратная Premium-поддержка, клиенты единичные. We make only unique stubs for a customer.

По всей видимости, в каждый такой уникальный криптор закладывается собственная структура генерируемого кода. При этом сам криптор также умеет изменять код, но уже на более низком уровне, не меняя структуру программы в целом. В любом случае содержание «полезного» исполняемого кода остается одинаковым.

Алгоритм распаковки

Одни из первых действий, которые встречаются во всех упакованных файлах — это попытки открыть ключ реестра HKEY_CLASSES_ROOT\Interface\{b196b287-bab4-101a-b69c-00aa00341d07} (регистр символов в конкретном случае может отличаться) и запросить в нем значение по умолчанию (Default). От успешности этих операций в некоторых модификациях генерируемого кода зависит корректное продолжение работы программы.

GUID интерфейса в разных случаях также может отличаться. Вот некоторые из возможных вариантов:

  • {3050f1dd-98b5-11cf-bb82-00aa00bdce0b}
  • {aa5b6a80-b834-11d0-932f-00a0c90dcaa9}
  • {683130a6-2e50-11d2-98a5-00c04f8ee1c4}
  • {c7c3f5a1-88a3-11d0-abcb-00a0c90fffc0}
  • {b8da6310-e19b-11d0-933c-00a0c90dcaa9}

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

Этот блок начинается с четырехбайтного числа, которое хранит размер исходных данных (тех, которые будут получены после декодирования). Вызовом VirtualAlloc под расшифрованные данные выделяется блок памяти нужного размера с правами RWX. В выделенную память блоками по X байт копируются зашифрованные данные. При этом в оригинальном файле между этими блоками располагаются пропуски длиной Y байт.

Рис. 13. Схема копирования данных в HellowinPacker

Затем происходит процесс дешифровки блоками по 4 байта:

  • очередной блок интерпретируется как целое число (DWORD),
  • к его значению прибавляется индекс первого байта в блоке,
  • выполняется операция XOR между полученным значением и суммой индекса и фиксированного ключа, числа Z.

Пример реализации алгоритма на Python:

def decrypt(data, Z): index = 0 while index < len(data): dword = struct. (index + Z) data[index:index + 4] = struct.pack("<I", dword) index += 4

Значения X, Y и Z варьируются в зависимости от конкретного упакованного экземпляра.

Внутри дешифрованных данных располагается следующая стадия извлечения полезной нагрузки — шеллкод. Он получает управление после окончания расшифровки.

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

Рис. 14. Таблица импорта в дешифрованных данных

Для большей вариативности строки в таблице импорта могут частично заполняться посторонними символами. Так, в примере выше, первое имя функции — GetProcAddress — полностью заменено на строку aaa45678901234; кроме того, повреждены имена VirtualAlloc и VirtualProtect. Непосредственно перед обработкой таблицы шеллкод восстанавливает корректные значения для всех символов.

Рис. 15. Код восстановления испорченных имен функций

Полезная нагрузка (на этот раз, это PE-файл) извлекается шеллкодом из оставшейся части дешифрованных данных. Она вновь зашифрована, причем тем же алгоритмом, который описан выше. В качестве ключа Z всегда используется число 1001.

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

Обфускация

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

Рис. 16. Точка входа в одной из упакованных библиотек

Дополнительным эффектом от такого использования WinAPI становится невозможность детектирования по списку импортируемых функций и imphash.

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

Пример такой обфускации приведен на рис. 17: единственная задача данной функции — присвоить глобальной переменной, на которую указывает target, значение аргумента source. В данном случае результат вызова GetStockObject(789644) всегда будет равняться нулю, поскольку функции передан заведомо некорректный аргумент.

Рис. 17. Арифметическая обфускация в коде HellowinPacker

Разного рода мутации встречаются и на ассемблерном уровне: вставка «мусорных» команд, непрозрачные предикаты (opaque predicates), передача неиспользуемых аргументов в функции и повторные вызовы функций, изменение инструкций на эквивалентные.

Рис. 18. Пример обфускации на уровне ассемблерного кода

Использование

HellowinPacker существует по крайней мере с 2014 года. За это время он был использован в различном массовом вредоносном ПО. Вот лишь несколько примеров:

Семейство ВПО SHA256
Cerber Ransomware 1e8b814a4bd850fc21690a66159a742bfcec212ccab3c3153a2c54c88c83ed9d
ZLoader 44ede6e1b9be1c013f13d82645f7a9cff7d92b267778f19b46aa5c1f7fa3c10b
Dridex f5dfbb67b582a58e86db314cc99924502d52ccc306a646da25f5f2529b7bff16
Bunitu 54ff90a4b9d4f6bb2808476983c1a902d7d20fc0348a61c79ee2a9e123054cce
QakBot c2482679c665dbec35164aba7554000817139035dc12efc9e936790ca49e7854

Пакер неоднократно упоминался в отчетах других исследователей. Самое раннее упоминание, которое нам удалось найти, относится к 2015 году. В своей статье о крипторах специалисты Malwarebytes в качестве примера исследуют образцы с HellowinPacker. Другие исследователи позже напишут о нем, как об упаковщике Emotet: (1, 2). Уже в 2020 году наши коллеги из NCC Group дадут ему название CryptOne и опишут его применение для упаковки вымогателя WastedLocker. По данным NCC Group, он также использовался в таких семействах ВПО, как Netwalker, Gozi ISFB v3, ZLoader, Smokeloader.

Заключение

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

Описанные нами упаковщики, конечно же, далеко не единственные из существующих на рынке. При этом они хорошо демонстрируют общие свойства подобного рода инструментов: в результате их работы получается исполняемый файл с обфусцированным полиморфным кодом распаковщика и шифрованной тем или иным образом полезной нагрузкой. Мутации в коде и переиспользование одних и тех же крипторов делают практически невозможным статическое детектирование полезной нагрузки. Однако поскольку эта нагрузка так или иначе расшифровывается в память и начинает свою вредоносную деятельность, поведенческий анализ с использованием песочниц (таких, как PT Sandbox) позволяет обнаруживать ВПО и давать точные вердикты даже для упакованных файлов. Помимо этого, нужно отметить, что упаковщики никак не влияют на взаимодействие вредоносов с управляющими серверами. Это даёт возможность определять присутствие ВПО в сети, используя инструменты анализа трафика – такие, как PT Network Attack Discovery.

Вердикты наших продуктов

PT Sandbox

  • Trojan. Win32.RTM.a

  • Trojan.Win32.RTM.b

  • Trojan-Banker.Win32.RTM.a

  • Trojan-Banker.Win32.RTM.b

  • Trojan-Banker.Win32.RTM.c

  • Trojan-Banker.Win32.RTM.d

  • Trojan-Banker.Win32.RTM.e

  • Trojan-Banker.Win32.RTM.f

PT Network Attack Discovery

  • REMOTE [PTsecurity] TeamBot/RTM
    sid: 10004412;

  • BACKDOOR [PTsecurity] TeamBot/RTM
    sid: 10004415;

  • MALWARE [PTsecurity] RTM Banker CnC POST
    sid: 10000765;

  • MALWARE [PTsecurity] RTM. N (Redaman)
    sid: 10005556; 10005557;

  • MALWARE [PTsecurity] Spy.RTM.AF
    sid: 10005468;

  • MALWARE [PTsecurity] Trojan[Banker]/RTM
    sid: 10004855; 10004875;

  • MALWARE [PTsecurity] Win32/Spy.RTM.N (Redaman)
    sid: 10003414; 10004754; 10005555;

  • PAYLOAD [PTsecurity] RTM.Payload.xor
    sid: 10005585;

IOCs (RTM)

Дата обнаружения Криптор SHA256 SHA1 MD5
19.04.2020 RTM a4229a54f76815ac30a2a878eadf275e199c82da657dbc5f3fc05fe95603c320 ad22ceb309dd30dc769f63174292657fe07f0ced 80b116708f75de212b49ff994ad8b43e
22. 04.2020 Rex3Packer 9b88e8143e4452229dac7fdcc3d9281d21390f286c086f09aec410f120dc4325 f881729f6a5ca6fe80f385a2b0f8583b19214466 3965b819eb945a9c0defc746bbc8ed7a
13.05.2020 HellowinPacker 43e8ebacfa319ff7d871eef3cc35266cfa7c6f44dd787f27a48311e39727e10f 8a28b75285409c55d5bbeca62e3819c83c8e663f afd18be08d135f7bf07007c1c9041126
28.01.2021 Rex3Packer (2 слоя) fbf5974daee93bf5a2ed1816a4edbb108ceccb264d3e3f72d0aed268dd45e315 2e3352c6341ce57a03aaf2c4fbf484f3a0a4bfe3 6e0c8510443586cdc8f84330e447aae5

Статья — Современные крипторы в 2020 году — Какие они должны быть

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

Итак, что ждет вас в этой статье (Оглавление):


  1. Введение. Теория. Что есть крипторы в 2020 году и для чего они нужны.
  2. Какие они, должны-быть эти крипторы.
  3. Маленький демонстрационный проект и описание как и что делается.
  4. Супер-мега блокбастер. Вирус против антивирусов. Итоги.

1). Введение. Теория. Что есть крипторы в 2020 году и для чего они нужны.

Крипторы, их можно также назвать протекторами, а также если говорить про реалии 2020 года, их также можно назвать обфускаторами, в зависимости от типа зверька, которого мы хотим скрыть, но обо всем по порядку.

В далекие наверно уже 2000 – 2010 года, крипторы делали для скрытия уже известного в базе вируса, смысл был такой, есть вирус, который детектится сигнатурно, для его скрытия делали следующее:

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

По сути криптор состоит из двух частей:


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

Что-бы дальше было понятно, немного расскажу про виды детекта, а потом про виды крипторов уже в 2020 году и какие они должны быть)


Итак виды детектов антивирусов:

1. Сигнатурный детект

Тут всё и просто, и сложно. Сигнатура может-быть по определённой контрольной сумме, например антивирус считает контрольную сумму файла (CRC32, MD5 и т. д.), и в случае если такая сумма совпала в базе. То выдаётся детект.​

Это называется «точечный детект» и используется часто в «облаках», что позволяет быстро выявить угрозу и нейтрализовать её.​

Но а действительно удобно, та-же автоматика может задетектить угрозу по каким-то признакам и быстро добавить контрольную сумму в базу.​

Но возникает проблема, что обойти это может даже трёхлетний ребёнок, добавив например один байт в конец файла и контрольная сумма уже будет другой.​

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


2. Эмуляция кода

По простому, антивирус исполняет ваш код в момент сканирования и если находит какие-то касяки, например «Непонравилась API» или обнаружена сигнатура вируса, или кусок такой сигнатуры, то будет детект.​

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

А-нет, эмулятор расшифрует код и задетектит вирус. В общем-то для этого и нужен эмулятор кода.​


3. Детект при запуске

Всё-что выше, мы разбирали так-называемый «статический детект», т.е. детект, который выдаётся до запуска файла, такой детект будет если вы просканируете файл сканером, или зальёте например на вирустотал и т.д.​

Но нужно ещё сказать и про динамический детект. Это детект при запуске файла. Как он формируется ?​

У всех антивирусов по разному, например у касперского есть критерии по которому может-быть детект при запуске, например часть таких критериев: Создаёт-ли вирус процессы и как делает это, добавляется-ли вирус в автозапуск, как дербанит сеть вирус и т.д.​

Ну тут понятно, что даже при обходе сигнатурного детекта и эмулятора, если вирус по тупому крадёт пароли, создаёт скрытые процессы, всё это пересылает по сети, делает хук на клавиатуру, да ещё и добавляет себя в автозагрузку, то думаю детект не заставит себя ждать !​

К тому-же, у многих антивирусов, у таких как нод и др. веб, есть так называемый детект в памяти, т.е. антивирус расшифровывает код до запуска процесса и проверяет его. Да это проблема, т.к. перед запуском нового процесса код должен-быть расшифрован.​


4. Еще раз про облако и «искусственный интеллект»

Ошибочно думать, что облако – Это только детект по контрольной сумме. Нет это достаточно сложная система, основанная на ИИ.​

Например антивирус может отсылать полностью зверька в «виртуальную лабораторию», где произойдет запуск зверька и ИИ определит вирус-ли это или нет, по разным критериям, будь это репутация, где распространяется зверек и т.д.​

Также например, как у касперского может происходить и автоматическое помещение программы в определенную группу, например «программа для удаленного управления» и т.д., также автоматически происходит и установка «репутации программы».​

Поэтому у современных АВ, аналитики выполняют либо анализ по запросу, либо если у ИИ возникает какие-то спорные моменты, то зверек перейдет аналитику уже. )))

2) Какие они, должны-быть эти крипторы.

Фу-фу, наконец-то перейдем к самим крипторам уже.

Итак вначале виды крипторов в 2020 году:

1. Натив крипторы:

Ну это крипторы, которые должны криптовать зверьков, которые написаны на нативных языках, таких-как С/С++, ассемблер, Delphi и т.д.​

Также крипторы могут криптовать разные разрядности зверьков, например есть крипторы для x86, а есть x64.​

Мы рассмотрим на практике именно такой вид криптора, для других крипторов, должны писаться отдельные статьи.​


2. Крипторы .NET и C#:

Как видно из названия, эти крипторы криптуют только .NET и C#. (ремарка: используя модуль RunPE появится возможность крипта нативных файлов)

Хорошо будет, если после этой статьи появятся статьи по крипторам C# и .NET.​

На самом деле на том-же C#, можно писать хорошую малварь, ничего против шарпов не имею, но я низкоуровневый программист, поэтому мало что скажу про шарпы и дот нет, максимум что там писал, это гуй…)​

Может-быть в будущем в зависимости от задач, ближе познакомлюсь с шарпами, но пока-что таких задач к сожалению нет.
3. Крипторы скриптовых языков:

Это по сути обфускаторы, например попадались на глаза обфускаторы батников, java и т.д.​

Интересно, что в таких крипторах также используют антиэмуляцию, в виде задержек sleep и т.д.)))​

Много про эти виды крипторов тоже писать не буду, т.к. это дело отдельной статьи.​

Итак, 2020 год, какие должны-быть крипторы, чтобы выжить:

Современные антивирусы, даже уровня виндового дефендера, имеют не хилые технологии, что-бы свести на нет распространение практически любого вируса.

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

Если раньше крипторы использовались для обхода детекта, то в 2020 году, криптор нужно использовать уже для усложнения детектов автоматики, смысл сделать так что-бы автоматика не добралась до самого зверька, при этом под детект попадала минимальная часть криптора, для автоматизации и ускорения чистки самого криптора.
Как-же это сделать?

Есть концепт использования шелл-кодов и обфускаторов кодов.

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

Эти шифрованные части можно хранить в ресурсах, дата-секции, или вообще загружать по сети.)))

Тем самым стаб будет минимален, а все остальное — это пошифрованные шелл-коды…

Шифрованные части можно прятать например в картинку и размещать на каком-то ресурсе, либо на ломанном сайте.

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

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

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

3) Маленький демонстрационный проект и описание как и что делается.

Итак, что получилось:

Решение состоит из двух проектов:
1. Первый проект LoadPeToShell — Переводит в шифрованный шелл-код модуль LoadPe, по сути создаёт заголовочный файл «loadpe.h», с шифрованным шелл-кодом.

LoadPe — Это основной модуль криптора, по сути там все.)

Антиэмуляция происходит путем вызова функции close по её хешу, то-что должна возвратить функция, это код ошибки ESTALE, на основе этого формируется ключ для расшифровки и расшифровывается пейлоад и запускается…

Немного каснусь тему антиэмуляции, вообще по хорошему также написать отдельную статью про это дело.)

Итак антиэмуляция бывает, как интеллектуальная с точки зрения реализации, так и дерьмовая.

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

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

Да и интеллектуального тут ничего нет, если говорить про малварь, как искусство, какое-то извините говно…)

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

Есть и другие методы, но обсуждение антиэмуляции, лучше вынести в отдельную статью.)))

Также в LoadPeToShell шифруется пейлоад и создается заголовочный файл «payload.h».

Алгоритм шифрования RC4.

2. Второй проект. Stub Это уже сам проект криптора.

Где происходит расшифровка шелл-кода из дата секции и запуск этого шелл-кода, пример:

— Расшифровка шелл-кода:

— Запуск шелл-кода:

В сам шелл-код нужно передать буфер шифрованного зверька и размер.

Антиэмуляция, расшифровка и запуск, уже в шелл-коде. )))

Как это сделано, можно глянуть в исходнике, который выложен на гитхабе: https://github.com/XShar/shell_crypor_framework
Как пользоваться:

  • В Release положить файл, который нужно закриптовать с именем PayloadExe.exe.
  • Запустить файл «LoadPeToShell.exe».
  • Собрать проект в Visual Studio C++.
  • Получится файл в Release «stub.exe».
Это и есть ваш криптованный зверек. Данное решение не воспринимайте как готовое решение, а как каркас для создания чего-то своего…)))

*Доработка, кто хочет использовать в комерсе:


  • Нужно создать генератор мусора для стаба и обфускатор си-кода. Можно использовать готовые движки, ну собственно если автоматизировать этот процесс, чистка будет весьма быстрой.
  • В стабе для скрытия VirtualAlloc я использую проект lazy_importer, рекомендую отказаться от него и вообще нужно отрефакторить код, писалось на скорую руку, опять-же качество кода желает лучшего, но для демонстрации концепта подойдет.
  • Сам шелл-код, как и криптованного зверька можно прятать в картинках на сайта, или в любом другом месте, тут просто опять-же для демонстрации концепта, в дата секции.

4) Супер-мега блокбастер. Вирус против антивирусов. Итоги.

Для демонстрации, что концепт работает, на момент написание данной статьи, прилагаю скан на dyncheck.com:

Статик детект на DarkComet (Изначально детектят все):

Спойлер
Рантайм детект (DarkComet):
Спойлер
Детект на безобидный файл (Рантайм):
Спойлер
То-что восклицательный знак, говорят можно за детект не считать, также на разные зверьки может реагировать по разному.)))

Автор: https://ru-sfera.org/threads/frejmvork-kriptora-protektora-na-shell-kodax-x86-x64.3980/

EGACryptor — Европейский архив генома-фенома EGA

EGACryptor

Ega-Cryptor v. 2.0.0 — это приложение на основе JAVA, которое позволяет отправителям создавать зашифрованные файлы, совместимые с EGA, а также файлы для зашифрованной и незашифрованной md5sum для каждого отправляемого файла. Приложение сгенерирует выходную папку, которая по умолчанию будет отражать структуру каталогов, содержащую исходные файлы.Эта выходная папка может быть впоследствии загружена в промежуточную область FTP EGA через клиент FTP или Aspera. Это зеркальное отображение структуры каталогов предназначено для помощи в ассоциации метаданных на портале отправителя.

Скачать EgaCryptor Установка EgaCryptor Использование EgaCryptor Исправление проблем

Загрузить EgaCryptor

Необходимые файлы jar можно получить, загрузив файл jar EgaCrytptor

После загрузки файла требуется распаковать заархивированный архив.

Новый Cryptor был создан для работы со средами выполнения Java версии 6 и выше, а также со средой OpenJDK. Пожалуйста, обратитесь к соответствующим ресурсам за инструкциями по установке. При установке последней версии OpenJDK будут включены файлы JCE. Если ваша установка Java JRE меньше 1.8.0_151, потребуется ручная установка файлов политики JCE. Вы можете проверить версию установленной Java, используя команду:

$ java -версия

в вашем терминале, PowerShell или командной строке.Результатом, который вам нужно будет запомнить, будет версия сборки для Java (TM) SE Runtime Environment.

Если вам нужно установить JCE, следуйте приведенным ниже инструкциям.

Установка файлов политики JCE (в соответствии с условиями лицензирования необходимые файлы политики должны быть загружены непосредственно с веб-сайта ORACLE):

  1. Загрузить файлы политик JCE неограниченной мощности (JRE 6 / JRE 7 / JRE 8)
  2. Распакуйте и извлеките загруженный файл.
  3. Это создаст подкаталог с именем JCE. Этот каталог содержит следующие файлы: README.txt, COPYRIGHT.html, local_policy.jar и US_export_policy. jar
  4. Установите два файла JAR политики, заменив существующие в домашнем каталоге java.
  5. Стандартное место для файлов JAR политики юрисдикции JCE:
  6. Установите два файла JAR политики, заменив существующие в вашем каталог.
  7. Стандартное место для файлов JAR политики юрисдикции JCE: / lib / security [Unix] или \ lib \ security [Win32]

Примечания: относится к каталогу, в котором была установлена ​​среда выполнения Java SE (JRE).

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

Дополнительные улучшения производительности, которые были включены в новую версию EGA-Cryptor V2.0.0:

  • возможность распараллеливать обработку наборов данных за счет использования ресурсов системы. Многоядерные системы позволят пользователю указать n-1 ядер для n-ядерной системы. Использование этой функции в кластерах может ускорить обработку наборов данных с большими номерами файлов, но пользователям следует проконсультироваться со своим локальным руководством по кластерам, чтобы убедиться, что они не монополизируют ресурсы, необходимые другим пользователям системы.По умолчанию этот процесс остается однопоточным.
  • Можно указать 3 уровня использования системы. Полное использование в пределах, указанных выше. Ограниченный режим, обеспечивающий доступность 50% системных ресурсов для других задач. Максимальный режим ограничен 75% системных ресурсов, это позволяет отдавать приоритет шифрованию, но позволяет использовать систему для легких альтернативных задач. Наконец, есть режим регулирования, который позволяет пользователю указать точное количество вычислительных потоков, которые будут использоваться.
  • Cryptor может принимать структурированный каталог и выводить каталог с той же структурой, содержащий зашифрованные файлы вместе с контрольными суммами md5 для простых и зашифрованных файлов. Затем весь выходной каталог можно загрузить в EGA для архивирования.
  • , как и в случае с входным путем, теперь можно указать выходной путь.
  • параметры были обновлены в соответствии с обновленной функциональностью.

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

Ниже мы представляем 3 возможных рабочих примера использования инструмента EgaCryptor

Шифрование одного файла:
 java -jar ../EGA-Cryptor_2_0_0.jar -i example1.bam 
Шифрование нескольких файлов:
 java -jar ../EGA-Cryptor_2_0_0.jar -i "example1.bam, example2.bam" 
Шифрование всех файлов в папке
 java -jar../EGA-Cryptor_2_0_0.jar -i путь / к / target / каталог 

По умолчанию EGA-Cryptor v2 создает новый выходной каталог, содержащий все зашифрованные файлы и соответствующие контрольные суммы в целевом каталоге. Если требуется конкретный каталог, это можно указать с помощью флага -o. Это можно сделать аналогично следующему примеру:

 java -jar ../EGA-Cryptor_2_0_0.jar -i / путь / к / целевому / каталогу -o / путь / к / выходному / каталогу 

Инструмент будет выводить три файла на каждый входной файл:

  1. * файл.gpg (зашифрованный файл)
  2. * file.md5 (файл значений суммы md5)
  3. * file.gpg.md5 (зашифрованный файл md5, файл значений суммы)

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

Примечание

  1. Не забудьте указать путь к EgaCryptor.jar и запустить команду из каталога, в котором находятся файлы.
  2. EgaCryptor записывает файлы в исходный каталог вашей локальной файловой системы, поэтому у вас должны быть права на запись для исходного каталога.

Поиск и устранение неисправностей

Если вы сомневаетесь в правильности работы Cryptor, рекомендуется сначала обратиться к встроенной документации. Это можно сделать с помощью флага -h, как указано в следующей таблице.


Встроенные команды
 Таблица: список параметров командной строки, встроенных в EGA-Cryptor v2.0,0. 
Параметр командной строки Действие
--------------------- -----------
-f Установите этот параметр, чтобы разрешить приложению создавать максимум
                         потоки для использования полной мощности ядер / процессоров
                         доступно на машине
-h Используйте эту опцию для просмотра встроенного меню справки
* -i Файл (ы) для шифрования. Укажите путь к файлу / папке или запятую
                         разделенный путь к файлу, если несколько файлов в двойных кавычках
-l Установите этот параметр, чтобы разрешить приложению создавать максимум
                         потоков равняется 50% мощности ядер / процессоров
                         доступно на машине
-m Установите этот параметр, чтобы разрешить приложению создавать максимум
                         потоков равняется 75% мощности ядер / процессоров
                         доступно на машине
-o Путь к выходному файлу.Это необязательно. Если не
                         при условии, что выходные файлы будут сгенерированы в
                         тот же путь, что и у исходного файла (по умолчанию: output-
                         файлы)
-t Установите этот параметр, если пользователь хочет управлять приложением в
                         создать максимальное количество потоков, как указано. Приложение будет
                         рассчитать нет. ядер / процессоров, доступных на машине
                         & создаст потоки соответственно
 


Ошибки шифрования
 UnixFileSystem.createFileExclusively (собственный метод) 

Ошибка вызвана UNIX («UnixFileSystem.createFileExclusively (собственный метод)»). Похоже, что у пользователя нет доступа для записи в файловую систему, в которой находится загружаемый файл. EgaCryptor всегда записывает контрольные суммы MD5 в файлы перед их загрузкой на сервер, и эти файлы создаются в том же месте, где находится сам загруженный файл. Решение: устраните проблему с правами доступа к каталогу и повторно запустите команду.

 Установить файлы политики юрисдикции неограниченной силы JCE 

Файлы юрисдикции неограниченной силы политики JCE должны быть установлены в соответствии с вашей текущей версией Java

Если у вас все еще возникают проблемы с EGA-Cryptor v.2 после ознакомления с документацией обратитесь в службу поддержки EGA.

Анализ новой небета-версии программы-вымогателя Kraken Cryptor

Отчет об исследовании угроз FortiGuard Labs

FortiGuard Labs недавно обнаружила новые версии Kraken Cryptor Ransomware. Хотя бета-тег был удален из его конфигурации, в этом вымогателе все еще есть множество ошибок, и автор все еще постоянно изменяет его основные функции.

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

В этой статье мы проанализируем новую «рабочую» версию Kraken Cryptor Ransomware, которая все еще находится в стадии разработки и пытается быть более стабильной. Для получения подробной информации об основном поведении этого вымогателя вы можете проверить здесь некоторую информацию, опубликованную McAfee в прошлом месяце для справки.

Версия 2.1, обнаружено несколько ошибок

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

Рисунок 1: Ошибка чтения значения конфигурации в Kraken Cryptor Ransomware V2.1

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

После обнаружения этого ошибочного образца мы обнаружили еще один образец, помеченный как версия 2.1 всего через несколько часов после того, как ошибка, о которой мы только что говорили, была удалена. Однако эта версия включала еще одну ошибку, при которой функция автономной установки отключена из-за ошибки обработки логических исключений в функции получения геолокации. Эта функция подключается к ipinfo [.] Io / json для получения геолокации системы. Если ему не удается установить соединение, он перехватывает исключение и не присваивает никакого значения переменной геолокации, что приводит к сбою чтения конфигурации. В результате эту версию можно запускать только в онлайн-среде.

Еще один интересный момент заключается в том, что он также включает сообщение отлаженного исключения.

Рисунок 2: Отображение окна сообщения отладки в Kraken Cryptor Ransomware

Интересно, что мы обнаружили эти вызовы MessageBox в предыдущей версии 2.07. Однако в версии 2.1 мы обнаружили больше вызовов MessageBox. В течение следующих нескольких дней автор несколько раз модифицировал исходный код Kraken Cryptor Ransomware и распространял его, не удаляя его отлаженное сообщение или даже неисполняющие ошибки.

Мы также обнаружили, что в одной и той же версии есть разные адреса электронной почты поддержки в его конфигурациях, что наводит нас на мысль, что возможно, что эти два образца были скомпилированы разными авторами. В этом примере мы обнаружили только адрес электронной почты службы поддержки «middleeast [@] cock.li», в то время как все электронные письма службы поддержки в других примерах, которые мы упоминаем в этой статье, относятся к «onionhelp [@] memeware [.] Net»

Рисунок 3.Различные адреса электронной почты службы поддержки в разных образцах одной и той же версии (2.1)

Версия 2.2 с HelloWorld!

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

Рисунок 4: Динамическая компиляция для HelloWorld!

HelloWorld! Образец исходного кода теперь динамически скомпилирован и выполнен.Автор забавляется с исходным кодом.

Изменение функций после версии 2.1

Изменение конфигурации

Эта новая версия также имеет новый тег конфигурации «партнер» по сравнению с версией 2.1, который заменяет старый тег «работать».

Рисунок 5: Настроенный партнер и бета-версия (удалена в 2.1) с использованием строки API.

Мы также обнаружили, что тег «beta» был удален из части конфигурации в версии 2.1. В версии 2.07 он был настроен как 1 в своей конфигурации, что означало, что он все еще находился в бета-версии. Однако в версии 2.1 он присвоил значение 0 в своем источнике для строки запроса API, что означает, что это соединение было не из бета-версии.

Еще одно изменение в его конфигурации — «help_voice».

Рисунок 6: help_voice в конфигурации

Такая конфигурация использует CScript для выполнения созданного файла сценария Visual Basic (.vbs), содержимое которого настраивается в теге «API». После запуска этого файла сценария он произносит текст, настроенный в конфигурации.

Рисунок 7: Выполнение CScript для вновь созданного .vbs для help_voice

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

На следующем изображении показаны изменения конфигурации между версиями 2.07, 2.1 и 2.2. Красный квадрат выделяет пропущенные каталоги в версии 2.1.

Рисунок 8: Изменения конфигурации для версий 2.07, 2.1 и 2.2

В версии 2.2 мы также обнаружили, что «price» и «price_unit» теперь настроены как USD, а не BTC, как в предыдущей версии.

Больше никаких анти-smb и anti-rdp

На следующем изображении мы показываем, как внутренняя часть тега «module» сильно отличается от версии 2.04. Конфигурация для «smb» и «rdp» в антианализирующем модуле удалена из версии 2.07. Изначально в версии 2.04 теги smb и rdp использовались для блокировки smb и rdp-соединений в зараженной среде. Однако мы не можем найти эти функции блокировки ни в версии 2.1, ни в версии 2.2.

Рисунок 9: Конфигурация модуля в версии 2.04

Подозрительная проверка SelfKill

Мы также обнаружили еще одну интересную проверку в обеих этих новых версиях. Kraken теперь проверяет конкретное имя пользователя, конкретный файл и даже конкретный IP-адрес или код страны.Если он соответствует проверкам, он перестанет заражать систему и удалится сам.

Рисунок 10: Проверка подозрительного самоуничтожения

Например, указанный здесь IP-адрес «104.207.76 [.] 103» — это IP-адрес, расположенный в Неаполе, Италия.

Рисунок 11: проверка геолокации с помощью IPINFO api

Заключение

Fortiguard Labs обнаружила последнюю новую версию Kraken Cryptor Ransomware, разработка которой началась с августа.В этой новой версии есть ошибки, из-за которых вредоносная программа не запускается или отключает некоторые предыдущие функции, обнаруженные в более старых версиях. Например, теперь отключен модуль офлайн-шифрования файлов. Мы также обнаружили, что, хотя файл конфигурации был изменен, основные функции не претерпели значительных изменений. Мы даже обнаружили, что автор удалил метку «beta» программы, хотя эта программа-вымогатель все еще является «бета-версией», поскольку она содержит множество очевидных ошибок в исходном коде.

FortiGuard Labs продолжит наблюдение за семейством вредоносных программ.

Решение

Пользователи Fortinet защищены от вредоносных угроз, упомянутых в этом отчете, с помощью следующих решений:

· Файлы обнаруживаются антивирусом FortiGuard

· Вредоносные и фишинговые URL-адреса блокируются нашей службой веб-фильтрации FortiGuard

IOC

Образцов:

f1334e51705ba874bf61e50e57288228c2f1d8334c4c385f3b454cc6c07c982a — MSIL / Filecoder.PI! Tr

d57d0689c2600b47faab6ac43e22daab1f76b4dfef35e7752a671b6bbe484b37 — MSIL / Filecoder.PI! Tr

f7358b103185458619e7203c3de6ed503374914318fc2aee52ed1d704b0cb0a8 — MSIL / Filecoder.PI! Tr

c915d380cc548876754f9c9f0c7ecb8ec6923f150cd77822ede330a2a9283d21 — MSIL / Filecoder.PI! Tr

6fc366dbc035226190c72d93962d2ad3c1c1f9c93fa1f63a9b31eb969d3f57d7 — MSIL / Filecoder.PI! Tr

30147aefa2a24c6c5efeef4b6f6980cfc04aa6cd7c85aff9a3cb8316a14bd2e7 — MSIL / Filecoder.PI! Tr

0857d5f714e88a2347affff4a440d9c76e6ddd18265e1c9a7d1c9966b0bfe61a — MSIL / Filecoder.PI! Tr

URL для сбора информации:

hxxps: // 2no [.] Co / 2FtQu5 — вредоносный

— = FortiGuard Lion Team = —

Зарегистрируйтесь для получения еженедельного обзора угроз FortiGuard.

Знайте свои уязвимости — узнайте факты о безопасности вашей сети. Оценка киберугроз Fortinet может помочь вам лучше понять: безопасность и предотвращение угроз, производительность пользователей, а также использование и производительность сети.

LEGO® Minifigure njo092 Общий шифровальщик

Вы любите приключения, тайны и действия? Тогда тема Ninjago для вас! Во вселенной Ниндзяго ниндзя борются со злом.
Тема Ниндзяго была представлена ​​LEGO® в январе 2011 года. Эта тема основана на более ранней теме Ниндзя.
Ninjago вращается вокруг молодых ниндзя: Коула, Джея, Кая и Зейна. Все они были обучены мастером Сэнсэем Ву защищать остров Ниндзяго от злых сил.Каждый сезон выходит новая серия. Теперь в игре 11 сезонов, каждый со своей историей и соответствующими строительными наборами.

Хотите заказать отдельные фигурки Ниндзяго? ToyPro — это интернет-магазин номер 1, где продаются отдельные минифигурки и детали LEGO®. Так что вам не нужно покупать весь набор, если вам нужна только одна минифигурка.

Степени ниндзя минифигурок Кая, Коула, Джея, Зейна и Нии можно узнать по их одежде. Ученики ниндзя носят только пояс с символом их силы.Если ученик приручил своего первого дракона, он становится DX-ниндзя и носит мантию дракона (на торсе изображен плюющийся дракон).

Следующая степень — ниндзя кендо. Униформа кендо состоит из шлема и доспехов. Как ZX, Ниндзя носит наплечники ниндзя с ножнами для катан. Если ниндзя использует чистую энергию своей стихии, он появится как NRG Ninja. Помимо этих вариантов, есть также Кимон, Техно и еще несколько нарядов.

На стороне плохих парней тоже есть желанные варианты.Помимо армии скелетов Скалкина, есть Каменная армия, Серпентины, Ниндроиды, Призрачные Воины и Небесные Пираты.

Вы можете поискать в нашем интернет-магазине по названию фигурки из набора и посмотреть, какие минифигурки LEGO® Ninjago находятся в этом наборе.

ToyPro также предлагает обширную коллекцию конструкторов LEGO® Ninjago. Вы найдете храмы Ниндзяго, рынки, лодки, мотоциклы и, конечно же, Кружитцу. Аркадные капсулы с минифигурками. Мы предлагаем быструю доставку и отличное обслуживание клиентов.


Kitura / BlueCryptor: кроссплатформенная криптографическая библиотека Swift с использованием CommonCrypto / libcrypto

Кросс-платформенная криптографическая библиотека

Swift, полученная на основе IDZSwiftCommonCrypto.

ВАЖНОЕ ПРИМЕЧАНИЕ: Этот выпуск НЕ является полностью исходным кодом , совместимым с предыдущими выпусками. Бывают случаи, когда теперь генерируется исключений вместо вызова fatalError () фреймворком.Это означает, что в библиотеке больше исправимых ошибок, чем раньше. Единственный раз, когда вызывается fatalError () , — это указать либо на ошибку программирования , либо на неисправимую системную ошибку .

Примечание. В macOS и iOS BlueCryptor использует предоставленную Apple библиотеку CommonCrypto . В Linux он использует libcrypto из проекта OpenSSL .

Предварительные требования

Swift

  • Swift с открытым исходным кодом swift-4.0.0-RELEASE набор инструментов (минимум ТРЕБУЕТСЯ для последней версии )
  • Swift с открытым исходным кодом swift-4.2-RELEASE toolchain ( рекомендуется )
  • Набор инструментов
  • Swift включен в Xcode версии 10.0 (10A255) или выше .

macOS

  • macOS 10.11.6 ( El Capitan ) или выше.
  • Xcode версии 9.0 или выше с использованием одного из вышеуказанных наборов инструментов.
  • Xcode версии 10.0 (10A255) или выше с использованием прилагаемой инструментальной цепочки ( рекомендуется ).
  • CommonCrypto предоставляется macOS.

iOS

  • iOS 10.0 или выше
  • Xcode версии 9.0 или выше с использованием одного из вышеуказанных наборов инструментов.
  • Xcode версии 10.0 (10A255) или выше с использованием прилагаемой инструментальной цепочки ( рекомендуется ).
  • CommonCrypto предоставляется iOS.

Linux

  • Ubuntu 16.04 (или 16.10, но проверено только 16.04) и 18.04.
  • Один из перечисленных выше наборов инструментов Swift с открытым исходным кодом.
  • OpenSSL предоставляется дистрибутивом. Примечание. Поддерживаются 1.0.x, 1.1.x и более поздние версии OpenSSL.
  • При сборке необходимо установить соответствующий пакет libssl-dev .

Сборка

Для сборки Cryptor из командной строки:

 % cd <путь-клону>
% быстрая сборка
  

Тестирование

Для запуска поставляемых модульных тестов для Cryptor из командной строки:

 % cd <путь-клону>
% быстрая сборка
% быстрый тест
  

Начало работы

В том числе в ваш проект

Менеджер пакетов Swift

Чтобы включить BlueCryptor в пакет Swift Package Manager, добавьте его в атрибут dependencies , определенный в вашем пакете .swift файл. Вы можете выбрать версию с помощью параметров majorVersion и minor . Например:

  зависимости: [
.Package (url: "https://github.com/IBM-Swift/BlueCryptor.git", majorVersion: , minor: )
]
  
Карфаген

Чтобы включить BlueCryptor в проект, использующий Carthage, добавьте строку в свой Cartfile с организацией GitHub, названиями и версией проекта. Например:

  github "IBM-Swift / BlueCryptor" ~> .<второстепенный>
  
Какао-Стручки

Чтобы включить BlueCryptor в проект, использующий CocoaPods, вы просто добавляете BlueCryptor в свой Podfile , например:

  платформа: ios, '10 .0 '

    цель "MyApp" делать
        use_frameworks!
        под "BlueCryptor"
    конец
  

Перед запуском

Первое, что вам нужно сделать, это импортировать фреймворк Cryptor. Это делается следующим образом:

API

Криптор

Следующий код демонстрирует шифрование и дешифрование с использованием одноблочного режима CBC AES с использованием дополнительной цепочки.

 let key = CryptoUtils.byteArray (fromHex: "2b7e151628aed2a6abf7158809cf4f3c")
let iv = CryptoUtils.byteArray (fromHex: «00000000000000000000000000000000»)
let plainText = CryptoUtils.byteArray (fromHex: "6bc1bee22e409f96e93d7e117393172a")

var textToCipher = plainText
if plainText.count% Cryptor.Algorithm.aes.blockSize! = 0 {
textToCipher = CryptoUtils.zeroPad (byteArray: plainText, blockSize: Cryptor.Algorithm.aes.blockSize)
}
делать {
let cipherText = попробуйте Cryptor (операция: .encrypt, алгоритм:.aes, параметры: .none, key: key, iv: iv) .update (byteArray: textToCipher) ?. final ()

print (CryptoUtils.hexString (от: cipherText!))

let decryptedText = try Cryptor (операция: .decrypt, algorithm: .aes, options: .none, key: key, iv: iv) .update (byteArray: cipherText!) ?. final ()

print (CryptoUtils.hexString (от: decryptedText!))
} catch let error {
охранник let err = error as? CryptorError else {
// Обработка ошибки, не связанной с шифрованием ...
возвращение
}
// Обработка ошибки Cryptor ... (Типы выдаваемых ошибок см. В Status.swift)
} 

Дайджест

В следующем примере показано создание дайджеста MD5 как из строки , так и из экземпляра NSData .

 let qbfBytes: [UInt8] = [0x54,0x68,0x65,0x20,0x71,0x75,0x69,0x63,0x6b, 0x20,0x62,0x72,0x6f, 0x77,0x6e, 0x20,0x66,0x6f, 0x78,0x20,0x6a , 0x75,0x6d, 0x70,0x73,0x20,0x6f, 0x76,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x6c, 0x61,0x7a, 0x79,0x20,0x64,0x6f, 0x67,0x2e]
let qbfString = "Быстрая коричневая лисица перепрыгивает через ленивую собаку."

// Нить...
let md5 = Digest (используя: .md5)
md5.update (строка: qfbString)
пусть digest = md5.final ()

// NSData с использованием необязательной цепочки ...
пусть qbfData = CryptoUtils.data (от: qbfBytes)
let digest = Digest (используя:.md5) .update (данные: qbfData) ?. final () 

HMAC

Ниже показано создание SHA256 HMAC с использованием байтовых массивов для ключей и данных.

 let myKeyData = "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
let myData = "4869205468657265"
пусть ключ = CryptoUtils.byteArray (fromHex: myKeyData)
пусть данные: [UInt8] = CryptoUtils.byteArray (fromHex: myData)

let hmac = HMAC (используя: HMAC.Algorithm.sha256, key: key) .update (byteArray: data) ?. final () 

Ключевые производные

Ниже показано создание ключа с использованием пароля, соли, количества раундов и заданной длины производного ключа с использованием алгоритма SHA1.Затем он показывает, как сгенерировать String из результирующего ключа.

 let password = "пароль"
пусть соль = соль
пусть раунды: UInt = 2
пусть производноеKeyLen = 20
делать {
let key = PBKDF.deriveKey (fromPassword: пароль, соль: соль, prf: .sha1, раунды: раунды, производная длина ключа: производная длина ключа)
пусть keyString = CryptoUtils.hexString (от: ключ)
} catch let error {
охранник let err = error as? CryptorError else {
// Обработка ошибки, не связанной с шифрованием ...
возвращение
}
// Обработка ошибки шифратора ... (см. Состояние.swift для типов выдаваемых ошибок)
} 

Генерация случайных байтов

Ниже показано создание случайных байтов заданной длины.

 пусть numberOfBytes = 256 * 256
делать {
let randomBytes = попробуйте Random.generate (byteCount: numberOfBytes)
} ловить {
  print ("Ошибка генерации случайных байтов")
} 

Коммунальные услуги

Cryptor также предоставляет набор служебных функций для работы с данными для преобразования данных из различных форматов:

  • В byteArray ( [UInt8] )
    • Из шестигранника
    • Из строки UTF8
  • Кому Данные
    • Из шестигранника
    • Из байтового массива ( [UInt8] )
  • К NS Данные
    • Из шестигранника
    • Из байтового массива ( [UInt8] )
  • К NSString
    • Из байтового массива ( [UInt8] )
  • В шестнадцатеричный список ( Строка )
    • Из байтового массива ( [UInt8] )

Также предоставляется API для заполнения массива байтов ( [UInt8] ), так что это целое число размером блока в байтах длиной .

  • func zeroPad (byteArray: [UInt8], blockSize: Int) -> [UInt8]
  • func zeroPad (строка: String, blockSize: Int) -> [UInt8]

Ограничения

Следующий алгоритм недоступен в Linux, так как он не поддерживается OpenSSL .

Во всех случаях использование неподдерживаемых API или алгоритмов приведет к Swift fatalError () , завершению программы и должно рассматриваться как ошибка программирования.

Сообщество

Мы любим говорить о серверных Swift и Kitura. Присоединяйтесь к нашему Slack, чтобы познакомиться с командой!

Лицензия

Эта библиотека находится под лицензией Apache 2.0. Полный текст лицензии доступен в ЛИЦЕНЗИИ.

DIY вредоносных программ-шифровальщиков в виде веб-сервиса, обнаруженного в дикой природе — часть вторая

Данчо Данчев

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

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

Подробнее:

Пример снимка экрана веб-службы шифрования вредоносных программ DIY:

Второй снимок экрана веб-службы шифрования вредоносных программ DIY:

Среди ключевых особенностей этой веб-службы шифрования вредоносных программ — автоматическое сканирование зашифрованных файлов, чтобы продемонстрировать клиенту, что файл действительно не обнаруживается большинством антивирусных решений, поддержка файлов x32 и x64, а также DLL, поддержка всех версий Windows от XP до Windows 8, а также повсеместная поддержка защиты от VMware / отладки.

Цена? 20 долларов США, при этом поставщик услуг утверждает, что файл останется незамеченным более 7 дней. Теперь, как он может рассчитать это, остается неясным, поскольку, как только его клиенты начнут распространять необнаруженные образцы, они в конечном итоге попадут в сенсорную сеть поставщика безопасности, так что все зависит от тактики уклонения от сенсора клиента, а не обязательно служебная функция.

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

В настоящее время мы в курсе следующих MD5s зашифрованную с помощью службы:
MD5: 8b9dbeb474375f703cb394c4b661122f
MD5: 7251862e224474899a2e60737cc745ef
MD5: de9ebb0bb5ee713e4815c35c64b14691
MD5: adf4df9e1383a99fe647eaa4b81ded13
MD5: 647627f810630ccdc7f30ddeca688d19
MD5: f1caa0212f85e8850b3a11234a2af1be
MD5: 5a2d1771acf1332c2b9ff93312ccd8b9
MD5: 2893f78fdf8245628473517317448acc
MD5.

Webroot SecureAnywhere пользователей проактивно защищены от этих угроз.

Вы можете узнать больше о Данчо Данчеве в его профиле LinkedIn . Вы также можете подписаться на в Twitter .

Об авторе

Сотрудники блога

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

Документация по устройству для работы с устройствами

Документация по мобильному решению Axway Appcelerator

Платформа Appcelerator включает SDK, сервисы и инструменты для создания, тестирования и управления мобильными и облачными приложениями.
Обзор | Путеводитель | Собственные SDK | Перейти в Документы

Axway Appcelerator Studio

IDE на основе Eclipse для быстрого создания, тестирования, упаковки и публикации мобильных приложений
Руководство по установке | Разработка титана | Предварительный просмотр приложения | Примечания к выпуску

Интерфейс командной строки Appcelerator

Инструменты командной строки для разработки и публикации мобильных и облачных приложений
Начало работы | Примечания к выпуску

Панель управления AMPLIFY

Мониторинг и управление мобильными и облачными приложениями
Введение | Примечания к выпуску

Axway Mobile Analytics: использование

Отслеживайте принятие и участие пользователей ваших приложений, чтобы понять, как ваше приложение используется
Начало работы | Архитектура | Android SDK | SDK для iOS

Axway API Builder

Создание и развертывание новых конечных точек API для использования любым клиентским приложением
Начало работы | Примечания к выпуску

Службы времени выполнения AMPLIFY

Размещайте приложения, созданные с помощью API Builder и предварительно созданных служб, включая ArrowDB (объекты данных без схемы) и push-уведомления
AMPLIFY Runtime Services Docs | Примечания к выпуску

Мобильные серверные службы

Mobile Backend Services предоставляет предварительно созданные, автоматически масштабируемые сетевые сервисы и объекты данных для ваших клиентских приложений
Mobile Backend Services | Примечания к выпуску

Axway Сплав

Платформа MVC для быстрой разработки высококачественных мобильных приложений
Начало работы | Образцы | Примечания к выпуску

Axway Титановый SDK

Разработка собственных, гибридных и мобильных приложений на основе единой кодовой базы
Начало работы | Документы API | Кросс-платформенная разработка | Разработка модуля | Примечания к выпуску

AMPLIFY Crash Analytics

Отслеживайте сбои приложения, чтобы диагностировать проблемы.
Начало работы | Документация по модулю

Axway Mobile Analytics: построитель запросов

Функция Query Builder помогает создавать запросы к аналитическим данным, собранным из вашего мобильного приложения.
Building Queries (техническая предварительная версия)

Какие бывают типы программ-вымогателей?

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

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

Программа-вымогатель

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

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

Одним из наиболее вредоносных шифровальщиков является Petya, семейство программ-вымогателей, которые шифруют основную загрузочную запись (MBR) компьютера. MBR — это данные, которые определяют, как и где находится операционная система на компьютере, чтобы ее можно было загрузить в оперативную память (RAM) компьютера. Чтобы все остальные части компьютера работали, сначала должна быть запущена MBR. Излишне говорить, что делая его недоступным, делает весь компьютер и всю информацию, которую он несет, бесполезной.

Пока что самой заметной жертвой Пети была Reckitt Benckiser, компания, стоящая за брендами Dettol, Nurofen и Durex. Он потерял около 100 миллионов фунтов стерлингов дохода. Анализ атак 2017 года, проведенный Microsoft, показал, что жертвами стали более 12500 человек из более чем 65 стран и что распространение Пети началось с программного обеспечения для налогового учета украинской компании. Более поздняя версия Petya не просто шифрует компьютерные данные, она полностью стирает их навсегда.

Шкафчики для экрана

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

Одной из самых известных атак на блокировку экрана в истории стала афера Metropolitan Police, которая впервые появилась в 2012 году. Когда эта программа-вымогатель атакует компьютер, из ниоткуда появляется навязчивое полноэкранное сообщение с угрозой жертве.В этом сообщении утверждается, что жертва просматривала и хранила запрещенную порнографию, и чтобы разблокировать свой компьютер, ему необходимо заплатить штраф. Некоторые версии этого вымогателя даже берут под контроль веб-камеру компьютера, чтобы снимать жертву и использовать отснятый материал в качестве инструмента для дальнейшего мошенничества.

Статья по теме: Проверьте этот список бесплатных расшифровщиков программ-вымогателей

Борьба с программами-вымогателями с помощью управляемых служб

Компетентные поставщики управляемых услуг (MSP), такие как аутсорсинг IT, обеспечивают комплексную защиту сети и данных, которая защитит ваш бизнес от программ-вымогателей.

Обновлено: 29.09.2021 — 23:20

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *