Контакты
Подписка
МЕНЮ
Контакты
Подписка

Криптография и вредоносные программы

Криптография и вредоносные программы

В рубрику "Криптография" | К списку рубрик  |  К списку авторов  |  К списку публикаций

Криптография и вредоносные программы

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

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

Выделение подозрительных файлов в исследуемой системе

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

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

Одним из основных этапов проведения экспертизы является проверка соответствия расширения и формата файла. Причем формат файла определяется по базе сигнатур известных форматов. Для этого могут быть использованы модули криминалистических утилит: OSForensics, EnCase Forensic, Autopsy Mismatch Module. Также может быть произведен поиск с помощью программы File операционной системы Linux всех файлов, формат которых определяется как data, т.е. формат файла не установлен.

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

Зашифрованные модули вредоносных программ

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

Самыми распространенными алгоритмами, которые используются вредоносными программами, являются XOR с ключом, RC2, RC4, RC5, RC6 (далее при упоминании всех четырех последних алгоритмов используется обозначение – RC), RSA. Также часто встречается кодирование base64. Напомню, основной целью злоумышленников при использовании кодирования является сокрытие оригинального содержимого от систем защиты информации.


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

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

Подсчет энтропии не может быть использован для обнаружения зашифрованной информации, поскольку диапазон значений для зашифрованных криптостойкими алгоритмами данных пересекается с диапазоном значений для сжатых форматов файлов: pdf, docx, rar, zip, wmv, jpg, png, mpg и др.

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

Проведем оценку используемых вредоносными программами алгоритмов шифрования. Основным и быстрым способом выявления хаотичности распределения байт в файле является подсчет его энтропии. Расчет основан на подсчете вероятностей встречаемости символов в файле, что дает оценку равномерности их распределения. Максимальное значение энтропии равно 8. Подсчет энтропии не может быть использован для обнаружения зашифрованной информации, поскольку диапазон значений для зашифрованных криптостойкими алгоритмами данных пересекается с диапазоном значений для сжатых форматов файлов: pdf, docx, rar, zip, wmv, jpg, png, mpg и др. Однако для демонстрации свойств указанных алгоритмов шифрования этого будет достаточно. Дополнительно приводится результат для алгоритма кодирования base64.

С помощью ПО "VSFile-EncryptC" версии 1.0.3.25 произведем зашифрование файлов формата pdf и zip с использованием алгоритмов шифрования: RC2, RC4, RC5, RC6.

С помощью ПО "CFF Explorer VIII" произведем зашифровывание тех же файлов с использованием алгоритма XOR с ключом 0xE3.

С помощью программы "File-Encryptor" версии 1.0.0.0 сгенерируем ключевую пару и произведем зашифрование тех же файлов с использованием алгоритма RSA.

В табл. 1 помимо значения статистических величин для тестируемых файлов с высокой энтропией приводятся значения:

  • по методу Монте-Карло, который основывается на оценке равномерности распределения байтов на координатной плоскости. Псевдослучайные данные характеризуются величиной, близкой к значению=3,141592653;
  • коэффициент автокорреляции, который показывает степень зависимости элементов между собой. Псевдослучайные данные характеризуются величиной коэффициента автокорреляции, близкой к 0, что говорит о независимости элементов оцениваемой последовательности между собой;
  • по критерию "Хи-квадрат" на равномерность, который основывается на оценке равномерности распределения элементов последовательности без учета их расположения в ней. По критерию рассчитывается значение Х2 на основе квадрата отклонений величин наблюдаемых частот встречаемости значений символов от теоретической. Псевдослучайные данные с 255 степенями свободы и уровнем значимости 0,01 характеризуются значением Х2, меньшим порогового значения 310,45;
  • величина арифметического среднего, которая основывается на усредненной сумме значений байт всех элементов оцениваемой последовательности. Псевдослучайные данные с 256 различными значениями элементов характеризуются значением арифметического среднего, близким к 127.5000.


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

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


