СИСТЕМЫ И СПОСОБЫ ОБНАРУЖЕНИЯ ВРЕДОНОСНЫХ ПРОГРАММ С АЛГОРИТМОМ ГЕНЕРАЦИИ ДОМЕНОВ (DGA)
SYSTEMS AND METHODS FOR DETECTING MALICIOUS PROGRAMS WITH A DOMAIN GENERATION ALGORITHM (DGA)

Уровень техники
[1] Изобретение относится к системам и способам для защиты компьютерных систем от вредоносных программ, и, в частности, к системам и способам для обнаружения вредоносных программ, использующих алгоритм(ы) генерации доменов (DGA).
[2] Вредоносные программные средства, также известные как вредоносные программы, поражают большое количество компьютерных систем по всему миру. Во многих своих формах, таких как компьютерные вирусы, черви, руткиты и шпионские программы, вредоносные программы представляют серьезный риск для миллионов пользователей компьютеров, делая их уязвимыми с точки зрения потери данных и конфиденциальной информации, кражи личных данных и, среди прочего, потери производительности.
[3] Программные средства системы безопасности могут использоваться для обнаружения вредоносной программы, заражающей компьютерную систему пользователя, и, кроме того, для того, чтобы удалить или остановить выполнение такой вредоносной программы. В данной области техники известны несколько техник обнаружения вредоносных программ. Некоторые основаны на сопоставление фрагмента кода вредоносного агента с библиотекой сигнатур, указывающих на наличие вредоносных программ. Другие обычные способы обнаруживают набор свойств агента вредоносных программ, указывающих на наличие вредоносной программы.
[4] Вредоносные ботнеты образуют особо опасный тип вредоносной угрозы. В ходе одной спланированной атаки множество компьютерных систем заражаются агентом, сконфигурированным с возможностью подключения к удаленному ресурсу и загрузки вредоносного содержимого или другой информации, такой, например, как индикатор цели для запуска атаки типа "отказ в обслуживании". Агент может быть настроен на использование алгоритма генерации домена (DGA) для генерации доменных имен и попытки подключения к ним. Такие доменные имена обычно не зарегистрированы в реестре доменных имен, и поэтому подавляющее большинство попыток подключения терпят неудачу. Когда создатели вредоносных программ решают запустить атаку, они регистрируют одно из этих доменных имен в реестре доменных имен и вставляют содержимое онлайн. Иногда попытки элементов ботнета соединиться с соответствующими доменами оказываются успешными, и атака запускается.
[5] Поскольку генерация доменных имен выполняется с помощью неизвестных алгоритмов, предотвращение таких атак может быть затруднено. Приложение безопасности может увидеть отдельные неудачные попытки соединиться с некоторыми доменными именами, но такие попытки обычно тонут во множестве легитимных неудачных попыток соединения с внешними сайтами.
[6] Перед исследователями стоит сложная и утомительная задача идентификации зараженных агентов и инженерного анализа алгоритмов генерации доменов. Такие алгоритмы используют различные способы, одним из них является использование текущего времени в качестве входных данных для алгоритма псевдослучайной генерации. В классическом подходе к обнаружению исследователи должны дизассемблировать код, чтобы определить DGA и созданные доменные имена.
Раскрытие сущности изобретения
[7] Согласно одному аспекту компьютерная система, содержащая по меньшей мере одно запоминающее устройство и по меньшей мере один связанный микропроцессор, обеспечивает возможность выполнения, вне хоста с потенциальной вредоносной программой алгоритма генерации доменов (DGA), следующих этапов: перехват исходного ответа на первый запрос внешнего доступа, причем первый запрос внешнего доступа отправлен хостом с потенциальной вредоносной программой DGA на внешний сайт; парсинг (синтаксический анализ) по меньшей мере одного из первого запроса внешнего доступа и исходного ответа на первый запрос внешнего доступа для определения, содержит ли исходный ответ на первый запрос внешнего доступа реальное время; отправка модифицированного ответа хосту с потенциальной вредоносной программой DGA, при этом модифицированный ответ генерируется из исходного ответа путем замены исходного реального времени, включенного в исходный ответ, на увеличенное реальное время, следующее за исходным реальным временем; перехват в ответ на второй запрос внешнего доступа, отправленный хостом с потенциальной вредоносной программой DGA, ответа, указывающего, что второй запрос доступа не был успешным, причем второй запрос внешнего доступа отправляют после того, как отправлен первый запрос внешнего доступа; и, в ответ на перехват ответа, указывающего, что второй запрос доступа не был успешным, определение, что хост с потенциальной вредоносной программой DGA содержит вредоносную программу, выполняющую алгоритм генерации доменов.
[8] Согласно одному аспекту компьютерная система, содержащая по меньшей мере одно запоминающее устройство и по меньшей мере один связанный микропроцессор, обеспечивает возможность выполнения, вне хоста с потенциальной вредоносной программой алгоритма генерации доменов (DGA), следующих этапов: парсинг первого запроса внешнего доступа для определения, содержит ли исходный ответ на первый запрос внешнего доступа увеличенное реальное время, причем первый запрос внешнего доступа отправлен хостом с потенциальной вредоносной программой DGA на внешний сайт; парсинг первого исходного ответа на первый запрос внешнего доступа для определения, содержит ли первый исходный ответ первую информацию, указывающую, что увеличенное реальное время не является точным; отправка модифицированного ответа хосту с потенциальной вредоносной программой DGA, при этом модифицированный ответ генерируется из первого исходного ответа путем замены первой информации на вторую информацию, указывающую, что увеличенное реальное время является точным; перехват в ответ на второй запрос внешнего доступа, отправленный хостом с потенциальной вредоносной программой DGA на второй внешний сайт, второго исходного ответа, указывающего, что второй запрос доступа не был успешным; и определение в ответ на перехватывание второго ответа, что хост с потенциальной вредоносной программой DGA содержит вредоносную программу, выполняющую алгоритм генерации доменов.
[9] Согласно другому аспекту энергонезависимый машиночитаемый носитель обеспечивает хранение команд, которые при выполнении конфигурируют, по меньшей мере одну память и по меньшей мере один связанный микропроцессор первой компьютерной системы для выполнения, вне хоста с потенциальной вредоносной программой DGA, следующих этапов: перехват исходного ответа на первый запрос внешнего доступа, причем первый запрос внешнего доступа отправлен хостом с потенциальной вредоносной программой DGA на внешний сайт; парсинг по меньшей мере одного из первого запроса внешнего доступа и исходного ответа на первый запрос внешнего доступа для определения, содержит ли исходный ответ на первый запрос внешнего доступа реальное время; отправка модифицированного ответа хосту с потенциальной вредоносной программой DGA, при этом модифицированный ответ генерируется из исходного ответа путем замены исходного реального времени, включенного в исходный ответ, на увеличенное реальное время, следующее за исходным реальным временем; перехват в ответ на второй запрос внешнего доступа, отправленный хостом с потенциальной вредоносной программой DGA, ответа, указывающего, что второй запрос доступа не был успешным, при этом второй запрос внешнего доступа отправляют после того, как отправлен первый запрос внешнего доступа; и в ответ на перехватывание ответа, указывающего, что второй запрос доступа не был успешным, определение, что хост с потенциальной вредоносной программой DGA содержит вредоносную программу, выполняющую алгоритм генерации доменов.
Краткое описание чертежей
[10] Вышеуказанные аспекты и преимущества настоящего изобретения станут более понятны по прочтении подробного описания, приводимого ниже со ссылкой на чертежи, на которых:
[11] на фиг. 1 показаны пример клиентской системы, серверная система, обеспечивающая размещение внешнего сайта, и сервер времени, все взаимосвязанные посредством сети, согласно некоторым вариантам осуществления настоящего изобретения;
[12] фиг. 2А иллюстрирует пример конфигурации аппаратных средств клиентской системы, которая может представлять собой хост с потенциальной вредоносной программы DGA, согласно некоторым вариантам осуществления настоящего изобретения;
[13] на фиг. 2В показан пример конфигурации аппаратных средств серверной компьютерной системы или сетевого переключателя/маршрутизатора сети, которые могут обеспечивать размещение детектора DGA, согласно некоторым вариантам осуществления настоящего изобретения;
[14] на фиг. 3А показан пример набора объектов программных средств, включая процесс, запущенный на хосте с потенциальной вредоносной программой DGA, который сформирован виртуальной машиной, и детектор DGA, размещенный на той же физической системе, на которой размещен хост с потенциальной вредоносной программой DGA, согласно некоторым вариантам осуществления настоящего изобретения;
[15] на фиг. 3В показан пример набора объектов программных средств, включая процесс, запущенный на хосте с потенциальной вредоносной программой DGA, и детектор DGA, размещенный на отдельной от хоста с потенциальной вредоносной программой физической системе, согласно некоторым вариантам осуществления настоящего изобретения;
[16] на фиг. 4 показан пример запроса внешнего доступа и/или ответа согласно некоторым вариантам осуществления настоящего изобретения;
[17] на фиг. 5А показан пример последовательности этапов, выполняемых детектором DGA при парсинге запроса внешнего доступа к серверу времени, согласно некоторым вариантам осуществления настоящего изобретения;
[18] на фиг. 5В показан пример последовательности этапов, выполняемых детектором DGA при перехвате исходного ответа на запрос внешнего доступа, согласно некоторым вариантам осуществления настоящего изобретения;
[19] на фиг. 5С показан пример последовательности этапов, выполняемых детектором DGA при обнаружении процесса, выполняющего DGA, согласно некоторым вариантам осуществления настоящего изобретения;
[20] на фиг. 5D показан пример последовательности этапов, выполняемых детектором DGA при парсинге запроса внешнего доступа, который включает в себя увеличенное реальное время, согласно некоторым вариантам осуществления настоящего изобретения;
[21] на фиг. 6 показано множество математических зависимостей между исходным реальным временем и увеличенным реальным временем согласно некоторым вариантам осуществления настоящего изобретения;
[22] - на фиг. 7 показана последовательность этапов способа, который может быть использован для определения того, что подозрительный процесс выполняет DGA, согласно некоторым вариантам осуществления настоящего изобретения.
Осуществление изобретения
[23] В нижеследующем описании подразумевается, что все перечисленные соединения между структурами могут быть прямыми функциональными соединениями или опосредованными функциональными соединениями через промежуточные структуры. Набор элементов включает в себя один или более элементов. Любое упоминание элемента подразумевает по меньшей мере один элемент. Множество элементов включает в себя по меньшей мере два элемента. Если не требуется иное, любые описанные этапы способа не обязательно должны выполняться в определенном проиллюстрированном порядке. Если не указано иное, процесс является исполняющей копией компьютерной программы, такой как приложение или часть операционной системы, и характеризуется наличием по меньшей мере выполняемой последовательности и раздела виртуальной памяти, предназначенного для нее операционной системой, причем соответствующий раздел памяти содержит выполняемый код. Черный список представляет собой список объектов, для которых заблокировано выполнение набора действий. Выполнение определения или принятие решения согласно параметру включает в себя выполнение определения или принятие решения согласно параметру и, возможно, согласно другим данным. Машиночитаемые средства включают в себя энергонезависимые средства, такие как магнитные, оптические и полупроводниковые носители (например, жесткие диски, оптические диски, флэш-память, DRAM), а также линии связи, такие как проводящие кабели и волоконно-оптические линии. Сервер времени представляет собой внешний сервер, предоставляющий реальное время в ответе в ответ на запрос доступа, который получает сервер времени, и/или предоставляющий в ответ на запрос доступа, включающий в себя реальное время, ответ, указывающий, является ли реальное время, включенное в запрос доступа, точным. Сервер времени может являться или не являться сервером, выделенным для того, чтобы обеспечить значения реального времени. Выделенный сервер времени предназначен для предоставления значений реального времени в ответ на запросы. Не выделенный сервер времени может предоставлять значения реального времени как часть страницы с большим содержимым, которая может включать в себя другое содержимое, такое как текст и изображения (например, страница сервера погоды, предоставляющая информацию о текущей погоде в определенном месте в дополнение к текущему реальному времени в этом месте). Согласно некоторым вариантам осуществления настоящего изобретения предлагаются, в частности, компьютерные системы, содержащие аппаратные средства (например, один или более процессоров, сформированных на одной или большем количестве полупроводниковых подложек), запрограммированное для выполнения описанных в настоящем описании способов, а также записанные в кодах на машиночитаемых носителях команды для выполнения описанных способов.
[24] Далее описание иллюстрирует варианты осуществления настоящего изобретения посредством примеров и не носит характера обязательного ограничения.
[25] На фиг. 1 показан пример клиентской компьютерной системы 10 с DGA-хостом, соединенной с компьютерной системой 11 обнаружения DGA, которая дополнительно соединена с компьютерной системой 14 сервера DGA-мишени и компьютерной системой 15 сервера времени через коммуникационную сеть 12. Клиентская система 10 может представлять собой компьютерную систему конечного пользователя, такую как настольный компьютер, ноутбук, планшет или смартфон, личный цифровой ассистент (PDA), носимое компьютерное устройство, устройство домашнего обихода, такое как телевизор или музыкальный проигрыватель или другое электронное устройство, которое может содержать вредоносную программу. Клиентская система 10 имеет по меньшей мере один аппаратный процессор, память и хранилище данных и работает под операционной системой, такой как Windows, MacOS, Linux, Android или iOS. В некоторых вариантах осуществления клиентская система 10 может быть выполнена с возможностью запуска гипервизора и одной или более виртуальных машин. Сеть 12 может представлять собой сеть широкого охвата, такую как Интернет, при этом части сети 12 могут также включать в себя локальные сети (LAN).
[26] Некоторые процессы, выполняющиеся в клиентской системе 10, могут быть вредоносными. В частности, некоторые процессы могут потенциально выполнять алгоритмы DGA. В некоторых случаях вредоносная программа может размещаться на виртуальной машине, запущенной в клиентской системе 10. Система 11 обнаружения DGA отвечает за определение, выполняет ли процесс, запущенный на виртуальной машине, DGA. В некоторых вариантах осуществления система 11 обнаружения DGA содержит компьютерный сервер, через который клиентская система 10 имеет доступ в Интернет. В некоторых вариантах осуществления по меньшей мере часть системы 11 обнаружения DGA может быть реализована с использованием маршрутизатора или коммутатора, выполненных с возможностью программной/аппаратной реализации по меньшей мере некоторых функций по обнаружению DGA, описанных ниже. В некоторых вариантах осуществления, использующих виртуализацию, система обнаружения DGA, как описано ниже, может быть реализована на клиентской системе 10, но вне виртуальной машины, которая формирует хост с потенциальной DGA, запущенный в клиентской системе 10. В таких вариантах осуществления с виртуализацией система обнаружения DGA может быть реализована на системе гипервизора и/или на виртуальной машине, отличной от хоста с потенциальной DGA, находящегося под наблюдением.
[27] В некоторых вариантах осуществления приложение безопасности работает на сервере, образующем по меньшей мере часть системы 11 обнаружения DGA. Приложение безопасности обеспечивает возможность выполнения ряда этапов обнаружения DGA путем анализа одного или более процессов, запущенных в клиентской системе 10. Такой анализ может включать в себя анализ и перехватывание запросов внешнего доступа и ответов от клиентской системы 10 и к указанной клиентской системе. В примерном варианте осуществления такое приложение безопасности выполнено с возможностью определения, выполняет ли один или более процессов, запущенных в клиентской системе 10, DGA. Когда обнаружена вредоносная программа DGA, приложение безопасности затем идентифицирует набор доменных имен, сгенерированных DGA, и заносит этот набор доменных имен в черный список. Доменные имена, попавшие в черный список, могут быть переданы как часть обновлений программных средств для исполняющих копий приложений безопасности, запущенных на нескольких клиентских и/или серверных компьютерах, чтобы способствовать защите таких систем. Идентифицированные доменные имена могут также быть зарегистрированы, чтобы обеспечить возможность идентификации и потенциальной нейтрализации других зараженных систем.
[28] Клиент 10 может направить запрос доступа к внешнему сайту, размещенному на компьютерной системе 14. Внешний сайт может характеризоваться доменным именем, генерируемым алгоритмом генерации доменов. Доменное имя может быть образовано непонятной последовательностью буквенно-цифровых символов (например adijhaadew34.com или gsriptoi4534pfliio). Такое доменное имя вряд ли было предварительно зарегистрировано регистратором доменных имен, а значит, весьма вероятно, будет доступно для регистрации регистратором доменных имен в будущем. Если запрос доступа достигает сайта, размещенного на компьютерной системе 14, запрос доступа является успешным. Если по какой-либо причине запрос доступа не достигает сайта, размещенного на компьютерной системе 14, запрос доступа неудачен. Такой причиной может являться то, что такой сайт еще не существует, в настоящее время недоступен, или доменное имя, характеризующее сайт, не признается системой доменных имен (DNS) в качестве допустимого домена, и таким образом сообщения, адресованные сайту, не направляются на сайт. Если запрос доступа выполнен успешно, сайт, размещенный на компьютерной системе 14, отправляет ответ клиентской системе 10. Если запрос доступа не выполнен, компонент сети 12 отправляет обратно ответ клиентской системе 10, указывающий, что запрос доступа не был успешным.
[29] Клиентская система 10 также направляет один или более запросов доступа к серверу 15 времени. Сервер 15 времени отвечает на такие запросы доступа с ответом, включающим в себя реальное время. Для запросов доступа, запрашивающих подтверждение включенного в запрос реального времени, сервер 15 времени также может выдавать данные, указывающие, является ли реальное время, включенное в запрос доступа, точным.
[30] На фиг. 2-А показан пример конфигурации аппаратных средств клиентской системы 10 согласно некоторым вариантам осуществления настоящего изобретения. На фиг. 2А показана определенная структура компьютерной системы в качестве иллюстрации; другие клиентские системы могут иметь отличную структуру. В некоторых вариантах осуществления система 10 содержит набор физических устройств, включая процессор 32, блок памяти 34, набор устройств ввода 36, набор устройств вывода 38, набор устройств хранения 40, и набор сетевых адаптеров 42, при этом все они соединены набором шин 44.
[31] В некоторых вариантах осуществления процессор 32 содержит физическое устройство (например, многоядерную интегральную схему, сформированную на полупроводниковой подложке), обеспечивающее возможность выполнения вычислительных и/или логических операций с набором сигналов и/или данных. В некоторых вариантах осуществления такие логические операции направляются процессору 32 в виде последовательности команд процессора (например, машинного кода или программных средств другого типа). Блок памяти 34 может содержать энергонезависимый машиночитаемый носитель (например, RAM) обеспечивающий хранение данных/сигналов, доступных процессору 32 или произведенных им в ходе выполнения команд. Устройства 36 ввода могут содержать компьютерные клавиатуры, мыши и микрофоны, включая соответствующие аппаратные интерфейсы и/или адаптеры, позволяющие пользователю вводить данные и/или команды в клиентскую систему 10. Устройства 38 вывода могут включать в себя экраны дисплея и динамики, включая аппаратные интерфейсы/адаптеры, такие как графические карты, позволяющие клиентской системе 10 передавать данные пользователю. В некоторых вариантах осуществления устройства 36 ввода и устройства 38 вывода могут иметь общую часть аппаратных средств, как в случае устройств с сенсорным экраном. Устройства 40 хранения включают в себя машиночитаемый носитель, обеспечивающий энергонезависимое хранение, чтение и запись программных команд и/или данных. В качестве примера устройства 40 хранения включают в себя магнитные и оптические диски и устройства флэш-памяти, а также съемные носители, такие как CD и/или DVD диски и приводы. Набор сетевых адаптеров 42 обеспечивает подключение клиентской системы 10 к компьютерной сети, например, к сети 12, и/или к другим устройствам/компьютерным системам. Шины 44 в совокупности представляют собой множество системных, периферийных шин и шин микропроцессорного набора и/или все другие электрические схемы, обеспечивающие соединение между собой устройств 32-42 клиентской системы 10. Например, шины 44 могут содержать среди прочих северный мост, соединяющий процессор 32 с памятью 34, и/или южный мост, соединяющий процессор 32 с устройствами 36-42.
[32] На фиг. 2-В показан пример конфигурации аппаратных средств сервера, такого как сервер, используемый для реализованной системы 11 обнаружения DGA (фиг. 1). Такой сервер содержит серверный процессор 132, память 134 сервера, набор устройств 140 хранения данных сервера и набор сетевых адаптеров 142, все из которых соединены набором шин 144. Работа устройств 132, 134, 140 и 142 может отражать работу устройств 32, 34, 40 и 42, описанных выше. Например, серверный процессор 132 может содержать физическое устройство, обеспечивающее возможность выполнения вычислительных и/или логических операций с набором сигналов и/или данных. Память 134 сервера может содержать энергонезависимый машиночитаемый носитель (например, RAM), обеспечивающий хранение данных/сигналов, доступных процессору 132 или произведенных им в процессе выполнения вычислений. Сетевые адаптеры 142 обеспечивают возможность соединения сервера с компьютерной сетью, такой как сеть 12.
[33] На фиг ЗА показан пример обмена данными между хостом с потенциальной вредоносной программой DGA, образованным виртуальной машиной 710, и детектором 704 DGA, внешним относительно виртуальной машины 710. В проиллюстрированной конфигурации, детектор 704 DGA и виртуальная машина 710 запущены в общей физической компьютерной системе 711. В частности, в конфигурации, показанной на фиг. 3А, детектор 704 DGA представляет собой приложение, запущенное на гипервизоре 705 и/или являющееся его частью. Виртуальная машина 710 отправляет запросы доступа к внешнему сайту 714 и получает от него ответы. Набор процессов 701, 742 одновременно выполняется на виртуальной машине 710. Детектор 704 DGA анализирует запросы 702 внешнего доступа, отправленные служащим примером процессом 701. Детектор 704 DGA также перехватывает и анализирует исходные ответы 715 на запросы 702. Затем исходные ответы 715 модифицируются детектором 704 DGA в модифицированные ответы 703. При анализе запросов 702 и исходных ответов 715, детектор 704 DGA может запросить базу данных 712 сервера времени. На фиг. ЗА база данных 712 временных последовательностей показана как размещенная на компьютерной системе 711. В некоторых вариантах осуществления база данных 712 сервера времени может быть внешней относительно компьютерной системы 711. После определения того, что процесс выполняет DGA, детектор 704 DGA отправляет приложению 54 безопасности команду внести процесс в черный список.
[34] На фиг. 3В показан пример обмена данными между хостом с потенциальной вредоносной программой DGA, запущенным в компьютерной системе 711', и детектором 704' DGA, запущенным в компьютерной системе 713, отличной от системы 711', согласно некоторым вариантам осуществления настоящего изобретения. Компьютерная система 711' может представлять собой клиентскую компьютерную систему. Компьютерная система 713 может представлять собой маршрутизатор, коммутатор или серверный компьютер. Набор процессов 701', 742' выполняется одновременно на компьютерной системе 711'. Детектор 704 DGA анализирует запросы 702 внешнего доступа, отправленные процессом 701 внешнему сайту 714. Детектор 704 DGA также перехватывает и анализирует входящие ответы 715 на запросы 702. Исходные ответы 715 могут быть модифицированы в модифицированные ответы 703. При анализе запросов 702 и исходных ответов 715, детектор DGA может запросить базу данных 712 сервера времени. После определения того, что процесс выполняет DGA, детектор 704 DGA определяет одно или более доменных имен, сгенерированных DGA, и отправляет приложению 54 безопасности команду добавить домены DGA черный список. В некоторых вариантах осуществления приложение 54 безопасности может также внести в черный список DGA-инфицированный процесс, выполняемый на хосте 711, и сгенерировать один или более идентификаторов (например, хэшей) для идентифицированной вредоносной программы для передачи другим компьютерным системам.
[35] На фиг. 4 показан пример последовательности полей 401a-d, которые формируют часть запроса 702 внешнего доступа. Ответ, исходный или модифицированный, на запрос 702 внешнего доступа может включать в себя такую же последовательность полей. В некоторых вариантах осуществления детектор 704 DGA (фиг. 3А) идентифицирует поля, содержащие информацию о реальном времени, путем парсинга запроса 702 доступа и/или ответа на запрос 702 внешнего доступа. Также детектор 704 DGA может выполнить парсинг запроса 702 внешнего доступа на адрес выделенного или не выделенного сервера времени. Парсинг может быть выполнен с использованием набора описанных ниже регулярных выражений, которые используют формальные правила для описания/идентификации структур в входных данных. Например, дата может быть идентифицирована путем поиска года (например, четырехзначный номер, начинающийся с 19 или 20), за которым следует или которому предшествует месяц и дата в любом порядке (например, число от 1 до 12, и число от 1 до 31, соответственно), с последующим разделением одним из нескольких определенных разделителей (например, пробелом, запятой и т.д.). В качестве другого примера реальное время может быть идентифицировано по двум или трем числам, ограниченным величиной до 24, 60 и 60, соответственно, и разделенным одним из нескольких определенных разделителей (например, пробелом, двоеточием, и т.д.). Адрес сервера времени может быть идентифицирован по наличию одного из нескольких префиксов (например, идентификатора протокола, такому как http, https, ftp или сетевого протокола времени, ntp) и доменного имени или IP-адреса, присутствующих в базе данных или другом списке доменных имен серверов.
[36] Синтаксис и конкретная конструкция подходящих регулярных выражений могут зависеть от конкретного языка программных средств и стандартных библиотек, выбранных для реализации средств парсинга детектора 704 DGA. Стандарт IEEE POSIX (Institute of Electrical and Electronics Engineers, Portable Operating System Interface) обеспечивает подходящий синтаксис для регулярных выражений. Кроме того, стандартные библиотеки для обработки регулярных выражений доступны в различных языках, включая Perl, Java, Python, С++ и других.
[37] Рассмотрим, например, набор регулярных выражений, использующих следующий синтаксис, который применяется стандартом IEEE POSIX:
О = определяет группу;
[0-9] = любой цифровой символ от 0 до 9;
[а-z] = любой буквенный символ между а и z;
{n} = предыдущую группу можно повторить ровно n раз, при этом n - натуральное число;
{, n} = предыдущая группа может повторяться не более n раз, причем n - натуральное число;
{n,} = предыдущая группа может повторяться не менее n раз, причем n - натуральное число;
{m, n} = предыдущие группы могут повторяться число раз между тип где тип - натуральные числа;
{m, N, р} = предыдущие группы могут повторяться, m, n или р раз, где m, n и р - натуральные числа.
$ = конец анализируемого текста.
[38] С приведенным синтаксисом регулярное выражение  соответствует дате в формате yyyy-mm-dd от 1900-01-01 до 2099-12-31, с выбором четырех разделителей. Четыре разделителя - это: «-», « », «/», и «.». Также, в качестве примера, регулярное выражение  соответствует адресу URL адреса сайта.
[39] На фиг. 5А показан пример последовательности этапов, выполняемых детектором 704 DGA (фиг. 3А-В) для парсинга запроса внешнего доступа к серверу времени согласно некоторым вариантам осуществления настоящего изобретения. На этапе
501 детектор 704 DGA выполняет парсинг всех запросов внешнего доступа. Далее детектор 704 DGA перехватывает исходный ответ на запрос внешнего доступа (этап 502) и выполняет парсинг исходного ответа (этап 503). На этапе 504, детектор 704 DGA определяет, содержит ли ожидаемый ответ реальное время. Как отмечалось выше, проиллюстрированные этапы не обязательно должны выполняться в указанном порядке; например, в некоторых вариантах осуществления этап 504 может выполняться до этапов 502 и/или 503. Определение на этапе 504 может быть выполнено путем определения, включает ли в себя запрос доступа адрес выделенного или не выделенного сервера времени, путем сопоставления адреса назначения запроса доступа с одним или большим количеством списков серверов времени, включая выделенные и не выделенные серверы времени. Выделенные серверы времени могут быть идентифицированы через заранее определенные списки, такие как те, которые доступны в Организации Сетевого Времени (Network Time Foundation) на ее сайте Протокола Сетевого Времени www.ntporg. Выделенный сервер времени также может быть идентифицирован через наличие идентификатора протокола сетевого времени (ntp) в запросе. Не выделенные серверы времени могут быть идентифицированы путем поиска сайтов общего назначения (например, www.yahoo.com) и сайтов специального назначения (например, www.weather.com) для выбора сайтов, которые возвращают реальное время, и создания списка не выделенных серверов времени по результатам поиска. На этапе 504 детектор 704 DGA может запросить базу данных 712 серверов времени для определения, существует ли соответствие между URL-адресом, найденным при парсинге, и списком URL адресов из баз данных 712 серверов времени.
[40] Если детектор 704 DGA определяет, что запрос внешнего доступа не включает в себя адрес сервера времени, детектор 704 DGA обнаруживает на этапе 507, выполняет ли процесс DGA. Этап 507 подробно описан ниже. Если детектор 704 DGA определяет, что запрос внешнего доступа действительно включает в себя адрес сервера времени, детектор 704 DGA модифицирует (этап 505) перехваченный исходный ответ путем замены исходного реального времени на увеличенное реальное время, как объясняется ниже. Затем детектор 704 DGA отправляет (этап 506) модифицированный ответ процессу, который отправил запрос доступа, подвергнутый парсингу на этапе 501.
[41] На фиг. 5В показан пример последовательности этапов, выполняемых детектором DGA 704 (фигуры 3А-В) при парсинге исходного ответа на запрос внешнего доступа, согласно некоторым вариантам осуществления настоящего изобретения. На этапе 502 детектор 704 DGA перехватывает исходный ответ на запрос внешнего доступа. На этапе 503 детектор 704 DGA анализирует исходный ответ, как описано выше. Детектор 704 DGA определяет, выполняет ли процесс DGA на этапе 507.
[42] Детектор 704 DGA на этапе 524 дополнительно определяет, включает ли в себя исходный ответ поле реального времени. Определение, выполняемое на этапе 524, может включать в себя поиск одного или более значений реального времени, встроенных в текстовые поля и/или поля изображений. Поиск полей текста и/или изображения может быть выполнен с использованием известных в данной области техники способов. В некоторых вариантах осуществления поиск текстового поля может включать в себя редактирование объекта, содержащего поле, с помощью специализированного приложения (например, текстового редактора для текстового файла). Этап 524 может включать в себя сопоставление регулярного выражения для даты с результатом парсинга. Затем детектор 704 DGA модифицирует (этап 505) перехваченный ответ, заменяя реальное время увеличенным реальным временем, как объясняется ниже. Затем детектор 704 DGA отправляет (этап 506) модифицированный ответ процессу, отправившему подвергнутый парсингу запрос доступа.
[43] На фиг. 5С показан пример последовательности этапов в рамках этапа 507 (фиг. 5А-В), выполняемого детектором 704 DGA (фиг. ЗА-В) при определении, выполняет ли процесс DGA. На этапе 527 детектор 704 DGA определяет, успешен ли исходный ответ на запрос доступа. Если исходный ответ не является успешным, детектор 704 DGA определяет (этап 528), выполняет ли процесс, запущенный в компьютерной системе, DGA. Определение на этапе 528 может быть выполнено с использованием известных в данной области техники способов. Подробные сведения об обнаружении DGA на этапе 528 представлены ниже. Если процесс выполняет DGA, определяют доменные имена, созданные DGA (этап 529). Доменные имена, определенные на этапе 529, добавляются в черный список приложения безопасности на этапе 531. Черный список может быть использован при периодическом обновлении множества клиентских систем 10, которым может быть обеспечена защита от вредоносной программы DGA. Приложение безопасности дополнительно может быть выполнено с возможностью регистрации доменных имен из этапа 509 в предназначенную для этого базу данных регистратора доменных имен. Своевременная регистрация доменных имен может помешать создателям вредоносных программ использовать доменные имена для распространения и/или активации вредоносных программ через ботнет. Приложение безопасности дополнительно может быть выполнено с возможностью идентификации набора компьютерных систем, отправляющих запросы доступа на зарегистрированные доменные имена. Идентифицированный набор компьютерных систем может включать в себя элементы ботнета. Ранняя идентификация может ограничить распространение вредоносных программ через ботнет.
[44] Вредоносная программа может определять реальное время посредством различных способов, например, запрашивая операционную систему, запущенную в компьютерной системе. Приложение безопасности может изменить реальное время, которое указывает операционная система, указав увеличенное реальное время. Увеличенное реальное время отображает будущее реальное время. Вредоносная программа может запросить значение реального времени, запрашивая ОС (операционную систему). В компьютерной системе под управлением Windows для получения значения реального времени может использоваться обращение к функции GetSystemTime(). Затем вредоносная программа может проверить, является ли увеличенное реальное время, указанное ОС, точным. Для проверки вредоносная программа может включать в себя увеличенное реальное время в запросе внешнего доступа к серверу времени. Исходный ответ сервера времени может содержать указание на то, является ли увеличенное реальное время точным.
[45] На фиг. 5D показан пример последовательности этапов, выполняемых детектором DGA 704 (фигуры ЗА-В) для парсинга запроса внешнего доступа, который включает в себя увеличенное реальное время, согласно некоторым вариантам осуществления настоящего изобретения. На этапе 501 детектор 704 DGA выполняет парсинг всех внешних запросов доступа. Затем детектор 704 DGA перехватывает исходный ответ на запрос внешнего доступа (этап 502) и выполняет парсинг исходного ответа (этап 503). На этапе 544 детектор 704 DGA определяет, является ли исходный ответ успешным. Затем, если исходный ответ успешен, детектор 704 DGA определяет, содержит ли запрос увеличенное реальное время (этап 546). Такое определение может быть выполнено путем сравнения времени, извлеченного из подвергнутого парсингу запроса, с значением текущего времени. Сравнение может быть выполнено с требуемым уровнем точности - например, с определением, согласуются ли дата и/или час (но не обязательно минуты/секунды). Детектор 704 DGA может определить значение текущего времени, запрашивая ОС, запущенную в компьютерной системе. Если такое увеличенное реальное время имеется, детектор 704 DGA определяет, содержит ли исходный ответ исходную информацию о том, что увеличенное реальное время не является точным (этап 547). Если исходный ответ содержит исходную информацию, что увеличенное реальное время не является точным, детектор 704 DGA модифицирует (этап 548) исходный ответ путем замены исходной информации модифицированной информацией с указанием, что увеличенное реальное время является точным. Затем детектор 704 DGA отправляет (этап 506) модифицированный ответ процессу, отправившему запрос доступа, который был подвергнут парсингу. Если исходный ответ был успешным, детектор DGA выполняет этап 507 обнаружения DGA, описанный выше.
[46] На этапе 545 исходный ответ на подвергнутый парсингу запрос перехватывается (этап 545) и подвергается парсингу (этап 546). На этапе 547 детектор 704 DGA определяет, содержит ли подвергнутый парсингу исходный ответ информацию о том, что увеличенное реальное время, определенное на этапе 543, не является точным. Если на этапе 547 выполнено положительное определение, детектор 704 DGA заменяет информацию, что увеличенное реальное время является неточным, информацией, что увеличенное реальное время является точным и генерирует модифицированный ответ. Затем модифицированный ответ отправляется процессу, который отправил подвергнутый парсингу запрос доступа.
[47] На фиг. 6 показана математическая зависимость между исходным реальным временем 606 и увеличенным реальным временем 605, когда последовательные ответы содержат исходные реальные времена. Указанное математическое соотношение может быть зашифровано в детекторе DGA функцией, которая может быть независимой от процесса, выдающего запрос внешнего доступа. В одном варианте осуществления реальное время может быть текущим временем, которое измеряется на клиентской системе операционной системой. Прерывистая линия 601 показывает случай, когда увеличенное реальное время равно исходному реальному времени. В одном варианте осуществления увеличенное реальное время может быть представлено выпуклой функцией 603. Это может быть предпочтительно, когда выгодно обеспечить увеличенное реальное время которое постоянно идет быстрее, чем реальное время, например, когда процесс сравнивается с определенным характером протекания. В одном варианте осуществления увеличенное реальное время может быть представлено вогнутой функцией 604. Это может быть предпочтительно, когда выгодно обеспечить увеличенное реальное время, которое, после периода, в течение которого оно шло значительно быстрее, чем исходное реальное время, замедляется, например, когда характер протекания процесса подробно проверяется в течение определенного периода времени. В одном варианте осуществления увеличенное реальное время может быть представлено функцией прямой линии 602. Это может быть предпочтительно, когда характер протекания процесса изучается впервые, без каких-либо предварительных сведений.
[48] Для определения, выполняет ли процесс DGA, могут быть использованы различные способы. Некоторые способы могут анализировать URL внешнего сайта 714 (фиг. 1), и использовать эвристические процедуры, такие как обнаружение, что многие URL-адреса, генерируемые DGA, не начинаются с "www". Другие способы могут применять эвристические процедуры для анализа понятности принятого URL-адреса. Другие способы основаны на поддержке любого внешнего сайта, который был зарегистрирован в регистраторе доменных имен в заданный самый последний период, например, за последние 24 часа.
[49] Более сложные способы обнаружения DGA могут использовать анализ выполняемого кода подозрительного процесса. На фиг. 7 показан такой способ, основанный на наблюдении, что, по меньшей мере, некоторые вредоносные программы DGA запускаются событиями, которые принадлежат определенным известным типам (таким как время, системные события и т.д.) На первом этапе 701 для анализа выбирается тип триггера. На этапе 703 подозрительный процесс выполняется с использованием смешанного (действительного и символического) выполнения при подаче входных сигналов подозрительного процесса из выбранного типа триггера. Входные сигналы выбранных типов триггера представлены в виде символьных переменных. Каждый этап в смешанном выполнении выполняется действительно, если на указанном этапе не происходит ветвления в зависимости от символьной переменной, а если иначе -выполняется символически. На этапе 705 определяются все пути выполнения на основе значений символьных переменных. На этапе 707 определяются все допустимые пути выполнения. Некоторые из путей выполнения, определенных на этапе 705, могут оказаться недопустимыми, например, из-за того, что они требуют двух триггерных значений, несовместимых друг с другом. Например, путь выполнения, который не является допустимым, может включать в себя две ветви, при этом первая ветвь запускается, если значение реального времени предшествует маю 2015 года, а вторая ветвь запускается, если значение реального времени предшествует июлю 2015 года. Наконец, на этапе 711 анализируются URL-адреса, генерируемые в каждом допустимом пути. Анализ может включать в себя корреляцию URL-адресов с определенными типами триггера и значениями. В качестве примера, если более 80% URL-адресов генерируются в ответ на изменение значения не более чем двух типов триггера, то выполняется определение, что подозреваемый процесс выполняет DGA.
[50] Описанные выше примеры систем и способов обеспечивают обнаружение таких вредоносных программ, как выполняющие DGA ботнеты. В некоторых вариантах осуществления подозрительный процесс выполняется на машине, отдельной от машины, которая перехватывает и выполняет парсинг запросов внешнего доступа и ответов и обнаруживает DGA. Отдельная машина может представлять собой другую физическую компьютерную систему, виртуальную машину, размещенную на той же физической компьютерной системе. Все ответы анализируются, и ответы, содержащие исходное реальное время, модифицируются. В модифицированных ответах увеличенное реальное время заменяет исходное реальное время. Затем подозрительный процесс анализируется для определения, выполняет ли он DGA. При наличии увеличенного реального времени доменные имена, генерируемые DGA, могут быть получены до фактического времени, когда они будут созданы.
[51] В некоторых вариантах осуществления подозрительный процесс может отправить запрос внешнего доступа, который включает в себя увеличенное реальное время. Эта ситуация может возникнуть при попытке подозрительного процесса проверить реальное время, полученное запросом операционной системы. Исследователи могут изменить реальное время, указанное операционной системой, путем указания времени в будущем. Таким образом, реальное время, указываемое операционной системой, становится увеличенным реальным временем. При обычном функционировании исходный ответ с внешнего сайта указывает, что увеличенное реальное время не является точным. Исходный ответ модифицируется таким образом, что модифицированный ответ указывает, что увеличенное реальное время является точным. Затем подозрительный процесс подвергается анализу для определения, выполняет ли он DGA. При наличии увеличенного реального времени доменные имена, генерируемые DGA, могут быть получены до фактического времени, когда они будут созданы. Таким образом, исследователи могут определить доменные имена, которые DGA будет генерировать в будущем.
[52] Когда получены несколько ответов, отправленных подозрительным процессом и включающих в себя реальное время, согласно некоторым вариантам осуществления могут быть использованы математические функции для вычисления увеличенного реального времени для модифицированных ответов. Указанные различные функции предпочтительно применять, когда подозревается определенная частота в генерации DGA доменов.
[53] Наличие увеличенного реального времени и, следовательно, запуска выполнения DGA, позволяет исследователям обнаружить вредоносный характер протекания без привлечения трудоемких усилий, чтобы распознать выполняемый код. Занесение в черный список доменов, которые генерируются алгоритмами DGA, позволяет поставщику приложений безопасности обеспечить своим клиентам обновления перед тем, как вредоносная программа, использующая алгоритмы генерации доменов, активируется создателями вредоносной программы. Домены, которые определены как генерируемые алгоритмами DGA, могут быть зарегистрированы заранее, и элементы ботнета могут быть идентифицированы по запросам, полученным на зарегистрированных доменах.
[54] Перехватывание, парсинг и обнаружение выполнения DGA вне хоста с потенциальной вредоносной программой DGA обеспечивают преимущество, состоящее в изоляции хоста с потенциальной вредоносной программой DGA от инструментальных программных средств для исследования. Таким образом, риск того, что вредоносная программа изменит свой характер протекания при наличии инструментов защиты от вредоносных программ, значительно снижается. Кроме того, такой подход не требует изменения во внутреннем реальном времени, указываемом ОС хоста с вредоносной программой DGA. Исследователи могут выбрать оптимальную вычислительную среду для обнаружения вредоносной программы DGA. В некоторых вариантах осуществления может быть предпочтительно запустить подозрительный процесс. В некоторых вариантах осуществления может быть предпочтительно обнаружить вредоносную программу DGA от маршрутизатора или коммутатора, объединяющих Интернет-трафик Интрасети.
[55] Специалисту в данной области техники будет очевидно, что вышеуказанные варианты осуществления изобретения могут быть различным образом изменены без выхода при этом из объема правовой охраны настоящего изобретения. Соответственно, объем правовой охраны изобретения должен определяться прилагаемой формулой изобретения и ее юридическими эквивалентами.