Специалисты ESET обнаружили, что миллионы посетителей популярных новостных веб-сайтов были мишенью нескольких вредоносных объявлений, которые специализировались на перенаправлении пользователей на набор эксплойтов. Этот набор эксплойтов использовался для компрометации пользователей вредоносным ПО с привлечением эксплойтов для Flash Player.
![](https://habrastorage.org/files/289/801/522/28980152265647b5abc9547c683d5554.jpeg)
Начиная, по крайней мере, с октября месяца этого года, пользователи могли сталкиваться с объявлениями, рекламирующими такие приложения как «Browser Defence» и «Broxu». Ниже приведены баннеры этих объявлений, которые использовались для показа на веб-сайтах.
![](https://habrastorage.org/files/db6/3b5/eb5/db63b5eb57f1427f88bdf74ca4f0d0c4.png)
Эти рекламные баннеры хранились на удаленных доменах с названиями hxxps://browser-defence.com и hxxps://broxu.com.
Интересно отметить, что без каких-либо действий со стороны пользователя, начальный скрипт веб-страницы сообщал информацию о системе потенциальной жертвы на удаленный сервер атакующих. После получения этой информации, сервер решал, какую картинку баннера следует предоставить клиенту — обычное изображение или его вредоносный аналог.
Вредоносная версия картинки баннера имеет в своем составе зашифрованный скрипт, располагающийся в альфа-канале RGB изображения. Этот альфа-канал задает прозрачность каждого пикселя. Поскольку это изменение не сильно сказывается на внешнем виде картинки, она лишь незначительно отличается от ее оригинальной версии.
![](https://habrastorage.org/files/c5b/69b/29d/c5b69b29d23c4a01a125cd1e83f43f4e.png)
Закодированный таким необычным образом скрипт использует уязвимость в Internet Explorer с идентификатором CVE-2016-0162, а также проверяет среду своего исполнения на предмет обнаружения виртуальной среды.
В том случае, если скрипт не обнаруживает признаков того, что аналитики пытаются отследить его активность, он перенаправляет пользователя на страницу посадки (landing page) набора эксплойтов Stegano с использованием сервиса TinyURL. Страница посадки пытается воспроизвести файл Flash, который специализируется на эксплуатации трех уязвимостей (CVE-2015-8651, CVE-2016-1019, CVE-2016-4117) в зависимости от того, какая версия Flash Player установлена в системе.
![](https://habrastorage.org/files/4c2/4fb/7ad/4c24fb7ad70b40bd8af6f5375891ad1d.png)
После успешной эксплуатации уязвимости, исполняемый шелл-код собирает информацию об установленных в системе security-продуктов, а также еще раз проверяет окружение, в котором исполняется код. В случае выполнения необходимых условий, шелл-код пытается загрузить зашифрованную полезную нагрузку с того же сервера. Полезная нагрузка также замаскирована в качестве изображения GIF.
Затем полезная нагрузка расшифровывается и запускается с использованием regsvr32.exe или rundll32.exe. В качестве полезной нагрузки мы наблюдали бэкдоры, банковские трояны, похитители паролей, а также различные трояны-загрузчики.
Мы уже наблюдали более ранний вариант этого набора эксплойтов в кибератаках на голландских пользователей. Весной 2015 г. злоумышленники специализировались на компрометации пользователей Чехии, а теперь обратили внимание на Канаду, Великобританию, Австралию, Испанию, и Италию.
В более ранних кампаниях злоумышленники пытались замаскировать свою вредоносную активность в форме рекламы. При этом набор эксплойтов использовал названия доменов, которые начинались в названия «ads», а также названия URI, которые содержали watch.flv, media.flv, delivery.flv, player.flv, или mediaplayer.flv.
В ходе нынешних кибератак, злоумышленники улучшили свою тактику, они начали использовать скомпрометированные ими рекламные сети, которые перенаправляли пользователей разных стран на набор эксплойтов.
Особенностью текущих кампаний было и то, что злоумышленники использовали такие популярные наборы эксплойтов как Angler и Neutrino в меньшей степени, чем набор эксплойтов Stegano. Количество перенаправлений на Stegano с веб-сайтов с вредоносными баннерами было выше чем в случае с Angler и Neutrino.
Мы наблюдали, что хостингом этих вредоносных баннеров занимались крупные легитимные веб-сайты, включая, новостные, аудитория которых составляет миллионы людей каждый день.
В подавляющем большинстве случаев, рекламные объявления специализировались на продвижении продукта под названием «Browser Defence». Не так давно мы обнаружили баннеры, занимающиеся продвижением ПО под названием «Broxu». Тем не менее, для простоты восприятия, мы остановимся на рассмотрении вредоносной кампании «Browser Defence». Кроме этого, обе кампании практически идентичны по своим свойствам.
Рекламное объявление было расположено на ресурсе browser-defence.com с форматом URI, похожим на следующий.
hxxps://browser-defence.com/ads/s/index.html?w=160&h=600
![](https://habrastorage.org/files/1a6/9b5/c5e/1a69b5c5e8de4fe09fd64757e1dd42e5.png)
Документ index.html загружает скрипт countly.min.js и подает ему при исполнении начальные параметры. Этот скрипт, однако, не представляет из себя библиотеку для работы с фондовым рынком платформы и веб-аналитики с открытым исходным кодом. Злоумышленники используют сильно модифицированную и обфусцированную версию этой библиотеки, из которой был удален определенный код и вставлен новый. Этот новый код отвечает за первоначальную проверку окружения. Затем информация об окружении отправляется на удаленный сервер в качестве параметров файла gif, которые зашифрованы с помощью XOR. Информация об этом показана на скриншоте выше.
Следующая информация об окружении отправляется на удаленный сервер.
systemLocale^screenResolution^GMT offset^Date^userAgent^pixelRatio
После этого, скрипт запрашивает у сервера рекламный баннер. Сервер может ответить либо нормальной версией изображения баннера, либо вредоносной, в зависимости от информации о том окружении, в котором он был запущен. Затем скрипт пытается загрузить баннер и прочитать информацию его RGBA структуры. В том случае, если получена вредоносная версия скрипта, он будет декодировать код JavaScript и некоторые переменные из альфа-канала изображения.
Стеганография при этом реализуется следующим образом: два последовательных альфа значения представляют десятки и единицы символов кода, закодированных в качестве разницы от 255 (полная альфа). Кроме этого, для маскировки изменений, которые можно обнаружить невооруженным глазом, разница минимизируется с помощью смещения 32.
Например, если первоначальные несколько байт альфы содержали значения 239, 253, 237, 243, 239, 237, 241, 239, 237, 245, 239, 247, 239, 235, 239, и 237, они будут декодироваться в слово «функция» (function). В этом примере, первые байты значения альфы 239 и 253 соответствуют символу 'f'.
![](https://habrastorage.org/files/f4d/85b/cba/f4d85bcbaa644f45a25dc2da74892110.png)
Более пристальным взглядом на один из чистых баннеров и на его вредоносный аналог можно увидеть небольшое различие.
![](https://habrastorage.org/files/1f5/9fa/ac7/1f59faac76c04fa5ba5347b03af70802.png)
(слева направо: чистое изображение, вредоносный аналог, расширенный для маскировки вредоносный аналог)
Альфа-канал неиспользованных пикселей заполняется некоторыми псевдослучайными значениями для того, чтобы сделать т. н. «альфа-шум» равномерно распределенным, что усиливает маскировку. После успешного извлечения, скрипт проверяет целостность кода JavaScript и сравнивает полученный хэш с тем заранее зафиксированным значением хэша, который указан в конце картинки. После этого, скрипт исполняется.
После своего запуска, скрипт пытается проверить среду своего исполнения, а именно, веб-браузер и запущенную ОС на предмет присутствия инструмента захвата сетевых пакетов, песочницы (sandbox), ПО для виртуализации, а также присутствие установленных security-продуктов. При этом код скрипта также пытается эксплуатировать уязвимость CVE-2016-0162 в Internet Explorer. Он также проверяет присутствие в системе различных графических и security-драйверов для обнаружения автоматической системы анализа вредоносного ПО.
В том случае, если никаких из вышеперечисленных признаков в системе не обнаружено, скрипт создает IFRAME (размером в один пиксель), устанавливает свойство окна window.name, которое будет использоваться в дальнейшем. После этого пользователь перенаправляется на TinyURL через https. Далее, TinyURL перенаправляет пользователя на http веб-страницу посадки набора эксплойтов.
После успешного перенаправления, страница посадки эксплойта проверяет UserAgent на соответствие веб-браузеру Internet Explorer, затем загружает файл Flash и устанавливает параметры FlashVars через зашифрованный файл JSON. Страница посадки также выступает в качестве посредника для Flash и удаленного сервера через ExternalInterface и обеспечивает функции шифрования и расшифровки.
Загружаемый Flash файл содержит у себя внутри еще один Flash файл и как в случае с набором эксплойтов Neutrino, он содержит три различных эксплойта для различных версий Flash Player. На втором этапе Flash файл расшифровывает FlashVars. Он содержит файл JSON с адресом URI для отправки сообщения об ошибке, названия функций JS для ExternalInterface, название функции обратного вызова и некоторые не используемые данные.
{“a”:”\/e.gif?ts=1743526585&r=10&data=”,”b”:”dUt”,”c”:”hML”,”d”:true,”x”:”\/x.gif?ts=1743526585&r=70&data=”}
В дальнейшем, он вызывает JavaScript через ExtelnalInterface.call(), который проверяет версию Flash и передает эту информацию на сервер через веб-страницу посадки. Это выполняется через зашифрованный URI параметр запроса для GIF файла. Алгоритм шифрования достаточно прост и использует значение window.name из рекламного объявления.
![](https://habrastorage.org/files/ef8/29e/7e9/ef829e7e9eac43ac815efa5e56983c77.png)
Ответ представляет из себя GIF изображение, в котором отбрасываются первые байты, а оставшаяся часть расшифровывается с использованием того же алгоритма, а затем передача управления обратно Flash.
![](https://habrastorage.org/files/cda/0f1/d0a/cda0f1d0a75a4c13ab395daa4bd9667c.png)
Ответ представляет из себя JSON, содержащий символ, который обозначает используемый эксплойт (CVE-2015-8651, CVE-2016-1019 или CVE-2016-4117), пароль для соответствующего эксплойта и готовый шелл-код с адресом URI полезной нагрузки.
Шелл-код расшифровывается на последнем этапе эксплуатации уязвимости. Он пытается загрузить в систему зашифрованную полезную нагрузку, которое опять замаскировано под GIF изображение. На первом этапе своего исполнения, шелл-код также проверяет ту среду, в которой он исполняется.
![](https://habrastorage.org/files/a73/4cc/802/a734cc8024d94365a984ecacdb8d31ce.png)
Он особенно заинтересован в проверке присутствия следующего программного обеспечения.
В случае обнаружения одного из вышеперечисленных компонентов, шелл-код не будет пытаться загрузить полезную нагрузку. Если полезная нагрузка получена, первые 42 байта GIF изображения отбрасываются, остальные данные расшифровываются и сохраняются в файл с использованием одного из ниже перечисленных функций.
Сам файл полезной нагрузки запускается с помощью инструментов regsvr32.exe или rundll32.exe.
Мы наблюдали в загрузке шелл-кодом вредоносных файлов полезной нагрузки (Stegano exploit kit), которые имеют следующие обнаружения AV продуктов ESET.
Win32/TrojanDownloader.Agent.CFH
Win32/TrojanDownloader.Dagozill.B
Win32/GenKryptik.KUM
Win32/Kryptik.DLIF
После анализа загрузчиков и файлов с обнаружениями семейств Kryptik, мы выяснили, что они либо содержали в себе, либо загружали удаленно вредоносное ПО Ursnif и Ramnit.
Ursnif содержит множество модулей для кражи учетных данных электронной почты, имеет в своем составе бэкдор, кейлоггер, инструмент создания скриншотов и видео, компонент внедрения кода в веб-браузеры Internet Explerer, Firefox, Chrome и модификации http трафика. Он также может украсть любой файл из зараженной системы. Согласно информации из конфигурационных файлов, которые были найдены в образцах этого вредоносного ПО, оно ориентировано на корпоративный сектор и, особенно, на платежных сервисах и институтах.
Ramnit представляет из себя файловый вирус, который был направлен на банковский сектор. Этот вирус также содержит в себе многочисленные вредоносные функции, включая, кражу данных, захват скриншотов, исполнение файлов.
Заключение
Набор эксплойтов Stegano использовался злоумышленниками еще с 2014 г. Его авторы приложили достаточно много усилий для реализации нескольких методов достижения соответствующего уровня скрытности. В одной из недавних кампаний мы обнаружили то, что отслеживалось нами еще с начала октября 2016 г., злоумышленники распространяли ссылки на набор эксплойтов с использованием рекламных баннеров и стеганографии. При этом авторы позаботились о сокрытии вредоносной активности от глаз аналитиков, которые могут использовать специальное окружение для мониторинга.
В случае успешной эксплуатации, уязвимые для используемых эксплойтов системы жертв остаются открытыми для компрометации со стороны других вредоносных программ, включая, бэкдоры, spyware и банковские трояны.
Вредоносных действий набора эксплойтов Stegano или другого набора эксплойтов можно избежать в том случае, если регулярно обновлять установленное ПО и ОС, а также использовать надежный антивирусный продукт.
Присутствие следующих продуктов в системе пытается обнаружить Stegano exploit kit.
![](https://habrastorage.org/files/749/2a5/0c7/7492a50c7d6c455c929098e086cd86d9.png)
![](https://habrastorage.org/files/fa2/478/6bd/fa24786bd76d40f6a4029c8cde889912.png)
![](https://habrastorage.org/files/ea7/9ee/069/ea79ee069cb34e658639be60c442a5d7.png)
Присутствие следующих драйверов и библиотек в системе пытается обнаружить Stegano exploit kit.
![](https://habrastorage.org/files/09b/954/fb4/09b954fb47a546db97325dd896e7fd21.png)
К следующим строкам в своем теле вредоносная программа не обращается.
![](https://habrastorage.org/files/a5d/c5c/015/a5dc5c0158db4b4dae90bd2bb9c47745.png)
Индикаторы компрометации (IoC)
Хэши представлены в формате SHA1.
countly.min.js
24FA6490D207E06F22A67BC261C68F61B082ACF8
Код из баннера
A57971193B2FFFF1137E083BFACFD694905F1A94
banner.png с Stegano
55309EAE2B826A1409357306125631FDF2513AC5
67799F80CEF4A82A07EFB3698627D7AE7E6101AB
09425B3B8BF71BA12B1B740A001240CD43378A6C
4528736618BBB44A42388522481C1820D8494E37
FE841DF1ACD15E32B4FFC046205CAAFD21ED2AB2
7BE0A9387F8528EC185ACC6B9573233D167DF71B
A5BC07E8E223A0DF3E7B45EEFD69040486E47F27
EC326BA5CD406F656C3B26D4A5319DAA26D4D5FE
3F1A5F624E0E974CAA4F290116CE7908D360E981
33F921C61D02E0758DCB0019C5F37A4D047C9EC7
2FF89048D39BE75F327031F6D308CE1B5A512F73
9A0D9EBC236DF87788E4A3E16400EB8513743233
F36C283B89C9F1B21A4AD3E384F54B0C8E7D417A
17787879D550F11580C74DA1EA36561A270E16F7
9090DB6731A8D49E8B2506087A261D857946A0EB
45B3EE46ADA9C842E65DCF235111AB81EF733F34
F56A878CA094D461BDF0E5E0CECED5B9903DB6E0
6C74A357B932CF27D5634FD88AA593AEF3A77672
0C3C22B8AA461C7DE4D68567EEA4AE3CD8E4D845
5A5A015C378159E6DC3D7978DAD8D04711D997F8
B2473B3658C13831C62A85D1634B035BC7EBD515
9638E1897B748D120149B94D596CEC6A5D547067
0195C8C7B687DD4CBF2578AD3CB13CD2807F25CB
FEC222095ABD62FC7635E2C7FA226903C849C25C
0FCB2B3ED16672A94CD003B4B53181B568E35912
03483E4039839F0807D7BEC08090179E62DBCC60
Страница посадки набора эксплойтов Stegano
67E26597CF1FF35E4B8300BF181C84015F9D1134
CD46CEE45F2FC982FBA7C4D246D3A1D58D13ED4A
191FFA6EB2C33A56E750BFFEFFE169B0D9E4BBE4
4B2F4C20CC9294F103319938F37C99C0DE7B4932
3FCEA1AFDA9888400D8DE5A232E4BF1E50D3380F
CA750F492691F4D31A31D8A638CE4A56AF8690D0
1374EE22D99ECFC6D68ADE3ACE833D4000E4705B
6BF1A2B7E8CA44E63E1A801E25189DC0212D71B9
B84AB2D5EAD12C257982386BC39F18532BF6939E
476A0455044B9111BDA42CDB7F4EA4E76AA7AB2D
0C1CA7D9C7E4B26A433946A6495782630EF6FD18
29B6DD92FBDF6070B171C38B1D3CA374F66E4B66
89DA7E7A88F9B6CBBFAF7F229BFEA8767220C831
CEE32C8E45A59D3084D832A9E6500AE44F75F7B5
A152AB43BEDCD8F6B7BFB67249C5599CF663D050
3AC722AC0D4764545A3E8A6DF02059C8A164CA17
25E0474E4F8D7D3053278B45A9C24380275B4705
35FB5F3C2957B4525A0330427397915AEEFDDD91
19EEE9745E25194DD573423C6DB0F5AF5D8CFE1D
E88B2B7A08322738C74B29C4CA538741F85A0B7F
A388A2A241339489685CB4AD22EBA9E04B72CD67
Файлы Flash
BADAE04BFF7AFD890C3275E0434F174C6706C2C6
6EF95ACB8AA14D3BA8F1B3C147B7FB0A9DA579A2
10840AEB8342A26DFC68E0E706B36AC2B5A0D5B2
093B25B04FE21185BFEEAFD48F712942D3A3F0C6
C680734AF8670895F961C951A3629B5BC64EFE8E
EEDBBB65A441979974592343C6CA71C90CC2550F
DE288CADE8EE3F13D44719796A5896D88D379A1E
9488CDBB242BE50DF3D20B12F589AF2E39080882
B664365FC8C0B93F6A992C44D11F44DD091426DD
7557B5D987F0236FF838CD3AF05663EFA98EBC56
24B7933A8A8F6ED50FBAF2A5021EF47CE614A46F
11BA8B354001900ED79C43EA858F1BC732961097
Образцы URL
TinyURL.com
/jf67ejb
/jqp7efh
/j56ks2b
/gplnhvm
/gwwltaf
/hgnsysa
/hvfnohs
Страница посадки набора эксплойтов Stegano
hxxp://conce.republicoftaste.com/urq5kb7mnimqz/3dyv72cqtwjbgf5e89hyqryq5zu60_os24kfs1j3u_i
hxxp://compe.quincephotographyvideo.com/kil5mrm1z0t-ytwgvx/g7fjx4_caz9
hxxp://ntion.atheist-tees.com/v2mit3j_fz0cx172oab_eys6940_rgloynan40mfqju6183a9a4kn/f
hxxp://entat.usedmachinetools.co/6yg1vl0q15zr6hn780pu43fwm5297itxgd19rh54-3juc2xz1t-oes5bh
hxxp://connt.modusinrebus.net/34v-87d0u3
hxxp://ainab.photographyquincemiami.com/w2juxekry8h9votrvb3-k72wiogn2yq2f3it5d17/j9r
hxxp://rated.republicoftaste.com/6t8os/lv-pne1_dshrmqgx-8zl8wd2v5h5m26m_w_zqwzq
hxxp://rence.backstageteeshirts.com/qen5sy/6hjyrw79zr2zokq1t4dpl276ta8h8-/3sf9jlfcu0v7daixie_do6zb843/z7
![](https://habrastorage.org/files/289/801/522/28980152265647b5abc9547c683d5554.jpeg)
Начиная, по крайней мере, с октября месяца этого года, пользователи могли сталкиваться с объявлениями, рекламирующими такие приложения как «Browser Defence» и «Broxu». Ниже приведены баннеры этих объявлений, которые использовались для показа на веб-сайтах.
![](https://habrastorage.org/files/db6/3b5/eb5/db63b5eb57f1427f88bdf74ca4f0d0c4.png)
Эти рекламные баннеры хранились на удаленных доменах с названиями hxxps://browser-defence.com и hxxps://broxu.com.
Интересно отметить, что без каких-либо действий со стороны пользователя, начальный скрипт веб-страницы сообщал информацию о системе потенциальной жертвы на удаленный сервер атакующих. После получения этой информации, сервер решал, какую картинку баннера следует предоставить клиенту — обычное изображение или его вредоносный аналог.
Вредоносная версия картинки баннера имеет в своем составе зашифрованный скрипт, располагающийся в альфа-канале RGB изображения. Этот альфа-канал задает прозрачность каждого пикселя. Поскольку это изменение не сильно сказывается на внешнем виде картинки, она лишь незначительно отличается от ее оригинальной версии.
![](https://habrastorage.org/files/c5b/69b/29d/c5b69b29d23c4a01a125cd1e83f43f4e.png)
Закодированный таким необычным образом скрипт использует уязвимость в Internet Explorer с идентификатором CVE-2016-0162, а также проверяет среду своего исполнения на предмет обнаружения виртуальной среды.
В том случае, если скрипт не обнаруживает признаков того, что аналитики пытаются отследить его активность, он перенаправляет пользователя на страницу посадки (landing page) набора эксплойтов Stegano с использованием сервиса TinyURL. Страница посадки пытается воспроизвести файл Flash, который специализируется на эксплуатации трех уязвимостей (CVE-2015-8651, CVE-2016-1019, CVE-2016-4117) в зависимости от того, какая версия Flash Player установлена в системе.
![](https://habrastorage.org/files/4c2/4fb/7ad/4c24fb7ad70b40bd8af6f5375891ad1d.png)
После успешной эксплуатации уязвимости, исполняемый шелл-код собирает информацию об установленных в системе security-продуктов, а также еще раз проверяет окружение, в котором исполняется код. В случае выполнения необходимых условий, шелл-код пытается загрузить зашифрованную полезную нагрузку с того же сервера. Полезная нагрузка также замаскирована в качестве изображения GIF.
Затем полезная нагрузка расшифровывается и запускается с использованием regsvr32.exe или rundll32.exe. В качестве полезной нагрузки мы наблюдали бэкдоры, банковские трояны, похитители паролей, а также различные трояны-загрузчики.
Мы уже наблюдали более ранний вариант этого набора эксплойтов в кибератаках на голландских пользователей. Весной 2015 г. злоумышленники специализировались на компрометации пользователей Чехии, а теперь обратили внимание на Канаду, Великобританию, Австралию, Испанию, и Италию.
В более ранних кампаниях злоумышленники пытались замаскировать свою вредоносную активность в форме рекламы. При этом набор эксплойтов использовал названия доменов, которые начинались в названия «ads», а также названия URI, которые содержали watch.flv, media.flv, delivery.flv, player.flv, или mediaplayer.flv.
В ходе нынешних кибератак, злоумышленники улучшили свою тактику, они начали использовать скомпрометированные ими рекламные сети, которые перенаправляли пользователей разных стран на набор эксплойтов.
Особенностью текущих кампаний было и то, что злоумышленники использовали такие популярные наборы эксплойтов как Angler и Neutrino в меньшей степени, чем набор эксплойтов Stegano. Количество перенаправлений на Stegano с веб-сайтов с вредоносными баннерами было выше чем в случае с Angler и Neutrino.
Мы наблюдали, что хостингом этих вредоносных баннеров занимались крупные легитимные веб-сайты, включая, новостные, аудитория которых составляет миллионы людей каждый день.
В подавляющем большинстве случаев, рекламные объявления специализировались на продвижении продукта под названием «Browser Defence». Не так давно мы обнаружили баннеры, занимающиеся продвижением ПО под названием «Broxu». Тем не менее, для простоты восприятия, мы остановимся на рассмотрении вредоносной кампании «Browser Defence». Кроме этого, обе кампании практически идентичны по своим свойствам.
Рекламное объявление было расположено на ресурсе browser-defence.com с форматом URI, похожим на следующий.
hxxps://browser-defence.com/ads/s/index.html?w=160&h=600
![](https://habrastorage.org/files/1a6/9b5/c5e/1a69b5c5e8de4fe09fd64757e1dd42e5.png)
Документ index.html загружает скрипт countly.min.js и подает ему при исполнении начальные параметры. Этот скрипт, однако, не представляет из себя библиотеку для работы с фондовым рынком платформы и веб-аналитики с открытым исходным кодом. Злоумышленники используют сильно модифицированную и обфусцированную версию этой библиотеки, из которой был удален определенный код и вставлен новый. Этот новый код отвечает за первоначальную проверку окружения. Затем информация об окружении отправляется на удаленный сервер в качестве параметров файла gif, которые зашифрованы с помощью XOR. Информация об этом показана на скриншоте выше.
Следующая информация об окружении отправляется на удаленный сервер.
systemLocale^screenResolution^GMT offset^Date^userAgent^pixelRatio
После этого, скрипт запрашивает у сервера рекламный баннер. Сервер может ответить либо нормальной версией изображения баннера, либо вредоносной, в зависимости от информации о том окружении, в котором он был запущен. Затем скрипт пытается загрузить баннер и прочитать информацию его RGBA структуры. В том случае, если получена вредоносная версия скрипта, он будет декодировать код JavaScript и некоторые переменные из альфа-канала изображения.
Стеганография при этом реализуется следующим образом: два последовательных альфа значения представляют десятки и единицы символов кода, закодированных в качестве разницы от 255 (полная альфа). Кроме этого, для маскировки изменений, которые можно обнаружить невооруженным глазом, разница минимизируется с помощью смещения 32.
Например, если первоначальные несколько байт альфы содержали значения 239, 253, 237, 243, 239, 237, 241, 239, 237, 245, 239, 247, 239, 235, 239, и 237, они будут декодироваться в слово «функция» (function). В этом примере, первые байты значения альфы 239 и 253 соответствуют символу 'f'.
![](https://habrastorage.org/files/f4d/85b/cba/f4d85bcbaa644f45a25dc2da74892110.png)
Более пристальным взглядом на один из чистых баннеров и на его вредоносный аналог можно увидеть небольшое различие.
![](https://habrastorage.org/files/1f5/9fa/ac7/1f59faac76c04fa5ba5347b03af70802.png)
(слева направо: чистое изображение, вредоносный аналог, расширенный для маскировки вредоносный аналог)
Альфа-канал неиспользованных пикселей заполняется некоторыми псевдослучайными значениями для того, чтобы сделать т. н. «альфа-шум» равномерно распределенным, что усиливает маскировку. После успешного извлечения, скрипт проверяет целостность кода JavaScript и сравнивает полученный хэш с тем заранее зафиксированным значением хэша, который указан в конце картинки. После этого, скрипт исполняется.
После своего запуска, скрипт пытается проверить среду своего исполнения, а именно, веб-браузер и запущенную ОС на предмет присутствия инструмента захвата сетевых пакетов, песочницы (sandbox), ПО для виртуализации, а также присутствие установленных security-продуктов. При этом код скрипта также пытается эксплуатировать уязвимость CVE-2016-0162 в Internet Explorer. Он также проверяет присутствие в системе различных графических и security-драйверов для обнаружения автоматической системы анализа вредоносного ПО.
В том случае, если никаких из вышеперечисленных признаков в системе не обнаружено, скрипт создает IFRAME (размером в один пиксель), устанавливает свойство окна window.name, которое будет использоваться в дальнейшем. После этого пользователь перенаправляется на TinyURL через https. Далее, TinyURL перенаправляет пользователя на http веб-страницу посадки набора эксплойтов.
После успешного перенаправления, страница посадки эксплойта проверяет UserAgent на соответствие веб-браузеру Internet Explorer, затем загружает файл Flash и устанавливает параметры FlashVars через зашифрованный файл JSON. Страница посадки также выступает в качестве посредника для Flash и удаленного сервера через ExternalInterface и обеспечивает функции шифрования и расшифровки.
Загружаемый Flash файл содержит у себя внутри еще один Flash файл и как в случае с набором эксплойтов Neutrino, он содержит три различных эксплойта для различных версий Flash Player. На втором этапе Flash файл расшифровывает FlashVars. Он содержит файл JSON с адресом URI для отправки сообщения об ошибке, названия функций JS для ExternalInterface, название функции обратного вызова и некоторые не используемые данные.
{“a”:”\/e.gif?ts=1743526585&r=10&data=”,”b”:”dUt”,”c”:”hML”,”d”:true,”x”:”\/x.gif?ts=1743526585&r=70&data=”}
В дальнейшем, он вызывает JavaScript через ExtelnalInterface.call(), который проверяет версию Flash и передает эту информацию на сервер через веб-страницу посадки. Это выполняется через зашифрованный URI параметр запроса для GIF файла. Алгоритм шифрования достаточно прост и использует значение window.name из рекламного объявления.
![](https://habrastorage.org/files/ef8/29e/7e9/ef829e7e9eac43ac815efa5e56983c77.png)
Ответ представляет из себя GIF изображение, в котором отбрасываются первые байты, а оставшаяся часть расшифровывается с использованием того же алгоритма, а затем передача управления обратно Flash.
![](https://habrastorage.org/files/cda/0f1/d0a/cda0f1d0a75a4c13ab395daa4bd9667c.png)
Ответ представляет из себя JSON, содержащий символ, который обозначает используемый эксплойт (CVE-2015-8651, CVE-2016-1019 или CVE-2016-4117), пароль для соответствующего эксплойта и готовый шелл-код с адресом URI полезной нагрузки.
Шелл-код расшифровывается на последнем этапе эксплуатации уязвимости. Он пытается загрузить в систему зашифрованную полезную нагрузку, которое опять замаскировано под GIF изображение. На первом этапе своего исполнения, шелл-код также проверяет ту среду, в которой он исполняется.
![](https://habrastorage.org/files/a73/4cc/802/a734cc8024d94365a984ecacdb8d31ce.png)
Он особенно заинтересован в проверке присутствия следующего программного обеспечения.
- vmtoolsd.exe
- VBoxService.exe
- prl_tools_service.exe
- VBoxHook.dll
- SBIEDLL.DLL
- fiddler.exe
- charles.exe
- wireshark.exe
- proxifier.exe
- procexp.exe
- ollydbg.exe
- windbg.exe
- eset*, kasper*, avast*, alwil*, panda*, nano a*, bitdef*, bullgu*, arcabi*, f-secu*, g data*, escan*, trustp*, avg*, sophos*, trend m*, mcafee*, lavaso*, immune*, clamav*, emsiso*, superanti*, avira*, vba32*, sunbel*, gfi so*, vipre*, microsoft sec*, microsoft ant*, norman*, ikarus*, fortin*, filsec*, k7 com*, ahnlab*, malwareby*, comodo*, symant*, norton*, agnitu*, drweb*, 360*, quick h
В случае обнаружения одного из вышеперечисленных компонентов, шелл-код не будет пытаться загрузить полезную нагрузку. Если полезная нагрузка получена, первые 42 байта GIF изображения отбрасываются, остальные данные расшифровываются и сохраняются в файл с использованием одного из ниже перечисленных функций.
- CreateFile, WriteFile
- CreateUrlCacheEntryA(*” google.com”,,,,), CreateFileA, CreateFileMappingA, MapViewOfFile, {loop of moving bytes}, FlushViewOfFile, UnmapViewOfFile
Сам файл полезной нагрузки запускается с помощью инструментов regsvr32.exe или rundll32.exe.
Мы наблюдали в загрузке шелл-кодом вредоносных файлов полезной нагрузки (Stegano exploit kit), которые имеют следующие обнаружения AV продуктов ESET.
Win32/TrojanDownloader.Agent.CFH
Win32/TrojanDownloader.Dagozill.B
Win32/GenKryptik.KUM
Win32/Kryptik.DLIF
После анализа загрузчиков и файлов с обнаружениями семейств Kryptik, мы выяснили, что они либо содержали в себе, либо загружали удаленно вредоносное ПО Ursnif и Ramnit.
Ursnif содержит множество модулей для кражи учетных данных электронной почты, имеет в своем составе бэкдор, кейлоггер, инструмент создания скриншотов и видео, компонент внедрения кода в веб-браузеры Internet Explerer, Firefox, Chrome и модификации http трафика. Он также может украсть любой файл из зараженной системы. Согласно информации из конфигурационных файлов, которые были найдены в образцах этого вредоносного ПО, оно ориентировано на корпоративный сектор и, особенно, на платежных сервисах и институтах.
Ramnit представляет из себя файловый вирус, который был направлен на банковский сектор. Этот вирус также содержит в себе многочисленные вредоносные функции, включая, кражу данных, захват скриншотов, исполнение файлов.
Заключение
Набор эксплойтов Stegano использовался злоумышленниками еще с 2014 г. Его авторы приложили достаточно много усилий для реализации нескольких методов достижения соответствующего уровня скрытности. В одной из недавних кампаний мы обнаружили то, что отслеживалось нами еще с начала октября 2016 г., злоумышленники распространяли ссылки на набор эксплойтов с использованием рекламных баннеров и стеганографии. При этом авторы позаботились о сокрытии вредоносной активности от глаз аналитиков, которые могут использовать специальное окружение для мониторинга.
В случае успешной эксплуатации, уязвимые для используемых эксплойтов системы жертв остаются открытыми для компрометации со стороны других вредоносных программ, включая, бэкдоры, spyware и банковские трояны.
Вредоносных действий набора эксплойтов Stegano или другого набора эксплойтов можно избежать в том случае, если регулярно обновлять установленное ПО и ОС, а также использовать надежный антивирусный продукт.
Присутствие следующих продуктов в системе пытается обнаружить Stegano exploit kit.
![](https://habrastorage.org/files/749/2a5/0c7/7492a50c7d6c455c929098e086cd86d9.png)
![](https://habrastorage.org/files/fa2/478/6bd/fa24786bd76d40f6a4029c8cde889912.png)
![](https://habrastorage.org/files/ea7/9ee/069/ea79ee069cb34e658639be60c442a5d7.png)
Присутствие следующих драйверов и библиотек в системе пытается обнаружить Stegano exploit kit.
![](https://habrastorage.org/files/09b/954/fb4/09b954fb47a546db97325dd896e7fd21.png)
К следующим строкам в своем теле вредоносная программа не обращается.
![](https://habrastorage.org/files/a5d/c5c/015/a5dc5c0158db4b4dae90bd2bb9c47745.png)
Индикаторы компрометации (IoC)
Хэши представлены в формате SHA1.
countly.min.js
24FA6490D207E06F22A67BC261C68F61B082ACF8
Код из баннера
A57971193B2FFFF1137E083BFACFD694905F1A94
banner.png с Stegano
55309EAE2B826A1409357306125631FDF2513AC5
67799F80CEF4A82A07EFB3698627D7AE7E6101AB
09425B3B8BF71BA12B1B740A001240CD43378A6C
4528736618BBB44A42388522481C1820D8494E37
FE841DF1ACD15E32B4FFC046205CAAFD21ED2AB2
7BE0A9387F8528EC185ACC6B9573233D167DF71B
A5BC07E8E223A0DF3E7B45EEFD69040486E47F27
EC326BA5CD406F656C3B26D4A5319DAA26D4D5FE
3F1A5F624E0E974CAA4F290116CE7908D360E981
33F921C61D02E0758DCB0019C5F37A4D047C9EC7
2FF89048D39BE75F327031F6D308CE1B5A512F73
9A0D9EBC236DF87788E4A3E16400EB8513743233
F36C283B89C9F1B21A4AD3E384F54B0C8E7D417A
17787879D550F11580C74DA1EA36561A270E16F7
9090DB6731A8D49E8B2506087A261D857946A0EB
45B3EE46ADA9C842E65DCF235111AB81EF733F34
F56A878CA094D461BDF0E5E0CECED5B9903DB6E0
6C74A357B932CF27D5634FD88AA593AEF3A77672
0C3C22B8AA461C7DE4D68567EEA4AE3CD8E4D845
5A5A015C378159E6DC3D7978DAD8D04711D997F8
B2473B3658C13831C62A85D1634B035BC7EBD515
9638E1897B748D120149B94D596CEC6A5D547067
0195C8C7B687DD4CBF2578AD3CB13CD2807F25CB
FEC222095ABD62FC7635E2C7FA226903C849C25C
0FCB2B3ED16672A94CD003B4B53181B568E35912
03483E4039839F0807D7BEC08090179E62DBCC60
Страница посадки набора эксплойтов Stegano
67E26597CF1FF35E4B8300BF181C84015F9D1134
CD46CEE45F2FC982FBA7C4D246D3A1D58D13ED4A
191FFA6EB2C33A56E750BFFEFFE169B0D9E4BBE4
4B2F4C20CC9294F103319938F37C99C0DE7B4932
3FCEA1AFDA9888400D8DE5A232E4BF1E50D3380F
CA750F492691F4D31A31D8A638CE4A56AF8690D0
1374EE22D99ECFC6D68ADE3ACE833D4000E4705B
6BF1A2B7E8CA44E63E1A801E25189DC0212D71B9
B84AB2D5EAD12C257982386BC39F18532BF6939E
476A0455044B9111BDA42CDB7F4EA4E76AA7AB2D
0C1CA7D9C7E4B26A433946A6495782630EF6FD18
29B6DD92FBDF6070B171C38B1D3CA374F66E4B66
89DA7E7A88F9B6CBBFAF7F229BFEA8767220C831
CEE32C8E45A59D3084D832A9E6500AE44F75F7B5
A152AB43BEDCD8F6B7BFB67249C5599CF663D050
3AC722AC0D4764545A3E8A6DF02059C8A164CA17
25E0474E4F8D7D3053278B45A9C24380275B4705
35FB5F3C2957B4525A0330427397915AEEFDDD91
19EEE9745E25194DD573423C6DB0F5AF5D8CFE1D
E88B2B7A08322738C74B29C4CA538741F85A0B7F
A388A2A241339489685CB4AD22EBA9E04B72CD67
Файлы Flash
BADAE04BFF7AFD890C3275E0434F174C6706C2C6
6EF95ACB8AA14D3BA8F1B3C147B7FB0A9DA579A2
10840AEB8342A26DFC68E0E706B36AC2B5A0D5B2
093B25B04FE21185BFEEAFD48F712942D3A3F0C6
C680734AF8670895F961C951A3629B5BC64EFE8E
EEDBBB65A441979974592343C6CA71C90CC2550F
DE288CADE8EE3F13D44719796A5896D88D379A1E
9488CDBB242BE50DF3D20B12F589AF2E39080882
B664365FC8C0B93F6A992C44D11F44DD091426DD
7557B5D987F0236FF838CD3AF05663EFA98EBC56
24B7933A8A8F6ED50FBAF2A5021EF47CE614A46F
11BA8B354001900ED79C43EA858F1BC732961097
Образцы URL
TinyURL.com
/jf67ejb
/jqp7efh
/j56ks2b
/gplnhvm
/gwwltaf
/hgnsysa
/hvfnohs
Страница посадки набора эксплойтов Stegano
hxxp://conce.republicoftaste.com/urq5kb7mnimqz/3dyv72cqtwjbgf5e89hyqryq5zu60_os24kfs1j3u_i
hxxp://compe.quincephotographyvideo.com/kil5mrm1z0t-ytwgvx/g7fjx4_caz9
hxxp://ntion.atheist-tees.com/v2mit3j_fz0cx172oab_eys6940_rgloynan40mfqju6183a9a4kn/f
hxxp://entat.usedmachinetools.co/6yg1vl0q15zr6hn780pu43fwm5297itxgd19rh54-3juc2xz1t-oes5bh
hxxp://connt.modusinrebus.net/34v-87d0u3
hxxp://ainab.photographyquincemiami.com/w2juxekry8h9votrvb3-k72wiogn2yq2f3it5d17/j9r
hxxp://rated.republicoftaste.com/6t8os/lv-pne1_dshrmqgx-8zl8wd2v5h5m26m_w_zqwzq
hxxp://rence.backstageteeshirts.com/qen5sy/6hjyrw79zr2zokq1t4dpl276ta8h8-/3sf9jlfcu0v7daixie_do6zb843/z7
Поделиться с друзьями
pnetmon
подразумевается что это виртуальная(гостевая) или и хостовая машина?