• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Историческая вирусология: Червь рекордсмен или как ошибка исследователей привела к тотальному параличу - SQL Slammer: хронология, история, анализ

Предисловие

BBXo.gif

Холла, и все таки решил сделать себе единственный выходной за 13 дней бесперебойной писательской деятельности. Каково было моё удивление, когда я с ужасом заметил, что мне попросту больше нечего делать, увлечение обрело вид стабильной ежедневной деятельности. А когда просто лежишь и ничего не делаешь - в голову то и дело что лезут неплохие идеи и задумки. То ли я схожу с ума, то ли это норма, в любом случае у нас двенадцатая статья из цикла Исторической вирусологии, а с прошлыми можете ознакомиться вот здесь:

1. Немного ностальгии: историческая вирусология или LoveLetter в цвете современности - 22 года спустя
2. Историческая вирусология: или 40 миллиардов долларов за 18 лет - MyDoom: хронология, история, анализ
3. Историческая вирусология: Чернобыль — как это было на самом деле или как заставить ваш ПК полететь из окна: история, хронология, анализ - CIH
4. Историческая вирусология: разговор о первом черве - или как одна ошибка изменила ход истории - Morris Worm
5. Историческая вирусология: раняя хронология программ-вымогателей - AIDS, GPcode, Arhivarius. Или как шутка психически больного стала каноном
6. Историческая вирусология: поздняя хронология программ-вымогателей - ZeuS, CryptoLocker, CTB: вирусный трафик ценой в миллиарды. Часть 1
7. Историческая вирусология: локер Илона Маска или как открылась Тесла - поздняя хронология программ вымогателей. Часть 2
8. Историческая вирусология: американский школьник и 250 миллионов - Blaster Worm: история, хронология, анализ
9. Историческая вирусология: Политически предубежденный вирус или как очередное исследование зашло не в ту степь - Confiker: история, хронология, анализ
10. Историческая вирусология: безумное китайское творение, натворившее дел - червь Nimda: история, хронология, анализ

Время идет - и это правда. Возможно даже пугающая. Но технологии развиваются ещё быстрее, это не касается глубинки нашего сегодняшнего героя. Для контраста, возьмем последние 40 лет, в 1980 году был выпущен первый компьютер общего пользования и был он исключительной роскошью. Виндоус как системы тогда и вовсе не существовало, а сейчас же, только родившись, у тебя уже есть вариант иметь даже несколько устройств. И этот прогресс неизбежно несет в себе угрозы, ведь чем больше возможностей и решений - тем больше человек будет изобретать проблем на свою бедную голову. Таков уж принцип, а о проблемах современного IT поговорим и мы. Добро пожаловать в историю.

По традиции подведем к дисклеймеру с помощью отсылочки. Он всемогущ. Своей волей он может спасти каждого из нас: стоит только попросить и помолиться. Он есть, его присутствие чувствуется фибрами человеческой души. Когда вам плохо, грустно и одиноко, поднимите свой взор к небу, присмотритесь и узрите рай! Вы увидите телефонный номер, но главное – сдержитесь, не набирайте его, не звоните! Но уж если вы все-таки не сдержались и набрали этот номер, то перед вами возникнет юноша с дерзкой физиономией и промолвит: «Возрадуйся, я – Дисклеймер»:

Дисклеймер

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

И напоминаю, что в рамках этой связки статей у нас действует конкурс на 5.555 рублей, а связан он с отсылками в моих работах: культовые фильмы, анимешки да и просто мемы с играми. Узнали? Пишите комментарий, ведь тот, кто раздает все пасхалки - получит денежку.

Историческая вирусология: Червь рекордсмен или как ошибка исследователей привела к тотальному параличу системы - SQL Slammer: хронология, история, анализ

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

eK2ywjtWImLGdglLrzS5Vc9fGeF1Xj4N5TlpefBKhRACAzaks0ag7b5ba8JxM_IrQzTvhrUHPo-aJLnzIHfpCBO1CIKUz12gw3TLaHN-vYDbHq7TIOUNDbGmQwQaTfmRCsttdaFGFxOfMr2C5srO_Q


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

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

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

  1. hitlist scanning (заранее создать список первых 1000-10.000 жертв, чтобы избежать начальной пологой стадии экспоненциального роста)
  2. permutation scan (обнаружив уже зараженную машину, перескочить в списке адресов, поскольку следующие за зараженным адреса уже наверняка просканированы)
  3. partitioned scan (родительский червь раздаёт потомкам диапазоны адресов, чтобы совершенно исключить повторное сканирование)
  4. subnet scan — очевидное сканирование локальной подсети в первую очередь
И хочу отметить, что данные нововведения нэ нашли себе место в будущем, сейчас.

Но среди них оказался один фрик, который просто забил на все рекомендации и просто создал вот это… Рад представить - SQL Slammer и его создатель Эдди Урохол, о котором информации вообще нет. Сразу же к хронологии.

