RU2728498C1 - Способ и система определения принадлежности программного обеспечения по его исходному коду - Google Patents
Способ и система определения принадлежности программного обеспечения по его исходному коду Download PDFInfo
- Publication number
- RU2728498C1 RU2728498C1 RU2019139630A RU2019139630A RU2728498C1 RU 2728498 C1 RU2728498 C1 RU 2728498C1 RU 2019139630 A RU2019139630 A RU 2019139630A RU 2019139630 A RU2019139630 A RU 2019139630A RU 2728498 C1 RU2728498 C1 RU 2728498C1
- Authority
- RU
- Russia
- Prior art keywords
- argument
- classifier
- source code
- patterns
- software
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении автоматической идентификации программного обеспечения (ПО) по его исходному коду. Способ определения принадлежности ПО к определенному семейству программ по его исходному коду, в котором получают файл, содержащий исходный код ПО; определяют платформу и язык программирования полученного исходного кода; извлекают и сохраняют код функций, присутствующих в полученном файле; удаляют из сохраненного кода функции, которые являются библиотечными; выделяют в каждой функции команды; выделяют в каждой команде пару «действие - аргумент»; преобразуют каждую пару «действие - аргумент» в число; сохраняют, отдельно для каждой выделенной функции, полученные упорядоченные последовательности чисел; накапливают заранее заданное количество результатов анализа исходного кода и выявляют в них повторяющиеся последовательности чисел (паттерны); для каждого выявленного паттерна вычисляют параметр, характеризующий его частотность; на основе вычисленного набора параметров обучают классификатор определять принадлежность ПО по последовательности пар «действие, аргумент»; применяют обученный классификатор для последующего определения принадлежности ПО к определенному семейству программ. 3 н. и 20 з.п. ф-лы, 11 ил.
Description
ОБЛАСТЬ ТЕХНИКИ
Данное техническое решение относится к области вычислительной техники, а именно к способам и системам определения принадлежности программного обеспечения (ПО) к известному семейству ПО, а также принадлежности ПО той или иной группе авторов ПО.
УРОВЕНЬ ТЕХНИКИ
Предлагаемый способ будет описан ниже на примере определения принадлежности некоторого вредоносного ПО к известному семейству вредоносных программ. Однако, данный способ может быть без ограничений использован применительно к любым программам, необязательно вредоносным. Кроме того, данный способ может быть без ограничений использован для атрибуции авторства, то есть установления факта принадлежности данного ПО известному автору или группе авторов ПО.
Известно, что профессиональные киберпреступники тщательно разрабатывают стратегию атаки и редко ее меняют, притом обычно они длительное время используют одни и те же вредоносные программы, лишь незначительно модифицируя их.
С другой стороны, разработчики вредоносного ПО (ВПО), создающие инструментарий для киберпреступников, могут на протяжении длительного времени использовать одно и то же программное решение, например, функцию, реализующую алгоритм шифрования, в различных образцах ВПО, притом создаваемого для разных киберпреступных группировок и относящихся к разным семействам ВПО.
Поэтому в области кибербезопасности знание о том, что данный образец вредоносного ПО (ВПО) принадлежит к определенному семейству ВПО, как и знание о том, что данный образец ВПО создан определенным автором или группой авторов, может быть весьма важно.
Хорошо известен такой метод обнаружения вредоносного ПО, как сигнатурный анализ. Этот метод основан на поиске в файлах уникальной последовательности байтов, то есть сигнатуры, которая характерна для данного конкретного вредоносного ПО. Для каждого нового образца ВПО специалисты антивирусной лаборатории выполняют анализ кода, на основании которого определяют сигнатуру этого нового ВПО. Полученную сигнатуру помещают в базу данных вирусных сигнатур, с которой работает антивирусная программа, и это впоследствии помогает антивирусу обнаруживать данное ВПО.
Данный метод хорошо известен и киберпреступникам. Поэтому почти все современные вредоносные программы так или иначе постоянно модифицируются, притом целью подобной модификации не является изменение основной функциональности ВПО. В результате модификации файлы очередной версии ВПО должны приобрести, с точки зрения антивирусных сигнатурных анализаторов, новые свойства. Тогда они перестанут "опознаваться" как вредоносные при помощи существующих баз сигнатур, что повысит скрытность действий киберпреступников.
Помимо модификации также широко используется прием, называемый обфускацией. Он представляет собой приведение исходного текста или исполняемого кода программы к виду, сохраняющему ее функциональность, но затрудняющему анализ и понимание алгоритмов работы. Перечисленные изменения ВПО могут осуществляться как человеком, так и автоматически, например, так называемым полиморфным генератором, входящим в состав вредоносной программы.
При этом важно, что основные функции ВПО, как правило, не подвергаются существенным изменениям. После модификации вредоносная программа будет "выглядеть" иначе для сигнатурных анализаторов, ее код может быть обфусцирован и непригоден для анализа человеком, но набор функций, который эта программа исполняла до модификации, с большой вероятностью после модификации останется прежним.
Из уровня техники известны разнообразные решения, позволяющие определять авторство тех или иных текстов: художественных, публицистических, научных. В качестве примеров могут быть названы:
• "Stylometric Autorship Attribution in Collaborative Documents", Dauber et al., материалы International Conference on Cyber Security Cryptography and Machine Learning (CSCML) 2017, стр. 115-135,
• "DECEPTION IN AUTHORSHIP ATTRIBUTION", S.Afroz, http://hdl.handle.net/1860/4431
• «Текстовый анализатор», Александр Гранин, https://habr.com/ru/post/114186/
• Программа «Определение авторства» компании NeoNeuro, https://neoneuro.com
Tools for Software Analysis and Forensic Engineering, S.A.F.E., https://www.safe-corp.com/index.htm Большинство подобных решений построено на принципах стилометрии, реализуемых при помощи тех или иных технических приемов. Однако, в тех случаях, когда речь заходит об авторстве программного кода, стилометрия, то есть исследование стилистики текста, не является оптимальным решением. Вне зависимости от языка программирования, на котором написан код, выявление авторского стиля в нем будет крайне затруднено в силу специфики предметной области. В тех же случаях, когда исходный код программы обфусцирован (а таких случаев в сфере кибербезопасности подавляющее большинство), использование стилометрических методов для анализа образцов ВПО бессмысленно.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В рамках настоящего описания, если это не оговорено непосредственно по месту применения, нижеперечисленные специальные термины используются в следующих значениях:
Платформа или компьютерная платформа - это среда, в которой должно исполняться исследуемое программное обеспечение. Платформа включает в себя как аппаратное обеспечение (например, оперативную память, жесткий диск), так и программное обеспечение (BIOS, операционную систему и т.д). Например, платформа Win32 API.
Обфускация или запутывание кода - это приведение исходного текста программы к виду, сохраняющему ее функциональность, но затрудняющему анализ, понимание алгоритмов работы.
Логгирование или журналирование - это автоматическая запись в хронологическом порядке действий, выполняемых программой, в специальный файл, который называют лог или отчет.
Устойчивые конструкции - это фрагменты кода, которые можно найти в самых разных программах. Такие конструкции встречаются не только в ПО какого-то определенного назначения или определенного автора, а практически повсеместно. В качестве примера устойчивых конструкций могут быть названы, например, прологи функций. Фреймворк - программная платформа, определяющая структуру программной системы; например, фреймворк Django.
Технической проблемой, на решение которой направлено заявленное техническое решение, является создание компьютерно-реализуемого способа и системы определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду, которые охарактеризованы в независимых пунктах формулы. Дополнительные варианты реализации настоящего изобретения представлены в зависимых пунктах изобретения.
Технический результат заключается в обеспечении автоматической идентификации программного обеспечения по его исходному коду.
В предпочтительном варианте реализации заявлен компьютерно-реализуемый способ определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду, заключающийся в выполнении этапов, на которых с помощью вычислительного устройства:
- получают файл, содержащий исходный код программного обеспечения;
- определяют платформу и язык программирования, на котором в полученном файле написан исходный код;
- извлекают и сохраняют код функций, присутствующих в полученном файле;
- удаляют из сохраненного кода функции, которые являются библиотечными;
- выделяют в каждой функции команды;
- выделяют в каждой команде пару «действие, аргумент»;
- преобразуют каждую пару «действие, аргумент» в число;
- сохраняют, отдельно для каждой выделенной функции, полученную последовательность чисел.
- накапливают заранее заданное количество результатов анализа исходного кода;
- анализируют накопленные данные, а именно выявляют повторяющиеся последовательности чисел (паттерны);
- для каждого выявленного паттерна вычисляют набор параметров, характеризующих его частотность;
- сохраняют заданное количество паттернов и на основе вычисленных для каждого паттерна набора параметров обучают по меньшей мере один классификатор определять принадлежность программного обеспечения по последовательности пар «действие, аргумент»;
- применяют обученный по меньшей мере один классификатор для последующего определения принадлежности программного обеспечения к определенному семейству программ.
В другом предпочтительном варианте реализации заявлен компьютерно-реализуемый способ определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду, заключающийся в выполнении этапов, на которых с помощью вычислительного устройства:
- получают файл, содержащий исходный код программного обеспечения;
- определяют платформу и язык программирования, на котором в полученном файле написан исходный код;
- запускают файл в изолированной среде, имеющей функцию логтирования;
- получают список обращений исполняющегося файла к фреймворку и платформе;
- выделяют в каждом обращении пару «действие, аргумент»;
- преобразуют каждую пару «действие, аргумент» в целое число;
- сохраняют полученную последовательность чисел.
- накапливают заранее заданное количество результатов анализа исходного кода;
- выявляют в результатах анализа исходного кода повторяющиеся последовательности чисел (паттерны);
- для каждого выявленного паттерна вычисляют параметр, характеризующий его частотность;
- сохраняют заданное количество паттернов и на основе вычисленных для каждого паттерна набора параметров обучают по меньшей мере один классификатор определять принадлежность программного обеспечения по последовательности пар «действие, аргумент»;
- применяют обученный по меньшей мере один классификатор для последующего определения принадлежности программного обеспечения к определенному семейству программ.
В частном варианте реализации способа после удаления библиотечных функций дополнительно удаляют из сохраненного кода устойчивые конструкции;
В другом частном варианте реализации способа дополнительно определяют принадлежность программы определенному, заранее известному разработчику программ или коллективу разработчиков программ.
В другом частном варианте реализации способа после обучения классификатора выбирают пороговое значение, превышение которого свидетельствует о принадлежности программы, исходный код которой подвергался анализу, тому семейству программ, на наборах данных которого был обучен классификатор.
В другом частном варианте реализации способа после обучения классификатора выбирают пороговое значение, превышение которого свидетельствует о принадлежности программы, исходный код которой подвергался анализу, тому разработчику или коллективу разработчиков программ, на наборах данных которого был обучен классификатор.
В другом частном варианте реализации способа обучают классификатор методом машинного обучения.
Еще в одном частном варианте реализации способа паттернам, содержащим по меньшей мере две строковые константы, дополнительно присваивают повышенный вес, величина которого задана заранее.
В другом частном варианте реализации способа паттернам, по меньшей мере на 80% состоящим из математических операций, дополнительно присваивают повышенный вес, величина которого задана заранее.
В другом частном варианте реализации способа паттернам, не содержащим ни строковых констант, ни математических операций, дополнительно присваивают пониженный вес, величина которого задана заранее.
Возможен также частный вариант реализации способа, характеризующийся тем, что повышенные и пониженные веса, присвоенные паттернам, учитывают при обучении классификатора таким образом, чтобы паттерны с повышенным весом оказывали пропорционально большее, а паттерны с пониженным весом пропорционально меньшее влияние на итоговое решение классификатора.
Заявленное решение также осуществляется за счет системы определения принадлежности программного обеспечения по его исходному коду, содержащей:
- долговременную память, выполненную с возможностью хранения базы данных;
- вычислительное устройство, выполненное с возможностью выполнения описанного способа.
В другом из возможных вариантов реализации заявленное решение является составной частью системы обеспечения кибернетической безопасности.
В другом из возможных вариантов реализации заявленное решение является составной частью системы сбора устойчивых индикаторов компрометации.
В другом из возможных вариантов реализации заявленное решение является составной частью системы автоматизированного определения авторства программного обеспечения.
В другом из возможных вариантов реализации заявленное решение является составной частью системы автоматизированного выявления плагиата.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
Реализация изобретения будет описана в дальнейшем в соответствии с прилагаемыми чертежами, которые представлены для пояснения сути изобретения и никоим образом не ограничивают область изобретения. К заявке прилагаются следующие чертежи:
Фиг. 1А-1Б иллюстрируют компьютерно-реализуемый способ определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду;
Фиг. 2А-2Е иллюстрируют различные этапы обработки исходного кода программного обеспечения, выполняемые в соответствии с описанным способом;
Фиг. 3 иллюстрирует этапы изготовления вспомогательной программы, используемой на одном из необязательных этапов обработки исходного кода.
Фиг. 4 иллюстрирует накопление данных для обучения классификатора, используемого для определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду;
Фиг. 5 иллюстрирует пример общей схемы компьютерного устройства.
ДЕТАЛЬНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В приведенном ниже подробном описании реализации изобретения приведены многочисленные детали реализации, призванные обеспечить отчетливое понимание настоящего изобретения. Однако, квалифицированному в предметной области специалисту, будет очевидно каким образом можно использовать настоящее изобретение, как с данными деталями реализации, так и без них. В других случаях хорошо известные методы, процедуры и компоненты не были описаны подробно, чтобы не затруднять излишне понимание особенностей настоящего изобретения.
Кроме того, из приведенного изложения будет ясно, что изобретение не ограничивается приведенной реализацией. Многочисленные возможные модификации, изменения, вариации и замены, сохраняющие суть и форму настоящего изобретения, будут очевидными для квалифицированных в предметной области специалистов.
Настоящее изобретение направлено на обеспечение компьютерно-реализуемого способа и системы определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду.
Как представлено на Фиг. 1, заявленный компьютерно-реализуемый способ определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду (100) реализован следующим образом:
На этапе (110) получают файл, содержащий исходный код программы, подлежащей анализу. Это может быть как файл, содержащий исходный код программы, например, файл с расширением *.срр или *.bas, так и проект в одной из современных "визуальных" сред разработки, таких как Visual Studio.
В том случае, если объект анализа состоит из множества взаимосвязанных файлов (например, представляет собой проект в одной из современных "визуальных" сред разработки), то для анализа по описываемому способу из множества файлов проекта отбирают только те файлы, которые содержат исходный код. Для проекта, созданного на языке программирования C/C++ это будут файлы с расширением *.срр, для проекта на языке ассемблера - файлы с расширением *.asm, и т.д. Отбор файлов может выполняться любым известным способом, например, скриптом, который копирует во входную папку системы, реализующей способ, все файлы проекта, имеющие заданное расширение. Последующий анализ этих файлов производят поочередно.
Далее на этапе (120) определяют платформу анализируемого файла и язык программирования, на котором написан анализируемый файл, и выбирают соответствующее средство анализа кода. Определение платформы и языка программирования может быть выполнено любым известным способом. Например, платформа может быть определена перебором, а язык программирования может быть определен, например, посредством программы Linguist (https://github.com/github/linguist) или посредством программы Ohcount (https://github.com/blackducksoftware/ohcount).
Так, например, на Фиг. 2А представлен фрагмент исходного кода 200. Определяя его платформу и язык программирования посредством программы Linguist, устанавливают, что данный исходный код написан для платформы Win32 на языке программирования JavaScript.
Дальнейший анализ файла выполняют заблаговременно подготовленной программой-парсером, алгоритм действия которой основан на синтаксисе того языка программирования, на котором написан исходный код в данном файле. В рассматриваемом примере используют программу-парсер, алгоритм которой основан на синтаксисе JavaScript.
Как показано на Фиг. 1А, на этапе (130) из исходного кода извлекают и сохраняют в виде списка функции. Функцией в данном описании будем называть фрагмент программного кода, к которому можно обратиться из другого места программы. В большинстве случаев с функцией связывается идентификатор, но многие языки допускают и безымянные функции. С именем функции неразрывно связан адрес первой инструкции (оператора), входящей в функцию, которой передается управление при обращении к функции. После выполнения функции управление возвращается обратно в адрес возврата, то есть ту точку программы, где данная функция была вызвана.
Парсером находят в анализируемом исходном коде границы, фрагменты кода внутри которых являются функциями. Для этого может использоваться, например, тот общеизвестный факт, что в большинстве языков программирования высокого уровня тело функции заключается в блочный оператор. Соответственно, одним из возможных алгоритмов работы парсера может быть выявление в коде пар слов или символов, которыми в синтаксисе данного языка обозначается блочный оператор, дополнительная проверка того факта, что найденный блочный оператор содержит именно тело функции, а также перемещение кода, составляющего тела найденной функции, в файл, где сохраняют результаты обработки. Проверка того факта, что блочный оператор содержит именно тело функции может выполняться, например, путем поиска на строке, предшествующей открытию блочного оператора, символьного выражения, соответствующего в синтаксисе данного языка программирования имени функции.
Альтернативно, если исходный код написан на С-подобном языке программирования, например, на JavaScript, то каждая функция будет начинаться с заголовка функции, имеющего известный формат. Например, в коде 200, написанном на JavaScript, как показано на Фиг. 2А, заголовок функции может быть идентифицирован по наличию ключевого слова function (210), (220), (230), (240). За заголовком в таком коде будет следовать тело функции, также заключенное в блочный оператор, в данном случае обозначаемый парой фигурных скобок: {и}. Например, на Фиг. 2А блочный оператор образуют фигурные скобки (212) и (214), (222) и (224), (232) и (234). В таком случае парсером обнаруживают заголовки функций, после чего весь код, находящийся между открывающей фигурной скобкой, следующей непосредственно после заголовка, и соответствующей ей закрывающей фигурной скобкой, переносят в список функций. Сформированный таким образом список (250) показан на Фиг. 2Б; список в данном примере содержит фрагменты кода трех функций (251), (252), (252).
Действия над исходным кодом, оставшимся за пределами блочных операторов (то есть границ функций), выполняют в зависимости от того, позволяет ли синтаксис данного языка программирования исполнение кода за пределами функций. Например, для исходного кода, написанного на языке С или С#, такой код игнорируют. В рассматриваемом примере, для кода, написанного на языке JavaScript, такой код считают относящимся еще к одной функции, отдельной от всех уже выделенных. Код этой «главной функции» также переносят в список функций и в дальнейшем обрабатывают аналогично всему остальному коду, помещенному в этот список. Таким образом на этапе (130) получают и сохраняют в виде отдельного файла код всех функций, имеющихся в анализируемом файле.
Затем, как показано на Фиг. 1А, на этапе (140) анализируют файл, содержащий фрагменты кода функций. При помощи сигнатурного анализа из списка исключают те функции, которые относятся к библиотечным. Библиотечные функции представляют собой стандартный инструментарий. Они широко используются самыми разными программами, поэтому их наличие в исходном коде или в рабочих процессах не специфично ни для какой-то одной определенной программы, ни для какого-то определенного разработчика. Исключение библиотечных функций в описываемом методе позволяет существенно упростить анализ и в то же время получить более качественный результат обучения за счет того, что решающие правила будут обучаться именно на тех командах, которые наилучшим образом характеризуют конкретную анализируемую программу.
Сигнатурный анализ и удаление библиотечных функций выполняют вспомогательной программой-скриптом. Алгоритм этого скрипта может представлять собой, например, поочередное сравнение каждой из функций с подготовленным заранее набором сигнатур (регулярных выражений). Каждая из этих сигнатур соответствует определенной, заранее описанной в виде сигнатуры библиотечной функции; при обнаружении функции, соответствующей какой-либо сигнатуре, весь код, составляющий тело и заголовок такой функции, исключают. Так, в рассматриваемом примере, из кода функций (250), показанного на Фиг. 2Б, будет исключен код библиотечной функции (252). По завершении обработки скриптом файл, содержащий оставшиеся функции, сохраняют и таким образом получают текст кода функций, присутствующих в анализируемом файле, и притом не являющихся библиотечными. В описываемом примере такой текст (260) показан на Фиг 2 В.
Затем, как показано на Фиг. 1А, на этапе (150) анализируют файл, полученный на предыдущем этапе, и выделяют внутри каждой функции команды, а внутри каждой команды - действие и, возможно, аргумент. Притом в одном из возможных вариантов реализации описываемого способа строки, состоящие из одного, двух или трех символов на данном этапе исключаются и в дальнейшей обработке не участвуют.
Что именно считают отдельной командой, зависит от синтаксиса языка программирования, на котором написан исследуемый код. Так, в одном из возможных вариантов реализации началом команды может считаться начало строки, а окончанием - ближайший к началу строки символ, означающий в данном языке программирования окончание команды, как, например, символ «точка с запятой» (;) в языке С. В альтернативном варианте реализации способа командой могут считать последовательность символов, расположенную на отдельной строке. Так, например, в тексте (270), показанном на Фиг. 2Г, командами считают строки (271), (272), (273), (274), (275), (276).
Идентификацию соответствующего каждой команде действия и обнаружение аргумента, если таковой присутствует, выполняют заблаговременно подготовленной программой-парсером, алгоритм действия которой основан на том факте, что набор возможных действий в данном языке программирования кодируется заранее известным набором символов.
Программа-парсер последовательно перебирает строки кода и сравнивает набор символов, расположенный на каждой строке, с набором заранее подготовленных регулярных выражений, соответствующих действиям, возможным в данном языке программирования. В том случае, если ни одно из регулярных выражений не соответствует символам анализируемой строки, такая строка игнорируется. В том случае, если соответствие строки какому-либо известному действию обнаружено, программа-парсер определяет наличие в строке аргумента, соответствующего данному действию, а также значение этого аргумента.
То, какой вид может иметь аргумент обнаруженного действия (десятичное число, символьная строка в кавычках и и.д.), также определяется синтаксисом языка программирования и выявляется при помощи соответствующего обнаруженному действию регулярного выражения. Каждую найденную пару "действие - аргумент" сохраняют в файле с результатами. В том случае, если обнаружено некоторое действие, а соответствующий ему аргумент отсутствует или имеет неподходящий формат, в результаты помещают пару "действие - аргумент", где аргумент имеет нулевое значение. Например, в тексте (280), показанном на Фиг. 2Д, в результате выполнения описанных действий находят пары "действие - аргумент" (281) - (282), (283) - (284), (285) - (286), (287) - (288), а также пару "действие - аргумент" с нулевым аргументом (289). При этом ненулевой аргумент может состоять более чем из одного значения, как, например, аргументы (282), (286) и (288).
Затем, как показано на Фиг. 1А, на этапе (160) производят преобразование полученных на предыдущем этапе пар "действие - аргумент" в одно численное значение и сохраняют, отдельно для каждой выделенной ранее функции, получившиеся последовательности чисел. Эти числа могут быть как десятичными, так и шестнадцатиричными, двоичными и т.д.
Преобразование может быть выполнено различным образом, например, взятием одной хэш-функции от действия, а второй хэш-функции - от аргумента. Затем полученный таким образом числа, соответствующие действию и аргументу, подвергают операции конкатенации, получая таким образом одно число. В тех случаях, когда аргумент состоит из более чем одного значения, хэш-функция может быть взята от строки, представляющей собой конкатенированные строки всех значений, составляющих аргумент.
Например, в ходе описанного преобразования в составе функции (251), показанной на Фиг. 2Б, будут, как это показано на Фиг. 2Г, выделены команды (271), (272), (273), (274), (275), а в составе функции (253) - команда (276). Затем, как показано на Фиг. 2Д, в команде (271) будут найдены действие (281) и аргумент (282), в команде (272) - действие (283) и аргумент (284), в команде (273) - действие (285) и аргумент (286), в команде (274) - действие (287) и аргумент (288). В составе команды (276) выделено действие (289) и нулевой аргумент.
В ходе дальнейшего преобразования команда (271), например, будет преобразована в шестнадцатеричное число
C21812f4d00522bd21c014228f948063b18de4875ffe533b830ff18a0326348a9160afafc8ada44db,
где C21812f4d00522bd21c014228f948063b18de487 является результатом взятия хэш-функции от действия (281), a 5ffe533b830ro8a0326348a9160afafc8ada44db - результатом взятия хэш-функции от аргумента (282). Аналогично, команда (272) окажется преобразована в шестнадцатеричное число
70233cdf6b130df09a0fd4fd84ro56e08b1cf51636c6f169e67d0cro2fc3433b2112402804d9a6a3, команда (273) в шестнадцатеричное число
eef70649fc977965dabbe7516c55f7951a40ca1513be4d3d8b43d0d4ecf268ff7c16fa7944139e99, команда (274) в шестнадцатеричное число
eef70649fc977965dabbe7516c55f7951a40ca1591c305309bf156bb2da46a2fed619951c852dd45, а команда (276) - в шестнадцатеричное число
bd4ee045946f5de9bba8059a9304ae5539d6730d0b6589fc6ab0dc82cf12099d1c2d40ab994e8410c.
В альтернативном варианте реализации данного способа преобразование пар «действие - аргумент» в пары чисел может выполняться сложнее. Например, перед хэшированием может проводиться сериализация, что позволит дополнительно сохранять информацию о типе исходных данных. В этом примере величина, подвергаемая хэшированию, представляет собой строку, первый байт которой кодирует тип данных аргумента (указывает, строка ли это, целое число, число в представлении с плавающей точкой или ноль, т.е. отсутствующий аргумент), второй байт хранит информацию об общей длине строки аргумента, затем следует собственно строка аргумента, преобразованная в ASCII-код. Альтернативно или дополнительно, аналогичным образом перед хэшированием может быть преобразовано действие. В рассматриваемом примере, действие (285) будет сначала в результате сериализации преобразовано в строку вида 033E534f4654574152455c5c4d6963726f736f66745c5c57696e646f77735c5c43757272656e7456657273696f6e5c5c506f6c69636965735c5c53797374656d, затем, в результате хэширования, в число cc3c144bb04455bdaabcd9e199b1cdc9c5ed3d93b37b0b533f5c9b18a4137bbd. Обработанный аналогичным образом аргумент (286) после хэширования приобретет вид числа ffa1ace8dba62cdbd33d8c09ad07e46ccb0da176eeaf4cc67b4860c7d2bb531b.
Таким образом, из исходного кода анализируемого образца ПО получают упорядоченные последовательности чисел. Поскольку анализ включал в себя разбиение кода на функции, числа, полученные в результате описанных преобразований, оказываются сгруппированы по принадлежности к определенной функции.
Таким образом, для функции (251) будет сохранена последовательность четырех чисел
c21812f4d00522bd21c014228f948063b18de4875ffe533b830f08a0326348a9160afafc8ada44db,
70233cdf6b130da9a0fd4fd84f056e08b1cf51636c6f169e67d0cf02fc3433b2112402804d9a6a3,
eef70649fc977965dabbe7516c55f7951a40ca1513be4d3d8b43d0d4ecf268ff7c16fa7944139e99,
eef70649fc977965dabbe7516c55f7951a40ca1591c305309bf156bb2da46a2fed619951c852dd45,
а для функции (253) - последовательность, состоящая из одного числа
bd4ee045946f5de9bba8059a9304ae5539d6730d0b6589fc6ab0dc82cf12099d1c2d40ab994e8410c.
Последовательностью далее в рамках данного описания будем называть множество чисел, полученных в ходе анализа одной функции, подобно приведенному выше примеру.
В дальнейшем для простоты будем обозначать числа каждой последовательности как Pij, где различное значение i указывает на порядковый номер функции F, в которой была выявлена данная пара "действие - аргумент", а значение j указывает на порядковый номер данной пары "действие - аргумент" внутри той функции, в которой эта пара была обнаружена.
Понятно, что исходный код большинства современных программ содержит значительное количество функций. Поэтому в результате вышеописанной обработки анализируемый образец ВПО окажется преобразован в набор из n строк следующего вида (n - общее количество не библиотечных функций, обнаруженных в ходе анализа):
Индексы a, b, с в данном случае указывают на тот факт, что в разных функциях в общем случае будет различное количество чисел (т.е. пар "действие - аргумент").
Как это показано на Фиг. 1А, на следующем этапе (170) анализируют данные, полученные в ходе вышеописанного анализа исходного кода программы, принадлежность которой неизвестна. Все эти данные, преобразованные к виду (1), подаются на входы классификаторов, предварительно обученных на ВПО различных семейств или авторов.
Решение каждого классификатора представляет собой численную оценку вероятности того, что анализируемый образец ВПО принадлежит к тому семейству ВПО или той группе авторов, на массиве данных которого или которой был обучен классификатор. Эти решения постоянно обновляются, т.е. пересматривается при поступлении каждой порции данных вида (1).
Решения классификаторов могут накапливаться, либо обрабатываться любым другим общеизвестным образом. Но в любом случае, на заключительном этапе (180) исследуемое ВПО относят к тому семейству ВПО или той группе авторов, классификаторы которого или которой выдают наибольшее значение уверенности.
Разработчики ПО зачастую прибегают к такому приему как обфускация, делая анализ исходного кода программы затруднительным или невозможным. В ряде случаев в ходе анализа обфусцированного кода удается определить, какая именно методика обфускация была использована. В таких случах задействуют соответствующий деобфускатор, то есть заранее подготовленную программу, предназначенную для восстановления исходного вида кода, обфусцированного по некоторой конкретной методике.
Однако, возможны ситуации, когда определить конкретную методику обфускации не удается. В таких случаях может быть задействован альтернативная разновидность заявленного компьютерно-реализуемого способа определения принадлежности программного обеспечения по его исходному коду (101), показанная на Фиг. 1Б. Он может быть реализован следующим образом:
На этапе (111) получают файл, содержащий исходный код программы, подлежащей анализу. Это может быть выполнено полностью аналогично этапу (110) описанному применительно к Фиг. 1А.
Далее на этапе (121) определяют платформу анализируемого файла и язык программирования, на котором написан анализируемый файл, и выбирают соответствующее средство анализа кода. Это может быть выполнено полностью аналогично этапу (120) описанному применительно к Фиг. 1А.
Как показано на Фиг. 1Б, на этапе (131) запускают файл, содержащий анализируемый исходный код в среде, предоставляющей возможность логгирования (журналирования). Понятно, что данная операция, как и вся разновидность описываемого способа, показанная на Фиг. 1Б, может быть применима только к файлам, содержащим исходный код на одном из интерпретируемых языков программирования. К интерпретируемым языкам программирования относят, например, Python, Perl, PHP, Ruby, JavaScript и некоторые другие языки. На данном этапе для запуска файла может быть использована любая известная среда, имеющая функцию логгирования (журналирования). Например, для скриптов, написанных на Powershell, могут использоваться встроенные средства журналирования операционной системы Windows 10; альтернативно может быть использована специализированная библиотека журналирования Log4j.
В результате исполнения файла, содержащего анализируемый исходный код, в среде, предоставляющей возможность логгирования, на этапе (141) получают список обращений исполняющегося файла к фреймворку и к платформе. Примером обращения к фреймворку может служить вызов СОМ-объекта или управляющего элемента ActiveX. Примером обращения к платформе может служить вызов программного прерывания или системной функции. Полученный список обращений сохраняют, например, в виде текстового файла.
На Фиг. 2Е в качестве примера показан фрагмент списка обращений (290) файла к фреймворку и платформе. Он содержит два обращения, обращение (291) и обращение (296).
На последующем этапе (151) выделяют в списке обращений отдельные обращения, а в каждом обращении - действие и аргумент. Для выделения отдельного обращения из общего списка обращений может быть использован тот факт, что все записи, создаваемые одним средством логгирования в одном сеансе работы, как правило, имеют идентичный, заранее известный формат. Так, например, на Фиг. 2Е каждое обращение содержит следующие элементы: порядковый номер записи (292) и (297), имя вызванной функции (293) или (298), статус вызова (294), аргумент (295) и (299). Поэтому в данном примере отдельным обращением может считаться каждая последовательность символов, расположенная между двумя соседними номерами, например, последовательность (291) расположена между номерами (292) и (297), и так далее. Для выполнения описанных действий используют заранее подготовленную программу-парсер, которая создана с учетом заранее известного формата записей, создаваемых используемым средством логгирования.
Посредством этой же программы-парсера на этапе (151) в каждом из обращений (291), (296), находят действия, то есть имена функций (293), (298) и значения аргументов (295), (299). Каждую найденную пару "действие - аргумент" сохраняют в файле с результатами. В том случае, если обнаружено некоторое действие, а соответствующий ему аргумент отсутствует или имеет неподходящий формат, в результаты помещают пару "действие - аргумент", где аргумент имеет нулевое значение.
Затем, как показано на Фиг. 1Б, на этапе (161) производят преобразование полученных на предыдущем этапе пар "действие - аргумент" в одно численное значение и сохраняют, отдельно для каждой выделенной ранее функции, получившиеся последовательности чисел. Преобразование может быть выполнено аналогично описанному выше применительно к шагу (160) и Фиг. 1А.
В рассматриваемом примере действие (293) с аргументом (295) может быть преобразовано в шестнадцатеричное число
00b66f89be96d7fa40e584d7eb9728f9b43e29d241d0544c3f658c6b193d81f7e5e7201d0c02ef3a,
где 00b66f89be96d7fa40e584d7eb9728f9b43e29d2 является результатом взятия хэш-функции от действия (293), a 41d0544c3f658c6b193d81f7e5e7201d0c02ef3a - результатом взятия хэш-функции от аргумента (295). Аналогично, действие (295) с аргументом (299) может быть преобразовано в шестнадцатеричное число
18ede0448e4ad01e04175beb0c5216977ddf8b74a94d5f2d650020e4467fa02e979c295ab252f415.
Аналогично описанному выше применительно к шагу (160), возможны и более сложные преобразования действий и аргументов в числа, например, преобразования, включающие сериализацию и т.д.
На следующем этапе (171) все полученные данные, преобразованные к виду (1), подаются на входы классификаторов, предварительно обученных на ВПО различных семейств или авторов.
Решение каждого классификатора представляет собой численную оценку вероятности того, что анализируемый образец ВПО принадлежит к тому семейству ВПО или той группе авторов, на массиве данных которого или которой был обучен классификатор. Эти решения постоянно обновляются, т.е. пересматривается при поступлении каждой порции данных вида (1).
Решения классификаторов могут накапливаться, либо обрабатываться любым другим общеизвестным образом. Но в любом случае, на заключительном этапе (181) исследуемое ВПО относят к тому семейству ВПО или той группе авторов, классификаторы которого или которой выдают наибольшее значение уверенности.
В некоторых возможных вариантах реализации способа после завершения этапов (140) на Фиг. 1А и (141) на Фиг. 1Б может быть выполнен еще один, не показанный на Фиг. 1А и Фиг. 1Б, этап обработки.
На этом этапе удаляют устойчивые конструкции, то есть фрагменты кода, которые одинаково часто встречаются в любых программах. Устойчивыми конструкциями являются, например, прологи функций. Удаление устойчивых конструкций выполняют посредством заблаговременно изготовленной программы.
Такая программа может быть изготовлена для каждого распространенного языка программирования (например, С\С++, JavaScript, Common Lisp и т.д.). Изготовление названной программы (300) может быть выполнено, как это показано на Фиг. 3, следующим образом.
На этапе (310) отбирают достаточное количество, например, 100, экземпляров кода программ, заведомо различных по функциональности и по принадлежности определенным коллективам разработчиков.
На следующем этапе (320) обрабатывают отобранный массив кода алгоритмом, который выявляет повторяющиеся последовательности символов и подсчитывает количество вхождений данной последовательности символов в массиве кода. При этом задают минимальную длину последовательности, например, равной 20 символам, а максимальную длину последовательности не ограничивают. Описанный алгоритм возвращает список найденных повторяющихся последовательностей символов, где каждой последовательности поставлено в соответствие количество ее вхождений в массиве кода.
Затем на этапе (330) из списка устойчивых последовательностей, возвращенного алгоритмом, отбирают наиболее частотные последовательности. Например, отбирают те последовательности, которые встречаются минимум один раз в каждой программе, т.е. в данном примере, такие, которые встретились 100 раз или больше.
На следующем этапе (340) создают программу, которая будет удалять из анализируемого кода наиболее частотные последовательности, отобранные на предыдущем этапе.
Таким образом получают программу, способную обрабатывать произвольные фрагменты кода, удаляя из них те последовательности символов, которые включены в "список удаления" как часто встречающиеся в разных программах.
После обработки такой программой получают файл, в котором из функций, реализованных в анализируемом экземпляре ВПО, удалены устойчивые конструкции, то есть такие фрагменты кода, которые достаточно часто встречаются в любых, произвольно выбранных программах. По окончании данного этапа переходят к показанному на Фиг. 1А этапу (150) или к показанному на Фиг. 1Б этапу (151), дальнейшие шаги аналогичны описанным выше.
Фиг. 4 иллюстрирует один из возможных способов обучения (400) классификаторов, используемых на этапах (170) в соответствии с Фиг. 1А и (171) в соответствии с Фиг. 1Б.
На этапе (410) получают очередной файл, содержащий исходный код программы. Общее количество таких файлов с исходным кодом определяют заранее. Например, для целей обучения могут быть отобраны по 30-70 файлов с исходным кодом для каждого семейства программ, принадлежность к которому необходимо научиться определять. Альтернативно, могут быть отобраны по 20-30 файлов с исходным кодом, авторство которого априори известно. Анализ отобранных файлов производят поочередно.
На этапе (420) определяют платформу и язык программирования, на котором написан анализируемый файл, и выбирают соответствующее средство анализа кода. Определение платформы и языка программирования может быть выполнено любым известным способом, например, как это было описано выше применительно к шагу (120) на Фиг. 1А.
Дальнейший анализ файла выполняют на этапе (430) заблаговременно подготовленной программой-парсером, алгоритм действия которой основан на синтаксисе того языка программирования, на котором написан исходный код в данном файле. На этапе (430) из исходного кода извлекают и сохраняют в виде списка функции. Это может быть сделано аналогично тому, как описано выше применительно к шагу (130) на Фиг. 1А.
На следующем этапе (440) из списка исключают те функции, которые относятся к библиотечным. Аналогично описанному выше применительно к шагу (140) на Фиг. 1А, удаление библиотечных функций выполняют вспомогательной программой-скриптом.
В некоторых возможных вариантах реализации способа после завершения этапа (440) может быть выполнен дополнительный этап обработки, не показанный на Фиг. 4, на котором из оставшегося кода функций удаляют устойчивые конструкции. Удаление устойчивых конструкций выполняют посредством программы, заблаговременно изготовленной для данного языка программирования, как это было показано выше применительно к Фиг. 3.
Затем на этапе (450) выделяют внутри каждой функции команды, а внутри каждой команды - действие и, возможно, аргумент. Это выполняют заблаговременно подготовленной программой-парсером аналогично тому, как было описано выше применительно к шагу (150) на Фиг. 1.
Затем, как показано на Фиг. 4, на этапе (460) производят преобразование полученных на предыдущем этапе пар "действие - аргумент" в одно численное значение. Это выполняют аналогично описанному выше этапу (160) на Фиг. 1. Наконец, на этапе (470) полученные последовательности сохраняют, отдельно для каждой функции, выделенной на этапе (430).
На этапе (480) проверяют, достигнут ли конец множества файлов с исходным кодом, отобранных для обучения. Если нет, возвращаются к шагу (410). Таким образом система, реализующая способ, накапливает данные. В результате получают массив данных, сохраненных в файлах, где данные, полученные в ходе анализа каждой программы, имеют вид (1). Притом все программы, исходный код которых был проанализирован, принадлежат к одному, заранее известному семейству программ, либо, альтернативно, к одному автору или коллективу авторов программ.
Когда общее количество данных для данного семейства ПО или данной группы авторов превышает заранее заданный порог, массив данных на шаге (485) анализируют, выявляя паттерны. Этим термином в данном случае будем называть повторяющуюся последовательность чисел Pij, или, что то же самое, повторяющиеся последовательности команд, характерных для данного семейства ПО или группы авторов.
Длина паттерна, т.е. какое именно количество чисел, расположенных последовательно, будет считаться паттерном, выбирается заранее. В одном варианте реализации данного способа длина паттерна может быть задана интервалом, например, длина паттерна может быть от 4 до 10 или, альтернативно, от 60 до 80. В другом возможном варианте реализации длина паттерна может быть заранее задана фиксированной величиной, например, 40.
Еще в одном возможном варианте реализации длина паттерна может выбираться автоматически в зависимости от количества паттернов, выявляемых для данного массива данных (данного семейства программ). В этом варианте поиск паттернов начинается, например, при заданной длине 8. Если и когда количество выявленных паттернов превышает установленный при настройке системы порог (например, их найдено более 100), длину паттерна увеличивают на единицу и повторяют поиск, отбросив ранее найденные короткие паттерны. Такой цикл выполняется до тех пор, пока не будет найдено меньшее пороговой величины количество паттернов, имеющих максимально возможную длину.
Возможен такой вариант реализации, при котором на данном шаге также проводится предварительная модификация некоторых найденных паттернов. В ходе модификации некоторым паттернам присваивают дополнительные априорные веса, связанные со смыслом соответствующих команд.
Говоря о весе паттерна, в данном случае подразумеваем некое наперед заданное число, ассоциированное с данным паттерном и хранящееся в системе, реализующей описываемый способ.
Например, паттернам, на 80% состоящим из команд с математическими операциями, может быть присвоен повышенный вес, например, в 2 раза превышающий вес других паттернов, а паттернам, содержащим свыше 2 строковых констант, может быть присвоен повышенный вес, например, в 3 раза превышающий вес других паттернов. Подобный вес может присваиваться любым паттернам, удовлетворяющим заданным условиям, вне зависимости от того, в данных какого именно образца ПО найдены данные паттерны.
Аналогично, паттернам, вообще не содержащим ни команд с математическими операциями, ни строковых констант, может быть присвоен пониженный вес, например, в 0.3 от веса немодифицированных паттернов.
Для каждого выявленного паттерна вычисляется частотность. Ее значение вычисляется на основании того же массива данных. Это численная величина, показывающая, насколько часто данный паттерн встречается в исходном коде программ данного семейства, т.е. насколько часто в программах изучаемого семейства встречается такой набор команд. Частотность равна отношению количества вхождений данного паттерна L к общему количеству программ, относящихся к данному семейству программ. Этот параметр может быть, как меньше единицы, если паттерн встречается не в каждой программе, так и больше, если паттерн в среднем встречается несколько раз на протяжении каждой программы.
Найденные паттерны и вычисленные для каждого из них значения частотности сохраняют, образуя коллекцию паттернов.
Затем для каждого семейства программ, используя его коллекцию паттернов, на шаге (490) обучают экспертную систему (классификатор). Техническая реализация классификатора может быть любой общеизвестной; он может быть реализован, например, как графовая вероятностная модель (Random Forest) или как SVM-классификатор.
Если каким-то паттернам при составлении коллекции паттернов были присвоены повышенные и\или пониженные веса, то эти веса могут учитываться при выборе или обучении классификатора таким образом, чтобы соответствующие паттерны оказывали пропорционально большее или меньшее влияние на итоговое решение. Аналогичным образом, в роли повышающего или понижающего коэффициента, на данном этапе может использоваться также частотность.
Ниже приведены дополнительные варианты реализации настоящего изобретения.
В частном варианте реализации способа после обучения классификатора выбирают пороговое значение, превышение которого свидетельствует о принадлежности программы, исходный код которой подвергался анализу, тому семейству программ, на наборах данных которого был обучен классификатор.
В другом частном варианте реализации способа после обучения классификатора выбирают пороговое значение, превышение которого свидетельствует о принадлежности программы, исходный код которой подвергался анализу, тому разработчику или коллективу разработчиков программ, на наборах данных которого был обучен классификатор.
В другом частном варианте реализации способа обучают классификатор методом машинного обучения.
Еще в одном частном варианте реализации способа что паттернам, содержащим по меньшей мере две строковые константы, дополнительно присваивают повышенный вес, величина которого задана заранее.
В другом частном варианте реализации способа паттернам, по меньшей мере на 80% состоящим из математических операций, дополнительно присваивают повышенный вес, величина которого задана заранее.
В другом частном варианте реализации способа паттернам, не содержащим ни строковых констант, ни математических операций, дополнительно присваивают пониженный вес, величина которого задана заранее.
В другом частном варианте реализации способа повышенные и пониженные веса, присвоенные паттернам, учитывают при обучении классификатора таким образом, чтобы паттерны с повышенным весом оказывали пропорционально большее, а паттерны с пониженным весом пропорционально меньшее влияние на итоговое решение классификатора.
Заявленное решение также осуществляется за счет системы определения принадлежности программного обеспечения по его исходному коду, содержащей:
- долговременную память, выполненную с возможностью хранения базы данных;
- вычислительное устройство, выполненное с возможностью выполнения описанного способа.
В другом из возможных вариантов реализации заявленное решение является составной частью системы обеспечения кибернетической безопасности.
В другом из возможных вариантов реализации заявленное решение является составной частью системы сбора устойчивых индикаторов компрометации.
В другом из возможных вариантов реализации заявленное решение является составной частью системы автоматизированного определения авторства программного обеспечения.
В другом из возможных вариантов реализации заявленное решение является составной частью системы автоматизированного выявления плагиата.
На Фиг. 5 далее будет представлена общая схема компьютерного устройства (500), обеспечивающего обработку данных, необходимую для реализации заявленного решения.
В общем случае устройство (500) содержит такие компоненты, как: один или более процессоров (501), по меньшей мере одну память (502), средство хранения данных (503), интерфейсы ввода/вывода (504), средство В/В (505), средства сетевого взаимодействия (506).
Процессор (501) устройства выполняет основные вычислительные операции, необходимые для функционирования устройства (500) или функциональности одного или более его компонентов. Процессор (501) исполняет необходимые машиночитаемые команды, содержащиеся в оперативной памяти (502).
Память (502), как правило, выполнена в виде ОЗУ и содержит необходимую программную логику, обеспечивающую требуемый функционал.
Средство хранения данных (503) может выполняться в виде HDD, SSD дисков, рейд массива, сетевого хранилища, флэш-памяти, оптических накопителей информации (CD, DVD, MD, Blue-Ray дисков) и т.п. Средство (503) позволяет выполнять долгосрочное хранение различного вида информации, например, вышеупомянутых файлов с исходным кодом, с наборами промежуточных данных, с вычисленными последовательностями и т.п.
Интерфейсы (504) представляют собой стандартные средства для подключения и работы с серверной частью, например, USB, RS232, RJ45, LPT, COM, HDMI, PS/2, Lightning, FireWire и т.п.
Выбор интерфейсов (504) зависит от конкретного исполнения устройства (500), которое может представлять собой персональный компьютер, мейнфрейм, сервер, серверный кластер, тонкий клиент, смартфон, ноутбук и т.п.
В качестве средств В/В данных (505) может использоваться клавиатура. Аппаратное исполнение клавиатуры может быть любым известным: это может быть, как встроенная клавиатура, используемая на ноутбуке или нетбуке, так и обособленное устройство, подключенное к настольному компьютеру, серверу или иному компьютерному устройству. Подключение при этом может быть, как проводным, при котором соединительный кабель клавиатуры подключен к порту PS/2 или USB, расположенному на системном блоке настольного компьютера, так и беспроводным, при котором клавиатура осуществляет обмен данными по каналу беспроводной связи, например, радиоканалу, с базовой станцией, которая, в свою очередь, непосредственно подключена к системному блоку, например, к одному из USB-портов. Помимо клавиатуры, в составе средств В/В данных также может использоваться: джойстик, дисплей (сенсорный дисплей), проектор, тачпад, манипулятор мышь, трекбол, световое перо, динамики, микрофон и т.п.
Средства сетевого взаимодействия (506) выбираются из устройства, обеспечивающий сетевой прием и передачу данных, например, Ethernet карту, WLAN/Wi-Fi модуль, Bluetooth модуль, BLE модуль, NFC модуль, IrDa, RFID модуль, GSM модем и т.п.С помощью средств (505) обеспечивается организация обмена данными по проводному или беспроводному каналу передачи данных, например, WAN, PAN, ЛВС (LAN), Интранет, Интернет, WLAN, WMAN или GSM.
Компоненты устройства (500) сопряжены посредством общей шины передачи данных (510).
В настоящих материалах заявки было представлено предпочтительное раскрытие осуществление заявленного технического решения, которое не должно использоваться как ограничивающее иные, частные воплощения его реализации, которые не выходят за рамки испрашиваемого объема правовой охраны и являются очевидными для специалистов в соответствующей области техники.
Claims (50)
1. Способ определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду, заключающийся в выполнении этапов, на которых с помощью вычислительного устройства:
- получают файл, содержащий исходный код программного обеспечения;
- определяют платформу и язык программирования, на котором в полученном файле написан исходный код;
- извлекают и сохраняют код функций, присутствующих в полученном файле;
- удаляют из сохраненного кода функции, которые являются библиотечными;
- выделяют в каждой функции команды;
- выделяют в каждой команде пару «действие - аргумент»;
- преобразуют каждую пару «действие - аргумент» в число;
- сохраняют, отдельно для каждой выделенной функции, полученные упорядоченные последовательности чисел;
- накапливают заранее заданное количество результатов анализа исходного кода;
- выявляют в результатах анализа исходного кода повторяющиеся последовательности чисел (паттерны);
- для каждого выявленного паттерна вычисляют параметр, характеризующий его частотность;
- сохраняют заданное количество паттернов и на основе вычисленных для каждого паттерна набора параметров обучают по меньшей мере один классификатор определять принадлежность программного обеспечения по последовательности пар «действие, аргумент»;
- применяют обученный по меньшей мере один классификатор для последующего определения принадлежности программного обеспечения к определенному семейству программ.
2. Способ по п. 1, в котором преобразование пары «действие - аргумент» может быть выполнено различным образом: взятием хэш-функции от действия, а второй хэш-функции - от аргумента; если аргумент состоит из более чем одного значения, хэш-функция может быть взята от строки, представляющей собой конкатенированные строки всех значений, составляющих аргумент, причем дополнительно перед хэшированием может проводиться сериализация.
3. Способ по п. 1, в котором после удаления библиотечных функций дополнительно удаляют из сохраненного кода устойчивые конструкции.
4. Способ по п. 1, в котором дополнительно определяют принадлежность программы определенному, заранее известному разработчику программ или коллективу разработчиков программ.
5. Способ по п. 1, характеризующийся тем, что после обучения классификатора выбирают пороговое значение, превышение которого свидетельствует о принадлежности программы тому семейству программ, на наборах данных которого был обучен классификатор.
6. Способ по п. 1, характеризующийся тем, что после обучения классификатора выбирают пороговое значение, превышение которого свидетельствует о принадлежности программы определенному, заранее известному разработчику программ или коллективу разработчиков программ, на наборах данных которого был обучен классификатор.
7. Способ по п. 1, характеризующийся тем, что обучают классификатор методом машинного обучения.
8. Способ по п. 1, характеризующийся тем, что паттернам, содержащим по меньшей мере две строковые константы, дополнительно присваивают повышенный вес, величина которого задана заранее.
9. Способ по п. 8, характеризующийся тем, что паттернам, по меньшей мере на 80% состоящим из математических операций, дополнительно присваивают повышенный вес, величина которого задана заранее.
10. Способ по п. 8, характеризующийся тем, что паттернам, не содержащим ни строковых констант, ни математических операций, дополнительно присваивают пониженный вес, величина которого задана заранее.
11. Способ по пп. 8-10, характеризующийся тем, что повышенные и пониженные веса, присвоенные паттернам, учитывают при обучении классификатора таким образом, чтобы паттерны с повышенным весом оказывали пропорционально большее, а паттерны с пониженным весом пропорционально меньшее влияние на итоговое решение классификатора.
12. Способ определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду, заключающийся в выполнении этапов, на которых с помощью вычислительного устройства:
- получают файл, содержащий исходный код программного обеспечения;
- определяют платформу и язык программирования, на котором в полученном файле написан исходный код;
- запускают файл в изолированной среде, имеющей функцию логгирования;
- получают список обращений исполняющегося файла к фреймворку и платформе;
- выделяют в каждом обращении пару «действие, аргумент»;
- преобразуют каждую пару «действие, аргумент» в число;
- сохраняют полученную последовательность чисел;
- накапливают заранее заданное количество результатов анализа исходного кода;
- выявляют в результатах анализа исходного кода повторяющиеся последовательности чисел (паттерны);
- для каждого выявленного паттерна вычисляют параметр, характеризующий его частотность;
- сохраняют заданное количество паттернов и на основе вычисленных для каждого паттерна набора параметров обучают по меньшей мере один классификатор определять принадлежность программного обеспечения по последовательности пар «действие - аргумент»;
- применяют обученный по меньшей мере один классификатор для последующего определения принадлежности программного обеспечения к определенному семейству программ.
13. Способ по п. 12, в котором преобразование пары «действие - аргумент» может быть выполнено различным образом; взятием хэш-функции от действия, а второй хэш-функции - от аргумента; если аргумент состоит из более чем одного значения, хэш-функция может быть взята от строки, представляющей собой конкатенированные строки всех значений, составляющих аргумент, причем дополнительно перед хэшированием может проводиться сериализация.
14. Способ по п. 12, в котором после удаления библиотечных функций дополнительно удаляют из сохраненного кода устойчивые конструкции.
15. Способ по п. 12, в котором дополнительно определяют принадлежность программы определенному, заранее известному разработчику программ или коллективу разработчиков программ.
16. Способ по п. 12, характеризующийся тем, что после обучения классификатора выбирают пороговое значение, превышение которого свидетельствует о принадлежности программы тому семейству программ, на наборах данных которого был обучен классификатор.
17. Способ по п. 15, характеризующийся тем, что после обучения классификатора выбирают пороговое значение, превышение которого свидетельствует о принадлежности программы определенному, заранее известному разработчику программ или коллективу разработчиков программ, на наборах данных которого был обучен классификатор.
18. Способ по п. 12, характеризующийся тем, что обучают классификатор методом машинного обучения.
19. Способ по п. 12, характеризующийся тем, что паттернам, содержащим по меньшей мере две строковые константы, дополнительно присваивают повышенный вес, величина которого задана заранее.
20. Способ по п. 19, характеризующийся тем, что паттернам, по меньшей мере на 80% состоящим из математических операций, дополнительно присваивают повышенный вес, величина которого задана заранее.
21. Способ по п. 19, характеризующийся тем, что паттернам, не содержащим ни строковых констант, ни математических операций, дополнительно присваивают пониженный вес, величина которого задана заранее.
22. Способ по пп. 16-21, характеризующийся тем, что повышенные и пониженные веса, присвоенные паттернам, учитывают при обучении классификатора таким образом, чтобы паттерны с повышенным весом оказывали пропорционально большее, а паттерны с пониженным весом пропорционально меньшее влияние на итоговое решение классификатора.
23. Система определения принадлежности программного обеспечения к определенному семейству программ по его исходному коду, содержащая:
- долговременную память, выполненную с возможностью хранения используемых файлов и данных;
- вычислительное устройство, выполненное с возможностью выполнения способа по любому из пп. 1-22.
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU2019139630A RU2728498C1 (ru) | 2019-12-05 | 2019-12-05 | Способ и система определения принадлежности программного обеспечения по его исходному коду |
| SG10202010476VA SG10202010476VA (en) | 2019-12-05 | 2020-10-22 | Method and system for determining affiliation of software to software families |
| US17/077,132 US11526608B2 (en) | 2019-12-05 | 2020-10-22 | Method and system for determining affiliation of software to software families |
| NL2026782A NL2026782B1 (en) | 2019-12-05 | 2020-10-28 | Method and system for determining affiliation of software to software families |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| RU2019139630A RU2728498C1 (ru) | 2019-12-05 | 2019-12-05 | Способ и система определения принадлежности программного обеспечения по его исходному коду |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| RU2728498C1 true RU2728498C1 (ru) | 2020-07-29 |
Family
ID=72085734
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RU2019139630A RU2728498C1 (ru) | 2019-12-05 | 2019-12-05 | Способ и система определения принадлежности программного обеспечения по его исходному коду |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11526608B2 (ru) |
| NL (1) | NL2026782B1 (ru) |
| RU (1) | RU2728498C1 (ru) |
| SG (1) | SG10202010476VA (ru) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210173926A1 (en) * | 2019-12-05 | 2021-06-10 | Group IB TDS, Ltd | Method and system for determining affiliation of software to software families |
| US11847223B2 (en) | 2020-08-06 | 2023-12-19 | Group IB TDS, Ltd | Method and system for generating a list of indicators of compromise |
| US11947572B2 (en) | 2021-03-29 | 2024-04-02 | Group IB TDS, Ltd | Method and system for clustering executable files |
| US12135786B2 (en) | 2020-03-10 | 2024-11-05 | F.A.C.C.T. Network Security Llc | Method and system for identifying malware |
| US12229259B2 (en) | 2020-02-21 | 2025-02-18 | F.A.C.C.T. Network Security Llc | Method and system for detecting malicious files in a non-isolated environment |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12147524B2 (en) | 2020-11-27 | 2024-11-19 | EMC IP Holding Company LLC | Hardware system protection using verification of hardware digital identity values |
| US11657161B2 (en) * | 2020-12-22 | 2023-05-23 | Microsoft Technology Licensing, Llc. | Correlation between source code repositories and web endpoints |
| US12147509B2 (en) * | 2021-03-24 | 2024-11-19 | EMC IP Holding Company LLC | System protection using verification of software digital identity values |
| US12430434B2 (en) * | 2021-07-30 | 2025-09-30 | Cloud Linux Software Inc. | Systems and methods for blocking malicious script execution based on generalized rules |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7383581B1 (en) * | 2001-12-26 | 2008-06-03 | Mcafee, Inc. | Identifying malware containing computer files using embedded text |
| US20080172651A1 (en) * | 2007-01-15 | 2008-07-17 | Microsoft Corporation | Applying Function Level Ownership to Test Metrics |
| CN103020494B (zh) * | 2012-12-03 | 2015-06-24 | 哈尔滨工业大学 | 一种利用程序代码编程模式著作权归属检测模型检测著作权归属的方法 |
| US20150227364A1 (en) * | 2014-02-13 | 2015-08-13 | Infosys Limited | Technique for plagiarism detection in program source code files based on design pattern |
| RU2706896C1 (ru) * | 2018-06-29 | 2019-11-21 | Акционерное общество "Лаборатория Касперского" | Система и способ выявления вредоносных файлов с использованием модели обучения, обученной на одном вредоносном файле |
Family Cites Families (221)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7389351B2 (en) | 2001-03-15 | 2008-06-17 | Microsoft Corporation | System and method for identifying and establishing preferred modalities or channels for communications based on participants' preferences and contexts |
| US7565692B1 (en) | 2000-05-30 | 2009-07-21 | At&T Wireless Services, Inc. | Floating intrusion detection platforms |
| AU3054102A (en) | 2000-11-30 | 2002-06-11 | Lancope Inc | Flow-based detection of network intrusions |
| US6928434B1 (en) | 2001-01-31 | 2005-08-09 | Rosetta Marketing Strategies Group | Method and system for clustering optimization and applications |
| US7325252B2 (en) | 2001-05-18 | 2008-01-29 | Achilles Guard Inc. | Network security testing |
| US20090138342A1 (en) | 2001-11-14 | 2009-05-28 | Retaildna, Llc | Method and system for providing an employee award using artificial intelligence |
| US7225343B1 (en) | 2002-01-25 | 2007-05-29 | The Trustees Of Columbia University In The City Of New York | System and methods for adaptive model generation for detecting intrusions in computer systems |
| US8132250B2 (en) | 2002-03-08 | 2012-03-06 | Mcafee, Inc. | Message profiling systems and methods |
| EP1349081A1 (en) | 2002-03-28 | 2003-10-01 | LION Bioscience AG | Method and apparatus for querying relational databases |
| US7496628B2 (en) | 2003-02-25 | 2009-02-24 | Susquehanna International Group, Llp | Electronic message filter |
| US20040221171A1 (en) | 2003-05-02 | 2004-11-04 | Ahmed Ahmed Awad E. | Intrusion detector based on mouse dynamics analysis |
| US8990928B1 (en) | 2003-12-11 | 2015-03-24 | Radix Holdings, Llc | URL salience |
| US7392278B2 (en) | 2004-01-23 | 2008-06-24 | Microsoft Corporation | Building and using subwebs for focused search |
| US8561177B1 (en) | 2004-04-01 | 2013-10-15 | Fireeye, Inc. | Systems and methods for detecting communication channels of bots |
| US8881282B1 (en) | 2004-04-01 | 2014-11-04 | Fireeye, Inc. | Systems and methods for malware attack detection and identification |
| US8528086B1 (en) | 2004-04-01 | 2013-09-03 | Fireeye, Inc. | System and method of detecting computer worms |
| US8539582B1 (en) | 2004-04-01 | 2013-09-17 | Fireeye, Inc. | Malware containment and security analysis on connection |
| US7953814B1 (en) | 2005-02-28 | 2011-05-31 | Mcafee, Inc. | Stopping and remediating outbound messaging abuse |
| US7908653B2 (en) | 2004-06-29 | 2011-03-15 | Intel Corporation | Method of improving computer security through sandboxing |
| US8037535B2 (en) | 2004-08-13 | 2011-10-11 | Georgetown University | System and method for detecting malicious executable code |
| WO2006032028A2 (en) | 2004-09-13 | 2006-03-23 | Reactivity, Inc. | Metric-based monitoring and control of a limited resource |
| US7540025B2 (en) | 2004-11-18 | 2009-05-26 | Cisco Technology, Inc. | Mitigating network attacks using automatic signature generation |
| GB2425622A (en) * | 2005-04-27 | 2006-11-01 | Ncapsa Ltd | Programming real-time systems using data flow diagrams |
| US20060253582A1 (en) | 2005-05-03 | 2006-11-09 | Dixon Christopher J | Indicating website reputations within search results |
| WO2006119506A2 (en) | 2005-05-05 | 2006-11-09 | Ironport Systems, Inc. | Method of validating requests for sender reputation information |
| US7609625B2 (en) | 2005-07-06 | 2009-10-27 | Fortinet, Inc. | Systems and methods for detecting and preventing flooding attacks in a network environment |
| US7730040B2 (en) | 2005-07-27 | 2010-06-01 | Microsoft Corporation | Feedback-driven malware detector |
| US7707284B2 (en) | 2005-08-03 | 2010-04-27 | Novell, Inc. | System and method of searching for classifying user activity performed on a computer system |
| KR20070049514A (ko) | 2005-11-08 | 2007-05-11 | 한국정보보호진흥원 | 악성 코드 감시 시스템 및 이를 이용한 감시 방법 |
| US8650080B2 (en) | 2006-04-10 | 2014-02-11 | International Business Machines Corporation | User-browser interaction-based fraud detection system |
| EP2005698B1 (en) | 2006-04-13 | 2012-01-04 | Art of Defence GmbH | Method for providing web application security |
| US7984500B1 (en) | 2006-10-05 | 2011-07-19 | Amazon Technologies, Inc. | Detecting fraudulent activity by analysis of information requests |
| US7865953B1 (en) | 2007-05-31 | 2011-01-04 | Trend Micro Inc. | Methods and arrangement for active malicious web pages discovery |
| US8238669B2 (en) | 2007-08-22 | 2012-08-07 | Google Inc. | Detection and classification of matches between time-based media |
| US7958555B1 (en) | 2007-09-28 | 2011-06-07 | Trend Micro Incorporated | Protecting computer users from online frauds |
| US9779403B2 (en) | 2007-12-07 | 2017-10-03 | Jpmorgan Chase Bank, N.A. | Mobile fraud prevention system and method |
| US20110222787A1 (en) | 2008-02-28 | 2011-09-15 | Stefan Thiemert | Frame sequence comparison in multimedia streams |
| US8082187B2 (en) | 2008-05-07 | 2011-12-20 | AcademixDirect, Inc. | Method of generating a referral website URL using website listings in a cookie |
| US8856937B1 (en) | 2008-06-27 | 2014-10-07 | Symantec Corporation | Methods and systems for identifying fraudulent websites |
| US10027688B2 (en) | 2008-08-11 | 2018-07-17 | Damballa, Inc. | Method and system for detecting malicious and/or botnet-related domain names |
| US8086480B2 (en) | 2008-09-25 | 2011-12-27 | Ebay Inc. | Methods and systems for activity-based recommendations |
| US9177144B2 (en) | 2008-10-30 | 2015-11-03 | Mcafee, Inc. | Structural recognition of malicious code patterns |
| US8850571B2 (en) | 2008-11-03 | 2014-09-30 | Fireeye, Inc. | Systems and methods for detecting malicious network content |
| US8285830B1 (en) | 2009-01-06 | 2012-10-09 | Citizenhawk, Inc. | System and method for combating cybersquatting |
| US8448245B2 (en) | 2009-01-17 | 2013-05-21 | Stopthehacker.com, Jaal LLC | Automated identification of phishing, phony and malicious web sites |
| US8695091B2 (en) | 2009-02-11 | 2014-04-08 | Sophos Limited | Systems and methods for enforcing policies for proxy website detection using advertising account ID |
| US8429751B2 (en) | 2009-03-13 | 2013-04-23 | Trustwave Holdings, Inc. | Method and apparatus for phishing and leeching vulnerability detection |
| US8229219B1 (en) | 2009-08-06 | 2012-07-24 | Google Inc. | Full-length video fingerprinting |
| US8600993B1 (en) | 2009-08-26 | 2013-12-03 | Google Inc. | Determining resource attributes from site address attributes |
| US8396857B2 (en) | 2009-08-31 | 2013-03-12 | Accenture Global Services Limited | System to modify websites for organic search optimization |
| RU91213U1 (ru) | 2009-10-01 | 2010-01-27 | ЗАО "Лаборатория Касперского" | Система автоматического составления описания и кластеризации различных, в том числе и вредоносных, объектов |
| EP2323046A1 (en) | 2009-10-16 | 2011-05-18 | Telefónica, S.A. | Method for detecting audio and video copy in multimedia streams |
| US8625033B1 (en) | 2010-02-01 | 2014-01-07 | Google Inc. | Large-scale matching of audio and video |
| US9501644B2 (en) | 2010-03-15 | 2016-11-22 | F-Secure Oyj | Malware protection |
| US8612463B2 (en) | 2010-06-03 | 2013-12-17 | Palo Alto Research Center Incorporated | Identifying activities using a hybrid user-activity model |
| US8260914B1 (en) | 2010-06-22 | 2012-09-04 | Narus, Inc. | Detecting DNS fast-flux anomalies |
| RU2446459C1 (ru) | 2010-07-23 | 2012-03-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ проверки веб-ресурсов на наличие вредоносных компонент |
| CN102959557A (zh) | 2010-07-26 | 2013-03-06 | 金基容 | 黑客病毒安全综合管理设备 |
| US8924488B2 (en) | 2010-07-27 | 2014-12-30 | At&T Intellectual Property I, L.P. | Employing report ratios for intelligent mobile messaging classification and anti-spam defense |
| BR112013004345B1 (pt) | 2010-08-25 | 2020-12-08 | Lookout, Inc. | sistema e método para evitar malware acoplado a um servidor |
| AU2011293160B2 (en) | 2010-08-26 | 2015-04-09 | Verisign, Inc. | Method and system for automatic detection and analysis of malware |
| US8837769B2 (en) | 2010-10-06 | 2014-09-16 | Futurewei Technologies, Inc. | Video signature based on image hashing and shot detection |
| US9626677B2 (en) | 2010-11-29 | 2017-04-18 | Biocatch Ltd. | Identification of computerized bots, and identification of automated cyber-attack modules |
| US8521667B2 (en) | 2010-12-15 | 2013-08-27 | Microsoft Corporation | Detection and categorization of malicious URLs |
| CN102082792A (zh) | 2010-12-31 | 2011-06-01 | 成都市华为赛门铁克科技有限公司 | 钓鱼网页检测方法及设备 |
| US8972412B1 (en) | 2011-01-31 | 2015-03-03 | Go Daddy Operating Company, LLC | Predicting improvement in website search engine rankings based upon website linking relationships |
| US8726376B2 (en) | 2011-03-11 | 2014-05-13 | Openet Telecom Ltd. | Methods, systems and devices for the detection and prevention of malware within a network |
| US8402543B1 (en) | 2011-03-25 | 2013-03-19 | Narus, Inc. | Machine learning based botnet detection with dynamic adaptation |
| RU107616U1 (ru) | 2011-03-28 | 2011-08-20 | Закрытое акционерное общество "Лаборатория Касперского" | Система быстрого анализа потока данных на наличие вредоносных объектов |
| US9363278B2 (en) | 2011-05-11 | 2016-06-07 | At&T Mobility Ii Llc | Dynamic and selective response to cyber attack for telecommunications carrier networks |
| US8151341B1 (en) | 2011-05-23 | 2012-04-03 | Kaspersky Lab Zao | System and method for reducing false positives during detection of network attacks |
| US8555388B1 (en) | 2011-05-24 | 2013-10-08 | Palo Alto Networks, Inc. | Heuristic botnet detection |
| CA2840992C (en) | 2011-07-08 | 2017-03-14 | Brad WARDMAN | Syntactical fingerprinting |
| WO2013008778A1 (ja) | 2011-07-11 | 2013-01-17 | Mizunuma Takeshi | 識別名管理方法およびシステム |
| GB2493514B (en) | 2011-08-02 | 2015-04-08 | Qatar Foundation | Copy detection |
| CN102930206B (zh) | 2011-08-09 | 2015-02-25 | 腾讯科技(深圳)有限公司 | 病毒文件的聚类划分处理方法和装置 |
| US8677472B1 (en) | 2011-09-27 | 2014-03-18 | Emc Corporation | Multi-point collection of behavioral data relating to a virtualized browsing session with a secure server |
| US8645355B2 (en) | 2011-10-21 | 2014-02-04 | Google Inc. | Mapping Uniform Resource Locators of different indexes |
| US8584235B2 (en) | 2011-11-02 | 2013-11-12 | Bitdefender IPR Management Ltd. | Fuzzy whitelisting anti-malware systems and methods |
| US9519781B2 (en) | 2011-11-03 | 2016-12-13 | Cyphort Inc. | Systems and methods for virtualization and emulation assisted malware detection |
| RU2487406C1 (ru) | 2011-11-24 | 2013-07-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ обнаружения вредоносных объектов, распространяемых через пиринговые сети |
| US8660296B1 (en) | 2012-01-10 | 2014-02-25 | Google Inc. | Systems and methods for facilitating video fingerprinting using local descriptors |
| US9519782B2 (en) | 2012-02-24 | 2016-12-13 | Fireeye, Inc. | Detecting malicious network content |
| US9111090B2 (en) | 2012-04-02 | 2015-08-18 | Trusteer, Ltd. | Detection of phishing attempts |
| RU2523114C2 (ru) | 2012-04-06 | 2014-07-20 | Закрытое акционерное общество "Лаборатория Касперского" | Способ анализа вредоносной активности в сети интернет, выявления вредоносных узлов сети и ближайших узлов-посредников |
| US10304036B2 (en) | 2012-05-07 | 2019-05-28 | Nasdaq, Inc. | Social media profiling for one or more authors using one or more social media platforms |
| RU2488880C1 (ru) | 2012-05-11 | 2013-07-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ адаптивной оптимизации проверки потока данных, передающихся по сети, на наличие угроз |
| US8683595B1 (en) | 2012-06-13 | 2014-03-25 | Symantec Corporation | Systems and methods for detecting potentially malicious content within near field communication messages |
| US9323923B2 (en) * | 2012-06-19 | 2016-04-26 | Deja Vu Security, Llc | Code repository intrusion detection |
| US9154517B2 (en) | 2012-06-19 | 2015-10-06 | AO Kaspersky Lab | System and method for preventing spread of malware in peer-to-peer network |
| US9282117B2 (en) | 2012-07-24 | 2016-03-08 | Webroot Inc. | System and method to provide automatic classification of phishing sites |
| RU2495486C1 (ru) | 2012-08-10 | 2013-10-10 | Закрытое акционерное общество "Лаборатория Касперского" | Способ анализа и выявления вредоносных промежуточных узлов в сети |
| CN103679012A (zh) | 2012-09-03 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种可移植可执行文件的聚类方法和装置 |
| CN103685174B (zh) | 2012-09-07 | 2016-12-21 | 中国科学院计算机网络信息中心 | 一种不依赖样本的钓鱼网站检测方法 |
| US9386030B2 (en) | 2012-09-18 | 2016-07-05 | Vencore Labs, Inc. | System and method for correlating historical attacks with diverse indicators to generate indicator profiles for detecting and predicting future network attacks |
| US11126720B2 (en) | 2012-09-26 | 2021-09-21 | Bluvector, Inc. | System and method for automated machine-learning, zero-day malware detection |
| US9215239B1 (en) | 2012-09-28 | 2015-12-15 | Palo Alto Networks, Inc. | Malware detection based on traffic analysis |
| US10965775B2 (en) | 2012-11-20 | 2021-03-30 | Airbnb, Inc. | Discovering signature of electronic social networks |
| RU2530210C2 (ru) | 2012-12-25 | 2014-10-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ выявления вредоносных программ, препятствующих штатному взаимодействию пользователя с интерфейсом операционной системы |
| RU2522019C1 (ru) | 2012-12-25 | 2014-07-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ обнаружения угроз в коде, исполняемом виртуальной машиной |
| RU2536664C2 (ru) | 2012-12-25 | 2014-12-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ автоматической модификации антивирусной базы данных |
| RU129279U1 (ru) | 2013-01-09 | 2013-06-20 | ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "МФИ Софт" | Устройство обнаружения и защиты от аномальной активности на сети передачи данных |
| US20140201208A1 (en) | 2013-01-15 | 2014-07-17 | Corporation Symantec | Classifying Samples Using Clustering |
| US9165142B1 (en) | 2013-01-30 | 2015-10-20 | Palo Alto Networks, Inc. | Malware family identification using profile signatures |
| US20160127402A1 (en) | 2014-11-04 | 2016-05-05 | Patternex, Inc. | Method and apparatus for identifying and detecting threats to an enterprise or e-commerce system |
| US10425429B2 (en) | 2013-04-10 | 2019-09-24 | Gabriel Bassett | System and method for cyber security analysis and human behavior prediction |
| GB201306628D0 (en) | 2013-04-11 | 2013-05-29 | F Secure Oyj | Detecting and marking client devices |
| US20160055490A1 (en) | 2013-04-11 | 2016-02-25 | Brandshield Ltd. | Device, system, and method of protecting brand names and domain names |
| WO2014184711A2 (en) | 2013-05-13 | 2014-11-20 | Yandex Europe Ag | Method of and system for providing a client device with an automatic update of an ip address associated with a domain name |
| US9357469B2 (en) | 2013-05-29 | 2016-05-31 | Rivada Networks, Llc | Methods and system for dynamic spectrum arbitrage with mobility management |
| US9443075B2 (en) | 2013-06-27 | 2016-09-13 | The Mitre Corporation | Interception and policy application for malicious communications |
| RU2580036C2 (ru) | 2013-06-28 | 2016-04-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ создания гибкой свертки для обнаружения вредоносных программ |
| CN103368958A (zh) | 2013-07-05 | 2013-10-23 | 腾讯科技(深圳)有限公司 | 一种网页检测方法、装置和系统 |
| RU2538292C1 (ru) | 2013-07-24 | 2015-01-10 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Способ обнаружения компьютерных атак на сетевую компьютерную систему |
| KR102120823B1 (ko) | 2013-08-14 | 2020-06-09 | 삼성전자주식회사 | 비휘발성 메모리 장치의 독출 시퀀스 제어 방법 및 이를 수행하는 메모리 시스템 |
| US9330258B1 (en) | 2013-09-30 | 2016-05-03 | Symantec Corporation | Systems and methods for identifying uniform resource locators that link to potentially malicious resources |
| CN103491205B (zh) | 2013-09-30 | 2016-08-17 | 北京奇虎科技有限公司 | 一种基于视频搜索的关联资源地址的推送方法和装置 |
| US10452712B2 (en) | 2013-10-21 | 2019-10-22 | Microsoft Technology Licensing, Llc | Mobile video search |
| GB2520987B (en) | 2013-12-06 | 2016-06-01 | Cyberlytic Ltd | Using fuzzy logic to assign a risk level profile to a potential cyber threat |
| IN2013CH05744A (ru) | 2013-12-12 | 2015-06-19 | Infosys Ltd | |
| US9747446B1 (en) | 2013-12-26 | 2017-08-29 | Fireeye, Inc. | System and method for run-time object classification |
| JP6188956B2 (ja) * | 2013-12-30 | 2017-08-30 | ノキア テクノロジーズ オーユー | マルウェア検出検査方法及び装置 |
| US20150363791A1 (en) | 2014-01-10 | 2015-12-17 | Hybrid Application Security Ltd. | Business action based fraud detection system and method |
| US9262635B2 (en) | 2014-02-05 | 2016-02-16 | Fireeye, Inc. | Detection efficacy of virtual machine-based analysis with application specific events |
| US9060018B1 (en) | 2014-02-05 | 2015-06-16 | Pivotal Software, Inc. | Finding command and control center computers by communication link tracking |
| US9769189B2 (en) | 2014-02-21 | 2017-09-19 | Verisign, Inc. | Systems and methods for behavior-based automated malware analysis and classification |
| KR101514984B1 (ko) | 2014-03-03 | 2015-04-24 | (주)엠씨알시스템 | 홈페이지 악성코드 유포 탐지 시스템 및 방법 |
| US9338181B1 (en) | 2014-03-05 | 2016-05-10 | Netflix, Inc. | Network security system with remediation based on value of attacked assets |
| RU2543564C1 (ru) | 2014-03-20 | 2015-03-10 | Закрытое акционерное общество "Научно-производственное предприятие "Информационные технологии в бизнесе" | Система обнаружения и предотвращения вторжений на основе контроля доступа к ресурсам |
| US9223972B1 (en) | 2014-03-31 | 2015-12-29 | Fireeye, Inc. | Dynamically remote tuning of a malware content detection system |
| US9853997B2 (en) | 2014-04-14 | 2017-12-26 | Drexel University | Multi-channel change-point malware detection |
| US9015814B1 (en) | 2014-06-10 | 2015-04-21 | Kaspersky Lab Zao | System and methods for detecting harmful files of different formats |
| US9332022B1 (en) | 2014-07-07 | 2016-05-03 | Symantec Corporation | Systems and methods for detecting suspicious internet addresses |
| US20160036837A1 (en) | 2014-08-04 | 2016-02-04 | Microsoft Corporation | Detecting attacks on data centers |
| US9800592B2 (en) | 2014-08-04 | 2017-10-24 | Microsoft Technology Licensing, Llc | Data center architecture that supports attack detection and mitigation |
| US9942250B2 (en) | 2014-08-06 | 2018-04-10 | Norse Networks, Inc. | Network appliance for dynamic protection from risky network activities |
| US9716721B2 (en) | 2014-08-29 | 2017-07-25 | Accenture Global Services Limited | Unstructured security threat information analysis |
| KR101587161B1 (ko) | 2014-09-03 | 2016-01-20 | 한국전자통신연구원 | 실시간 네트워크 안티바이러스 수행 장치 및 방법 |
| US9026841B1 (en) | 2014-09-09 | 2015-05-05 | Belkin International, Inc. | Coordinated and device-distributed detection of abnormal network device operation |
| RU2589310C2 (ru) | 2014-09-30 | 2016-07-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ расчета интервала повторного определения категорий сетевого ресурса |
| US20160110819A1 (en) | 2014-10-21 | 2016-04-21 | Marc Lauren Abramowitz | Dynamic security rating for cyber insurance products |
| US10338191B2 (en) | 2014-10-30 | 2019-07-02 | Bastille Networks, Inc. | Sensor mesh and signal transmission architectures for electromagnetic signature analysis |
| US9197665B1 (en) | 2014-10-31 | 2015-11-24 | Cyberpoint International Llc | Similarity search and malware prioritization |
| US9792289B2 (en) | 2014-11-07 | 2017-10-17 | Semandex Networks Inc. | Systems and methods for file clustering, multi-drive forensic analysis and data protection |
| WO2016081346A1 (en) | 2014-11-21 | 2016-05-26 | Northrup Grumman Systems Corporation | System and method for network data characterization |
| US10574675B2 (en) | 2014-12-05 | 2020-02-25 | T-Mobile Usa, Inc. | Similarity search for discovering multiple vector attacks |
| US9367872B1 (en) | 2014-12-22 | 2016-06-14 | Palantir Technologies Inc. | Systems and user interfaces for dynamic and interactive investigation of bad actor behavior based on automatic clustering of related data in various data structures |
| US9934376B1 (en) | 2014-12-29 | 2018-04-03 | Fireeye, Inc. | Malware detection appliance architecture |
| US10230526B2 (en) | 2014-12-31 | 2019-03-12 | William Manning | Out-of-band validation of domain name system records |
| US9712549B2 (en) | 2015-01-08 | 2017-07-18 | Imam Abdulrahman Bin Faisal University | System, apparatus, and method for detecting home anomalies |
| CN104504307B (zh) | 2015-01-08 | 2017-09-29 | 北京大学 | 基于拷贝单元的音视频拷贝检测方法和装置 |
| KR20160095856A (ko) | 2015-02-04 | 2016-08-12 | 한국전자통신연구원 | 새로운 공격 유형의 자동 탐지 및 공격 유형 모델 갱신을 통한 지능형 침입 탐지 시스템 및 방법 |
| US11328307B2 (en) | 2015-02-24 | 2022-05-10 | OpSec Online, Ltd. | Brand abuse monitoring system with infringement detection engine and graphical user interface |
| EP3065076A1 (en) | 2015-03-04 | 2016-09-07 | Secure-Nok AS | System and method for responding to a cyber-attack-related incident against an industrial control system |
| US9253208B1 (en) | 2015-03-05 | 2016-02-02 | AO Kaspersky Lab | System and method for automated phishing detection rule evolution |
| US9769201B2 (en) | 2015-03-06 | 2017-09-19 | Radware, Ltd. | System and method thereof for multi-tiered mitigation of cyber-attacks |
| US9712553B2 (en) | 2015-03-27 | 2017-07-18 | The Boeing Company | System and method for developing a cyber-attack scenario |
| US9712554B2 (en) | 2015-04-09 | 2017-07-18 | Accenture Global Services Limited | Event correlation across heterogeneous operations |
| US10536357B2 (en) | 2015-06-05 | 2020-01-14 | Cisco Technology, Inc. | Late data detection in data center |
| US10382484B2 (en) | 2015-06-08 | 2019-08-13 | Illusive Networks Ltd. | Detecting attackers who target containerized clusters |
| US9917852B1 (en) | 2015-06-29 | 2018-03-13 | Palo Alto Networks, Inc. | DGA behavior detection |
| RU164629U1 (ru) | 2015-06-30 | 2016-09-10 | Акционерное общество "Институт точной механики и вычислительной техники имени С.А. Лебедева Российской академии наук" | Электронный модуль защиты от сетевых атак на базе сетевого процессора np-5 |
| RU2614557C2 (ru) | 2015-06-30 | 2017-03-28 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ обнаружения вредоносных файлов на мобильных устройствах |
| EP3125147B1 (en) | 2015-07-27 | 2020-06-03 | Swisscom AG | System and method for identifying a phishing website |
| US9456000B1 (en) | 2015-08-06 | 2016-09-27 | Palantir Technologies Inc. | Systems, methods, user interfaces, and computer-readable media for investigating potential malicious communications |
| CN106506435B (zh) | 2015-09-08 | 2019-08-06 | 中国电信股份有限公司 | 用于检测网络攻击的方法和防火墙系统 |
| WO2017049045A1 (en) | 2015-09-16 | 2017-03-23 | RiskIQ, Inc. | Using hash signatures of dom objects to identify website similarity |
| KR101703446B1 (ko) | 2015-10-15 | 2017-02-06 | 숭실대학교산학협력단 | DoS 공격의 탐지가 가능한 네트워크 및 이의 제어 방법과, 상기 네트워크에 포함되는 게이트웨이 및 관리 서버 |
| CN105429956B (zh) | 2015-11-02 | 2018-09-25 | 重庆大学 | 基于p2p动态云的恶意软件检测系统及方法 |
| US10200382B2 (en) | 2015-11-05 | 2019-02-05 | Radware, Ltd. | System and method for detecting abnormal traffic behavior using infinite decaying clusters |
| US9894036B2 (en) | 2015-11-17 | 2018-02-13 | Cyber Adapt, Inc. | Cyber threat attenuation using multi-source threat data analysis |
| RU2622870C2 (ru) | 2015-11-17 | 2017-06-20 | Общество с ограниченной ответственностью "САЙТСЕКЬЮР" | Система и способ оценки опасности веб-сайтов |
| CN106709777A (zh) | 2015-11-18 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 一种订单聚类方法及装置,以及反恶意信息的方法及装置 |
| RU2613535C1 (ru) | 2015-11-20 | 2017-03-16 | Илья Самуилович Рабинович | Способ обнаружения вредоносных программ и элементов |
| US10594710B2 (en) | 2015-11-20 | 2020-03-17 | Webroot Inc. | Statistical analysis of network behavior using event vectors to identify behavioral anomalies using a composite score |
| WO2017103974A1 (ja) | 2015-12-14 | 2017-06-22 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
| US11250256B2 (en) | 2015-12-26 | 2022-02-15 | Intel Corporation | Binary linear classification |
| US9723344B1 (en) | 2015-12-29 | 2017-08-01 | Google Inc. | Early detection of policy violating media |
| US11069370B2 (en) | 2016-01-11 | 2021-07-20 | University Of Tennessee Research Foundation | Tampering detection and location identification of digital audio recordings |
| KR102582580B1 (ko) | 2016-01-19 | 2023-09-26 | 삼성전자주식회사 | 악성 코드 분석을 위한 전자 장치 및 이의 방법 |
| RU2628192C2 (ru) | 2016-01-27 | 2017-08-15 | Акционерное общество "Творческо-производственное объединение "Центральная киностудия детских и юношеских фильмов им. М. Горького" | Устройство для семантической классификации и поиска в архивах оцифрованных киноматериалов |
| US9900338B2 (en) | 2016-02-09 | 2018-02-20 | International Business Machines Corporation | Forecasting and classifying cyber-attacks using neural embeddings based on pattern of life data |
| US10230749B1 (en) | 2016-02-29 | 2019-03-12 | Palo Alto Networks, Inc. | Automatically grouping malware based on artifacts |
| US10200390B2 (en) | 2016-02-29 | 2019-02-05 | Palo Alto Networks, Inc. | Automatically determining whether malware samples are similar |
| WO2017147696A1 (en) | 2016-02-29 | 2017-09-08 | Troy Jacob Ronda | Systems and methods for distributed identity verification |
| US10063572B2 (en) | 2016-03-28 | 2018-08-28 | Accenture Global Solutions Limited | Antivirus signature distribution with distributed ledger |
| US10313382B2 (en) | 2016-03-29 | 2019-06-04 | The Mitre Corporation | System and method for visualizing and analyzing cyber-attacks using a graph model |
| US10212145B2 (en) | 2016-04-06 | 2019-02-19 | Avaya Inc. | Methods and systems for creating and exchanging a device specific blockchain for device authentication |
| US10178107B2 (en) | 2016-04-06 | 2019-01-08 | Cisco Technology, Inc. | Detection of malicious domains using recurring patterns in domain names |
| CN105897714B (zh) | 2016-04-11 | 2018-11-09 | 天津大学 | 基于dns流量特征的僵尸网络检测方法 |
| RU2625050C1 (ru) | 2016-04-25 | 2017-07-11 | Акционерное общество "Лаборатория Касперского" | Система и способ признания транзакций доверенными |
| US11223598B2 (en) | 2016-05-03 | 2022-01-11 | Nokia Of America Corporation | Internet security |
| RU2634211C1 (ru) | 2016-07-06 | 2017-10-24 | Общество с ограниченной ответственностью "Траст" | Способ и система анализа протоколов взаимодействия вредоносных программ с центрами управления и выявления компьютерных атак |
| RU2636702C1 (ru) | 2016-07-07 | 2017-11-27 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и устройство для выбора сетевого ресурса в качестве источника содержимого для системы рекомендаций |
| US20180012144A1 (en) | 2016-07-11 | 2018-01-11 | Qualcomm Innovation Center, Inc. | Incremental and speculative analysis of javascripts based on a multi-instance model for web security |
| CN106131016B (zh) | 2016-07-13 | 2019-05-03 | 北京知道创宇信息技术有限公司 | 恶意url检测干预方法、系统及装置 |
| US10212133B2 (en) | 2016-07-29 | 2019-02-19 | ShieldX Networks, Inc. | Accelerated pattern matching using pattern functions |
| US11120106B2 (en) * | 2016-07-30 | 2021-09-14 | Endgame, Inc. | Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel |
| WO2018025157A1 (en) | 2016-07-31 | 2018-02-08 | Cymmetria, Inc. | Deploying deception campaigns using communication breadcrumbs |
| US10498761B2 (en) | 2016-08-23 | 2019-12-03 | Duo Security, Inc. | Method for identifying phishing websites and hindering associated activity |
| US10313352B2 (en) | 2016-10-26 | 2019-06-04 | International Business Machines Corporation | Phishing detection with machine learning |
| WO2018095192A1 (zh) | 2016-11-23 | 2018-05-31 | 腾讯科技(深圳)有限公司 | 网站攻击的检测和防护方法及系统 |
| TWI622894B (zh) | 2016-12-13 | 2018-05-01 | 宏碁股份有限公司 | 電子裝置及偵測惡意檔案的方法 |
| CN106713312A (zh) | 2016-12-21 | 2017-05-24 | 深圳市深信服电子科技有限公司 | 检测非法域名的方法及装置 |
| RU2654146C1 (ru) | 2017-06-16 | 2018-05-16 | Акционерное общество "Лаборатория Касперского" | Система и способ обнаружения вредоносных файлов с использованием элементов статического анализа |
| CN107392019A (zh) | 2017-07-05 | 2017-11-24 | 北京金睛云华科技有限公司 | 一种恶意代码家族的训练和检测方法及装置 |
| US20190014149A1 (en) | 2017-07-06 | 2019-01-10 | Pixm | Phishing Detection Method And System |
| CN107392456A (zh) | 2017-07-14 | 2017-11-24 | 武汉理工大学 | 一种融合互联网信息的多角度企业信用评估建模方法 |
| US10546143B1 (en) | 2017-08-10 | 2020-01-28 | Support Intelligence, Inc. | System and method for clustering files and assigning a maliciousness property based on clustering |
| RU2679785C1 (ru) | 2017-10-18 | 2019-02-12 | Акционерное общество "Лаборатория Касперского" | Система и способ классификации объектов |
| RU2670906C9 (ru) | 2017-12-28 | 2018-12-12 | Общество С Ограниченной Ответственностью "Центр Разработки И Внедрения Инновационных Технологий" | Самонастраивающаяся интерактивная система, способ обмена сообщениями и/или звонками между пользователями различных веб-сайтов с использованием технологии клиент-сервер и считываемый компьютером носитель |
| US11310245B2 (en) | 2018-01-22 | 2022-04-19 | T-Mobile Usa, Inc. | Indicator of compromise calculation system |
| RU2681699C1 (ru) | 2018-02-13 | 2019-03-12 | Общество с ограниченной ответственностью "Траст" | Способ и сервер для поиска связанных сетевых ресурсов |
| RU2706883C1 (ru) | 2018-06-29 | 2019-11-21 | Акционерное общество "Лаборатория Касперского" | Система и способ снижения количества ложных срабатываний классифицирующих алгоритмов |
| RU2708356C1 (ru) | 2018-06-29 | 2019-12-05 | Акционерное общество "Лаборатория Касперского" | Система и способ двухэтапной классификации файлов |
| US11451561B2 (en) | 2018-09-14 | 2022-09-20 | Cisco Technology, Inc. | Automated creation of lightweight behavioral indicators of compromise (IOCS) |
| GB2588745B (en) | 2018-11-19 | 2021-11-03 | Sophos Ltd | Deferred malware scanning |
| RU2702269C1 (ru) | 2019-06-04 | 2019-10-07 | Публичное Акционерное Общество "Сбербанк России" (Пао Сбербанк) | Система интеллектуального управления киберугрозами |
| RU2728498C1 (ru) * | 2019-12-05 | 2020-07-29 | Общество с ограниченной ответственностью "Группа АйБи ТДС" | Способ и система определения принадлежности программного обеспечения по его исходному коду |
| RU2728497C1 (ru) * | 2019-12-05 | 2020-07-29 | Общество с ограниченной ответственностью "Группа АйБи ТДС" | Способ и система определения принадлежности программного обеспечения по его машинному коду |
| RU2738344C1 (ru) * | 2020-03-10 | 2020-12-11 | Общество с ограниченной ответственностью «Группа АйБи ТДС» | Способ и система поиска схожих вредоносных программ по результатам их динамического анализа |
-
2019
- 2019-12-05 RU RU2019139630A patent/RU2728498C1/ru active
-
2020
- 2020-10-22 US US17/077,132 patent/US11526608B2/en active Active
- 2020-10-22 SG SG10202010476VA patent/SG10202010476VA/en unknown
- 2020-10-28 NL NL2026782A patent/NL2026782B1/en active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7383581B1 (en) * | 2001-12-26 | 2008-06-03 | Mcafee, Inc. | Identifying malware containing computer files using embedded text |
| US20080172651A1 (en) * | 2007-01-15 | 2008-07-17 | Microsoft Corporation | Applying Function Level Ownership to Test Metrics |
| CN103020494B (zh) * | 2012-12-03 | 2015-06-24 | 哈尔滨工业大学 | 一种利用程序代码编程模式著作权归属检测模型检测著作权归属的方法 |
| US20150227364A1 (en) * | 2014-02-13 | 2015-08-13 | Infosys Limited | Technique for plagiarism detection in program source code files based on design pattern |
| RU2706896C1 (ru) * | 2018-06-29 | 2019-11-21 | Акционерное общество "Лаборатория Касперского" | Система и способ выявления вредоносных файлов с использованием модели обучения, обученной на одном вредоносном файле |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210173926A1 (en) * | 2019-12-05 | 2021-06-10 | Group IB TDS, Ltd | Method and system for determining affiliation of software to software families |
| US11526608B2 (en) * | 2019-12-05 | 2022-12-13 | Group IB TDS, Ltd | Method and system for determining affiliation of software to software families |
| US12229259B2 (en) | 2020-02-21 | 2025-02-18 | F.A.C.C.T. Network Security Llc | Method and system for detecting malicious files in a non-isolated environment |
| US12135786B2 (en) | 2020-03-10 | 2024-11-05 | F.A.C.C.T. Network Security Llc | Method and system for identifying malware |
| US11847223B2 (en) | 2020-08-06 | 2023-12-19 | Group IB TDS, Ltd | Method and system for generating a list of indicators of compromise |
| US11947572B2 (en) | 2021-03-29 | 2024-04-02 | Group IB TDS, Ltd | Method and system for clustering executable files |
Also Published As
| Publication number | Publication date |
|---|---|
| NL2026782A (en) | 2021-08-17 |
| US20210173926A1 (en) | 2021-06-10 |
| US11526608B2 (en) | 2022-12-13 |
| NL2026782B1 (en) | 2021-10-04 |
| SG10202010476VA (en) | 2021-07-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| RU2728498C1 (ru) | Способ и система определения принадлежности программного обеспечения по его исходному коду | |
| RU2722692C1 (ru) | Способ и система выявления вредоносных файлов в неизолированной среде | |
| RU2728497C1 (ru) | Способ и система определения принадлежности программного обеспечения по его машинному коду | |
| CN111382434B (zh) | 用于检测恶意文件的系统和方法 | |
| Cesare et al. | Malwise—an effective and efficient classification system for packed and polymorphic malware | |
| RU2454714C1 (ru) | Система и способ повышения эффективности обнаружения неизвестных вредоносных объектов | |
| EP3968198A1 (en) | Method and system for searching for similar malicious programs on the basis of dynamic analysis results | |
| US9454658B2 (en) | Malware detection using feature analysis | |
| CN108920954B (zh) | 一种恶意代码自动化检测平台及方法 | |
| RU2759087C1 (ru) | Способ и система статического анализа исполняемых файлов на основе предиктивных моделей | |
| CN109740347B (zh) | 一种针对智能设备固件的脆弱哈希函数的识别与破解方法 | |
| CN113709134A (zh) | 一种基于N-gram和机器学习的恶意软件检测方法及系统 | |
| Santos et al. | Collective classification for unknown malware detection | |
| KR102425525B1 (ko) | 베이지안 확률 및 폐쇄 패턴 마이닝 방식을 이용한 로그 이상 탐지 시스템 및 방법과, 이를 위한 컴퓨터 프로그램 | |
| US11947572B2 (en) | Method and system for clustering executable files | |
| WO2017036154A1 (zh) | 一种信息处理方法及服务器、计算机存储介质 | |
| CN103679034B (zh) | 一种基于本体的计算机病毒分析系统及其特征提取方法 | |
| CN115567305A (zh) | 基于深度学习的顺序网络攻击预测分析方法 | |
| CN117454382A (zh) | 基于神经网络和函数调用图的二进制成分检测方法及系统 | |
| Vahedi et al. | Cloud based malware detection through behavioral entropy | |
| RU2778979C1 (ru) | Способ и система кластеризации исполняемых файлов | |
| Wajid et al. | A comprehensive review of machine learning-based malware detection techniques for windows platform | |
| Zeqiri | A Study of Malware Detection Techniques for HPC Application Recognition | |
| Rafi et al. | Machine Learning-Based Malware Classification in Real-Time IoT Scenarios | |
| JP6783741B2 (ja) | 距離測定装置、通信システム、作成装置及び距離測定プログラム |