Некоторое время назад нам попалась группа однотипных SWF-эксплойтов, для которых мы не смогли определить используемую уязвимость. Мы сообщили об этом в Adobe и оказалось, что в этих ITW эксплойтах применяется 0-day уязвимость. Сегодня Adobe выпустила соответствующийпатч.
Всего мы обнаружили 11 эксплойтов, которые работают на следующих версиях Adobe Flash Player:
11.3.372.94
11.3.375.10
11.3.376.12
11.3.377.15
11.3.378.5
11.3.379.14
11.6.602.167
11.6.602.180
11.7.700.169
11.7.700.202
11.7.700.224
Все эксплойты используют одну и ту же уязвимость и представляют собой распакованные SWF файлы. Во всех эксплойтах actionscript код идентичен. В нем выполняется проверка версии операционной системы: эксплойты работают только под Windows XP, Visa, 2003 R2, 2003, 7, 7×64, 2008 R2, 2008, 8, 8×64. В некоторых самплах стоит отдельное условие, согласно которому эксплойт прекращает работу на Windows 8.1 и 8.1 x64.
Алгоритм проверки версии операционной системы
Если проверка на версию ОС прошла успешно, управление передаётся на функции, собирающие ROP цепочки в зависимости от версии Flash Player’а. Причём есть две такие функции – одна для Windows 8 (х86 и x64) и вторая для всех остальных версий.
Алгоритм проверки версии Flash Player и сборки ROP цепочки
После этого происходит формирование шелл-кода в зависимости от версии Windows и непосредственная эксплуатация уязвимости.
Фрагмент кода, формирующего шелл-код
Мы обнаружили три типа применяемых шелл-кодов. Первый — примитивный шелл-код, который читает из SWF и дропает на диск исполняемый файл под названием a.exe. Только в одном из имеющихся у нас 11 эксплойтов (все детектируются нами как HEUR:Exploit.SWF.Agent.gen) содержалась полезная нагрузка, но о нём чуть ниже.
Шелл-код, читающий из эксплойта зашитый файл и дропающий его на диск
Второй тип выполняет загрузку и запуск загруженного файла с URL, переданного в параметрах к SWF-файлу. Но так как у нас отсутствуют контейнеры, которые могут передавать параметры (html/docx), то мы не смогли проверить, что и откуда скачивается.
Код, выполняющий подстановку переданного URL в шелл-код (+ проверка на отладчик и тип Flash Player)
Третий шелл-код – самый любопытный, он присутствует только в некоторых файлах. Его основная задача – вывести с помощью MessageBox диалоговое окошко со следующими строчками:
«Oops – what happened ?X »
«You have been owned by CorelanX »
Что касается самих SWF-файлов, то с помощью KSN мы обнаружили, что они были встроены в .docx документы со следующими корейскими названиями:
Автопереводчик перевёл эти названия как «List of the latest Japanese AV wind and how to use torrents.docx».
Мы обнаружили, что эти эксплойты были задетектированы у трех разных пользователей, причём один из них работал на Mac OS 10.6.8, а двое других — на Windows 7. У пользователя Mac эксплойты были обнаружены во вложении к письму. У пользователей Windows 7 – в кэше браузера, но это не отменяет вариант запуска файла из почты, так как Outlook может вызывать компоненты Internet Explorer для открытия файлов. Судя по IP-адресам, все эти пользователи располагаются в Китае. В качестве браузера использовался SogouExplorer китайского происхождения, а почтовый ящик располагался на 163.com. Всё это может указывать на то, что .docx документ с 0-day эксплойтом таргетированно распространялся по почте.
Что касается полезной нагрузки, то только в одном эксплойте содержался исполняемый файл. Этот файл представляет собой примитивный загрузчик, который скачивает с домена 3-го уровня (thirdbase.bugs3.com) бесплатного хостинга bugs3.com несколько файлов, зашифрованных с помощью Microsoft CryptoAPI. Сам загрузчик (детектируется нами как Trojan-Downloader.Win32.Agent.hdzh) выполнен примитивно, в нём встречается строка, содержащая ссылку на локальный pdb-файл на компьютере разработчика, —
«d:.Work.Coding.WorkspacedownLoaderReleasedLoad.pdb» —
и применяется простой алгоритм расшифровки строк:
Алгоритм расшифровки строк в дропаемом из SWF-эксплойта загрузчике
Нам удалось получить с вышеупомянутого сервера два исполняемых файла из, предположительно, трёх. Первый файл (детектируется как Trojan-Spy.Win32.Agent.cjuj) крадёт пароли от почтового ящика из разнообразного ПО (Foxmail, OperaMail, Opera, Mozilla Firefox, Safari, IncrediMail, Pidgin, Thunderbird и другие) и извлекает данные из форм следующих страниц авторизации:
http://twitter.com
http://facebook.com
http://passport.yandex.ru/passport
http://www.yandex.ru
http://qip.ru
http://mail.qip.ru
https://login.nifty.com/service/login
http://e.mail.ru/cgi-bin/login
http://mail.ru
http://mail.126.com
http://secure.zapak.com/mail/zapakmail.php
https://lavabit.com/apps/webmail/src/login.php
http://www.bigstring.com
http://www.gmx.com
http://passport.sohu.com/indexaction.action
http://www.sohu.com
https://www.zoho.com/login.html
http://mail.sina.com.cn
http://members.sina.com/index.php
http://www.care2.com/passport/login.html
http://www.mail.com/int
https://fastmail.fm/mail
https://www.inbox.com/login.aspx
http://www.gawab.com
http://mail.163.com
http://registration.lycos.com/login.php
http://www.mail.lycos.com
https://my.screenname.aol.com/_cqr/login/login.psp
https://edit.bjs.yahoo.com/config/login
https://login.yahoo.co.jp/config/login
https://login.yahoo.com/config/login_verify2
https://login.live.com/login.srf
https://www.google.com/accounts/servicelogin
В паре с ним работает второй скаченный файл (детектируется Backdoor.Win32.Agent.dfdq), представляющий собой бэкдор. Мы обнаружили, что он использует C&C-сервера, расположенные по следующим адресам:
sales.eu5.org
www.mobilitysvc.com
javaupdate.flashserv.net
Когда мы разбирали этот бот, нам удалось получить с нескольких серверов JPEG-файл, содержащий внутри .dll. Если этот файл открыть в стандартном просмотрщике, то увидим сердечко:
А на деле – из этого JPEG выгружается библиотека под названием kboc.dll (детектируется как Backdoor.Win32.Agent.dfdr), которая внедряется в процесс svchost.exe. Эта библиотека общается с командным центром, однако нам не удалось получить дополнительных файлов. Мы продолжаем следить за активностью бота.
P.S. Спасибо моим коллегам Александру Полякову и Антону Иванову за найденную 0-day уязвимость.
0-day уязвимость CVE-2014-0497