22 мая 2002 года - Вся эта история начинается с двух братьев и соучредителей NGSSoftware, которых наняли где-то во Франкфурте и попросили устроить Ад на серверах SQL, которые не имели никаких уязвимостей, кроме одной, здесь расписывать как это было не стану, чуть дальше будет.

24 июля 2002 года - Майкрософт выпускает патч для уязвимости в ПО SQL Сервера. Это обновление должно было закрыть две уязвимости нулевого дня:
  1. Переполнение буфера в службе разрешения SQL Server: CVE-CAN-2002-0649
  2. Отказ в обслуживании через службу разрешения SQL Server: CVE-CAN-2002-0650.
О них мы поговорим позже.

25 февраля 2003 года - ранее субботнее утро, США. Большинство администраторов спят. В сети появляется червь, который просто напросто игнорирует современные, на то время конечно же, тенденции создания вирусов.

25 февраля, спустя 10 минут - Заражено более 100.000 компьютеров. Пока сисадмины просыпались большинство SQL серверов были повержены: не работали банкоматы, производства остановились, сайты лежат.

26 февраля 2003 года - количество зараженных устройств достигает миллиона. 40% мирового трафика - это деятельность вируса. Это вызывает масштабные перегрузки и отказ в обслуживании.

28 февраля 2003 года - восемь с половиной миллионов зараженных устройств. 50% мирового трафика. Майкрософт заявляет о прекращении работы над MySQL сервером 2005.

30 февраля 2003 года - объявлена награда в 300.000$ за поимку создателя вируса и выпускают принудительные обновления, которые и сводят на нет деятельность червя.

2005 год - вы думали распространение и деятельность червя закончилась? А нет, в месяц он до сих пор заражает от 50.000 устройств.

2009 год - SQL Slammer до сих пор активен, количество заражений достигает 10.000 устройств в месяц.

2019 год - с помощью модифицированной версии червя проводятся массовые атаки.

1658653856169.png



И теперь к основам. Целевая операционная система - MS SQL Server 2000. Этот червь не использовал ни единой хитрой оптимизации. Он тупо распространялся по UDP, хранился исключительно в памяти машины.

А сейчас возвратимся к тем самым Франкфуртским ребятам, с помощью инструмента SQLPing, ребята отправляли однобайтовый пакет со значением 0x02 на UDP-порт 1434 на SQL Server. Ну, очевидный вопрос: что произойдет, если мы отправим один байт со значением 0x01 или 0x00, если уж на то пошло, и все остальные значения до 0xFF. А ответ прост. После 0х08 ваш сервер умрет.

В этом конкретном случае вызов функции strtok() C был сделан для поиска символа двоеточия в предоставленных пользователем данных, но поскольку его не было, функция вернула NULL. Ошибка в коде заключалась в том, что не проверялось возвращаемое значение strtok(), которое, если все идет хорошо, возвращает указатель на искомый «токен». Код в SQL Server предположил, что был возвращен допустимый указатель, и следующая строка кода попыталась использовать этот указатель NULL, что вызывало банальный отказ в обслуживании.

И в тот же день была найдена ещё одна дыра, которую впоследствии тоже будет использовать Сламмер. . Например, если вы отправляете 0x0A в качестве первого байта на UDP-порт 1434, он ответит 0x0A на исходный порт. Таким образом, подменив IP-адрес одного SQL-сервера и установив исходный порт на 1434, а затем отправив 0x0A на другой сервер, машины начнут забивать друг друга байтами 0x0A, пока не вызовут сбой в работе сети или не выйдут из строя.

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

И теперь к самому Сламмеру. Он не имел никаких негативных полезных нагрузок: не шифровал файлы, не дудосил сайты, не трогал VJlinkNero:


Но и одновременно своей деятельностью он вызывал массовые отказы в обслуживании и занимал некоторое время целых 50% мирового трафика.

Вот сегодняшний наш герой из глубинки как раз использовал SQL сервер для обычной работы и пасьянса, ему даже в голову не приходило, что с этим что-то не так. А вы ожидали чего-то другого от человека, переехавшего в Педрилово?

Допустим, что друган-наркоман одолжил ему интересную программку, сказав, что там есть что-то запрещенное, а наш … А я и забыл, что имя ему не дал.. Будет Ято. А наш Ято подумал о том, что там новая версия косынки 2.0 ультра эдишин. На деле там оказался SQL Slammer, что же произойдет, если запустить сию программку у себя на устройстве?

Этот вредонос представлял собой удивительный 376-байтовый вредоносный код, который после распространения не скидывал на устройство свои копии, а просто внедрялся в память.

Сперва он пытался подключиться к каждому компьютеру, который мог найти, сканируя всю сеть на открытые порты 1434 UDP. Важно отметить причину по которой был выбран именно этот протокол, точнее указать на отличие этого и TPC. В последнем нужно отправить три пакета только чтобы просто установить соединение. Не стоит забывать, что при этом необходимо держать структуры данных в ядре, ждать ответа, ставить таймеры и так далее. А UDP этого лишен, он проще. Что доказывает практика и история, ведь за первые 10 минут трафик червя достиг 1 Мегабайта в секунду, при учете, что отправляемый код весит 376 байт, примерно 360 заражений в секунду. Впечатляет? Черт возьми, да.