Для алгоритмов шифрования RC дело обстоит иначе. Алгоритмы основаны на преобразовании Фейстеля, а значит – используют комбинацию шифров замены и перестановки. Кроме этого они обеспечивают хорошие перемешивающие свойства, хотя для некоторых из них обнаружены успешные атаки. В рассматриваемой области применения стойкость к криптоанализу при шифровании модулей не учитывается, важны простота реализации и обход сигнатурного анализа, поэтому данные алгоритмы широко применяются злоумышленниками (названия программ здесь и далее приводятся по классификации антивирусного средства ESET):

  • для шифрования трафика во вредоносной программе Win32/Carberp использовался алгоритм RC2;
  • вредоносной программой Win32/Olmarik.TDL3 производится создание собственной файловой системы, а ее содержимое шифруется по алгоритму RC4;
  • в процессе своей работы вредоносная программа Win32/Regin создает файлы в каталоге с журналами ОС и идентичными именами для хранения своих настроек и собранной информации в виде виртуальной файловой системы, при этом шифруя содержимое по вариации алгоритма RC5, и др.

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

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

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

Приведенный обзор свойств зашифрованных данных для алгоритмов шифрования, часто используемых вредоносными программами, также справедлив для других алгоритмов, схожих с описанными по сложности. Например, стойкие алгоритмы шифрования – AES, Serpent, ГОСТ 28147–89 и т.д. – также могут быть выявлены по статистическим свойствам, в то время как простые шифры замены или кодирования – только по особенностям реализации.

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

Для оценки статистических свойств псевдослучайных последовательностей существуют наборы тестов NIST [1], DIEHARD [2], тесты Кнута [3], TestU01 [4], AIS31 Methodology [5] и др., которые, безусловно, не адаптированы под файловую систему, но для проверки отдельных файлов как массива бит/байт могут применяться. Для анализа всех файлов в файловой системе их применение является ресурсо- и времязатратным.

Эксперимент

Для файлов небольшого размера (до 1 МБ), к сожалению, нет эффективных автоматизированных средств, которые могут обнаружить файлы с данными, зашифрованными даже криптостойкими алгоритмами. Поэтому в рамках эксперимента будет рассматриваться все тот же критерий "Хи-квадрат" на равномерность и набор тестов NIST [1].

В табл. 2 приведены некоторые плагины вредоносных программ и значения статистических величин для них. Дополнительно в таблицу внесены образцы вредоносной программы Win32/Corkow, которая производит шифрование тела создаваемого в системе исполняемого файла с использованием уникального ключа (серийный номер тома в системе), чем противодействует созданию уникальной сигнатуры в теле файла для его обнаружения.


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

Приведенная табл. 2 отражает выводы, полученные в разделе "Зашифрованные модули вредоносных программ". Свойства данных, зашифрованных с помощью алгоритма XOR с ключом, зависят от самих данных и ключа, поэтому его обнаружение на основании статистических свойств затруднено. Стойкие алгоритмы RC могут быть обнаружены по статистическим свойствам, однако и тут существующие подходы могут давать ошибку I рода (например, для файла "r.pack" значение по критерию "Хи-квадрат" превосходит пороговое значение). Что касается исполняемых файлов Win32/Corkow, то помимо самого алгоритма XOR с ключом в статистическое распределение вносят вклад служебные данные: заголовок исполняемого файла, тем самым сбивая статистические свойства.

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

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

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

Выводы

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

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

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

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

Литература

  1. NIST SP800-22. A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications, 2010 [online]. Доступ через http://csrc.nist.gov/publications/nistpubs/800-22-rev1a/ SP800-22rev1a.pdf.
  2. Marsaglia, G.: The Marsaglia random number CDROM including the diehard battery of tests, 1995 [online]. Доступ через http://stat.fsu.edu/pub/diehard/.
  3. Кнут, Д. Э.: Искусство программирования. Получисленные алгоритмы / 3-е изд. – М.: ИД "Вильямс", 2003. С. 63–69.
  4. L’Ecuyer, P., Simard, R. TestU01: A C library for empirical testing of random number generators // ACM Transactions on Mathematical Software (TOMS). – 2007. – V. 33. – Issue 4. – № 22.
  5. Killmann, W., Schindler, W. A proposal for: Functionality classes for random number generators // Tech. Rep. 2. Bundesamtf ur Sicherheit in der Informationstechnik (BSI). – 2011. – P. 133.

Опубликовано: Журнал "Information Security/ Информационная безопасность" #1, 2015

Приобрести этот номер или подписаться

Статьи про теме