P2PWNED — Мооделирование и оценка устойчивости P2P ботнетов

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 13:03, 27 ноября 2015.
P2PWNED — Modeling and Evaluating the Resilience of Peer-to-Peer Botnets
Screen.jpg
Авторы Christian Rossow[@: 1][@: 2],

Dennis Andriesse[@: 2],
Tillmann Werner[@: 3],
Brett Stone-Gross[@: 4],
Daniel Plohmann[@: 5]
Christian J. Dietrich[@: 1],
Herbert Bos[@: 2]

Опубликован 2013 г.
Сайт IEEE Symposium on Security and Privacy
Перевели Sofia Balashova
Год перевода 2015 г.
Скачать P2PWNED — Modeling and Evaluating the Resilience of Peer-to-Peer Botnets



Аннотация

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

Введение

Преступники используют ботнеты для бесчисленных злонамеренных действий, включая атаки отказа в обслуживании, спам и банковское мошенничество. Наиболее общепринятый тип архитектуры в существующих ботнетах основан на центральном Command&Control сервере. Поэтому, эти центральные сервера привлекают возрастающее внимание специалистов по безопасности и правоохранительных органов для прослушивания.[1][2] В ответ ботнет контроллеры (ботмастера) спроектировали и реализовали новые архитектуры, чтобы сделать свои ботнеты более устойчивыми. Некоторые ботнеты используют быстропоточные сервера доменных имен (DNS) для назначения адресов C&C доменам[3] из большого пула IP адресов, принадлежащих скомпрометированным системам. В дополнение взломщики создали алгоритмы генерирования доменов (DGA) для динамического генерирования доменных имен, использованных для C&C (например, основанные на начальных значениях таких как текущие дата/время и трендах в Twitter)[4]. Более радикальным и набирающим популярность способом увеличения устойчивости ботнетов является метод организации ботнета как P2P сети. В P2P ботнете боты соединены друг с другом для обмена C&C трафиком, что устраняет потребность в центральном сервере. В результате P2P ботнеты не могут быть разорваны посредством традиционных подходов атак централизованных инфраструктур.
Даже если современные P2P ботнеты такие как Zeus P2P, Sality, ZeroAccess и Kelihos выжили в течение пяти лет, относительно немного известно о размерах этих ботнетов. Трудно оценить размер ботнета по ряду причин. P2P ботнеты часто используют специальные протоколы, так что исследователи в первую очередь должны перепроектировать протокол и шифрование, а затем отследить численность ботнета. В дополнение подходы, основанные только на IP адресах, оказались неточными, если не принимать в расчет смену IP адресов[1].
Другой значительной проблемой является то, что в настоящее время не существует систематического метода анализа устойчивости P2P ботнета к прослушиванию. Предшествующая работа показала значительные уязвимости в некоторых P2P ботнетах, таких как Storm[5] и Waledac[6], но эти исследования фокусируются на специфических недостатках разработки уникальных для этих P2P ботнетов.
В данной статье мы представляем граф-теоретическую модель P2P ботнета, которая содействует анализу устойчивости таких ботнетов. Предложенная модель выявляет основные характеристики P2P ботнетов, охватывает внутренние свойства их самоорганизованной сущности. Мы расширяем нашу модель ослабляющими стратегиями, которые в основном применимы к любому P2P ботнету. Наша модель освещает два аспекта устойчивости:

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


Мы применяем наши методы к реальным P2P ботнетам, чтобы оценить их устойчивость к смоделированным атакам.
Мы используем методы разведки, описанные в нашей модели, чтобы собрать информацию о реальных P2P ботнетах. В частности мы разворачиваем две P2P техники подсчета узлов, а именно неравномерное распределение и сенсорные узлы, для измерения численности конкретных P2P ботнетов. Наши эксперименты показывают, что некоторые из них содержат более миллиона зараженных систем, что иллюстрирует размер угрозы P2P ботнетов. Интересно, что мы нашли значительные различия в количестве ботов, найденном обоими методами. Как мы покажем, неравномерное распределение может недооценивать величину ботнета по двум порядкам. В дополнение мы отождествляем естественное ограничение неравномерного распределения, а именно то, что оно не может проверить подлинность 60-87% подсчитанных узлов, которые находятся за NAT (преобразованием сетевых адресов), прокси или фаерволами.
Также мы применяем деструктивные атаки, объявленные в нашей модели, к реальным P2P ботнетам. Мы покажем, что некоторые P2P ботнеты довольно устойчивы к сбоям – явное усовершенствование ранних ботнетов таких как Storm и Waledac. Например, Sality использует схему репутации пиров, которая значительно усложняет атаки. В качестве другого примера, Zeus P2P ботнет использует автоматическое занесение в черный список фальшивых серверов слишком агрессивно общающихся. Более того мы покажем, что некоторые P2P ботнеты способны отражать изначально успешные атаки на P2P уровни в течение длительного срока с помощью резервных копий C&C каналов. Кроме того мы выяснили, в какой степени P2P ботнеты восприимчивы к атакам, таким как внедрение команд (в отличие от атак против ботнет инфраструктуры).
В итоге таков наш вклад:

  1. Мы предположили формальную графовую модель для P2P ботнета и определили методы атак, которые применимы к любому P2P ботнету. Эта модель может быть полезна для аналитики вредоносного ПО в попытках ослабления P2P бонетов.
  2. Основываясь на нашей модели, мы реализовали атаки сбора информации против современных P2P ботнетов. Мы оценили и сопоставили точность двух техник измерений P2P ботнетов, а именно неравномерного распределения и сенсорных узлов. Мы обеспечили приближение численности ботнетов по нижней границе и показали, что результаты неравномерного распределения этих ботнетов ограничены в точности.
  3. Мы оценили устойчивость всех действующих в настоящее время P2P ботнетов с помощью моделирования наших формализованных атак. Мы обнаружили, что некоторые P2P ботнеты восприимчивы к сбоям, в то время как остальные имеют более сильную конструкцию, что требует более сильной прослушки.


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

Общее представление о P2P ботнетах

Данный раздел содержит обзор наиболее значимых семейств P2P ботнетов, возникших в начале 2007 и в середине 2012 годов. Наш обзор основан на анализе динамической вредоносной аналитической платформы SANDNET[7] в сочетании с обратным инжинирингом, непосредственным прослушиванием и техническими отчетом вредоносных аналитических компаний. Мы ограничиваемся ботнетами, которые испоьзуют P2P каналы в качестве основных средств коммуникации. Мы не рассматриваем Conflicker.C[8] или TDL4[9], так как эти ботнеты используют P2P компоненты в качестве резервных каналов. Далее в статье мы будем рассматривать семейства ботнетов, виды ботнетов и сами ботнеты. Термин семейство ботнетов используется для обозначения определенной разновидности ботнета. Термин вид ботнета указывает на вид внутри семейства ботнета. Наконец, термин ботнет мы используем, чтобы обозначить связный набор хостов, инфицированных конкретным видом ботнета. Некоторые виды ботнетов содержат несколько непересекающихся ботнетов.

Характеристики P2P ботнетов

Рисунок 1: Действующие семейства P2P ботнетов, их виды и состояния.

В статье мы подробно разберем 12 видов P2P ботнетов. Рисунок 1 показывает каждый вид P2P ботнетов, действующих в момент на ноябрь 2012 года. Как показано на рисунке, в настоящее время существует и действует четыре семейства P2P ботнетов. Каждое изученное семейство, за исключением Zeus, состоит из нескольких главных версий. Наконец, для каждой главной версии существует один или более непересекающихся ботнетов. Ботенты, которые успешно подверглись синкхолингу, показаны ячейками темно-серого фона.
Рисунок 2 показывает продолжительность жизни видов ботнетов, детально рассмотренных нами, а также самые значимые P2P ботнеты, более не действующие. Мы видим, что самая часто встречающаяся минимальная продолжительность жизни семейства ботнетов составляет восемь месяцев (Miner), в то время как Sality существовала пять лет. Большая разница показанных продолжительностей жизни P2P ботнетов может быть частично обусловлена тем, что некоторые семейства более устойчивы по сравнению с другими. Однако степень устойчивости это не достаточный показатель. Например, мы покажем в разделе 7, что семейство ботнетов ZeroAccess, одно из самых долгоживущих семейств P2P ботнетов, в принципе легко поддается синкхолингу.

Рисунок 2: Продолжительность жизни видов P2P ботнетов.


