Генератор вирусов upo исходник

Генераторы случайных чисел — ключевая часть веб-безопасности. Небольшой список применений:

  • Генераторы сессий(PHPSESSID)
  • Генерация текста для капчи
  • Шифрование
  • Генерация соли для хранения паролей в необратимом виде
  • Генератор паролей
  • Порядок раздачи карт в интернет казино

Источники энтропии используются для накопления энтропии с последующим получением из неё начального значения (initial value, seed), необходимого генераторам случайных чисел (ГСЧ) для формирования случайных чисел. ГПСЧ использует единственное начальное значение, откуда и следует его псевдослучайность, а ГСЧ всегда формирует случайное число, имея в начале высококачественную случайную величину, предоставленную различными источниками энтропии.
Энтропия – это мера беспорядка. Информационная энтропия — мера неопределённости или непредсказуемости информации.
Можно сказать, что ГСЧ = ГПСЧ + источник энтропии.

  • Предсказуемая зависимость между числами.
  • Предсказуемое начальное значение генератора.
  • Малая длина периода генерируемой последовательности случайных чисел, после которой генератор зацикливается.

Распространённый метод для генерации псевдослучайных чисел, не обладающий криптографической стойкостью. Линейный конгруэнтный метод заключается в вычислении членов линейной рекуррентной последовательности по модулю некоторого натурального числа m, задаваемой следующей формулой:


где a(multiplier), c(addend), m(mask) — некоторые целочисленные коэффициенты. Получаемая последовательность зависит от выбора стартового числа (seed) X0 и при разных его значениях получаются различные последовательности случайных чисел.

Для выбора коэффициентов имеются свойства позволяющие максимизировать длину периода(максимальная длина равна m), то есть момент, с которого генератор зациклится [1].

Пусть генератор выдал несколько случайных чисел X0, X1, X2, X3. Получается система уравнений


Решив эту систему, можно определить коэффициенты a, c, m. Как утверждает википедия [8], эта система имеет решение, но решить самостоятельно или найти решение не получилось. Буду очень признателен за любую помощь в этом направлении.

Основным алгоритмом предсказания чисел для линейно-конгруэнтного метода является Plumstead’s — алгоритм, реализацию, которого можно найти здесь [4](есть онлайн запуск) и здесь [5]. Описание алгоритма можно найти в [9].
Простая реализация конгруэнтного метода на Java.

Отправив 20 чисел на сайт [4], можно с большой вероятностью получить следующие. Чем больше чисел, тем больше вероятность.

Многие языки программирования, например C(rand), C++(rand) и Java используют LСPRNG. Рассмотрим, как можно провести взлом на примере java.utils.Random. Зайдя в исходный код(jdk1.7) данного класса можно увидеть используемые константы

Метод java.utils.Randon.nextInt() выглядит следующим образом (здесь bits == 32)

Результатом является nextseed сдвинутый вправо на 48-32=16 бит. Данный метод называется truncated-bits, особенно неприятен при black-box, приходится добавлять ещё один цикл в brute-force. Взлом будет происходить методом грубой силы(brute-force).

Пусть мы знаем два подряд сгенерированных числа x1 и x2. Тогда необходимо перебрать 2^16 = 65536 вариантов oldseed и применять к x1 формулу:

до тех пор, пока она не станет равной x2. Код для brute-force может выглядеть так

Вывод данной программы будет примерно таким:

Несложно понять, что мы нашли не самый первый seed, а seed, используемый при генерации второго числа. Для нахождения первоначального seed необходимо провести несколько операций, которые Java использовала для преобразования seed, в обратном порядке.

И теперь в исходном коде заменим
crackingSeed.set(seed);
на
crackingSeed.set(getPreviousSeed(seed));

И всё, мы успешно взломали ГПСЧ в Java.

