- PVSM.RU - https://www.pvsm.ru -
Развитие информационных технологий сказывается на разработке всего спектра программного обеспечения (ПО). Не обходит оно стороной и вредоносные программы [1]. Можно выделить основные приемы, применяемые при разработке «передового» вредоносного программного обеспечения (ВПО).
Для общего понимания, в чем заключается технология электронной цифровой подписи (ЭЦП), о которой речь пойдет далее, необходимо раскрыть основные понятия криптографии [18]. Существующие методы шифрования можно разделить на симметричные [19] — DES [20], 3DES [21], AES [22], RC4 [23], RC6 [24] и ассиметричные [25] (или шифрование с открытым ключом) — RSA [26], ECDSA [27]. Основные различия между ними:
При симметричном шифровании существует необходимость обмена ключом между двумя пользователями (что очень неудобно, особенно если они находятся очень далеко друг от друга), этого недостатка лишено ассиметричное шифрование. Его основная сущность: имеется два ключа — закрытый и открытый, причем закрытый ключ невозможно за приемлемое время (например в течении жизни взломщика) подобрать или вычислить из открытого, используя доступные вычислительные мощности сегодняшнего дня. Естественно, что прямо сейчас 8 битный ключ можно вычислить меньше чем за секунду, тогда как 1024 битный придется подбирать в течение множества лет. Еще одно свойство открытого и закрытого ключа — что любым из них можно сообщение зашифровать, а другим расшифровать. То есть возможны две операции:
Операция 1 применяется для шифрования, операция 2 — для подписи, при этом используются две пары ключей по количеству участников обмена (пользователи A и B):
Закрытый ключ должен храниться только у пользователя и больше нигде, открытый ключ в виде связки пользователь-ключ может свободно распространяться где угодно. В первом случае (удостоверение личности или подпись) пользователь B уверен, что сообщение отправил пользователь A, так как никто кроме A не может зашифровать сообщение, что бы оно расшифровывалось открытым ключом А (закрытый ключ нельзя вычислить по открытому). Во втором случае (шифрование) только пользователь B может расшифровать при помощи своего закрытого ключа B сообщение, зашифрованное любым пользователем при помощи его открытого ключа B (закрытый ключ нельзя вычислить по открытому).
На практике схема несколько сложнее, так как уже опоминалось, что ассиметричное шифрование в десятки раз медленнее симметричного. Поэтому при подписи используют шифрование не всего объема данных, а некоторой функции от этих данных, называемой хэш-функцией [28]. В качестве простейшей хэш-функции можно рассмотреть прием, часто применяющийся в астрологии, например число года 1998 равно 1+9+9+8=27=2+7=9. В первом приближении именно так работает хэш-функция, только вместо сложения употребляются многие другие функции. В приведенном примере видно, что, например, год 1899 будет тоже иметь число 9, такая ситуация называется коллизией [29], это значит, что разным наборам данных соответствует одно значение хэш-функции (или просто хэш). Наиболее распространенные виды хэшей — MD5 [30], MD6 [31], SHA-1 [32], SHA-2 [33]. Таким образом, технически ЭЦП — это добавочный блок данных, который содержит зашифрованный закрытым ключом пользователя хэш передаваемых данных. Коллизия может применяться для подделки ЭЦП. Если взять ЭЦП от какого либо файла и сформировать наш подложный файл с таким же хэшем, то у конечного пользователя все вычисления сойдутся, и он подумает, что файл отослан от известного ему человека (а не от нас). Проблема заключается в том, что невозможно создать алгоритм, какие байты добавить к нашему файлу, что бы получилась заданное значение хэша. Конечно можно, допустим, добавить к нашему файлу байт со значением 0, потом 1, 2 и так до 255, затем аналогичным образом добавлять второй, третий и т.д., но это займет очень много времени.
Что же касается шифрования, то там тоже применяются некоторые модификации. Так, ассиметричным алгоритмом шифруется опять-таки не весь набор данных, а так называемый сеансовый ключ, генерируемый случайным образом. Этим сеансовым ключом и шифруется набор данных по симметричному алгоритму, что происходит гораздо быстрее. Сам сеансовый ключ шифруется открытым ключом получателя и добавляется к исходным данным. Получатель расшифровывает своим закрытым ключом сеансовый ключ, и с его помощью расшифровывает исходное сообщение.
С помощью применения криптографических методов злоумышленники решают следующие задачи:
В своем развитии системы управления прошли следующие стадии:
Очевидно, что все, что задано статически, рано или поздно блокировалось антивирусными компаниями. Для решения этих проблем и используются технологии DGA и P2P.
Сущность DGA заключается в том, что имена командных центров для управления не являются жестко заданным, а генерируются по псевдослучайному алгоритму с использованием текущей даты и времени, причем количество таких доменов должно быть достаточно большим, например 1000 в сутки. Это приводит к тому, что зарегистрировать или заблокировать все такие имена — очень сложная и практически неосуществимая задача. Однако использование DGA в ВПО позволяет антивирусным компаниям использовать так называемый sinkhole-маршрутизатор — поддельный управляющий центр, который боты начинают воспринимать как свой. Таким образом, становится возможным оценить масштабы заражений и их географическое распределение путем анализа IP адресов входящих соединений. В отдельных случаях это даже позволяет перехватить управление и дать команду на самоуничтожение, что, впрочем, редкость, так как команды и новые файлы обычно подписываются ЭЦП злоумышленниками.
Использование же P2P [35] позволяет полностью отказаться от концепции управляющего центра, управление или распространение новых версий бота может производиться с любого зараженного компьютера.
P2P (peer-to-peer, одноранговая сеть) предполагает большое количество компьютеров, каждый из которых содержит некоторую информацию о других таких же компьютерах, например IP адрес. Список таких компьютеров (пиров, peer) называется bootstrap list (список первоначальной инициализации). В зависимости от того, откуда берется этот список, различают частично децентрализованные и полностью децентрализованные P2P сети.
Частично децентрализованные P2P сети предполагают загрузку bootstrap list с заранее известных серверов. Это означает, что в такой системе существует слабое место — достаточно заблокировать доступ к серверам, содержащим bootstrap list. Поэтому в ВПО используется полностью децентрализованная схема. Следует отметить, что концепция полностью децентрализованный P2P сети применительно к ВПО подразумевает, что распространение будет проходить в два этапа. На первом этапе распространяется бот с пустым bootstrap list, он периодически обращается к командному центру, тот в свою очередь фиксирует IP адрес бота. Кроме непосредственно IP адреса, операторов ботнета интересует информация, не находится ли бот за шлюзом (gateway) или сетевым экраном (firewall). Если это не так, значит, бот может выступать в роли супер пира (super peer, super node), то есть к нему могут напрямую подключаться другие пиры. Как только набрано необходимое количество суперпиров, их список заносится в bootstrap list, и новая версия бота с ним начинает распространяться злоумышленниками. После распространения все боты обмениваются информацией о своих соседях и формируют свой собственный bootstrap list. В результате этого возникает P2P сеть. Она устойчива к пропаданию определенного количества ботов, так как список соседей постоянно меняется. В ходе обмена боты также обмениваются информацией о своей версии. Если бот обнаруживает, что он «устарел», происходит закачка новой версии с одного из соседей. При закачке, как правило, проверяется ЭЦП файла, что бы исключить возможность распространения «не своих» файлов. Таким образом, все боты в P2P поддерживают себя в актуальном состоянии. Именно по вышеописанной двухэтапной схеме работают последние версии Storm, Sality [6] и Zeus [36]. Используемая ими реализация P2P базируется на протоколе Kademlia [37]. Conficker [7] использует свою собственную реализацию, самое интересное в ней то, что bootstrap list у него первоначально пустой, своих соседей он обнаруживает методом сканирования IP адресов. В связи со своими особенностями Conficker более напоминает средство отработки новейших технологий в написании ВПО, чем просто очередной бот.
Подводя итоги, можно сделать вывод, что создатели современного ВПО достаточно серьезно подходят к вопросам обеспечения живучести своих вредоносных программ. Причем имеется тенденция, что антивирусные компании реально проигрывают в этой гонке. Использование P2P и ЭЦП практически не дает шансов «расправиться» с ботнетами.
Автор: nuklearlord
Источник [38]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/stuxnet/22497
Ссылки в тексте:
[1] вредоносные программы: http://ru.wikipedia.org/wiki/Вредоносная_программа
[2] уязвимостей ПО: http://ru.wikipedia.org/wiki/Уязвимость_(компьютерная_безопасность)
[3] повышения привелегий: http://ru.wikipedia.org/wiki/Повышение_привилегий
[4] Stuxnet: http://habrahabr.ru/post/159053/
[5] автозапуск: http://ru.wikipedia.org/wiki/Автозапуск
[6] Sality: http://habrahabr.ru/post/159055/
[7] Conficker: http://habrahabr.ru/post/159069/
[8] переполнение буфера: http://ru.wikipedia.org/wiki/Переполнение_буфера
[9] стек: http://ru.wikipedia.org/wiki/Стек
[10] шелл-кодом: http://ru.wikipedia.org/wiki/Шелл-код
[11] эксплоитом: http://ru.wikipedia.org/wiki/Эксплойт
[12] патч: http://ru.wikipedia.org/wiki/Патч
[13] полиморфизма: http://ru.wikipedia.org/wiki/Полиморфизм_компьютерных_вирусов
[14] сигнатурный анализ: http://ru.wikipedia.org/wiki/Обнаружение,_основанное_на_сигнатурах
[15] Zeus: http://habrahabr.ru/post/161707/
[16] руткита: http://ru.wikipedia.org/wiki/Руткит
[17] ботнета: http://ru.wikipedia.org/wiki/Ботнет
[18] криптографии: http://ru.wikipedia.org/wiki/Криптография
[19] симметричные: http://ru.wikipedia.org/wiki/Симметричное_шифрование
[20] DES: http://ru.wikipedia.org/wiki/DES
[21] 3DES: http://ru.wikipedia.org/wiki/3DES
[22] AES: http://ru.wikipedia.org/wiki/Advanced_Encryption_Standard
[23] RC4: http://ru.wikipedia.org/wiki/RC4
[24] RC6: http://ru.wikipedia.org/wiki/RC6
[25] ассиметричные: http://ru.wikipedia.org/wiki/Асимметричное_шифрование
[26] RSA: http://ru.wikipedia.org/wiki/RSA
[27] ECDSA: http://ru.wikipedia.org/wiki/ECDSA
[28] хэш-функцией : http://ru.wikipedia.org/wiki/Хеширование
[29] коллизией: http://ru.wikipedia.org/wiki/Коллизия_хеш-функции
[30] MD5: http://ru.wikipedia.org/wiki/MD5
[31] MD6: http://ru.wikipedia.org/wiki/MD6
[32] SHA-1: http://ru.wikipedia.org/wiki/SHA-1
[33] SHA-2: http://ru.wikipedia.org/wiki/SHA-2
[34] ransomware: http://ru.wikipedia.org/wiki/Ransomware
[35] P2P: http://ru.wikipedia.org/wiki/Одноранговая_сеть
[36] Zeus: http://habrahabr.ru/post/161861/
[37] Kademlia: http://ru.wikipedia.org/wiki/Kademlia
[38] Источник: http://habrahabr.ru/post/162259/
Нажмите здесь для печати.