Таблица 1 показывает коммуникационный протокол, метод распространения сообщений, направление коммуникации, C&C архитектуру и цели каждого P2P ботнета. Заметим, что все современные P2P ботнеты имеют неструктурированные P2P протоколы, то есть для распространения информации используется метод рассылки сообщений (gossiping). На сегодняшний день большая часть научной работы над P2P ботнетами направлена на структурированные архитектуры[10][11][12][13]. Боты в структурированном P2P ботнете обычно содержит распределенную хеш-таблицу, которая используется для хранения и распределения команд. Неструктурированные сети невосприимчивы к большинству ослабляющих стратегий для структурированных сетей, описанных в литературе. Исходя из того, что на сегодняшний день используется большое количество неструктурированных P2P ботнетов, мы предположили атаки, которые в общем случае применимы и к структурированном, и к неструктурированным P2P ботнетам.
P2P ботнеты, представленные в таблице 1, используются в различных целях, включая распространение вредоносного ПО, спам, мандатные кражи и DDos атаки. Таблица также показывает C&C архитектуру всех P2P ботнетов. Nugache, Sality и ZeroAccess основаны исключительно на P2P. Остальные ботнеты основываются на гибридных архитектурах, которые включают в себя централизованные сервера, например чтобы хранить украденные данные. К сожалению, отключение этих централизованных компонент обычно дают минимальных эффект, так как P2P уровень может легко перенаправить боты на альтернативные сервера. Таким образом, мы особенно фокусируемся на устойчивости P2P уровня.

Таблица I: обзор семейств P2P ботнетов, показывают их протоколы, методы распространения сообщений, направления коммуникаций, C&C архитектуру и цель. Основная цель выделена жирным. C = накручивание числа кликов по ссылке, D = DDos, M = биткоин майнинг, N = сетевые услуги, P = PPI, S = спам, T = мандатные кражи .

Описания ботнетов.

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

  1. Nugache: Nugache был P2P ботнетом, основанным на специальном протоколе, впервые появившемся в начале 2006 года[14]. Его основной целью были DDos атаки. Ранние версии использовали IRC для C&C, но со временем C&C инфраструктура была перенесена на P2P протокол. Nigache был одним из первых ботнетов, использовавших сильную криптографию для защиты связи. Некоторые сообщения был подписаны 4096-битным RSA ключом, чтобы предотвратить неавторизованный контроль. Часть связей между пирами была зашифрована гибридной RSA/Rijndael схемой.
  2. Storm: Storm (a.k.a. Peacomm) был структурированным P2P ботнетом, основанным на Overnet, реализованным a Kademlia. Storm появился в январе 2007 года. Первая версия была построена на существовавшей в то время Overnet сети для распределения файлов, которую Storm разделял безопасными клиентами. Боты получали команды временным алгоритмом, чтобы вычислить индексы, под которыми новые команды будут опубликованы ботмастером, а затем находить эти индексы в распределенной хеш-таблице. Хольц и др.[5] показали, что Storm может быть ослаблен путем переписывания индексов команд в распределенной хеш-таблице.
  3. ээSality P2Pээ: P2P версия Sality впервые появилась в начале 2008 года и является разновидностью централизованного вредоносного загрузчика Sality. Sality использует неструктурированную pull-based P2P сеть для распространения URL, с которых должна произвестись загрузка. Пиры регулярно связываются с соседями для обмена URL. Мы рассмотрим два непересекающихся ботнета Sality, отмеченные как версии 3 и 4. Обе ботнет сети разделяют один и тот же P2P протокол, но в версии 4 исправлена критическая уязвимость в механизме загрузки файлов[15].
  4. Waledac: Waledac возник в декабре 2008 года и предполагался как преемник Storm[6]. Сеть Waledac использовала многоуровневую инфраструктуру, верхние уровни централизованных нодов которой предоставляли команды и шаблоны спама для средних уровней нодов маршрутизаторов. Ноды уровня марштрутизатора были ответственны за передачу сообщений нижним уровням сети, состоящим из обычным P2P ботов. Боты на рабочем уровне составляли большинство нодов в P2P сети Waledac и были соединены с уровнем маршрутизации через неструктурированную pull-based P2P сеть.
  5. Kelihos: Kelihos (a.k.a. Hlux) это неструктурированный P2P ботнет, в основном использовавшийся для спама и краж личных данных[16]. Kelihos впервые появился в конце 2010 года и рассматривался, как преемник Waledac. Исследователи успешно провели синкхолинг первых двух версий Kelihos с помощью обработки списка пиров. Эти атаки произошли в сентябре 2011 года и марте 2012 соответственно. Последующая третья версия до сих пор функционирует и имеет архитектуру, схожую с первыми двумя версиями[17].
  6. ZeroAccess: ZeroAccess (a.k.a. Sirefef) это вредоносный загрузчик, который имеет неструктурированную P2P архитектуру. Он существует в двух видах и организован в семь непересекающихся сетей. Первые две версии появились в середине 2009 года и в начале 2012 года соответственно. Боты в ZeroAccess регулярно запрашивают у соседей новую нагрузку. Список новых пиров доставляется всем ботам через механизм трансляции[18][19].
  7. Miner: Miner был неструктурированным P2P ботентом, который появился в августе 2011 года, и предоставлял средства для генерирования («майнинга») электронной валюты, называющейся Биткоин[20]. «Добывающий» ботнет состоял из двух непересекающихся сетей, содержащих примерно 38000 пиров без преобразования сетевых адресов, согласно данным Лаборатории Касперского[21]. Ботнет прекратил функционировать в марте 2012 года.
  8. Zeus P2P: Две первых версии Zeus были централизованными и были отслежены и атакованы специалистами по вредоносному ПО. Разработка Zeus разделилась на множество видов, включая новый вид P2P Zeus, который появился в сентябре 2011 года. Этот вид P2P спроектирован, чтобы противостоять атакам, обычно производящимся против традиционных ботнетов Zeus. Заметим, что в том время как централизованный Zeus обычно образует несколько отличных ботнетов, P2P вид охватывает один связанным ботнет. P2P вид использует неструктурированную push/pull-based P2P сеть для передачи команд, украденной информации и обновлений конфигурации. Zeus создан для краж личных данных (частично для финансового мошенничества) из зараженных систем. Эта украденная информация отсылается в зону сброса через часто меняющихся прокси ботов, расположение которых распространяется через P2P Zeus сеть.

Формальная модель P2P ботнета