Рассмотрим ещё один не криптостойкий алгоритм генерации псевдослучайных чисел Mersenne Twister. Основные преимущества алгоритма — это скорость генерации и огромный период 2^19937 − 1, На этот раз будем анализировать реализацию алгоритма mt_srand() и mt_rand() в исходном коде php версии 5.4.6.

Можно заметить, что php_mt_reload вызывается при инициализации и после вызова php_mt_rand 624 раза. Начнем взлом с конца, обратим трансформации в конце функции php_mt_rand(). Рассмотрим (s1 ^ (s1 >> 18)). В бинарном представление операция выглядит так:

10110111010111100111111001110010 s1
00000000000000000010110111010111100111111001110010 s1 >> 18
10110111010111100101001110100101 s1 ^ (s1 >> 18)
Видно, что первые 18 бит (выделены жирным) остались без изменений.
Напишем две функции для инвертирования битового сдвига и xor

Тогда код для инвертирования последних строк функции php_mt_rand() будет выглядеть так

Если у нас есть 624 последовательных числа сгенерированных Mersenne Twister, то применив этот алгоритм для этих последовательных чисел, мы получим полное состояние Mersenne Twister, и сможем легко определить каждое последующее значение, запустив php_mt_reload для известного набора значений.

Если вы думаете, что уже нечего ломать, то Вы глубоко заблуждаетесь. Одним из интересных направлений является генератор случайных чисел Adobe Flash(Action Script 3.0). Его особенностью является закрытость исходного кода и отсутствие задания seed'а. Основной интерес к нему, это использование во многих онлайн-казино и онлайн-покере.
Есть много последовательностей чисел, начиная от курса доллара и заканчивая количеством времени проведенным в пробке каждый день. И найти закономерность в таких данных очень не простая задача.

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

Приведем пример генерации случайной величины с треугольным распределением [7] на языке C99.


В данном случае мы берем случайную величину rand() и задаем ей распределение, исходя из функции треугольного распределения. Для параметров a = -40, b = 100, c = 50 график 10000000 измерений будет выглядеть так


Пусть требуется получить датчик экспоненциально распределенных случайных величин. В этом случае F(x) = 1 – exp(-lambda * x). Тогда из решения уравнения y = 1 – exp(-lambda * x) получаем x = -log(1-y)/lambda.
Можно заметить, что выражение под знаком логарифма в последней формуле имеет равномерное распределение на отрезке [0,1), что позволяет получать другую, но так же распределённую последовательность по формуле: x = -log(y)/lambda, где y есть случайная величина(rand()).

Некоторые разработчики считают, что если они скроют используемый ими метод генерации или придумают свой, то этого достаточно для защиты. Это очень распространённое заблуждение. Следует помнить, что есть специальные методы и приемы для поиска зависимостей в последовательности чисел.

Одним из известных тестов является тест на следующий бит — тест, служащий для проверки генераторов псевдослучайных чисел на криптостойкость. Тест гласит, что не должно существовать полиномиального алгоритма, который, зная первые k битов случайной последовательности, сможет предсказать k+1 бит с вероятностью большей ½.

Кругозор без горизонтов

Чтобы получить доступ к сервисам проекта, войдите на сайт через аккаунт. Если у вас еще нет аккаунта, его можно создать.


  • добавить в избранное

Генераторы зла

Неужели все эти вирусы пишутся каждый день в
таком. количестве вручную человеком, с такой
ярой мотивацией. я в глобальном масштабе
смотрю, конечно.

Чтобы создать рабочий вредоносный файл, требуются знания, опыт и время. Но нынешним мошенникам без квалификации хочется заработать быстро. Так в мир киберкриминала пришли те, кто не умеет писать вредоносный код самостоятельно.

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

Это цитата от одной антивирусной компании, c которой мы, опуская некоторые детали (не надо путать вирусы и троянцев, да и вообще иногда попадаются весьма оригинальные и архитектурно интересные экземпляры), согласны.

Генератор вирусов – специальная программа, позволяющая пользователю, не имеющему специальной квалификации, создать собственный вирус, червь или троянца.

