Недавно Avast обнаружили уязвимость нулевого дня в Google Chrome (CVE-2022-2294), когда она была использована в попытке атаковать пользователей Avast на Ближнем Востоке. В частности, значительная часть атак произошла в Ливане, где среди жертв были журналисты.
Уязвимость заключалась в повреждении памяти в WebRTC, которое использовалось для выполнения шеллкода в процессе рендеринга Chrome. Avast сообщили об этой уязвимости компании Google, которая устранила ее 4 июля 2022 года.
Судя по вредоносному ПО и ТТП, использованным для осуществления атаки, с уверенностью можно приписать ее тайному поставщику шпионского ПО с множеством имен, наиболее известному как Candiru. (Это название участники угрозы выбрали сами, вдохновившись одноименной ужасающей рыбой-паразитом).
После того как Candiru был разоблачен Microsoft и CitizenLab в июле 2021 года, он затаился на несколько месяцев, скорее всего, не торопясь обновлять свои вредоносные программы, чтобы обойти существующие средства обнаружения. Avast видели, как он вернулся с обновленным набором инструментов в марте 2022 года, атакуя пользователей Avast в Ливане, Турции, Йемене и Палестине с помощью атак типа "водяная скважина" с использованием эксплойтов нулевого дня для Google Chrome. Мы считаем, что эти атаки были очень целенаправленными.
Доставка эксплойтов
Существовало несколько кампаний атак, каждая из которых по-своему доставляла эксплойт жертвам.
В Ливане злоумышленники, по-видимому, взломали веб-сайт, используемый сотрудниками информационного агентства. Не возможно сказать наверняка, что именно хотели получить злоумышленники, однако часто причиной, по которой злоумышленники охотятся за журналистами, является желание шпионить за ними и за материалами, над которыми они непосредственно работают, или добраться до их источников и собрать компрометирующую информацию и конфиденциальные данные, которыми они поделились с прессой.
Интересно, что на взломанном сайте были обнаружены артефакты постоянных XSS-атак: страницы содержали вызовы Javascript-функции alert вместе с ключевыми словами типа test. Мы предполагаем, что таким образом злоумышленники тестировали XSS-уязвимость, прежде чем использовать ее по-настоящему, внедрив код, загружающий вредоносный Javascript из контролируемого злоумышленниками домена. Этот внедренный код затем отвечал за перенаправление предполагаемых жертв (и только предполагаемых) на сервер эксплойтов через несколько других контролируемых злоумышленниками доменов.
Как только жертва попадает на сервер эксплойтов, Candiru собирает дополнительную информацию. Профиль браузера жертвы, состоящий примерно из 50 точек данных, собирается и отправляется злоумышленникам. Собранная информация включает язык, часовой пояс, информацию об экране, тип устройства, плагины браузера, реферер, память устройства, функциональность cookie и многое другое. Avast полагает, что это сделано для дополнительной защиты эксплойта и обеспечения того, что он будет доставлен только целевым жертвам. Если собранные данные удовлетворяют сервер эксплойта, он использует RSA-2048 для обмена ключом шифрования с жертвой. Этот ключ шифрования используется с AES-256-CBC для создания зашифрованного канала, по которому жертве доставляются эксплойты нулевого дня. Этот зашифрованный канал устанавливается поверх TLS, эффективно скрывая эксплойты даже от тех, кто будет расшифровывать TLS-сессию для перехвата HTTP-трафика в открытом виде.
Эксплойты и уязвимости
Avast удалось зафиксировать эксплойт нулевого дня, который использовал переполнение буфера кучи в WebRTC для выполнения шеллкода внутри процесса рендеринга. Этот эксплойт был связан с эксплойтом для выхода из песочницы, который, к сожалению, был дополнительно защищен, и Avast не смогли его восстановить. Avast извлекли PoC из эксплойта рендерера и отправили его в службу безопасности Google. Они устранили уязвимость, присвоив ей CVE-2022-2294 и выпустив исправление в Chrome версии 103.0.5060.114 (стабильный канал).
Хотя эксплойт был разработан специально для Chrome под Windows, потенциал уязвимости был гораздо шире. Так как первопричина находилась в WebRTC, уязвимость затрагивала не только другие браузеры на базе Chromium (например, Microsoft Edge), но и различные браузеры, такие как Safari от Apple. Мы не знаем, разработал ли Candiru другие эксплойты, кроме того, который нацелен на Chrome под Windows, но вполне возможно, что да. Avast Secure Browser был исправлен 5 июля. Microsoft приняла патч для Chromium 6 июля, а Apple выпустила патч для Safari 20 июля.
В конце цепочки эксплойтов вредоносная полезная нагрузка (называемая DevilsTongue, полноценное шпионское ПО) пытается проникнуть в ядро с помощью еще одного эксплойта нулевого дня. На этот раз он нацелен на легитимный подписанный драйвер ядра по принципу BYOVD (Bring Your Own Vulnerable Driver). Обратите внимание, что для использования драйвера, он должен быть сначала сброшен в файловую систему (Candiru использовал путь C:\Windows\System32\drivers\HW.sys) и загружен, что представляет собой хорошую возможность обнаружения.
Драйвер эксплуатируется через запросы IOCTL. В частности, есть два уязвимых IOCTL: 0x9C40648C может быть использован для чтения физической памяти, а 0x9C40A4CC - для записи физической памяти. Мы сообщили об этом разработчику драйвера, который признал наличие уязвимости и заявил, что работает над исправлением. К сожалению, патч не остановит злоумышленников, поскольку они могут просто продолжать использовать старый, непропатченный драйвер. Мы также обсуждаем возможность отзыва драйвера, но и это не будет серебряной пулей, поскольку Windows не всегда проверяет статус отзыва драйвера. На данный момент лучшим решением представляется блокировка драйверов.
Indicators of Compromise
Domains
- bad-shop.net
- bestcarent.org
- core-update.com
- datanalytic.org
- expertglobal.org
- only-music.net
- popsonglist.com
- querylight.net
- smartstand.org
- stylishblock.com
- webs-update.com
File Paths
- C:\Windows\System32\drivers\HW.sys
- C:\Windows\System32\drivers\HW.sys.dat
- C:\Windows\System32\ime\imejp\imjpueact.dll
- C:\Windows\System32\ime\imejp\imjpuexp.dll
- C:\Windows\System32\ime\imetc\imtcprot.dll
- C:\Windows\System32\ime\shared\imccphd.dll
- C:\Windows\System32\ime\shared\imebrokev.dll
- C:\Windows\System32\ime\shared\imecpmeid.dll
- C:\Windows\System32\ime\shared\imepadsvd.dll
- C:\Windows\System32\migration\imjprmig.dll
- C:\Windows\System32\migration\netiopmig.dll
- C:\Windows\System32\migration\sppvmig.dll
- C:\Windows\System32\migration\spvmig.dll
- C:\Windows\System32\wbem\dmwmibridgeprov132.dll
- C:\Windows\System32\wbem\esscli32.dll
- C:\Windows\System32\wbem\netdacim32.dll
- C:\Windows\System32\wbem\netpeerdistcim32.dll
- C:\Windows\System32\wbem\viewprov32.dll
- C:\Windows\System32\wbem\vsswmi32.dll
- C:\Windows\System32\wbem\wbemcore32.dll
- C:\Windows\System32\wbem\wbemdisp32.dll
- C:\Windows\System32\wbem\wbemsvc32.dll
- C:\Windows\System32\wbem\wfascim32.dll
- C:\Windows\System32\wbem\win32_encryptablevolume32.dll
- C:\Windows\System32\wbem\wmiaprpl32.dll