Этот раздел показывает формальную модель, охватывающую основные характеристики описанных ранее P2P ботнетов. Мы определяем не маршрутизируемый пир как пир, доступ к которому не могут получить остальные пиры, но при этом он имеет возможность связываться с одним и более пирами (например, с пиром за NAT или прокси). Мы определяем маршрутизируемый пир как пир, с которым могут связаться остальные пиры (через разрешенное соединение). Более того мы определяем недостижимый пир как пир, доступ к которому не имеет ни один пир и который сам не может связаться ни с одним пиром (например, пир вне сети), но он до сих пор известен одному или более пирам.
Определение 1. P2P ботнет это ориентированный граф G := (V, E), в котором V- это множество пиров, E ⊆ V × V, (u, v)- дуга, где u, v ∈ V. Множество пиров V := Vr ∪ Vn ∪ Vu это непересекающееся объединение маршрутизируемых пиров Vr, не маршрутизируемых пиров Vn и недостижимых пиров Vu.
Заметим, что не требуется, чтобы орграф был связным и чтобы некоторые непересекающиеся соединенные компоненты соответствовали определению 1. Это соответствует нашему определению P2P ботнетов, так как мы рассматриваем два компьютера, зараженных одним ботом как часть одного ботнета, даже если они принадлежат разным частям P2P графа в данный момент времени.
Все P2P ботнеты исполнены в концепции списка пиров, чтобы отслеживать соседние пиры. Из определения 1 мы можем вывести следующее определение списка пиров:
Определение 2. Пусть G = (V, E) определяет P2P ботнет. Множество дуг Ev := {(u,v) ∈ E}, для пира v ∈ V называется списком пиров для v.
Список пиров выражает отношения соседних пиров в графе в момент времени. В действительности список пиров может быть крайне изменчивым и не требует явного хранения. Заметим, что список пиров может содержать вершины с маршрутизируемыми, не маршрутизируемыми и недостижимыми пирами.
Определение 3. Назовем deg+(v) := |Ev| полустепенью исхода v. Назовем deg(v) := |{(u, v) ∈ E}| полустепенью захода.
В P2P ботнетах G едва ли полный, т.е. ∃u,v ∈ V : (u,v) ∉ E. Это следует из изменений в сети (пиры присоединяются или покидают сеть), что в противном случае может потребовать дорогостоящих операций для сохранения топологии графа. На самом деле ботнеты обычно объединяются в рассеянные графы, т.е. ∀v ∈ V : deg+(v) << |V|. Поскольку списки пиров обычно ограничены в размере, максимально возможная полустепень исхода также ограничена. Полустепень захода пира не так легко определить. Можно было бы изучить весь граф и посчитать дуги (u,v) ∈ E для пира v. Однако полустепень исхода это очень важная величина для известности пира. Чем более известен пир в ботнете, тем большее влияние он оказывает на процесс распространения информации.
Используя нашу формальную модель, мы можем выразить несколько операций. Удаление дуги (u,v) из графа представляет собой преобразование D : G → G' with G' := (V,E') и E' := E \ (u,v). Это происходит, например, когда пир для поддержания связности удаляет недостижимые точки входа пиров из своего списка пиров. D = Dn ◦ Dn−1 ◦ ... ◦ D1 показывает композицию многочисленных операций удаления. Вставка новой дуги (u,v) в граф (представление новой P2P связи) может быть выражена как преобразование I : G → G' при G' := (V',E'), гдеV' := V ∪ {v} и E' := E ∪ {(u, v)}. I является композицией нескольких вставок.
Ограничением модели является то, что обновления дуг (изменение существующих точек входа списка пиров последней информацией) не могут быть прямо выражены. Это может потребовать возможность параметризации и различии дуг и существенно увеличит сложность нашей модели. Однако если мы рассматриваем обновление дуги как часть логики протокола на высшем уровне, то мы можем изменить нашу модель посредством добавления операции обновления U := I ∘ D, определенной как вставка дуги после ее предварительного удаления. U обозначает множественное последовательное обновление.
Операции вставки, обновления и удаления в графе P2P ботнета позволяет нам с помощью необходимых примитивов описать стратегии разведки и ослабления, описываемые в следующем разделе.

Атаки на P2P ботнеты

Этот раздел описывает основные атаки на P2P ботнеты и их формальные описания. Атаки основаны на следующих наблюдениях: (1) Для функционирования ботнета входящие в него пиры должны быть объединены, т.е. они должны общаться друг с другом. (2) Пиры не могут быть заверенными, так как защитная схема идентификации (которая включает в себя центральный доверенный компонент) противоречит динамической самоорганизационной природе P2P сетей. Таким образом, P2P ботнеты основываются на объединении не доверенных частей, два недостатка, которые можно использовать.
В этом разделе мы определим основные методы атак, которые могут быть применены к любому P2P ботнету, соответствующему нашей модели. Затем мы представим классы атак на два свойственных недостатка, которые построены на этих методах: сбор информации и разрушение и уничтожение.

Методы атак

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

Алгоритм 1 графового поиска в P2P ботнете
  1. Поиск в графе: Многие атаки основаны на знании P2P топологии ботнета. Один подход перестроения P2P графа это прохождение по всем вершинам, запрашивая их списки пиров, и подсчет всех дуг. Это можно осуществить с помощью поиска в графе. Результатом этого мы обозначаем граф обхода графа G := (V,E) и определяем его как GC = (VC ⊆V, EC ⊆E). Пиры v ∈ V : deg(v) = 0 невидимы в ходе поиска в графе. Это является значительным ограничением. Более того только маршрутизируемые пиры могут быть соединены. Следовательно, наилучший результат поиска это граф GC with EC = {(u,v) : u ∈ Vr, v ∈ V }. Другими словами, в оптимальном случае графовый поиск исследует списки пиров всех маршрутизируемых пиров. В действительно это затруднительно, так как большинство топологий P2P ботнетов динамичны настолько, что могут меняться в течение графового поиска, что ведет к неверным результатам. Также, основываясь на начальном списке пиров, некоторые пиры могут быть не исследованы в ходе поиска: Положим V = V' ∪ V", и графовый поиск начинается с пира в V'. Пиры в V" не могут быть исследованы в ходе графового поиска, если ∀v ∈ V' ∩ V": v ∈ Vr ⇒ (v,u ∈ V") ∈ E .


Алгоритм 1 описывает общий алгоритм поиска в графе P2P ботнета. В строке 1 инициализируется начальное множество пиров, которое можно получить посредством обратного инжиниринга или динамического анализа. Пиры, отвечающие запросами списка пиров, добавляются в множество кешированных маршрутизируемых пиров VCr в строке 5. Далее, соседние с ними пиры добавляются в кеш пиров VC. Список дуг обновляется в строке 7. Можно получить снимок состояния P2P ботнета, остановив процесс поиска, если он не обнаружил новые дуги в течение прохода по кешу пиров. Наилучшее производительность обычно приводит к более точным результатам исследования, потому что чем дольше длится цикл, тем выше вероятность того, что топология изменится. Еще один параметр это стратегия выбора пира (строка 9). Большинство поисков выполнено как поиск в ширину, представляя VC как очередь для приоритетного исследования локального контекста в быстро меняющихся топологиях. Используя вместо этого стек, можно поменять поиск на поиск в глубину.

  1. Внедрение пира: Большинство атак на P2P ботнеты основаны на изменениях графовой топологии манипуляциями над множество дуг и множеством вершин. Только последнее не разумно, так как только что добавленный пир не может повлиять на топологию, потому что он не известен остальным пирам. Поэтому для того чтобы изменить топологию, обязательны манипуляции над E. Если положить I(v) : G → G' = (V',E') и обозначить параметризированную операцию вставки как V' = V ∪ v, E' = E ∪ {(u,v)}, u ∈ V, мы можем определить внедрение пира v как композицию I(v) := In(v) ◦ In−1(v) ◦ ... ◦ I1(v). Из этого следует, что deg(v) ≥ 1. Заметим, что v не обязательно должен быть маршрутизируемым.
  2. Уничтожение списка пиров: В противовес предыдущему методу уничтожение списка пиров описывает «искажающие изменения» списка пиров пира. Здесь объектом является один пир, а не весь P2P граф. Чтобы разрушить список пиров, точки входа могут быть или удалены, или заменены на недействительные (недостижимые или не маршрутизируемые) точки входа, т.е. пиров из V \ Vr. Положим deg+G(v), обозначающую полустепень исхода v в G и определим D(v) : G → G' = (V,E') как параметризированную операцию удаления с E' = E \ (v,u), u ∈ V. D(v) это параметризированная композиция, U(v) и U(v) эквивалентные операции обновления. Уничтожение списка пиров пира v это преобразование R(v) := U(v) ◦ D(v) : G → G' = (V',E'). Заметим, что обновления могут создавать новые вершины, соответственно множество пиров может меняться. Из этого следует, что deg+G (v) ≤ deg+G(v) (пониженная полустепень исхода, если дуги были удалены) и |{(v,u)} ∩ E| < |{(v,u)} ∩ E|, u ∈ Vr (меньшее количество дуг в маршрутизируемые пиры путем инвалидации).

Класс 1: сбор информации

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

  1. Неравномерное распределение: Стандартный подход к анализу P2P ботнета это просмотр как можно больше пиров и сбор информации о них. Данная информация может быть чем угодно, что доступно остальным пирам, которое зависит от специального протокола связи. Например, один протокол может показывать версию ОС, другой может содержать текущее локальное время. Неравномерное распределение основано на графовом поиске и представляет эффективный метод накопления информации. Однако покрытие, которое может быть достигнуто этим подходом, в большой степени зависит от деталей P2P протокола. Если, например, в конкретном списке пиров присутствуют только маршрутизируемые пиры, то видимость метода очень ограничена.
  2. Сенсорные узлы: Если информация о пирах имеет приоритет перед преобразованием графа, может быть использована альтернативная стратегия. Кан и другие ученые представили метод подсчета численности структурированных P2P ботнетов[22]. Они предложили ввести специальные сенсорные узлы в область распределенной хеш-таблицы ботнета. Мы обобщим эту идею, основываясь на том наблюдении, что пиры в современных P2P ботнетах периодически контактируют с соседями, т.е. в течение регулярных циклов верификации списка пиров. Введение сенсора может быть произведено через внедрение пира. Сенсоры также могут быть достижимы не маршрутизируемыми пирами v ∈ Vn, которые потенциально преодолевают некоторые недостатки неравномерного распределения. Однако покрытие сенсора зависит от его известности. Полустепень захода deg(s) сенсора может быть увеличена неравномерным распределением P2P графа и внедрением s в некоторые просмотренные списки пиров. В зависимости от протокола ботнета s может быть распространен дальше посредством общения между пирами, и следовательно, также будет достижим пирами из Vn. От динамики списков пиров ботнета зависит, необходимо ли постоянное оповещение сенсора о поддержании своей известности или точки входа списка пиров сохраняются длительное время и автоматически распространяются. Таким образом, характеристики протокола P2P ботнета существенны для достигаемого покрытия этим подходом.

Класс 2: разрушение и уничтожение

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

  1. Разбиение: Одна основная атака на инфраструктуру P2P ботнета пытается запретить распространение информации путем разбиения графа. Например, если некоторые узлы могут быть распознаны как источники новых команд, можно попробовать изолировать их, устраняя все дуги с остальными пирами. Чтобы сделать дугу недействительной, можно удалить или заменить ее методом уничтожения списка пиров. Список дуг для удаления зависит от типа протокола (push/pull-based): если команды должны быть переданы от пира v его соседям, можно определить R(v). В обратном случае можно определить R(u) ∀u : (u,v) ∈ E. Заметим, что в последнем случае дугу (u,v) нелегко определить и что атака может потребовать предварительных операций.


Пусть R - серия последовательных операций разрушения списка пиров. Тогда определим разбиение как преобразование R* : G → G' = (V' ∪ V",E) such that (u,v) ∈ E : u ∈ V' ⇒ v ∉ V" ∧ u ∈ V" ⇒ v ∉ V' . Иными словами, множество пиров разделяется на два несоединенных подграфа, путем удаления всех дуг между ними.
В самом крайнем случае каждый пир представляет собственное разбиение, которое не позволяет распространение информации. То есть множество дуг в маршрутизируемые пиры в P2P графе пусто: ∀u ∈ V, v ∈ Vr : (u, v) ∉ E. В общем случае этого трудно добиться, так как главной целью большинства P2P протоколов является поддержание связи между пирами.
Заметим, что разбиение требует сведений о топологии графа, т.е. необходимо знать, какие дуги удалять. Эта информация может быть получена путем неравномерного распределения, например. Однако чем больше дуг устранено, тем труднее становится распределить сеть. Внедрение сенсорного узла может облегчить проблему.
Более общее преобразование не требует разбиения на части, но снижает известность узлов удалением конкретных дуг из графа, что приводит к снижению полустепени захода пира. Данному виду атаки соответствует преобразование R : G → G' = (V,E'), ∃v ∈ V : degG(v) < degG(v). Заметим, что уменьшение полустепени захода v влечет уменьшение полустепени исхода некоторого пира u ∈ V, (u,v) ∈ E, и наоборот. Чем больше пиров подвержено этому действию, тем более рассеянным становится результирующий граф, что потенциально замедляет распространение информации. Атаки на «горячие точки» (самые известные узлы) могут оказать значительный эффект на время распространения данных.

  1. Синкхолинг: Другой разрушительной атакой на инфраструктуру P2P ботнетов является синкхолинг. В этой атаке все дуги недействительны либо заменены дугами, указывающими на специальные узлы, называемые воронками. Синкхолинг эффективно преобразует инфраструктуру в централизованную сеть с множеством воронок S := {s1, s2, ... , sn}, являющимся центральной компонентой всех P2P связей. Атака может быть описана как преобразование T : G → G' где T := I ◦R состоит из внедрений пиров и разрушений списка пиров. Целью является достижение состояния, в котором каждый действующий пир знает хотя бы одну воронку, но ни одного маршрутизируемого пира: ∀v ∈ Vr ∪ Vn ∃s ∈ S : (v,s) ∈ Ev ∧ (v,u ≠ s) ∈ Ev ⇒ u ∉ Vr.