Естественно, генератор вирусов не обладает искусственным интеллектом и не создает ничего нового – все варианты вредоносного кода уже заложены в него создателями. Пользователь такой программы может что-то настроить, выбрать из списка нужные функции – но не более. Таким образом, многие порождения генератора будут содержать один и тот же код и, соответственно, могут опознаваться одной сигнатурой.




Внимание! Настоятельно не рекомендуем самостоятельно искать и загружать подобные программы – многие распространяющие их сайты заблокированы Dr.Web не просто так.

Ответственность за создание и рассылку вируса AnnaKournikova взял на себя пользователь Интернета двадцати лет с псевдонимом OnTheFly. 14 февраля он добровольно сдался полиции голландского города Леварден. В свое оправдание OnTheFly написал довольно любопытное письмо, где сообщил, что он не хакер, программировать не умеет, а сам вирус сконструировал за несколько минут, при помощи специальной программы-редактора вирусов [K]Alamar's Vbs Worms Creator, которую нашел в Интернете.

Автором конструктора Vbs Worms Creator, с помощью которого была создана AnnaKournikova, оказался аргентинский хакер с сетевым псевдонимом [K]Alamar's, проживавший на тот момент в пригороде Буэнос-Айреса. Для создания AnnaKournikova в редакторе [K]Alamar-а сначала задается имя вируса, потом способ его распространения, а затем сценарий действий на зараженной машине.

До AnnaKournikova была эпидемия ILOVEYOU. Этот червь так же занимался рассылками по адресной книге Microsoft Outlook. В связи с его появлением Microsoft сразу после эпидемии ILOVEYOU выпустила патч, который должна была пресекать несанкционированную рассылку по адресной книге. Но множество компаний и частных пользователей не поставили это обновление.

Прошло 16 лет – и пользователи все так же при первой возможности не устанавливают обновления безопасности.

Как следует из названия конструктора, он генерировал скриптовые вредоносные программы. Так, AnnaKournikova не была собственно исполняемым файлом – ее код исполнялся подсистемой ОС – Windows Scripting Host.

Почему было сделано именно так? Собственно, мы уже писали об этом в выпусках про скриптовые вредоносные программы: их очень просто модифицировать и гораздо сложнее детектировать.

Грустно, что создатели генераторов не думают о социальной ответственности. Для них это бизнес. Скажем, после эпидемии AnnaKournikova автор генератора сделал такую оговорку:

Вторая версия программы содержит исправления старых ошибок, а также ряд новых функций. Теперь с ее помощью можно создавать не только скрипты на VisualBasic, но и полноценные .exe файлы, были улучшены и средства маскировки создаваемых вирусов.

Сам [K] утверждает, что программа была создана им исключительно в образовательных целях, и те, кто будут использовать ее, должны осознавать, что ответственность за возможные последствия лежит именно на них, а не на [K].

Генераторы вирусов возникли задолго до AnnaKournikova и продолжают появляться сегодня. И они создают вредоносные программы не только для Windows.

Набор для разработчика троянов Trojan Development Kits (TDKs) позволяет создавать вредоносные программы под мобильные платформы. Для того чтобы сгенерировать зловреда, злоумышленнику нужно всего лишь заполнить форму, выбрав требуемые настройки.


Самое печальное, что для создания вымогателя для Android не требуется никаких особых навыков. Настраивается все, от отображаемого сообщения с требованием выкупа, для ключа разблокировки. Не придется писать ни одной строки кода. После заполнения всей необходимой информации и настроек, начинающий киберпреступник должен нажать на кнопку ‘Create’, после чего предлагается подписаться на услугу. Приложение позволяет пользователю начать онлайн-чат с разработчиком, где они могут оговорить единовременный платеж.

Читайте также:

Пожалуйста, не занимайтесь самолечением!
При симпотмах заболевания - обратитесь к врачу.

Copyright © Иммунитет и инфекции