система и способ для обнаружения вредоносных программ
Классы МПК: | G06F12/14 защита от обращений к памяти посторонних пользователей |
Автор(ы): | ХИКС Райан (CZ) |
Патентообладатель(и): | АВГ ТЕКНОЛОДЖИЗ СЗ, С.Р.О. (CZ) |
Приоритеты: |
подача заявки:
2009-08-31 публикация патента:
27.10.2013 |
Изобретение относится к вычислительной технике, в частности к способам защиты информации от вредоносных программ. Техническим результатом является обеспечение безопасности вычислительных устройств за счет автоматизированного анализа исполняемого кода. Способ автоматической идентификации вредоносных программ включает в себя прием, посредством базы знаний экспертной системы, последовательности на языке ассемблера из двоичного файла. Далее согласно способу осуществляют идентификацию последовательности инструкций из принимаемой последовательности. А также осуществляют классификацию, посредством базы знаний экспертной системы, последовательности инструкций как угрожающей, неугрожающей или не поддающейся классификации посредством применения одного или более правил базы знаний экспертной системы к последовательности инструкций. При этом последовательность инструкций классифицируют как угрожающую, если она включает в себя: процедуры шифрования, процедуры расшифровки, инструкции для репликации части последовательности инструкций. Если последовательность инструкций классифицирована как угрожающая, информация может быть передана в компонент анализа кода, и пользователь может быть уведомлен о том, что двоичный файл включает в себя вредоносные программы. 5 н. и 16 з.п. ф-лы, 6 ил.
Формула изобретения
1. Способ автоматической идентификации вредоносных программ, содержащий этапы, на которых:
принимают, посредством базы знаний экспертной системы, последовательность на языке ассемблера из двоичного файла;
идентифицируют последовательность инструкций из принимаемой последовательности на языке ассемблера;
классифицируют, посредством базы знаний экспертной системы, последовательность инструкций как угрожающую, неугрожающую или не поддающуюся классификации посредством применения одного или более правил базы знаний экспертной системы к последовательности инструкций, при этом при классификации последовательности инструкций классифицируют последовательность инструкций как угрожающую, если она включает в себя одно или более из следующего:
процедуры шифрования,
процедуры расшифровки и
одна или более инструкций для репликации, по меньшей мере, части последовательности инструкций;
если последовательность инструкций классифицирована как угрожающая, передают информацию в компонент анализа кода, при этом данная информация содержит одно или более из следующего:
последовательность инструкций,
метка, содержащая индикатор того, что последовательность инструкций является угрожающей, и
запрос на выполнение поиска в одной или более других последовательностях на языке ассемблера из двоичного файла на предмет, по меньшей мере, части последовательности инструкций; и
уведомляют пользователя о том, что двоичный файл включает в себя вредоносные программы.
2. Способ по п.1, в котором при применении одного или более правил применяют одно или более правил, написанных на языке интегрированной продукционной системы на языке С.
3. Способ по п.1, в котором классификация последовательности инструкций содержит один или более из следующих этапов, на которых:
применяют одно или более правил к последовательности инструкций, чтобы определять, является или нет структура двоичного файла для двоичного файла надлежащей;
применяют одну или более операций определения программ-червей, чтобы определять, содержит или нет последовательность инструкций одну или более инструкций, которые реплицируют последовательность на языке ассемблера;
применяют одну или более операций определения программ типа "троянский конь", чтобы определять, содержит или нет последовательность инструкций одну или более инструкций, ассоциированных с одной или более программами типа "троянский конь"; и
применяют одну или более операций определения вирусов, чтобы определять, содержит или нет последовательность инструкций одну или более самореплицируемых инструкций.
4. Способ по п.1, в котором при применении одного или более правил:
применяют набор предварительных правил к последовательности инструкций, при этом набор предварительных правил содержит множество предварительных правил, причем каждое предварительное правило ассоциировано с приоритетом относительно других предварительных правил в наборе.
5. Способ по п.4, в котором при применении набора предварительных правил применяют предварительные правила к последовательности инструкций, в порядке приоритета, до тех пор, пока последовательность инструкций не классифицирована или каждое предварительное правило не применено.
6. Способ по п.4, в котором при применении набора предварительных правил ранжируют предварительные правила посредством предоставления приоритета правилам, имеющим более высокое число совпадений с последовательностью инструкций.
7. Способ по п.1, в котором при классификации последовательности инструкций классифицируют последовательность инструкций как угрожающую, если последовательность инструкций не может проходиться от начала до конца.
8. Способ по п.1, в котором классификация последовательности инструкций содержит, для каждого узла в последовательности инструкций, этапы, на которых:
проходят по узлу;
определяют, выполнялось или нет прохождение по узлу ранее; и
если да, классифицируют последовательность инструкций как угрожающую.
9. Способ автоматической идентификации вредоносных программ, содержащий этапы, на которых:
принимают, посредством базы знаний экспертной системы, последовательность на языке ассемблера из двоичного файла;
идентифицируют последовательность инструкций из принимаемой последовательности на языке ассемблера;
классифицируют, посредством базы знаний экспертной системы, последовательность инструкций как угрожающую, неугрожающую или не поддающуюся классификации посредством применения одного или более правил базы знаний экспертной системы к последовательности инструкций, при этом при классификации последовательности инструкций классифицируют последовательность инструкций как угрожающую, если она включает в себя одно или более из следующего:
процедуры шифрования,
процедуры расшифровки и
одна или более инструкций для репликации, по меньшей мере, части последовательности инструкций;
если последовательность инструкций классифицирована как неугрожающая, передают информацию в компонент анализа кода, при этом данная информация содержит одно или более из следующего:
последовательность инструкций и
метка, содержащая индикатор того, что последовательность инструкций является неугрожающей; и запрашивают вторую последовательность инструкций.
10. Способ по п.9, в котором при классификации последовательности инструкций классифицируют последовательность инструкций как неугрожающую, если экспертная система полностью проходит по последовательности инструкций.
11. Способ автоматической идентификации вредоносных программ, содержащий этапы, на которых:
принимают, посредством базы знаний экспертной системы, последовательность на языке ассемблера из двоичного файла;
идентифицируют последовательность инструкций из принимаемой последовательности на языке ассемблера;
классифицируют, посредством базы знаний экспертной системы, последовательность инструкций как угрожающую, неугрожающую или не поддающуюся классификации посредством применения одного или более правил экспертной системы к последовательности инструкций, при этом при классификации последовательности инструкций классифицируют последовательность инструкций как угрожающую, если она включает в себя одно или более из следующего:
процедуры шифрования,
процедуры расшифровки и
одна или более инструкций для репликации, по меньшей мере, части последовательности инструкций; и
если последовательность инструкций классифицирована как не поддающаяся классификации:
передают запрос в компонент анализа кода на предмет повторного анализа последовательности на языке ассемблера,
принимают новую последовательность инструкций, соответствующую повторно проанализированной последовательности на языке ассемблера, и
классифицируют новую последовательность инструкций как угрожающую, неугрожающую или не поддающуюся классификации.
12. Способ автоматической идентификации вредоносных программ, содержащий этапы, на которых:
анализируют, посредством компонента анализа кода, двоичный файл, чтобы формировать последовательность на языке ассемблера и соответствующую последовательность инструкций;
передают последовательность инструкций в базу знаний экспертной системы;
принимают, из базы знаний экспертной системы, информацию классификации, ассоциированную с последовательностью инструкций, при этом информация классификации идентифицирует последовательность инструкций как угрожающую, если она включает в себя одно или более из следующего:
процедуры шифрования,
процедуры расшифровки и
одна или более инструкций для репликации, по меньшей мере, части последовательности инструкций;
если информация классификации идентифицирует последовательность инструкций как угрожающую:
идентифицируют одну или более других последовательностей на языке ассемблера из двоичного файла, которые содержат, по меньшей мере, часть последовательности инструкций, и
передают по меньшей мере одну из идентифицированных последовательностей на языке ассемблера в базу знаний экспертной системы;
если информация классификации идентифицирует последовательность инструкций как неугрожающую, передают вторую последовательность инструкций в базу знаний экспертной системы; и
если информация классификации идентифицирует последовательность инструкций как не поддающуюся классификации:
повторно анализируют последовательность на языке ассемблера, чтобы формировать новую последовательность инструкций, и
передают новую последовательность инструкций в базу знаний экспертной системы.
13. Способ по п.12, в котором анализ двоичного файла содержит один или более из этапов, на которых статически анализируют двоичный файл и динамически анализируют двоичный файл.
14. Система для автоматической идентификации вредоносных программ, содержащая:
компонент анализа кода, выполненный с возможностью идентифицировать последовательность на языке ассемблера из двоичного файла, при этом последовательность на языке ассемблера содержит одну или более последовательностей инструкций; и
базу знаний экспертной системы, поддерживающую связь с компонентом анализа кода, при этом база знаний экспертной системы выполнена с возможностью классифицировать последовательность инструкций как угрожающую, неугрожающую или не поддающуюся классификации с использованием одного или более правил, при этом база знаний экспертной системы классифицирует последовательность инструкций как угрожающую, если она включает в себя одно или более из следующего:
процедуры шифрования,
процедуры расшифровки и
одна или более инструкций для репликации, по меньшей мере, части последовательности инструкций.
15. Система по п.14, дополнительно содержащая компонент логики соединителя, поддерживающий связь с компонентом анализа кода и базой знаний экспертной системы, при этом компонент логики соединителя выполнен с возможностью обеспечивать связь между компонентом анализа кода и базой знаний экспертной системы.
16. Система по п.15, в которой компонент логики соединителя выполнен с возможностью выполнять одно или более из следующего:
преобразовывать последовательность инструкций в формат, который может обрабатывать база знаний экспертной системы; и
преобразовывать информацию, принимаемую из базы знаний экспертной системы, в формат, который может обрабатывать компонент анализа кода.
17. Система по п.14, в которой база знаний экспертной системы заполняется посредством одного или более из следующего:
правила интегрированной продукционной системы на языке С;
структуры двоичных файлов;
операции определения программ-червей;
операции определения программ типа "троянский конь"; и
операции определения вирусов.
18. Система по п.14, в которой база знаний экспертной системы выполнена с возможностью классифицировать последовательность инструкций посредством одного или более из следующего:
применение одного или более правил к последовательности инструкций, чтобы определять, является или нет структура двоичного файла для двоичного файла надлежащей;
применение одной или более операций определения программ-червей, чтобы определять, содержит или нет последовательность инструкций одну или более инструкций, которые реплицируют последовательность на языке ассемблера;
применение одной или более операций определения программ типа "троянский конь", чтобы определять, содержит или нет последовательность инструкций одну или более инструкций, ассоциированных с одной или более программами типа "троянский конь"; и
применение одной или более операций определения вирусов, чтобы определять, содержит или нет последовательность инструкций одну или более самореплицируемых инструкций.
19. Система по п.14, в которой база знаний экспертной системы выполнена с возможностью применять набор предварительных правил к последовательности инструкций, при этом набор предварительных правил содержит множество предварительных правил, причем каждое предварительное правило ассоциировано с приоритетом относительно других предварительных правил в наборе.
20. Система по п.19, в которой база знаний экспертной системы дополнительно выполнена с возможностью применять предварительные правила к последовательности инструкций, в порядке приоритета, до тех пор, пока последовательность инструкций не классифицирована или каждое предварительное правило не применено.
21. Система по п.19, в которой база знаний экспертной системы дополнительно выполнена с возможностью ранжировать предварительные правила посредством предоставления приоритета правилам, имеющим более высокое число совпадений с последовательностью инструкций.
Описание изобретения к патенту
Перекрестная ссылка на родственные заявки
Данная заявка притязает на приоритет по дате подачи заявки на патент США № 12/550025, поданной 28 августа 2009 г., по которой испрашивается приоритет предварительной заявки на патент США № 61/092848, поданной 29 августа 2008 г.
Предшествующий уровень техники
Двоичный файл зачастую передается между множеством вычислительных устройств. Вычислительное устройство, которое принимает двоичный файл, обычно не имеет сведений по источнику файла или тому, безопасный или нет код, который оно принимает. Чтобы обеспечивать безопасность вычислительного устройства, двоичный файл может дизассемблироваться для определения того, содержит или нет файл вредоносные программы, такие как вирусы, программы-черви, программы типа "троянский конь" и/или т.п.
Как правило, дизассемблер транслирует двоичный файл с машинного языка на язык ассемблера. Некоторые дизассемблеры являются интерактивными и дают возможность опытному программисту делать примечания, корректировки, разъяснения или решения относительно того, как дизассемблер анализирует файл. Например, дизассемблер может сообщать, когда новая функция либо конкретный сегмент кода появляется. Когда идентифицированное действие возникает, конкретный сегмент кода может помечаться для последующего использования. Тем не менее, анализ неизвестных исполняемых фрагментов может быть длительным процессом, который обычно выполняется вручную специально подготовленным персоналом или автоматически при помощи статистических способов.
Сущность изобретения
До того, как настоящие способы будут описаны, следует понимать, что это изобретение не ограничено конкретными описанными системами, технологиями или протоколами, поскольку они могут варьироваться. Также следует понимать, что терминология, используемая в данном документе, служит только для цели описания конкретных вариантов осуществления и не имеет намерения ограничивать объем настоящего раскрытия, который ограничен только прилагаемой формулой изобретения.
Следует отметить, что при использовании в данном документе и в прилагаемой формуле изобретения формы единственного числа не исключают множества, если контекст явно не предписывает иное. Если не указано иное, все технические и научные термины, использованные в данном документе, имеют значения, идентичные обычно понимаемым специалистами в данной области техники. При использовании в данном документе термин "содержащий" означает "включающий в себя, но не только".
В варианте осуществления способ автоматической идентификации вредоносных программ может включать в себя прием, посредством базы знаний экспертной системы, последовательности на языке ассемблера из двоичного файла, идентификацию последовательности инструкций из принимаемой последовательности на языке ассемблера и классификацию, посредством базы знаний экспертной системы, последовательности инструкций как угрожающей, неугрожающей или не поддающейся классификации посредством применения одного или более правил базы знаний экспертной системы к последовательности инструкций. Если последовательность инструкций классифицирована как угрожающая, информация может быть передана в компонент анализа кода, и пользователь может уведомляться о том, что двоичный файл включает в себя вредоносные программы. Информация может включать в себя одно или более из следующего: последовательность инструкций, метка, содержащая индикатор того, что последовательность инструкций является угрожающей, и запрос на выполнение поиска в одной или более других последовательностях на языке ассемблера из двоичного файла, на предмет, по меньшей мере, части последовательности инструкций.
В варианте осуществления способ автоматической идентификации вредоносных программ может включать в себя прием, посредством базы знаний экспертной системы, последовательности на языке ассемблера из двоичного файла, идентификацию последовательности инструкций из принимаемой последовательности на языке ассемблера и классификацию, посредством базы знаний экспертной системы, последовательности инструкций как угрожающей, неугрожающей или не поддающейся классификации посредством применения одного или более правил базы знаний экспертной системы к последовательности инструкций. Если последовательность инструкций классифицирована как неугрожающая, информация может быть передана в компонент анализа кода, и вторая последовательность инструкций может запрашиваться. Информация может включать в себя одно или более из следующего: последовательность инструкций и метку, содержащую индикатор того, что последовательность инструкций является неугрожающей.
В варианте осуществления способ автоматической идентификации вредоносных программ может включать в себя прием, посредством базы знаний экспертной системы, последовательности на языке ассемблера из двоичного файла, идентификацию последовательности инструкций из принимаемой последовательности на языке ассемблера и классификацию, посредством базы знаний экспертной системы, последовательности инструкций как угрожающей, неугрожающей или не поддающейся классификации посредством применения одного или более правил экспертной системы к последовательности инструкций. Если последовательность инструкций классифицирована как не поддающаяся классификации, способ может включать в себя передачу запроса в компонент анализа кода на предмет повторного анализа последовательности на языке ассемблера, прием новой последовательности инструкций, соответствующей повторно проанализированной последовательности на языке ассемблера, и классификацию новой последовательности инструкций как угрожающей, неугрожающей или не поддающейся классификации.
В варианте осуществления способ автоматической идентификации вредоносных программ может включать в себя анализ, посредством компонента анализа кода, двоичного файла, чтобы формировать последовательность на языке ассемблера и соответствующую последовательность инструкций, передачу последовательности инструкций в базу знаний экспертной системы и прием, из базы знаний экспертной системы, информации классификации, ассоциированной с последовательностью инструкций. Если информация классификации идентифицирует последовательность инструкций как угрожающую, способ может включать в себя идентификацию одной или более других последовательностей на языке ассемблера из двоичного файла, которые содержат, по меньшей мере, часть последовательности инструкций, и передачу, по меньшей мере, одной из идентифицированных последовательностей на языке ассемблера в базу знаний экспертной системы. Если информация классификации идентифицирует последовательность инструкций как неугрожающую, способ может включать в себя передачу второй последовательности инструкций в базу знаний экспертной системы. Если информация классификации идентифицирует последовательность инструкций как не поддающуюся классификации, способ может включать в себя повторный анализ последовательности на языке ассемблера, чтобы формировать новую последовательность инструкций, и передачу новой последовательности инструкций в базу знаний экспертной системы.
В варианте осуществления система для автоматической идентификации вредоносных программ может включать в себя компонент анализа кода, выполненный с возможностью идентифицировать последовательность на языке ассемблера, включающую в себя одну или более последовательностей инструкций из двоичного файла и базы знаний экспертной системы, поддерживающих связь с компонентом анализа кода. База знаний экспертной системы может быть выполнена с возможностью классифицировать последовательность инструкций как угрожающую, неугрожающую или не поддающуюся классификации с использованием одного или более правил.
Краткое описание чертежей
Аспекты, признаки, преимущества и выгодные эффекты вариантов осуществления, описанных в данном документе, должны становиться очевидными относительно последующего описания прилагаемой формулы изобретения и прилагаемых чертежей, на которых:
Фиг.1 иллюстрирует примерную систему обнаружения вредоносных программ согласно варианту осуществления.
Фиг.2 иллюстрирует примерную базу знаний экспертной системы согласно варианту осуществления.
Фиг.3 иллюстрирует блок-схему последовательности операций примерного способа для обнаружения и анализа вредоносных программ согласно варианту осуществления.
Фиг.4 иллюстрирует блок-схему примерной системы, которая может использоваться для того, чтобы содержать или реализовывать программные инструкции согласно варианту осуществления.
Фиг.5 и 6 иллюстрирует примерные последовательности инструкций согласно варианту осуществления.
Подробное описание изобретения
До того, как настоящие способы и системы описываются, следует понимать, что это изобретение не ограничено конкретными описанными системами, технологиями или протоколами, поскольку они могут варьироваться. Также следует понимать, что терминология, используемая в данном документе, служит только для цели описания конкретных вариантов осуществления и не имеет намерения ограничивать объем настоящего раскрытия, который ограничен только прилагаемой формулой изобретения.
При использовании в данном документе и в прилагаемой формуле изобретения формы единственного числа не исключают множества, если контекст явно не предписывает иное. Если не указано иное, все технические и научные термины, использованные в данном документе, имеют значения, идентичные обычно понимаемым специалистами в данной области техники. При использовании в данном документе термин "содержащий" означает "включающий в себя, но не только".
Для цели нижеприведенного описания "узел" упоминается как последовательность инструкций в рамках последовательности на языке ассемблера, которая выполняется посредством процессора.
"Язык ассемблера" упоминается как язык компьютерного программирования, который реализует символическое представление числовых машинных кодов.
"Последовательность на языке ассемблера" упоминается как последовательность узлов, написанных на языке ассемблера.
"Двоичный файл" упоминается как компьютерный файл, который включает в себя данные, кодированные в двоичном формате. Исполняемый файл является типом двоичного файла.
"Вредоносные программы" являются злоумышленным программным обеспечением, разработанным для того, чтобы разрушать, проникать в или повреждать компьютерную систему. Примеры вредоносных программ включают в себя вирусы, программы-черви, программы типа "троянский конь", программы с навязчивой рекламой, программы-шпионы, руткиты и/или т.п.
"Экспертная система" является программным обеспечением и/или микропрограммным обеспечением (sirmware) на основе искусственного интеллекта, которое выполнено с возможностью моделировать процесс принятия решений человека в конкретной проблемной области.
Фиг.1 иллюстрирует систему обнаружения вредоносных программ согласно варианту осуществления. Система обнаружения вредоносных программ может включать в себя компонент 100 анализа кода, базу 200 знаний экспертной системы и/или компонент 150 логики соединителя. В варианте осуществления компонент 100 анализа кода, база 200 знаний экспертной системы и/или компонент 150 логики соединителя могут быть реализованы с использованием программного обеспечения, аппаратных средств или комбинации программного обеспечения и аппаратных средств. В варианте осуществления компонент 100 анализа кода, база 200 знаний экспертной системы и/или компонент 150 логики соединителя могут постоянно размещаться в одном вычислительном устройстве. Альтернативно компонент 100 анализа кода, база 200 знаний экспертной системы и/или компонент 150 логики соединителя могут постоянно размещаться на различных вычислительных устройствах, поддерживающих связь друг с другом.
В варианте осуществления компонент 100 анализа кода может анализировать двоичные файлы, такие как, но не только, исполняемые фрагменты. В варианте осуществления компонент 100 анализа кода может статически или динамически анализировать двоичные файлы. Статический анализ может включать в себя анализ двоичного файла, который в настоящий момент не исполняется. В сравнении, динамический анализ может включать в себя анализ двоичного файла в то время, когда двоичный файл исполняется.
В варианте осуществления компонент анализа кода может быть реализован с использованием программного обеспечения, аппаратных средств или комбинации программного обеспечения и аппаратных средств. В варианте осуществления компонент 100 анализа кода может включать в себя дизассемблер, отладчик, декомпилятор и/или т.п. Например, компонент 100 анализа кода может быть дизассемблером, таким как IDA Pro.
Компонент анализа кода может анализировать двоичный файл, чтобы создавать последовательность на языке ассемблера. В варианте осуществления последовательность на языке ассемблера может включать в себя воспринимаемое человеком представление двоичного файла. Компонент 100 анализа кода может включать в себя внутренние правила и/или операции, которые могут использоваться для того, чтобы создавать последовательность на языке ассемблера из двоичного файла. Компонент 100 анализа кода может анализировать последовательность на языке ассемблера, чтобы определять последовательность инструкций.
В варианте осуществления компонент 100 анализа кода может взаимодействовать с внешними устройствами, чтобы анализировать двоичный файл. Например, как пояснено ниже, компонент 100 анализа кода может обмениваться данными с базой 200 знаний экспертной системы.
Как проиллюстрировано посредством фиг.1, система обнаружения вредоносных программ может включать в себя базу 200 знаний экспертной системы. В варианте осуществления база 200 знаний экспертной системы может включать в себя представление компетентности человека в конкретной области. Например, база 200 знаний экспертной системы может включать в себя информацию, данные, правила и/или т.п., чтобы моделировать знания и практический опыт опытного компьютерного аналитика.
В варианте осуществления база 200 знаний экспертной системы может быть реализована с использованием интегрированной продукционной системы на языке C (CLIPS). CLIPS является языком программирования и программным средством, которое может использоваться для того, чтобы создавать экспертные системы.
Фиг.2 иллюстрирует базу знаний экспертной системы согласно варианту осуществления. База 200 знаний экспертной системы может включать в себя внутренние правила и/или операции. В варианте осуществления эти внутренние правила и/или операции могут применяться к последовательности инструкций из последовательности на языке ассемблера, чтобы определять, содержит или нет последовательность на языке ассемблера вредоносные программы. В варианте осуществления внутренние правила и/или операции могут представлять кодирование человеческого опыта.
В варианте осуществления эксперт 205 по проблемной области может заполнять базу 200 знаний экспертной системы. Экспертом по проблемной области может быть, но не только, человек, который компетентен в анализе вредоносных программ. В варианте осуществления экспертом 205 по проблемной области может быть вычислительное устройство, выполненное с возможностью предоставлять в базу 200 знаний экспертной системы внутренние правила и/или операции, которые могут представлять кодирование человеческого опыта. Например, вычислительное устройство может автоматически предоставлять в базу 200 знаний экспертной системы обновления, улучшения и т.п. для одного или более внутренних правил и/или операций.
В варианте осуществления база 200 знаний экспертной системы может быть заполнена структурами 210 двоичных файлов. Структура двоичного файла может быть шаблоном, который иллюстрирует одну или более частей двоичного файла и/или последовательность частей в двоичном файле. Структуры 210 двоичных файлов могут использоваться для того, чтобы анализировать, является или нет структура файлов надлежащей. Например, структура 210 двоичного файла может анализироваться, чтобы определять, соответствует или нет заголовок на файле протоколу.
В варианте осуществления база 200 знаний экспертной системы может быть заполнена операциями 215 определения программ-червей. Операции 215 определения программ-червей могут идентифицировать последовательности инструкций, которые реплицируют последовательность на языке ассемблера.
В варианте осуществления база 200 знаний экспертной системы может быть заполнена операциями 220 определения программ типа "троянский конь". Операции 220 определения программ типа "троянский конь" могут идентифицировать последовательности инструкций в последовательности на языке ассемблера, которые ассоциированы с одной или более программами типа "троянский конь".
В варианте осуществления база 200 знаний экспертной системы может быть заполнена операциями 225 определения вирусов. Операции 225 определения вирусов могут идентифицировать самореплицируемые последовательности инструкций в последовательности на языке ассемблера. Дополнительные и/или альтернативные операции могут быть включены в базу 200 знаний экспертной системы.
Снова ссылаясь на фиг.1, система обнаружения вредоносных программ может включать в себя компонент 150 логики соединителя. Компонент 150 логики соединителя может предоставлять связь между компонентом 100 анализа кода и базой 200 знаний экспертной системы.
В варианте осуществления последовательность на языке ассемблера, отправляемая из компонента 100 анализа кода, может быть в формате, который не может непосредственно обрабатываться посредством базы 200 знаний экспертной системы. Компонент 100 анализа кода может передавать последовательность на языке ассемблера в компонент 150 логики соединителя. Компонент 150 логики соединителя может преобразовывать последовательность инструкций в формат, который может обрабатывать база 200 знаний экспертной системы. Компонент 150 логики соединителя может отправлять новую преобразованную последовательность инструкций в базу 200 знаний экспертной системы.
Аналогично компонент логики соединителя может получать информацию из базы 200 знаний экспертной системы. Компонент логики соединителя может преобразовывать информацию из базы 200 знаний экспертной системы в формат, который является считываемым посредством компонента 100 анализа кода, и передавать преобразованную информацию в компонент анализа кода.
Фиг.3 иллюстрирует блок-схему последовательности операций способа для обнаружения и анализа вредоносных программ согласно варианту осуществления. Двоичный файл может приниматься посредством компонента анализа кода. Компонент анализа кода может анализировать файл, чтобы получать последовательность на языке ассемблера и последовательность инструкций. Компонент анализа кода может отправлять последовательность на языке ассемблера с последовательностью инструкций в базу знаний экспертной системы через компонент логики соединителя.
База знаний экспертной системы может принимать 300 последовательность на языке ассемблера. В варианте осуществления база знаний экспертной системы может идентифицировать 305 последовательность инструкций из последовательности на языке ассемблера.
База знаний экспертной системы может применять внутренние операции и/или правила, чтобы классифицировать 315 последовательность инструкций. В варианте осуществления классификация может использоваться для того, чтобы определять то, содержит или нет последовательность инструкций вредоносные программы. Например, в варианте осуществления, база знаний экспертной системы может классифицировать последовательность инструкций как неугрожающую 315, угрожающую 330 или не поддающуюся классификации 345. Дополнительные и/или альтернативные классификации могут использоваться в рамках этого раскрытия.
В варианте осуществления база знаний экспертной системы может проходить через узлы и ветви принимаемой последовательности инструкций с использованием одного или более внутренних правил и/или операций. В варианте осуществления база знаний экспертной системы применяет группу предварительных правил к принимаемой последовательности инструкций. Каждое правило в наборе предварительных правил может иметь ранжирование относительно других предварительных правил в наборе. В варианте осуществления правила могут быть ранжированы на основе числа совпадений между каждым правилом и последовательностью инструкций. Например, последовательности инструкций, которые являются наиболее похожими на критерии совпадения правила, могут инструктировать присвоение этому правилу наибольшего приоритета для данного прохождения. Альтернативно последовательности инструкций, которые являются наименее похожими на критерии совпадения правила, могут инструктировать присвоение этому правилу наименьшего приоритета для данного прохождения.
CLIPS предоставляет стратегии разрешения конфликтов, такие как стратегия сложности и стратегия простоты, которые присваивают приоритет наиболее и наименее точным совпадениям, соответственно. В варианте осуществления такие стратегии могут использоваться для того, чтобы ранжировать правила относительно правил, которые наиболее точно совпадают с последовательностью инструкций.
В варианте осуществления база знаний экспертной системы может применять правило, ассоциированное с наибольшим приоритетом, к последовательности инструкций. В варианте осуществления одно или более дополнительных предварительных правил из группы могут применяться, в порядке своего приоритета, к последовательности инструкций до тех пор, пока последовательность инструкций не классифицирована, или до тех пор, пока все предварительные правила не применены.
Если при применении правила или правил база знаний экспертной системы проходит по последовательности инструкций от начала до конца, то последовательность инструкций может быть классифицирована как неугрожающая 315. Например, фиг.5 иллюстрирует примерную последовательность инструкций согласно варианту осуществления. Если база знаний экспертной системы может проходить по всей последовательности 500 инструкций от начала (инструкция 1 505) до конца (инструкция 8 510), то последовательность 500 инструкций может быть классифицирована как неугрожающая.
В варианте осуществления база знаний экспертной системы может передавать 320 информацию, обозначающую, что последовательность инструкций является неугрожающей, в компонент анализа кода. В варианте осуществления информация может включать в себя метку, присоединяемую к последовательности инструкций, указывающую, что последовательность инструкций является неугрожающей.
В варианте осуществления в ответ на классификацию последовательности инструкций как неугрожающей база знаний экспертной системы может запрашивать 325 новую последовательность из ассемблера с новой последовательностью инструкций, чтобы анализировать из компонента анализа кода.
В варианте осуществления база знаний экспертной системы может классифицировать последовательность инструкций как угрожающую 330, если база знаний экспертной системы не может проходить по каждой инструкции последовательности инструкций. Например, база знаний экспертной системы может анализировать последовательность инструкций посредством прохождения по инструкциям последовательности инструкций, чтобы определять, имеются или нет вредоносные программы. Например, циклом может быть индикатор вредоносных программ. Если в ходе прохождения база знаний экспертной системы достигает инструкции, которую она уже проанализировала, база знаний экспертной системы может определять, что последовательность инструкций формирует цикл. В варианте осуществления база знаний экспертной системы может классифицировать последовательность инструкций, имеющую один или более циклов, как угрожающую. Фиг.6 иллюстрирует примерную последовательность инструкций согласно варианту осуществления. Как проиллюстрировано посредством фиг.6, последовательность 600 инструкций может быть классифицирована как угрожающая, поскольку она включает в себя цикл от инструкции 6 605 до инструкции 4 610.
В варианте осуществления другие действия, которые могут служить признаком вредоносных программ или других предумышленно злонамеренных режимов работы, могут включать в себя процедуры шифрования/расшифровки, реплицируемый код, регистрацию нажатий клавиш, независимое инициирование передачи данных по сети, обмен данными с известными враждебными или подозрительными сетевыми хостами и/или т.п. Также последовательность инструкций, которая включает в себя одно или более этих действий, может быть классифицирована как угрожающая. Дополнительные и/или альтернативные действия могут служить признаком вредоносных программ в рамках этого раскрытия.
В варианте осуществления база знаний экспертной системы может передавать 335 информацию, означающую то, что последовательность инструкций является угрожающей, в компонент анализа кода. Информация может отправляться в компонент анализа кода через компонент логики соединителя, который может транслировать информацию в форму, считываемую посредством компонента анализа кода. В варианте осуществления информация может включать в себя метку, присоединяемую к последовательности инструкций, указывающую, что последовательность инструкций является угрожающей.
В варианте осуществления информация может включать в себя запрос на выполнение посредством компонента анализа кода поиска в других последовательностях на языке ассемблера, по меньшей мере, на предмет части последовательности инструкций, которая ранее проанализирована 340. Например, компонент анализа кода может выполнять поиск в других последовательностях на языке ассемблера на предмет цикла, поясненного в предыдущем примере. В варианте осуществления компонент анализа кода может использовать свои внутренние операции и/или правила для того, чтобы транслировать и/или анализировать информацию, чтобы определять, присутствует или нет, по меньшей мере, часть последовательности инструкций в последовательностях на языке ассемблера. Если компонент анализа кода находит идентичную последовательность инструкций или ее часть, компонент анализа кода может отправлять релевантную последовательность на языке ассемблера и последовательность инструкций в базу знаний экспертной системы.
В варианте осуществления база знаний экспертной системы может определять 345, является или нет последовательность инструкций не поддающейся классификации. Последовательность инструкций может быть идентифицирована как не поддающаяся классификации, если база знаний экспертной системы не может определять, является или нет последовательность инструкций угрожающей. Например, программист, который создает двоичный файл, может иметь преднамеренно используемые способы, чтобы скрывать процесс работы файла, чтобы не допускать выдачу посредством компонента анализа кода корректной последовательности инструкций. Также компонент анализа кода может отправлять неполную или бессмысленную последовательность инструкций в базу знаний экспертной системы через компонент логики соединителя.
База знаний экспертной системы может анализировать каждый узел последовательности инструкций с использованием своих внутренних правил и/или операций. На основе анализа база знаний экспертной системы может передавать 350 запрос в компонент анализа кода, чтобы повторно интерпретировать конкретный узел или последовательность узлов. Например, база знаний экспертной системы может запрашивать формирование посредством компонента анализа кода новой последовательности инструкций для конкретного узла.
В варианте осуществления запрос может включать в себя альтернативные реализации для компонента анализа кода в анализе последовательности из ассемблера. Например, в некоторых случаях компонент анализа кода может не иметь возможности надлежащим образом анализировать последовательность из ассемблера. Также может быть необходимым для базы знаний экспертной системы предоставлять информацию в компонент анализа кода, что обеспечивает возможность продолжения анализа. Например, база знаний экспертной системы может обнаруживать, что некорректная последовательность инструкций должна изменяться или игнорироваться, чтобы давать возможность продолжения анализа. В варианте осуществления эта информация может быть включена в запрос в компонент анализа кода.
В варианте осуществления компонент анализа кода может использовать свои внутренние правила и/или операции, чтобы повторно анализировать последовательность на языке ассемблера и последовательность инструкций. База знаний экспертной системы может принимать 345 повторно проанализированную последовательность на языке ассемблера и новую последовательность инструкций из компонента анализа кода через компонент логики соединителя. База знаний экспертной системы может проходить по новой последовательности инструкций, чтобы определять ее классификацию.
Фиг.4 иллюстрирует блок-схему примерной системы, которая может использоваться для того, чтобы содержать или реализовывать программные инструкции согласно варианту осуществления. Что касается фиг.4, шина 400 выступает в качестве главной информационной магистрали, соединяющей другие проиллюстрированные компоненты аппаратных средств. CPU 405 является центральным процессором системы, выполняющим вычисления и логические операции, требуемые для того, чтобы исполнять программу. Постоянное запоминающее устройство (ROM) 410 и оперативное запоминающее устройство (RAM) 415 составляют примерные запоминающие устройства или носители хранения данных.
Контроллер 420 дисков взаимодействует с одним или более необязательными накопителями на дисках для системной шины 400. Эти накопители на дисках могут включать в себя, например, внешние или внутренние накопители 425 на DVD, накопители 430 на CD-ROM или жесткие диски 435. Как указано ранее, эти различные накопители на дисках и дисковые контроллеры являются необязательными устройствами.
Программные инструкции могут сохраняться в ROM 410 и/или RAM 415. Необязательно программные инструкции могут сохраняться на машиночитаемом носителе хранения данных, таком как жесткий диск, компакт-диск, цифровой диск, запоминающее устройство или любой другой материальный носитель записи.
Необязательный интерфейс 440 дисплея может разрешать отображение информации из шины 400 на дисплее 445 в аудио-, графическом или буквенно-цифровом формате. Связь с внешними устройствами может осуществляться с использованием различных портов 450 связи.
В дополнение к стандартным компьютерным компонентам аппаратные средства также могут включать в себя интерфейс 455, который обеспечивает возможность приема данных из устройств ввода, таких как клавиатура 460, или другое устройство 465 ввода, такое как мышь, пульт дистанционного управления, сенсорная панель или экран, указатель и/или джойстик.
Следует принимать во внимание, что различные из раскрытых выше и других признаков и функций либо их альтернатив предпочтительно могут быть комбинированы во множество других различных систем или вариантов применения. Кроме того, различные непрогнозируемые или непредвиденные в настоящее время альтернативы, модификации, варьирования или усовершенствования могут впоследствии выполняться специалистами в данной области техники, которые также имеют намерение охватываться посредством следующих вариантов осуществления.
Класс G06F12/14 защита от обращений к памяти посторонних пользователей