Синкхолинг обычно объединен со стратегией оповещения существования воронок в ботнете. Иногда эта часть осуществляется самой воронкой, так как она имеет полную информацию об остальных пирах. Благодаря такой известности, многие пиры связываются с воронкой на обычной основе. Если воронка также осуществляет графовый поиск (т.е. запрашивает списки пиров от подсоединенных пиров), то это может перестроить часть инфраструктуры ботнета и использовать эти данные для объявления своего существования. Альтернативой является использование неравномерного распределения или специально внедренных пиров, чтобы объявить о воронке.
Воронки не обязательно должны существовать; иногда они просто действуют как «черные дыры», которые поглощают поступающий трафик. Однако в зависимости от программной логики P2P ботнета воронки могут быть обязанными реализовать часть протокола, чтобы удерживать свою известность. Например, воронка должна осуществлять обмен текущими P2P сообщениями, чтобы оставаться в списке пиров локального бота.

  1. Заражение уровня связи: Термин заражение обозначает класс атак, в котором специально созданная информация вводится в ботнет. Это требует доступа к P2P инфраструктуре, который может быть получен путем внедрения пира. Сфера таких атак велика: в зависимости от командного протокола ботнета можно распространять команды среди других ботов или передавать неверные сообщения, которые приведут к тому, что получатель перестанет функционировать. Могут быть произведены атаки и на инфраструктуру ботнета, и на уровни связи одновременно. Самыми известными примерами являются атака Sybil, в которых атакующий вводит пир с множественными сущностями, и атака Eclipse, в которой пиры стратегически расположены в графе так, чтобы каждая связь проходила через них на пути к месту назначения. Так как определенная реализация атаки заражения сильно зависит от используемого C&C протокола, их нелегко отловить в инфраструктурно-ориентированной модели без утраты простоты и общности[23]. Мы приведем несколько примеров атак заражения на определенные ботнеты в разделе 7-1.

Сбор информации в P2P ботнете

Таблица II: свойства P2P ботнетов, значимые для неравномерного распределения. ID показывают, имеют ли боты уникальные идентификаторы. Vn указывает, включены ли не маршрутизируемые пиры в списки пиров. # показывает максимальное число пиров, которые могут быть изменены одновременно. Preference (предпочтение) описывает, как новые пиры добавляются в список пиров. Период это интервал между раундами связи пиров с соседями.

Топология P2P ботнета предлагает уникальные возможности для сбора информации о ботах. Например, исследователи ботнетов пытаются измерить численность P2P ботнета путем подсчета зараженных хостов. Список адресов подсчитанных ботов может быть использован Компьютерной группой реагирования на чрезвычайные ситуации или Интернет-провайдерами, чтобы информировать зараженных клиентов, или банками, чтобы определить мошеннические транзакции. Более того обычно предоставляется возможным собрать дополнительную информацию, такую как версия ОС зараженных систем, текущие C&C команды или подсказки для географического расположения ботов. В этом разделе мы экспериментально измерим и сравним техники отслеживания, описанные выше, такие как неравномерное распределение и внедрение сенсорных узлов, применяя их к ботнетам из раздела 3.

Устойчивость к подсчету пиров

Мы предоставляем начальный анализ, как ботнеты защищены от подсчета пиров, с помощью обратного инжиниринга протоколов связи шести действующих видов ботнетов (рисунок 1). Таблица 2 подводит итог нашему исследованию различных стратегий управления списками пиров, дополненный данными из технических отчетов[24][19][15][16][25]. Жизненно важным аспектом для подсчета пиров является возможность единственным образом определять пиры. Наше сравнение показывает, что не все протоколы ботнетов используют уникальные идентификаторы пиров. Недостаток уникальных идентификаторов может вызвать значительные отклонения результатов подсчета. Если бот меняет свой IP-адрес в течение неравномерное распределения, число подсчитанных ботов будет слишком велико. Подобным образом если повторяющийся бот разделяет глобальный IP, например, из-за того, что они находятся за NAT шлюзом, число инфицированных ботов будет преуменьшено. Storm, Waledac, Zeus и Kelihos реализовывают уникальные идентификаторы, которые мы можем использовать для различия ботов. Miner не имеет понятия об идентификаторе пира, в том время как ZeroAccess, Nugache и Sality обычно не меняют идентификаторы.
В общем, множество пиров VC, полученное путем неравномерного распределения, ограничено маршрутизируемыми пирами и их соседями: VC ⊆ {(u,v)} : u ∈ Vr. Большинство ботнетов, приведенных в таблице 2, ограничивают списки пиров только для маршрутизируемых пиров с тремя исключениями. Storm включает переадресацию, используя UPnP протокол для прохода через NAT шлюзы. Две версии ZeroAccess не фильтруют точки входа списка пиров и не имеют ограничений, какие из них хранить.
Число пиров, разделенных с остальными пирами (в отличие от числа хранимых пиров в локальном списке пиров Ev) также влияет на подсчет. Только Miner и ZeroAccess v1 разделяют полные списки Ev; остальные выбирают их подмножества.
Стратегия выборки пиров тоже влияет на результаты подсчета. Таблица 2 показывает, как много и какие пиры распределены различными ботнетами. Sality выбирает пиры из своего списка Ev случайным образом, в то время как Storm и Zeus вычисляют расстояние до ID цели (содержащегося в запросе списка пиров) с помощью исключающего ИЛИ и распределяют пиры, близкие к цели. Остальные ботнеты разделяют подмножество Ev, которое содержит пиры, недавно проверенные на функционирование.
Наконец, мы наблюдали за частотой, с которой пиры контактировали со своими соседями. Эта частота особенно важна для сенсорных узлов, так как они полагаются на связях, установленных другими пирами. Чем меньше период в таблице 2, тем более своевременно сенсор получает информацию. Waledac имеет чрезвычайно короткий период в 30 секунд; Sality контактирует с соседними пирами каждые 40 минут. Nugache осуществляет случайное время ожидания между раундами коммуникации до 4.5 часов.