. После происходило подключение через порт MS-SQL UDP 1434. Червю было все равно, работает ли на компьютере, к которому он подключался на SQL или нет. Запускал он свой код, злоупотребляющий переполнением буфера, на каждом найденном компьютере.

Этот вредонос настоящая легенда, так как до его появления эти уязвимости считали незначительными, ведь использование UDP портов считалось попросту неэффективным. Ошибались.

Screenshot_88.png


Так что же произойдет при запуске кроме того, что червь начнет сканировать все вокруг в попытках распространится? М-м-м, ровным счетом ничего, если только у вас не SQL Сервер 2000, как и у нашего героя. В таком случае ваша система будет постоянно перезапускаться из-за беспрерывного переполнения памяти, а после происходит паралич местный интернет-сетей, если они вообще есть. А, ну и ещё он закидывает себя в реестр для автозапуска.

Как выразился один из тех, кто обнаружил эту уязвимость и попросту слил её в сеть: “Тот, кто написал Slammer, использовал мой код в качестве шаблона, и в то время это действительно заставило меня задуматься”. Задуматься? А раньше? Нет? Ладно. Также он отмечает, что в Вашингтоне во время пика распространения вируса даже экстренные звонки 911 не работали. То есть представьте себе картинку, у человека сердечный приступ, ему плохо, он может умереть. Но 911 больше не работает, помощь вызвать нельзя. И этой моей картине есть реальное подтверждение, 42-х летний Джорж Виллс скончался из-за того, что не смог дозвониться в службу спасения.

Касательно кода ничего особого отметить не могу, изначально стоял вопрос хотел ли создатель сделать его абсолютом в скорости распространения, но после банального просмотра сразу же можно сказать, что нет. То есть он мог быть ещё быстрее. Вот к примеру эту строку:
Код:
33 C9 xor ecx,ecx
81 F1 03 01 04 9B xor ecx,9B040103h

Можно было заменить на эту, которая на 3 байта меньше, но выполняет те же функции:
Код:
B9 03 01 04 9B мов ecx, 0x9B040103

Что интересно, половина кода Slammer использует метод XOR для установки значений регистров, тогда как остальная часть кода использует метод MOV.

У кодеров обычно есть стили, которых они придерживаются, и так же, как радистов во время Второй мировой войны можно было узнать по их характерному стилю или кулаку, кодера можно узнать по стилю, и они, как правило, не переключались между использованием XOR и МОВ. И на фоне этого существует теория, что здесь создатель не один.

Ещё что нахожу забавным, так это то, что он никак не идентифицировал была ли машина заражена уже им, или нет. Ему просто побоку. SQL Slammer использовал такой же формат пакета для повторных атак, заставив отдельные системы генерировать до 30 тысяч пакетов в секунду. Каждый новый зараженный сервер пытался разослать свои копии по случайно выбранным IP-адресам, чтобы хоть как-то этому противостоять был активирован механизм контроля доступа (access control list, ACL), который в итоге блокировал обычные запросы, препятствуя работе сервера в целом.

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

Типа итогов

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

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

Еще одним положительным эффектом, который произвел Slammer, были кардинальные изменения в Microsoft, он набил им такую шишку, что они решили заново переработать SQL 2000, отложив работу над новым типом серверного ПО. Только спустя четыре года они вернулись к Серверу 2005 и в нем нашли уязвимость и то одну, лишь спустя 3 года после выпуска. Аналогичная история повторилась с SQL 2008. Если до этого всего Майкрософт был компанией с листиком на спине “Ударь меня”, то после они серьезно задумались над безопасностью.

О создателе самого вредоноса практически ничего не известно, Википедия вовсе видит его художником и писателем, хотя другие источники приписывают ему авторство именно этого вредоноса. Наверное, мы уже и не узнаем этого наверняка, хотя. Покажет время.

2003 год, 50% мирового интернет-траффика, 8.5 миллионов зараженных устройств по всему миру, паралич сети интернет на месяц, до сих пор не побитый рекорд по скорости распространения: 370 копий в секунду и три миллиарда долларов ущерба. Это действительно была огромная шишка на лбу мирового общества, которая кардинально изменила подход к понятию безопасности. Хотя и до этого были звоночки, что нужно что-то менять, но люди такие создания, что не приложат особых усилий, пока проблема не станет поперек горла. Таков уж мир, таков порядок разрушения этого мира. И кстати, этот вредонос до сих пор активен, а в 2019 году и вовсе публиковалась статистика с резким увеличением количества атак, использующих принцип Сламмера. Тогда и вовсе все начали пророчить его возвращение, но этому не судилось сбыться.

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

23.06.2003 - Nowadays.SQL Slammer.​
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!