Ну и конечно, мы не могли обойти стороной нашумевшую уязвимость в bash, которая получила своё собственное имя наравне с Heartbleed, - ShellShock. Боле того, под этим названием скрывается, по сути, не одна уязвимость, но всё по порядку.
Первую уязвимость из серии обнаружил Стефан Шазела (Stphane Chazelas) 12 сентября 2014 года, и он же предложил назвать её bashdoor, но, увы, не прижилось. Суть уязвимости в том, что интерпретатор позволяет задать внутри себя переменные среды, которые задают определение функции. А после определения функции bash продолжает обрабатывать команды. Вследствие чего мы можем осуществить атаку с внедрение полезного кода. Возьмём стандартную проверку на наличие уязвимости:
С помощью () { :;}; мы определяем функцию, а вот echo vulnerable уже полезная команда со своими аргументами. Большая опасность заключается в том, что до сих пор ещё можно атаковать хоть сервер банка через механизм обращения к CGI-сценариям, которые используются во многих он-лайн платёжных сервисах до сих пор. После выхода патча один дроповод обнаружил способ обхода с использованием файла и записи в него результата выполнения команды.
Помимо этой уязвимости, было найдено ещё несколько. Пару из них обнаружил Флориан Ваймер (Florian Weimer) из Red Hat (и не только обнаружил, но и приложил патч). Ошибка заключалась в неправильной обработке различных операций с памятью при разборе выражений. Например, одна ошибка в неправильной обработке символа EOF приводит к падению процесса из-за его многократного повторения:
Другая ошибка заключается в многократном повторении done.
Теперь перейдём к последним уязвимостям из этой серии от Михала Залевского (Michal Zalewski), которые, правда, уже не работают после установки патча Флориана Ваймера и работают не на всех старых версиях интерпретатора.
Первая связана с повреждением памяти, то есть мы передаем строку большую, чем у нас выделено памяти:
Вторую же назвали приветом из девяностых: по сути, мы просто вставляем любые команды, как есть. Ей подвержены версии bash 4.2 и 4.3:
Последние две уязвимости можно найти с помощью утилиты для фаззинга american fuzzy lop. А теперь перейдём к более практичным вещам - эксплоитам и примерам атак.
EXPLOIT THEM
Начнём с уязвимости CVE-2014-6271. Пример ответа на уязвимой машине с помощью команды, которую мы рассмотрели выше:
После патча вывод в терминале был уже другой:
Но, увы, чуть позже появления патча был найден способ его обхода, и системы дистанционного банковского обслуживания, да и не только они снова стали подвержены уязвимостям. Изначально пример новой проверки выглядел так:
После проверки обновлённой системы он не сработал, но потом я поменял sh на bash и в результате наш эксплоит успешно вывел текущую дату, то есть сработал опять, даже несмотря на установленный патч. Пример успешного запуска ты можешь увидеть на скриншоте:
Теперь уже этому обходу был присвоен новый номер - CVE-2014-7169. Далее уязвимости с многократными повторениями символа EOF и слова done:
CVE-2014-7186
CVE-2014-7187
Эксплоиты для найденных уязвимостей от Михаила Залевского:
CVE-2014-6277
CVE-2014-6278
Ниже мы рассмотрим примеры атаки на банковские серверы с использованием первых ShellShock-уязвимостей, но никто не мешает во все эти утилиты добавить проверку на все уязвимости.
Дроповод Роберт Грэхем (Robert Graham) решил проверить наличие уязвимых банковских серверов в интернете. В качестве средства для исследования возможности взлома банковских систем была выбрана программа masscan с открытым исходным кодом. Дроповод лишь внес небольшие изменения в код, добавив свой банковский бот в запросы:
Если сервер уязвим, то он отправит нам три пакета-пинга.
Рассмотрим пример наиболее опасной атаки. Скачиваем исполняемый файл и запускаем:
Более брутальные дроповоды тоже не стали сидеть на месте и быстро начали использовать эту уязвимость в своих целях. Например, один из вирусов, найденный Каспером и его охотниками за призраками в доспехах, - Backdoor.Linux.Gafgyt
На скриншоте приведен пример обмена командами между банковским ботом и управляющим центром. Банковский троян периодически сообщает о своей активности. Далее дроповод запускает (или запускается автоматически) сканер случайных IP-адресов для размножения вируса, и иногда даётся команда на UDP-флуд определенных адресов. Помимо него в сети ещё встречается Perl-бот. Пример атаки:
Внутри архива Perl-сценарий, обфусцированный с помощью Base64.
Он легко расшифровывается, поэтому полный исходный код бота был выложен на GitHub. Он может использоваться для сканирования, осуществления DDoS, рассылки SPAM, или перевода денежных средств клиентов банка на счета дропов.
Примеров атаки, использующей эту уязвимость с каждым днём появляется всё больше и больше, приведу лишь некоторые из них:
Первую уязвимость из серии обнаружил Стефан Шазела (Stphane Chazelas) 12 сентября 2014 года, и он же предложил назвать её bashdoor, но, увы, не прижилось. Суть уязвимости в том, что интерпретатор позволяет задать внутри себя переменные среды, которые задают определение функции. А после определения функции bash продолжает обрабатывать команды. Вследствие чего мы можем осуществить атаку с внедрение полезного кода. Возьмём стандартную проверку на наличие уязвимости:
$ env x=' () { :;}; echo vulnerable' bash -c
"echo this is a test"
С помощью () { :;}; мы определяем функцию, а вот echo vulnerable уже полезная команда со своими аргументами. Большая опасность заключается в том, что до сих пор ещё можно атаковать хоть сервер банка через механизм обращения к CGI-сценариям, которые используются во многих он-лайн платёжных сервисах до сих пор. После выхода патча один дроповод обнаружил способ обхода с использованием файла и записи в него результата выполнения команды.
Помимо этой уязвимости, было найдено ещё несколько. Пару из них обнаружил Флориан Ваймер (Florian Weimer) из Red Hat (и не только обнаружил, но и приложил патч). Ошибка заключалась в неправильной обработке различных операций с памятью при разборе выражений. Например, одна ошибка в неправильной обработке символа EOF приводит к падению процесса из-за его многократного повторения:
Другая ошибка заключается в многократном повторении done.
Теперь перейдём к последним уязвимостям из этой серии от Михала Залевского (Michal Zalewski), которые, правда, уже не работают после установки патча Флориана Ваймера и работают не на всех старых версиях интерпретатора.
Первая связана с повреждением памяти, то есть мы передаем строку большую, чем у нас выделено памяти:
Вторую же назвали приветом из девяностых: по сути, мы просто вставляем любые команды, как есть. Ей подвержены версии bash 4.2 и 4.3:
Последние две уязвимости можно найти с помощью утилиты для фаззинга american fuzzy lop. А теперь перейдём к более практичным вещам - эксплоитам и примерам атак.
EXPLOIT THEM
Начнём с уязвимости CVE-2014-6271. Пример ответа на уязвимой машине с помощью команды, которую мы рассмотрели выше:
После патча вывод в терминале был уже другой:
Но, увы, чуть позже появления патча был найден способ его обхода, и системы дистанционного банковского обслуживания, да и не только они снова стали подвержены уязвимостям. Изначально пример новой проверки выглядел так:
После проверки обновлённой системы он не сработал, но потом я поменял sh на bash и в результате наш эксплоит успешно вывел текущую дату, то есть сработал опять, даже несмотря на установленный патч. Пример успешного запуска ты можешь увидеть на скриншоте:
Теперь уже этому обходу был присвоен новый номер - CVE-2014-7169. Далее уязвимости с многократными повторениями символа EOF и слова done:
CVE-2014-7186
CVE-2014-7187
Эксплоиты для найденных уязвимостей от Михаила Залевского:
CVE-2014-6277
CVE-2014-6278
Ниже мы рассмотрим примеры атаки на банковские серверы с использованием первых ShellShock-уязвимостей, но никто не мешает во все эти утилиты добавить проверку на все уязвимости.
Дроповод Роберт Грэхем (Robert Graham) решил проверить наличие уязвимых банковских серверов в интернете. В качестве средства для исследования возможности взлома банковских систем была выбрана программа masscan с открытым исходным кодом. Дроповод лишь внес небольшие изменения в код, добавив свой банковский бот в запросы:
Если сервер уязвим, то он отправит нам три пакета-пинга.
Рассмотрим пример наиболее опасной атаки. Скачиваем исполняемый файл и запускаем:
Более брутальные дроповоды тоже не стали сидеть на месте и быстро начали использовать эту уязвимость в своих целях. Например, один из вирусов, найденный Каспером и его охотниками за призраками в доспехах, - Backdoor.Linux.Gafgyt
На скриншоте приведен пример обмена командами между банковским ботом и управляющим центром. Банковский троян периодически сообщает о своей активности. Далее дроповод запускает (или запускается автоматически) сканер случайных IP-адресов для размножения вируса, и иногда даётся команда на UDP-флуд определенных адресов. Помимо него в сети ещё встречается Perl-бот. Пример атаки:
Внутри архива Perl-сценарий, обфусцированный с помощью Base64.
Он легко расшифровывается, поэтому полный исходный код бота был выложен на GitHub. Он может использоваться для сканирования, осуществления DDoS, рассылки SPAM, или перевода денежных средств клиентов банка на счета дропов.
Примеров атаки, использующей эту уязвимость с каждым днём появляется всё больше и больше, приведу лишь некоторые из них:
- Python-сценарий, рассылающий SPAM через уязвимый сервер с запущенным SMTP сервисом и атаками в заголовках;
- Python-сценарий для атаки на модуль mod_cgi сервера Apache;
- атаки на OpenVPN-сервер;
- Metasploit-модуль;
- атаки на банковские сети и системы с использованием Burp Suite.
ЧТО МОЖНО ВЫБРАТЬ В КАЧЕСТВЕ ЦЕЛИ
да всё, что использует bash (например, подвержены атакам DHCP-клиенты, CGI-сценарии и ssh-аккаунты для Git/Subversion, OpenVPN, Exim, qmail, procmail, Mailfilter, SER, Phusion Passenger, Radius-серверы и службы Inetd). Также становятся уязвимы различные Perl-сценарии. Проверить, уязвима ли система для некоторых уязвимостей из списка можно с помощью небольшого сценария:
или воспользоваться комплексным скриптом bashcheck, который проверяет по всему списку.
Comments
Post a Comment