Подсчет пиров: реальные наблюдения

Чтобы измерить как метод подсчет пиров (раздел 5-2) действуют на практике, мы осуществили атаки неравномерного распределения и внедрения сенсорных узлов на все четыре ныне действующих семейства P2P ботнетов. В итоге мы подсчитали 11 ботнетов, которые были активны в ноябре 2012 года. Мы выбрали период измерения в 24 часа, чтобы объяснить суточные шаблоны и ограничить эффекты смены IP адресов. Благодаря характеру протоколов без установления соединения, ботнеты, основанные на UDP в общем случае могут быть исследованы быстрее, что приводит к большему покрытию. Так же внедрение пиров более эффективно для UDP. Таким образом, мы ввели сенсорные узлы только в семи ботнетах, основанных на UDP, где ограничения протокола имеют меньшее влияние на сопоставимость результатов. Сравнение обоих методов для ботнетов, основанных на TCP (Kelihos v3 и ZeroAccess v1) до сих пор продолжается. Мы внедрили сенсорные узлы за три недели до измерений, поэтому им было предоставлено достаточно времени, чтобы стать известными всем ботнетам. Мы ежедневно наблюдали за числом пиров, контактирующих с нашим сенсором, чтобы проверить, что численность сенсоров стабилизировалась до начала измерений.
Таблица 3 подробно описывает результаты подсчета для буднего дня в ноябре 2012 года с 00:00 GMT. Все величины основаны на количестве уникальных IP адресов, которые были зарегистрированы в течение времени наблюдения. Несмотря на то, что использование идентификаторов ботов было бы более точным, мы решили использовать IP адреса, так как большинство ботнетов не распределяются идентификаторы пиров. Колонка Botnet определяет подсчитанные ботнеты, дополненные числом версий ботов и фиксированным UDP/TCP портом, в которому привязан ботнет, где это присутствует. Колонка Crawling показывает результаты неравномерного распределения, и колонка Sensor отображает результаты внедрения сенсоров. В результатах неравномерного распределения мы различаем пиры, соответствующие запросам списка пиров (VCr), и пиры, найденные в процессе распределения (VCr). Столбец |VCr|/|VC| содержит коэффициент маршрутизируемых пиров. Эта величина варьируется между 13% (Kelihos) т 40% (Sality) и зависит от свойств протокола из таблицы 2. Число |VS| в столбце Sensor – это число пиров, соединенных с нашим сенсоров в течение 24-часового периода. Колонка Overlap показывает число пиров, которые были идентифицированы обоими методами. Количество круглых скобок отображает процентное соотношение пиров, найденных с помощью неравномерного распределения, которые также зарегистрированы сенсором. Наконец, Sensor Gain Factor – это отношение числа пиров, найденных с помощью внедрения сенсора, к числу пиров, найденных неравномерным распределением.
Результаты показали, что неравномерное распределение менее полное в сравнении с подсчетами, основанными на сенсорах, во всех P2P ботнетах, которые мы измеряли. В частности распределение в Sality определило менее 3% IP адресов, которые нашли сенсоры, и получило ответ менее чем от 1%. Это означает, что неравномерное распределение в сети Sality недооценивает численность с коэффициентом 110.6 (версия 3) и 113.3 (версия 4) соответственно. Подобный эффект может быть получен для других ботнетов, которые редко распространяют пиры v ∉ Vr, таких как Zeus. Если, с одной стороны, ботнет допускает подобные точки входа списков пиров, как ZeroAccess, расхождения между двумя результатами уменьшается. Это показывает, что нужно быть осторожным, экстраполируя размер общей численности ботнета из результатов неравномерного распределения.
Таблица 3 показывает, что сенсоры определили 87.1 - 98.5% пиров, проверенных в распределении (VCr). Только в случае с ZeroAccess сенсор показывает ниже 80% в сравнении с другим методом (VC), предположительно потому что распределение получило значительную долю недействительных IP адресов. Наши сенсоры подсчитали более чем миллионы зараженных в день (уникальных IP адресов) для ZeroAccess и Sality. Другая интересная деталь, которую можно заметить из результатов, это то, что распределение CPU архитектур для ZeroAccess v2: 37% всех ботов запущены на 64b (порты 16465 и 16470) и 63% на 32b (порты 16464 и 16471). Несмотря на смещение, вызванное сменой IP адресов, мы полагаем, что наше сочетание результатов обоих методов предоставляет приемлемую нижнюю границу для размеров ботнетов.
В зависимости от протокола сенсор может иметь возможность осуществлять дополнительные проверки на правильность пиров из Vn. В результате отсылки пакетов сенсору пир за NAT создает дыру, которую сенсор может использовать для отсылки запросов пиру, чтобы проверить, соответствует ли он протоколу. Возможность этого зависит от протокола транспортного уровня и типа обмена сообщениями, использующегося для связи P2P. Например, если в ботнете используется одна TCP соединение для сообщения, прохождение NAT невозможно. В случае ZeroAccess v2 проверка ботов сенсорами возможна. Наши результаты показывают, что 98% пиров в ZeroAccess v2, контактирующих с сенсором, также отвечают запросам списка пиров. Этот тип проверки пиров в общем случае невозможен для неравномерного распределения, так как в этом случае пиры в Vn недостижимы.

Таблица III: Сравнение техник подсчет узлов, измеряемое количеством IP адресов, определенных в течение 24 часов.

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

Анализ сходимости

Рисунок 3: Сравнение методов подсчета для Zeus.

Другая проблема оценки размера ботнета рассмотрена Канихом и др.[26] Зараженные устройства могут иметь динамические IP адреса, которые постоянно меняются. Если смена IP адреса происходит в период подсчета пиров, пир может быть подсчитан несколько раз, если ботнет не использует уникальные идентификаторы (см. таблицу 3). Вследствие этого мы считали и IP адреса, и идентификаторы пиров, где это было возможно. На рисунке 3 представлено сравнение этих двух величин в ботнете Zeus. Две верхние линии показывают пиры, которые взаимодействовали с сенсором, средние две линии – пиров, отслеженных неравномерным распределением (VC), и нижние две линии описывают число достижимых узлов, которые были найдены неравномерным распределением (VCr). Каждая пара линий показывает число IP адресов (верхняя линия) и идентификаторов пиров (нижняя линия). Для обоих методов подсчета линии отклоняются с течением времени из-за смены IP адресов. В то время как число идентификаторов получено сенсорами граничит с 140.000 к концу периода времени, нет очевидных границ для других линий. Анализ длительного периода подсчета показал, что смена IP адресов очень значительна для Zeus. В среднем 19% идентификаторов бота наблюдались на нескольких IP адресах в течение суток. Мы измерили, что 3/5 из них появлялись в сети с маской /8, тогда как остальные 2/5 были замечены в нескольких сетях. Таким образом, подсчет IP адресов является не самым точным способом для получения числа зараженных хостов, нежели подсчет идентификаторов.
Рисунок 3 также показывает, как неравномерное распределение и сенсорные узлы развиваются со временем. Резкое увеличение количества сенсоров в начале обусловлено тем, что все пиры в Zeus контактируют со своими соседями каждые 30 минут. После получаса только пиры, которые только что узнали о присутствии сенсорного узла, и пиры, которые только присоединились к ботнету, до сих пор связаны с сенсором, и кривая выравнивается. Незначительные изменения в линиях обоих методов вызваны началом рабочих часов в Европе и США. Заметим, что мы были вынуждены ограничить неравномерное распределение по скорости, так как Zeus заносит в черный список IP дареса, которые слишком часто контактируют с пиром. Поэтому кривая неравномерного распределения менее резкая чем соответствующая кривая сенсорных узлов.

