Методы цифрового анализа текстовых сообщений для идентификации спама

Вид материалаДокументы
СтАтический анализ кода архитектуры x86
Эксперименты с моделями «простых» криптосистем
Подобный материал:
1   2   3   4   5   6

СтАтический анализ кода архитектуры x86


А.В.Корюкалов, Л.Ю.Ротков

Нижегородский госуниверситет

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

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

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

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

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

При использовании режима косвенной адресации в инструкциях передачи управления (когда адрес назначения задается с использованием регистра процессора или участка памяти) необходим дополнительный анализ объектов данных, участвующих в вычислении адреса. В [1] описывается применение метода анализа набора значений (value-set analysis) для получения переоцененного набора значений, который в каждой точке программы может содержать каждый объект данных.

Рассматривая задачу анализа исполняемого кода применительно к вредоносным программам, необходимо учитывать, что авторы вредоносного кода часто маскируют системные вызовы и границы процедур кода при помощи комбинации инструкций работы со стеком. В [5], [6] и [8] описываются методы поиска таких преобразований.

В [2], [3] и [4] описаны идеи автоматизированного поиска некого «поведения», свойственного вредоносному коду, которое представлено шаблоном. При анализе по определенным правилам сравнивается участок кода программы и шаблоны из библиотеки с учетом структуры управляющего графа, последовательностей инструкций и системных вызовов. Качество такого анализа зависит от принципов составления библиотеки шаблонов. Исследования в данной области могут быть направлены на определение этих принципов и поиск условий, при которых код может считаться удовлетворяющим шаблону.

  1. Balakrishnan G., Reps T. Analyzing memory accesses in x86 executables. //In Proceedings of the International Conference on Compiler Construction (CC'04), volume 2985 of LNCS, pages 5—23 (2004).
  2. Bergeron J., Debbabi M., Desharnais J., Erhioui M.M., Lavoie Y., Tawbi N. Static detection of malicious code in executable programs. //In Proceedings of the International Symposium on Requirements Engineering for Information Security (2001).
  3. Christodorescu M., Jha S., Seshia S.A., Song D., Bryant R.E. Semantics-aware malware detection. //In Proceedings of the 2005 IEEE Symposium on Security and Privacy, pages 32—46 (2005).
  4. Christodrescu M., Jha S. Static Analysis of Executables to Detect Malicious Patterns. //In Proceedings of the 12th USENIX Security Symposium, pages 169—186 (2003).
  5. Lakhotia A., Kumar E. U. Abstracting Stack to Detect Obfuscated Calls in Binaries. //In Proceedings of the Fourth IEEE International Workshop on Source Code Analysis and Manipulation (SCAM'04), pages17—26 (2004).
  6. Lakhotia A., Kumar E. U., Venable M. A Method for Detecting Obfuscated Calls in Malicious Binaries. //IEEE Transactions on Software Engineering,  Volume 31, Number 11, November 2005, pages 955—968.
  7. Linn C., Debray S. Obfuscation of Executable Code to Improve Resistance to Static Disassembly. //In Proceedings of the 10th ACM Conference on Computer and Communications Security (CCS), pages 290—299 (2003).
  8. Venable M., Chouchane M. R., Karim M. E., Lakhotia A. Analyzing Memory Accesses in Obfuscated x86 Executables. //In Proceedings of the Conference on Detection of Intrusions and Malware & Vulnerability Assessment (DIMVA), pages 1—18 (2005).

Эксперименты с моделями «простых» криптосистем


А.А.Горбунов1), К.Г.Кирьянов1), А.А.Новокрещенов2)

1)Нижегородский госуниверситет,
2)Нижегородский государственный технический университет

С помощью подхода, базирующегося на описании блоков шифратора и дешифратора криптосистем (КС) в виде q-уровневых линейных цифровых автоматов (ЛЦА) на языке ABCD-формализма [1], зачастую для целого ряда задач удается получить адекватную математическую модель (ММ), оставаясь при этом в рамках настоящих моделей простых систем. Суть указанного подхода заключается в том, что системы уравнений ЛЦА на языке ABCD-формализма для шифратора, канала связи без задержки и дешифратора представляются в виде:

. (1)

Здесь входным сигналом u(t) является открытый текст, сигналом y(t) = u*(t) – шифротекст, сигналом y*(t) – восстановленное сообщение; матрицы дешифратора однозначным образом определяются по имеющимся матрицам шифратора (если  D-1) по следующим формулам:

A* = [A-BD-1C], B* = [BD-1], C* = [-D-1C], D* = [D-1], x0* = x0 . (1a)

Подобным же образом можно учесть и наличие в канале связи задержки шифрованного сигнала на тактов. При этом блок канала связи, наряду с блоками шифратора и дешифратора, также представляется в виде дискретной динамической системы (ДДС), с выхода которой в течение первых тактов снимается нулевой сигнал, после чего – сигнал, тождественный входному, но задержанный во времени на отсчетов. Соотношения (1а) для построения ММ дешифратора по модели шифратора в ABCD-формализме в этом случае обобщаются (если  D-1 и  A*-1) следующим образом:

A* = [A-BD-1C], B* = [BD-1], C* = [-D-1C], D* = [D-1], x0* = (A*-1) x0 . (1б)

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

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

Проводилось тестирование ММ ряда КС, функционирующих в различных АС. В качестве примера далее приведены результаты моделирования в ABCD-формализме работы одной из возможных КС, функционирующей в АС GF(q=4), для которой величина задержки в канале связи выбрана равной = 5 тактам.

Модель шифратора КС представлена в виде ЛЦА с параметрами:

. (2)

В соответствии с формулами (1б) можно построить ММ дешифратора (т.к. D-1 и A* -1) со следующими параметрами ЛЦА:

. (3)

В качестве тестовых сообщения u1 и ключа u2 , подаваемых в на векторный вход шифратора соответственно взяты изученные ранее характерные участки генетического текста длиной M = 958.

. (4)

С выхода шифрующего ЛЦА снимается векторный шифротекст, который, после задержки по времени на 5 тактов в канале передачи данных, поступает на вход дешифратора:

. (5)

Блок дешифратора восстанавливает следующий текст:

. (6)

Соответствующие компоненты сигналов (4) и (6) идентичны с точностью до сдвига по времени, что говорит о корректном функционировании рассмотренной модели КС.
  1. Горбунов А.А., Кирьянов К.Г. Динамические модели криптосистем с закрытым ключом. Синтез дешифраторов. //Вестник ННГУ им. Н.И. Лобачевского. Серия «Радиофизика». Вып. 2. Н. Новгород: ННГУ, 2004, С.24