Рисунок 4: Сходимость количества IP адресов в течение 24-часового распределения.

Рисунок 4 сравнивает сходимость числа IP адресов в течение 24 часов для всех действующих P2P ботнетов. При первом наблюдении только для Kelihos это число сходится относительно быстро. Это происходит из-за размера множества {v : ∃(u,v) ∈ E}. Kelihos предпочитает недавние пиры и распределяет их метками, поэтому новые пиры быстро распространяются в большинстве всех списков пиров. В остальных ботнетах сходимость неравномерного распределения медленная. Рисунок 5 показывает, что подсчеты с помощью сенсорных узлов сходятся в одном темпе. Во всех случаях, однако, сенсоры считают пиры быстрее, чем неравномерное распределение, а также они находят намного больше пиров. Несмотря на то, что смена IP адресов это одна из причин медленной сходимости результата подсчетов, это не единственная причина. В следующем подразделе рассматриваются наши дополнительные наблюдения относительно динамики численности ботнета.

Динамика численности ботнета

Отдельно от смены IP, вступление и отсоединение компьютеров от сети (например, путем нового заражения или «излечения») также влечет смену устойчивых пиров. Мы оценили этот феномен для ботнета Zeus, наблюдая за данными сенсора шесть недель подряд. Zeus получается уникальные идентификаторы пиров из информации хостов – идентификатор пира является хешем имени компьютера и идентифицирующая строка первого раздела жесткого диска, что означает, что он статичен несмотря на очистки и повторные заражения. Мы использовали статические идентификаторы, чтобы уникально определить зараженные компьютеры, чтобы измерить численность независимо от смены IP адреса. Кривая на рисунке 6 показывает число пиров, которые контактировали с нашим сенсором за час. Очевидно, что зона покрытия сети больше в выходные и в рабочие часы в Европе и США. Подобные ежедневные стереотипы были замечены для всех исследуемых P2P ботнетов. Полосы на рисунке 6 представляют число подсоединенных (положительное направление) и отсоединенных (отрицательное направление) ботов в час. Рисунок показывает, что существует постоянное изменение в сети, до 25.000 новых зараженных в день. Это довольно динамичное поведение означает, что P2P ботнеты значительно меняются в течение подсчета узлов, поэтому эти попытки никогда не являются абсолютно точными.

Рисунок 6: График изменения численности Zeus в течение шести недель. Кривая показывает число пиров, ежечасно контактирующих с сенсором. Засечки показывают ежедневные результаты для присоединяющихся пиров (положительное направление) и отсоединяющихся (отрицательное направление).
Рисунок 5: Сходимость Количества IP адресов в сенсоре в течение суток.




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

Разрушение и уничтожение P2P ботнета

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

Устойчивость к заражению уровня связи

Таблица IV: Свойства протоколов защиты P2P ботнетов.

В зависимости от реализации, может быть возможным заразить P2P ботнет, используя его собственные команды, или разрушить C&C канал, чтобы предотвратить подтверждение команд от распространения. Например, если команды были неправильно аутентифицированы, чтобы возникнуть из операторов ботнета (например, через цифровую подпись), защита может вывести произвольные команды, такие как инструкции на удаление или команды остановить работу спама. Storm является примером P2P ботнета, который уязвим к обоим видам атак. Команды были выпущены под периодически меняющимися ключами распределенной хеш-таблицы. Боты генерировали множество хешей, зависимых от времени, и запрашивали для них таблицу. Запросы шифровали местонахождение C&C сервера, с которым они были соединены для запроса. Холц и др.[5] показали, как произвести атаку на Eclipse, предугадывая алгоритм генерирования хеша и внедряя пиры с идентификаторами, близкими к текущим хешам. Это эффективно предотвращало соединение ботов с C&C серверами. В 2008 году группа исследователей также продемонстрировали, насколько Storm восприимчив к внедрению команд, что каждый может ввести случайные исполняемые файлы и запустить их на зараженных компьютерах. Обе атаки были возможны, так как протокол нуждается в основных мерах безопасности, что могли бы предотвратить их.
Таблица 4 подводит итог наиболее важным аспектах безопасности P2P ботнетов, которые мы проанализировали. Все боты, за исключением Miner, шифруют свои соединения. Однако используемое шифрование не защищает ботнеты от разрушительных атак, так как ключи и алгоритмы во всех случаях могут быть найдены путем обратного инжиниринга. Zeus и Sality также добавляют случайные данные в сообщения, которые предназначены только для того, чтобы помешать обнаружению подписи сети. Вдобавок все действующие ботнеты защищают свои уровни команд подписями RSA. Это обеспечивает реальную защиту, предотвращая внедрения в ботнеты неавторизованных команд третьей стороной. Хотя Nugache, ZeroAccess v1 и Zeus предотвращают подделку новых команд через подпись, они не предотвращают воспроизведение атак, потому что их команды одноразовые.

Устойчивость к синкхолингу

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

  1. Уведомление о воронке: мы инициализируем атаку, оповещая как можно больше пиров о воронках.
  2. Изолирование узлов: затем мы пытаемся устранить все дуги в P2P графе, которые не указывают на воронку. Целью этого этапа является изоляция ботов друг от друга насколько это возможно, чтобы они не могли общаться между собой.
  3. Предотвращение нейтрализации неисправности: некоторые P2P ботнеты используют другие C&C механизмы, которые они используют в определенных обстоятельствах, например, если они не получили новую команду в течение времени. Синкхолинг должен гарантировать, что боты не активируют резервные C&C каналы для восстановления. Этот этап требует, или чтобы резервный канал ботнета был отключен, или чтобы был предотвращен переход бота в режим отката.
Таблица V: Свойства устойчивости к синкхолингу P2P ботнетов.

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

  1. Kelihos:
    1. Оповещение воронки: Kelihos имеет основную слабость во всех версиях, потому что все они основаны на одном и том же базовом протоколе. Боты содействуют более новый пирам, когда происходит слияние списка пиров с их локальном списком Ev. Можно активно добавлять новые списки пиров другим пирам, заменяя все локальные точки входа одновременно. Как показано в синкхолинге Kelihos v1 и v2, Kelihos может быть атакован довольно-таки эффективно с помощью неравномерного распределения сети и заражения каждого посещенного пира[16]. Несмотря на то, что лишь несколько маршрутизируемых пиров может быть атаковано в начале, зараженные точки входа распространятся по всей сети. Поскольку Kelihos v3 фактически использует тот же P2P протокол и архитектуру, как и Kelihos v1 и v2, полномасштабный синкхолинг, аналогичный предыдущим, будет опять иметь успех.
    2. Изоляция узлов: Изоляция узлов в Kelihos работает очень схоже с оповещением воронки. Так как возможно заменить весь список пиров на случайные точки входа, разъединение их с P2P графом тривиально.
    3. Предотвращение отката: Kelihos реализует несколько резервных каналов, которые активируются ботом в случае, если его пиры могут быть достигнуты. Самый важный это fast-flux сеть. Каждый бот содержит жесткое доменное имя, указывающее на зараженный компьютер. Он может быть использован как начальный узел для восстановления связи в P2P сети. Если ботнет корректно подвергся синкхолингу, Kelihos не обратится как fast-flux доменам.
  2. Sality:
    1. Оповещение воронки: Sality использует специальные «оповещения», чтобы афишировать себя маршрутизируемым пирам в P2P сети. Протокол реализует схему репутации, в которой каждый бот отслеживает репутацию свои соседей. Репутация пира увеличивается, если он корректно отвечает запросам, и уменьшается в противном случае[15]. Важной деталью этой схемы является то, что только боты с высокой репутацией делятся своими списками пиров друг с другом. Тогда для того, чтобы распространить внедренную воронку в не маршрутизируемый пир, нам необходимо гарантировать, что эта точка входа приобретет высокую репутацию, соответствуя протоколу Sality. В наших экспериментах мы смогли достичь высокой репутации, заставляя адреса воронок распространяться во многие не маршрутизируемые пиры.
    2. Изоляция узлов: Система репутаций значительно защищает ботнет от синкхолинга, потому что Sality допускает перезапись точек входа списков пира с низкой репутацией. Таким образом, пока мы не будем иметь успехов в получении высокой репутации ваших воронок, значительно труднее удалять пиры с высокой репутацией. Однако в современных реализациях Sality мы нашли недостаток, который позволяет заражать точки входа списка пиров только с высокой репутацией. Это требует знаний, какие IP адреса следует перезаписать, которые могли бы быть получены с помощью неравномерного распределения. Уязвимость заключается в том факте, что оповещения в Sality могут быть использованы для перезаписи порта, ассоциированного с точкой входа списка пиров. Это требует рассылки оповещений с обманным IP адресом, совпадающим с адресом точки входа для перезаписи, но из другого порта. Такие сообщения вызывают обновления существующих значений портов, что приводит к прекращению работоспособности точки входа. Однако этот метод может использоваться только против маршрутизируемых пиров, так как невозможно разослать незапрашиваемые оповещения не маршрутизируемым узлам. Мы не смогли найти другие способы заражения списков пиров с высокой репутацией в Sality. Таким образом, мы делаем вывод, что конструкция Sality чрезвычайно устойчива к синкхолингу.
    3. Предотвращение отката: Sality не имеет механизма отката. Однако так как Sality является загрузчиком, он может восстанавливаться от синкхолинга с помощью предварительно сброшенного ПО. Следовательно, перед синкхолингом P2P загрузчиков необходимо убедиться, что ни один из загруженных файлов не содержит функциональность (такую как возможность загрузки и исполнения бинарных файлов), которую ботмастер мог бы использовать для восстановления после атаки.
  3. ZeroAccess:
    1. Оповещение воронки: ZeroAccess использует постоянный поток транслируемых сообщений для оповещения действующих в сети пиров. Эти транслируемые сообщения могут быть использованы также для оповещения воронок. Однако из-за непрерывного объявления точки входа списков пиров очень непостоянны и обычно перезаписываются каждые несколько секунд. Таким образом, для того чтобы оставаться в списке пиров, необходимо поддерживать заполнение ботнета оповещениями о воронке. Одной проблемой является то, что транслируемые сообщения не могут быть получены не маршрутизируемыми пирами. Тем не менее, чем больше маршрутизируемых пиров будут содержать воронки, тем вероятнее они будут распространять их не маршрутизируемым пирам. Как только это произойдет недостижимость этих пиров извне обернется в преимущество; последовательные оповещения пиров не смогут с легкостью заменить точки входа воронок.
    2. Изоляция узлов: когда боты ZeroAccess получают новый список пиров от другого бота, он объединяет его со своим списков и хранит последние 256 точек входа, как определенные временной меткой, ассоциированной с каждой точкой входа списка (будущее метки не разрешены). Таким образом, боты могут быть изолированы путем рассылки им списков пиров, содержащих недействительные точки входа с новыми метками. Две версии ZeroAccess различаются в протоколах обмена списками пиров. В первой версии списки пиров распространяются только по запросу. Таким образом, заражение пиров в сети требует защиту зараженных сообщений об обмене списками от воронки, когда запрошен список пиров. Напротив, вторая версия позволяет незапрашиваемые сообщения о списках пиров, что делает заражение более тривиальным. В любом случае наш прототип синкхолинга имеет возможность полностью переписать списки пиров ботов в любой версии.
    3. Предотвращение отката: в ZeroAccess не реализован резервный C&C канал. Однако потенциально возможно восстановиться после синкзолинга, используя загруженные плагины для исправления ущерба и подключения ботов к P2P сети. Мы не нашли соответствующего функционала в ходе обратного инжиниринга загруженных плагинов (на момент ноября 2012г.), хотя был найден один плагин, который отслеживал все боты через централизованные серверы.
  4. Zeus:
    1. Оповещение воронки: В случае Zeus имеется возможность оповестить о воронке, просто рассылая сообщения ботам. Получая их, боты в Zeus добавляют отправителя в свои списки пиров, если он знает менее 50 пиров. Так как не маршрутизируемые пиры V_n не могут получать запросы извне, этот подход позволяет оповестить только маршрутизируемые пиры Vr. Однако наш прототип показал, что не маршрутизируемые пиры узнают о воронке посредством обмена списками пиров в Vr. Мы обозначим этот феномен как распространение воронки.
    2. Изоляция узлов: Когда боты в Zeus получает запрос от пира, чей уникальный идентификатор уже находится в его списке пиров, он обновляет соответствующую точку входа. Это позволяет переписать точки входа списка пиров через рассылку ботам запросов с обманными идентификаторами (каждое сообщение содержит идентификатор отправителя в заголовке). В нашей атаке мы постоянно исследовали ботнет и искали дуги между ботами, а затем перенаправляли как можно больше душ на наши воронки с помощью выше описанной стратегии. После этого воронка заражает не маршрутизируемые пиры, реагируя на их периодически запросы списка пиров управляемыми ответами. Каждый запрос позволяет обновить до десяти точек входа в удаленном списке пиров (см. таблицу 5). Заметим, что мы были вынуждены ограничить этот процесс по скорости, потому что настоящие версии Zeus уделяют особое влияние автоматическому занесению IP адресов в черный список, что блокирует адреса с высокой степенью запросов.
    3. Предотвращение отката: Так как боты в Zeus периодически проверяют своих соседей на функционирование и реагирование, наша воронка должна реализовывать весь P2P протокол, чтобы оставаться в списках пиров. Также Zeus использует стратегию резервирования, которая весьма усложняет длительный синкхолинг. Если бот не может обновить себя или свой файл конфигурации в течение семи дней, то он пытается получить свежий список пиров следующим способом: во-первых, он старается связаться с множеством запрограммированных IP адресов для восстановления контакта с P2P сетью. Если у него это не получается, бот пытается загрузить новый пир с помощью запуска алгоритма DGA и случайным образом контактирует с одним из тысячи еженедельно генерируемых доменов. Так как и бинарный, и файл конфигурации подписаны, они не могут быть подделаны. Так как эти два вторичных канала остаются неповрежденными, процесс синкхолинга Zeus лишь временно успешен.


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

Устойчивость к разбиению

Разбиение и синкхолинг относительно похожие атаки. Обе разрушают существующие связи в ботнете. В зависимости от преследуемых целей разбиение может иметь преимущества перед синкхолингом. Например, внедренную воронку обычно легко определить, так как они выделяются среди остальных ботов своей популярностью. Таким образом, операторы ботнета могут начать контратаки на эти воронки, чтобы вернуть контроль над инфраструктурой. Атаки разбиения не показывают такие проявления атак и невосприимчивы к подобного рода контратакам.
Однако разбив ботнет единожды, в последствии невозможно вернуть контроль над ним и произвести дополнительные попытки ослабления ботнета – в конце концов, это точная цель атаки разбиения. Напротив синкхолинг соблюдает контроль над всем ботнетом и допускает атаки в последствии, что может быть необходимым. Более важно, что он создает точные записи инфицированных компьютеров и может записывать точное время, когда зараженная система была активна в последний раз. Эти записи могут быть использованы для координирования зачисток, чтобы окончательно устранить заражение.
Мы полагаем, что синкхолинг в общем случае более предпочтителен, и разбиение следует применять в крайнем случае. По той же причине мы не проводили и не измеряли широкомасштабные атаки разбиения на реальных ботнетах. Вместо этого мы сузили наши тесты до самого маленького подграфа, состоящего из одного пира. Мы доказали, что во всех случаях изоляция узлов возможна. Не маршрутизируемые пиры v ∈ Vn могут оставаться в изоляции навсегда, так как нет способов их восстановить, кроме как с использованием механизмов восстановления связи с ботнетом. Мы обнаружили, что в исследуемых ботнетах маршрутизируемые пиры быстро возвращаются в исходное состояние, так как они до сих пор известны остальным пирам, даже если их полустепень исхода deg+(v) = 0. В зависимости от P2P протокола, эти пиры могут связываться с атакованными пирами и распространять новые списки пиров. Атака разбиения может быть неуспешна, если она не действует на всю P2P сеть, активно устраняя дуги, пока все узлы не будут изолированы.

Дальнейшая работа

Атаки P2P ботнетов поднимают некоторые проблемы. В этом разделе мы обсудим самые серьезные проблемы, а также направления дальнейшей боты.
Начнем с того, что такие атаки как синкхолинг влекут ненужные связи с инфицированными хостами, что может быть рассмотрено как неэтичное. Сторонник синкхолинга утверждают, что он не причиняет дополнительного вреда, так как зараженные хосты уже общаются с другими ботами.
Другим этическим вопросом является то, что степень детализации нашей работы выявляет уязвимости ботнетов. Дело в том, что ботмастеры могут использовать наш анализ для укрепления ботнетов. По этой причине мы описываем результаты так, чтобы они не могли быть непосредственно применены ботмастерами. Обнадеживает, что несколько детализированных стратегий по повышению устойчивости структуры ботнетов были предложены публично, но мы не знаем, использовали ли какие-нибудь ботнеты эти идеи[10][11][12][13]. Мы полагаем, что наша работа потенциально поможет специалистами защиты информации подтвердить эти заявления. Мы надеемся, что наши наблюдения помогут избежать вреда третьим лицам, вызванного обычными проблемами прекращения функционирования[2].
В то время как наши оценки показывают, что некоторые P2P ботнеты показывают высокую степень устойчивости, мы также обнаружили, что реальные ботнеты восприимчивы по крайней мере к одной ослабляющей стратегии, что мы промоделировали. Несмотря на это, осуществление этих стратегий остаются непростым, так как требует понимания особенностей C&C протокола каждого ботнета. Также атака сетей, содержащих миллионы пиров, требует значительных ресурсов, которые могут понадобиться для проведения атаки длительное время. Мы полагаем, что необходимо рассматривать альтернативные стратегии. Более того, мы думаем, что существует насущная необходимость обсуждения установки четких границ, насколько далеко можно зайти в попытках вывести P2P ботнет из строя. В настоящее время мы видим несколько альтернативных возможностей, которые требуют дальнейшего анализа.
Во-первых, иногда возможно дезинфицировать боты удаленно, используя уязвимости ПО ботов. Это стратегия также считается неэтичной, потому что это может повлечь за собой дополнительный вред вылеченным хостам, если провести эту операцию неосторожно. Несмотря на это, данный метод может понадобиться, если будущие P2P ботнеты станут невосприимчивы к обычным контрмерам.
Второе направление в ослаблении ботнетов это выдавать себя за ботмастера, подделывая команды для остальных ботов. Раздел 7-1 показал, что этот подход часто запрещен из-за использования подписанных команд. Однако иногда это может быть возможно для органов правопорядка, чтобы захватить инфраструктуру, использованную ботмастером для создания команд. В этом случае зараженные хосты могут получить команду на очистку.
Наконец, некоторые ботнеты могут быть ослаблены посредством атаки их моделей заработка. Например, Zeus собирает банковские мандаты, и его ботмастер полагается на точности украденных данных. Вставляя большое число недействительных банковских данных, можно сделать ботнет невыгодным для ботмастера. Для ботнетов, рассылающих спам, подсчет узлов может быть использован для создания черных списков, что понижает доход ботнета.

Контакты авторов материала

  1. 1,0 1,1 Institute for Internet Security, Gelsenkirchen, Germany {rossow,dietrich}@internet-sicherheit.de
  2. 2,0 2,1 2,2 VU University Amsterdam, The Netherlands {d.a.andriesse,h.j.bos}@vu.nl
  3. CrowdStrike, Inc.
  4. Dell SecureWorks, bstonegross@secureworks.com
  5. Fraunhofer FKIE, Bonn, Germany, daniel.plohmann@fkie.fraunhofer.de


Примечания

  1. 1,0 1,1 B. Stone-Gross, M. Cova, L. Cavallaro, B. Gilbert, M. Szydlowski, R. Kemmerer, C. Kruegel, and G. Vigna. Your Botnet is My Botnet: Analysis of a Botnet Takeover. In Proceedings of the 16th ACM Conference on Computer and Communications Security, 2009.
  2. 2,0 2,1 D. Dittrich. So You Want to Take Over a Botnet. In Proceedings of the 5th USENIX conference on Large-Scale Exploits and Emergent Threats, 2012.
  3. J. Nazario and T. Holz. As the Net Churns: Fast-Flux Botnet Observations Tracking Fast-Flux Domains. In Proceedings of the 3rd International Conference on Malicious and Unwanted Software, 2008.
  4. M. Antonakakis, R. Perdisci, Y. Nadji, N. Vasiloglou, S. Abu-Nimeh, W. Lee, and D. Dagon. From Throw-Away Traffic to Bots: Detecting the Rise of DGA-Based Malware. In roceedings of the 21st USENIX Security Symposium, 2012.
  5. 5,0 5,1 5,2 T. Holz, M. Steiner, F. Dahl, E. Biersack, and F. Freiling. Measurements and Mitigation of Peer-to-Peer-based Botnets: A Case Study on Storm Worm. In Proceedings of the 1st USENIX Workshop on Large-Scale Exploits and Emergent Threats, 2008.
  6. 6,0 6,1 B. Stock, M. Engelberth, F. C. Freiling, and T. Holz. Walowdac – Analysis of a Peer-to-Peer Botnet. In Proceedings of the European Conference on Computer Network Defense, 2009.
  7. C. Rossow, C. J. Dietrich, H. Bos, L. Cavallaro, M. van Steen, F. C. Freiling, and N. Pohlmann. Sandnet: Network Traffic Analysis of Malicious Software. In ACM EuroSys BADGERS, 2011.
  8. P. Porras, H. Saidi, and V. Yegneswaran. Conficker C Analysis, 2009. SRI International Technical Report.
  9. V. R. Sergey Golovanov. TDSS, 2010. Technical Report: http://www.securelist.com/en/analysis/204792131/.
  10. 10,0 10,1 G. Starnberger, C. Kruegel, and E. Kirda. Overbot: A Botnet Protocol Based on Kademlia. In Proceedings of the 4th International Conference on Security and Privacy in Communication Networks, 2008.
  11. 11,0 11,1 G. Yan, S. Chen, and S. Eidenbenz. RatBot: Anti-enumeration Peerto-Peer Botnets. In Lecture Notes in Computer Science, vol. 7001, 2011.
  12. 12,0 12,1 G. Yan, D. T. Ha, and S. Eidenbenz. AntBot: Anti-Pollution Peer-to-Peer Botnets. In Journal of Computer Networks, vol. 55, 2011.
  13. 13,0 13,1 R. Hund, M. Hamann, and T. Holz. Towards Next-Generation Botnets. In Proceedings of the 2008 European Conference on Computer Network Defense, 2008.
  14. S. Stover, D. Dittrich, J. Hernandez, and S. Dietrich. Analysis of the Storm and Nugache Trojans: P2P is here. In USENIX; login, vol. 32, no. 6, 2007.
  15. 15,0 15,1 15,2 N. Falliere. Sality: Story of a Peer-to-Peer Viral Network, 2011. Technical Report by Symantec Labs.
  16. 16,0 16,1 16,2 P.-M. Bureau. Same Botnet, Same Guys, New Code: Win32/Kelihos. In VirusBulletin, 2011.
  17. T. Werner. Kelihos.C: Same Code, New Botnet, 2012. Blog article by CrowdStrike: http://blog.crowdstrike.com/2012/03/kelihosc-samecode-new-botnet.html.
  18. K. McNamee. Malware Analysis Report: ZeroAccess/Sirefef, 2012. Technical Report by Kindsight Security Labs.
  19. 19,0 19,1 J. Wyke. ZeroAccess, 2012. Technical Report by SophosLabs.
  20. D. Plohmann and E. Gerhards-Padilla. Case Study of the Miner Botnet. In Proceedings of the 4th International Conference on Cyber Conflict, 2012.
  21. T. Werner. The Miner Botnet: Bitcoin Mining Goes Peer-To-Peer, 2011. Blog article by Kaspersky Lab: http://www.securelist.com/en/blog/208193084/.
  22. J. Kang and J.-Y. Zhang. Application Entropy Theory to Detect New Peer-to-Peer Botnets with Multi-chart CUSUM. In Proceedings of the 2nd International Symposium on Electronic Commerce and Security. IEEE Computer Society, 2009.
  23. G. Urdaneta, G. Pierre, and M. van Steen. A Survey of DHT Security Techniques. ACM Computing Surveys, vol. 43, 2011.
  24. T. Bukowski. ZeuS v3 P2P Network Monitoring, 2012. Technical Report by CERT.pl.
  25. G. Sinclair, C. Nunnery, and B. Kang. The Waledac Protocol: The How and Why, 2009. Technical Report by Infrastructure Systems Research Lab/University of North Carolina.
  26. C. Kanich, K. Levchenko, B. Enright, G. M. Voelker, and S. Savage. The Heisenbot Uncertainty Problem: Challenges in Separating Bots from Chaff. In Proceedings of the 1st USENIX Workshop on Large-Scale Exploits and Emergent Threats, 2008.