Банковское вредоносное ПО Win32/Caphaw (также известен как Shylock) использовался злоумышленниками при осуществлении атак на крупные европейские банки, которые продолжались более года. Эта угроза начала распространяться с осени 2011 г. Наш коллега Александр Матросов осуществил детальный анализ этого банковского трояна, и мы хотим представить наиболее интересные находки, сделанные в процессе этого анализа. Win32/Caphaw отличает от других подобных угроз тот факт, что это один из немногих троянов, который может автоматически похитить деньги с банковского счета, когда пользователь активно работает с этим счетом.
![](https://habrastorage.org/r/w1560/storage2/dd8/c84/b80/dd8c84b80fba6497ed1aa2e4d44cedb3.png)
География распространения показывает, что Win32/Caphaw преобладает в Англии, Италии, Дании и Турции. Согласно нашей статистике ESET Virus Radar, периодом времени, на который приходится наибольшая активность этого трояна, является декабрь 2012 г. На следующем скриншоте приводится география распространения Win32/Caphaw за последнюю неделю (на момент исследования).
![](https://habrastorage.org/r/w1560/storage2/f67/6c5/af9/f676c5af9c6e9732aea2bc8524c6a870.png)
Рис. География распространенности Caphaw.
Бот
Win32/Caphaw обладает возможностями типичного банковского вредоносного ПО, а также имеет возможности по проверке среды, в которой его пытаются запустить. Такие проверки, очевидно, направлены на то, чтобы не допустить запуска дроппера в системе, предназначенной для автоматического анализа семплов. Мы обнаружили, что Caphaw внедряет свой код во все запущенные процессы, и имеет многопоточную архитектуру для исполнения задач, присылаемых от C&C. Этот код может использовать механизм межпроцессного взаимодействия (IPC) с использованием именованных каналов.
![](https://habrastorage.org/r/w1560/storage2/60d/a4a/b75/60da4ab7535218842dc97c7654e6b134.png)
Рис. Создание потока, в котором будет осуществляться IPC взаимодействие.
Caphaw устанавливает множество перехватов для системных функций. Особенно интересной является функция-перехват для advapi32!InitiateSystemShutdownEx. Она может контролировать процесс перезагрузки и выключения системы, а также дает возможность вредоносному коду произвести свою повторную установку в системе.
![](https://habrastorage.org/r/w1560/storage2/b6a/4ed/a53/b6a4eda53cab1039a3c7af326b87dd5b.png)
Рис. Перехват функции advapi32!InitiateSystemShutdownEx. Производится повторная установка троянской программы в систему.
Все строки в теле Caphaw зашифрованы с использованием простого алгоритма.
![](https://habrastorage.org/r/w1560/storage2/e15/ac6/a70/e15ac6a708140bcc1c1b3f472c3c7113.png)
Рис. Код расшифровки строк.
Caphaw осуществляет проверку окружения ОС на предмет того, пытаются ли его запустить в среде виртуальной машины (VMware, VirtualBox и VirtualPC). Вредоносный код проверяет имена запущенных процессов и драйверов в системе. Проверка имен производится с помощью заранее подсчитанного хэша.
![](https://habrastorage.org/r/w1560/storage2/33c/f99/4e2/33cf994e25f07f5e0441c414fc021184.png)
Рис. Функция, которая рассчитывает хэш строки при проверке имен.
Например, проверка на окружение VMware выглядит следующим образом.
![](https://habrastorage.org/r/w1560/storage2/7a5/15f/aa9/7a515faa97bd2af183005185f56b0223.png)
Рис. Код проверки на предмет окружения VMware; по заранее подсчитанному хэшу проверяются имена запущенных процессов и драйверов
Каждые несколько часов файлы дропперов подвергаются перепаковке с использованием специального сервиса, который предоставляет возможности по использованию полиморфного криптора для этих целей. Такой подход позволяет избежать статического сигнатурного обнаружения со стороны антивирусных сканеров этих дропперов. Ссылки URL, с которых потом раздаются эти дропперы, выглядят следующим образом:
![](https://habrastorage.org/r/w1560/storage2/cd8/ec4/c04/cd8ec4c0428d7de3026fe4001340a381.png)
Рис. Ссылки, ведущие к установке дропперов Caphaw.
Формат таких URL:
hxxps://[random subdomain].[domain]/[DIR]/[DIR-random string]/[dropper file]?r=[random number]
Для генерации случайных чисел Caphaw использует такой алгоритм:
![](https://habrastorage.org/r/w1560/storage2/cd5/b96/927/cd5b969277ee68be514bf12daf61f17e.png)
Рис. Алгоритм генерации случайных чисел в Caphaw.
Caphaw использует C&C для загрузки дополнительных модулей, веб-инжектов, конфигурационных файлов и получения инструкций. При этом ссылки URL для работы с C&C имеют вид:
![](https://habrastorage.org/r/w1560/storage2/bb1/e75/665/bb1e756658a8b7585924fae89a89b1c6.png)
Рис. Ссылки URL, которые Caphaw использует для взаимодействия с C&C.
Такие URL, которые используются для обращения к C&C, формируются по специальному шаблону.
hxxp://[URL format]/[key]&id=[bot id]&inst=[master or slave]&net[botnet id] &cmd=cfg
Ответ от C&C сервера имеет вид:
![](https://habrastorage.org/r/w1560/storage2/3a1/37d/ea3/3a137dea3485affa84c1cd8e300cd536.png)
В таком случае также используется специальный шаблон:
hxxp:// [random subdomain].[domain]/[DIR]/[file_name.jpg]?r=[random number]
Конфигурационный файл бота зашифрован с использованием RC4 и Base64. Схема шифрования имеет вид: Base64(RC4(cfg_data)). После расшифровки конфигурационный файл имеет вид:
![](https://habrastorage.org/r/w1560/storage2/ada/95e/0f4/ada95e0f44bea840c4c22cc1b35e8752.png)
Рис. Конфигурационный файл после расшифровки.
Плагины
Win32/Caphaw имеет возможности по загрузке и исполнению дополнительных плагинов. Плагины, которые мы наблюдали за время отслеживания ботнета, приведены в таблице.
![](https://habrastorage.org/r/w1560/storage2/699/298/c95/699298c952936fdd17d0080beb81e4e8.png)
Плагин, который используется для распространения Caphaw через Skype, был описан нашими коллегами из CSIS. Еще один интересный плагин – это модуль MBR-буткита (определяется ESET как Win32/Wolcape.A), который загружается на зараженные машины по специальному запросу от C&C. Буткит основан на модификации MBR и обеспечивает загрузку неподписанного драйвера. Функция-перехват для прерывания int13 (прерывание используется для чтения секторов с жесткого диска) для этого буткита выглядит следующим образом:
![](https://habrastorage.org/r/w1560/storage2/ae3/5dd/b04/ae35ddb04da8522b2c9151b67db19d45.png)
Рис. Перехват на int13.
Расположение вредоносного драйвера:
![](https://habrastorage.org/r/w1560/storage2/e94/e48/e98/e94e48e985d7cc2dd283f057659b5ed5.png)
Драйвер зашифрован с помощью RC4 с длиной ключа 256 байт. Граф вызовов функции, которая загружает драйвер, имеет вид:
![](https://habrastorage.org/r/w1560/storage2/4f2/14e/8ae/4f214e8aee9be2955402af8f0571e47e.png)
Рис. Граф работы функции, которая загружает драйвер в систему.
Драйвер перехватывает типичные системные функции в ядре для сокрытия файлов и процессов. Наиболее интересные из них перехватывают функции у объектов \Driver\nsiproxy и \Device\Tcp для получения контроля за проходящим сетевым трафиком. Конфигурационный файл буткита зашифрован по аналогичной схеме, как и в случае с уже вышеописанным. В нем также используется похожая XML структура:
![](https://habrastorage.org/r/w1560/storage2/6f9/8d3/5d8/6f98d35d856173825f34e25052a9b232.png)
Рис. Конфигурационный файл буткита.
Веб-инжекты и схема похищения средств
Веб-инжекты используют аналогичную форму для конфигурационных данных, но алгоритм шифрования для них отличается. В расшифрованном виде веб-инжекты выглядят следующим образом:
![](https://habrastorage.org/r/w1560/storage2/30c/cfa/db7/30ccfadb7a71eb7b976243ebf9486021.png)
Ниже приведен список банков из последних конфигурационных файлов веб-инжектов:
![](https://habrastorage.org/r/w1560/storage2/4c2/e5f/eb9/4c2e5feb9ec9658c82a904dfaa1fb740.png)
Одной из наиболее интересных деталей в коде, внедряемом в веб-страницу при посещении онлайн-банка, является подстановка всех телефонных номеров на поддельные номера, принадлежащие злоумышленникам (Merchant of Malice: Trojan.Shylock Injects Phone Numbers into Online Banking Websites). Эта подстановка основана на специальной конфигурации веб-инжектов и имеет уникальную структуру для каждого отдельно взятого банка.
![](https://habrastorage.org/r/w1560/storage2/41c/aba/18c/41caba18c2fb0b0668829d7f72005da3.png)
Заключение
Win32/Caphaw представляет из себя интересное семейство банковских троянов. Этот вредоносный код является одним из немногих, кто имеет функционал по автоматическому похищению денежных средств, когда пользователь работает с его банковским аккаунтом. Фактически, зараженному пользователю очень сложно распознать факт кражи денежных средств, т. к. он видит поддельные формы на странице онлайн-банкинга. Аналогичная функциональность отслеживалась нами ранее в таких семействах банковских троянов, как Carberp (Carberp Gang Evolution), Gataka (Win32/Gataka banking Trojan – Detailed analysis), Win32/Spy.Ranbyus (Win32/Spy.Ranbyus нацелен на модификацию Java-кода систем удаленного банкинга Украины) и Tinba.
![](https://habrastorage.org/storage2/dd8/c84/b80/dd8c84b80fba6497ed1aa2e4d44cedb3.png)
География распространения показывает, что Win32/Caphaw преобладает в Англии, Италии, Дании и Турции. Согласно нашей статистике ESET Virus Radar, периодом времени, на который приходится наибольшая активность этого трояна, является декабрь 2012 г. На следующем скриншоте приводится география распространения Win32/Caphaw за последнюю неделю (на момент исследования).
![](https://habrastorage.org/storage2/f67/6c5/af9/f676c5af9c6e9732aea2bc8524c6a870.png)
Рис. География распространенности Caphaw.
Бот
Win32/Caphaw обладает возможностями типичного банковского вредоносного ПО, а также имеет возможности по проверке среды, в которой его пытаются запустить. Такие проверки, очевидно, направлены на то, чтобы не допустить запуска дроппера в системе, предназначенной для автоматического анализа семплов. Мы обнаружили, что Caphaw внедряет свой код во все запущенные процессы, и имеет многопоточную архитектуру для исполнения задач, присылаемых от C&C. Этот код может использовать механизм межпроцессного взаимодействия (IPC) с использованием именованных каналов.
![](https://habrastorage.org/storage2/60d/a4a/b75/60da4ab7535218842dc97c7654e6b134.png)
Рис. Создание потока, в котором будет осуществляться IPC взаимодействие.
Caphaw устанавливает множество перехватов для системных функций. Особенно интересной является функция-перехват для advapi32!InitiateSystemShutdownEx. Она может контролировать процесс перезагрузки и выключения системы, а также дает возможность вредоносному коду произвести свою повторную установку в системе.
![](https://habrastorage.org/storage2/b6a/4ed/a53/b6a4eda53cab1039a3c7af326b87dd5b.png)
Рис. Перехват функции advapi32!InitiateSystemShutdownEx. Производится повторная установка троянской программы в систему.
Все строки в теле Caphaw зашифрованы с использованием простого алгоритма.
![](https://habrastorage.org/storage2/e15/ac6/a70/e15ac6a708140bcc1c1b3f472c3c7113.png)
Рис. Код расшифровки строк.
Caphaw осуществляет проверку окружения ОС на предмет того, пытаются ли его запустить в среде виртуальной машины (VMware, VirtualBox и VirtualPC). Вредоносный код проверяет имена запущенных процессов и драйверов в системе. Проверка имен производится с помощью заранее подсчитанного хэша.
![](https://habrastorage.org/storage2/33c/f99/4e2/33cf994e25f07f5e0441c414fc021184.png)
Рис. Функция, которая рассчитывает хэш строки при проверке имен.
Например, проверка на окружение VMware выглядит следующим образом.
![](https://habrastorage.org/storage2/7a5/15f/aa9/7a515faa97bd2af183005185f56b0223.png)
Рис. Код проверки на предмет окружения VMware; по заранее подсчитанному хэшу проверяются имена запущенных процессов и драйверов
Каждые несколько часов файлы дропперов подвергаются перепаковке с использованием специального сервиса, который предоставляет возможности по использованию полиморфного криптора для этих целей. Такой подход позволяет избежать статического сигнатурного обнаружения со стороны антивирусных сканеров этих дропперов. Ссылки URL, с которых потом раздаются эти дропперы, выглядят следующим образом:
![](https://habrastorage.org/storage2/cd8/ec4/c04/cd8ec4c0428d7de3026fe4001340a381.png)
Рис. Ссылки, ведущие к установке дропперов Caphaw.
Формат таких URL:
hxxps://[random subdomain].[domain]/[DIR]/[DIR-random string]/[dropper file]?r=[random number]
Для генерации случайных чисел Caphaw использует такой алгоритм:
![](https://habrastorage.org/storage2/cd5/b96/927/cd5b969277ee68be514bf12daf61f17e.png)
Рис. Алгоритм генерации случайных чисел в Caphaw.
Caphaw использует C&C для загрузки дополнительных модулей, веб-инжектов, конфигурационных файлов и получения инструкций. При этом ссылки URL для работы с C&C имеют вид:
![](https://habrastorage.org/storage2/bb1/e75/665/bb1e756658a8b7585924fae89a89b1c6.png)
Рис. Ссылки URL, которые Caphaw использует для взаимодействия с C&C.
Такие URL, которые используются для обращения к C&C, формируются по специальному шаблону.
hxxp://[URL format]/[key]&id=[bot id]&inst=[master or slave]&net[botnet id] &cmd=cfg
Ответ от C&C сервера имеет вид:
![](https://habrastorage.org/storage2/3a1/37d/ea3/3a137dea3485affa84c1cd8e300cd536.png)
В таком случае также используется специальный шаблон:
hxxp:// [random subdomain].[domain]/[DIR]/[file_name.jpg]?r=[random number]
Конфигурационный файл бота зашифрован с использованием RC4 и Base64. Схема шифрования имеет вид: Base64(RC4(cfg_data)). После расшифровки конфигурационный файл имеет вид:
![](https://habrastorage.org/storage2/ada/95e/0f4/ada95e0f44bea840c4c22cc1b35e8752.png)
Рис. Конфигурационный файл после расшифровки.
Плагины
Win32/Caphaw имеет возможности по загрузке и исполнению дополнительных плагинов. Плагины, которые мы наблюдали за время отслеживания ботнета, приведены в таблице.
![](https://habrastorage.org/storage2/699/298/c95/699298c952936fdd17d0080beb81e4e8.png)
Плагин, который используется для распространения Caphaw через Skype, был описан нашими коллегами из CSIS. Еще один интересный плагин – это модуль MBR-буткита (определяется ESET как Win32/Wolcape.A), который загружается на зараженные машины по специальному запросу от C&C. Буткит основан на модификации MBR и обеспечивает загрузку неподписанного драйвера. Функция-перехват для прерывания int13 (прерывание используется для чтения секторов с жесткого диска) для этого буткита выглядит следующим образом:
![](https://habrastorage.org/storage2/ae3/5dd/b04/ae35ddb04da8522b2c9151b67db19d45.png)
Рис. Перехват на int13.
Расположение вредоносного драйвера:
![](https://habrastorage.org/storage2/e94/e48/e98/e94e48e985d7cc2dd283f057659b5ed5.png)
Драйвер зашифрован с помощью RC4 с длиной ключа 256 байт. Граф вызовов функции, которая загружает драйвер, имеет вид:
![](https://habrastorage.org/storage2/4f2/14e/8ae/4f214e8aee9be2955402af8f0571e47e.png)
Рис. Граф работы функции, которая загружает драйвер в систему.
Драйвер перехватывает типичные системные функции в ядре для сокрытия файлов и процессов. Наиболее интересные из них перехватывают функции у объектов \Driver\nsiproxy и \Device\Tcp для получения контроля за проходящим сетевым трафиком. Конфигурационный файл буткита зашифрован по аналогичной схеме, как и в случае с уже вышеописанным. В нем также используется похожая XML структура:
![](https://habrastorage.org/storage2/6f9/8d3/5d8/6f98d35d856173825f34e25052a9b232.png)
Рис. Конфигурационный файл буткита.
Веб-инжекты и схема похищения средств
Веб-инжекты используют аналогичную форму для конфигурационных данных, но алгоритм шифрования для них отличается. В расшифрованном виде веб-инжекты выглядят следующим образом:
![](https://habrastorage.org/storage2/30c/cfa/db7/30ccfadb7a71eb7b976243ebf9486021.png)
Ниже приведен список банков из последних конфигурационных файлов веб-инжектов:
![](https://habrastorage.org/storage2/4c2/e5f/eb9/4c2e5feb9ec9658c82a904dfaa1fb740.png)
Одной из наиболее интересных деталей в коде, внедряемом в веб-страницу при посещении онлайн-банка, является подстановка всех телефонных номеров на поддельные номера, принадлежащие злоумышленникам (Merchant of Malice: Trojan.Shylock Injects Phone Numbers into Online Banking Websites). Эта подстановка основана на специальной конфигурации веб-инжектов и имеет уникальную структуру для каждого отдельно взятого банка.
![](https://habrastorage.org/storage2/41c/aba/18c/41caba18c2fb0b0668829d7f72005da3.png)
Заключение
Win32/Caphaw представляет из себя интересное семейство банковских троянов. Этот вредоносный код является одним из немногих, кто имеет функционал по автоматическому похищению денежных средств, когда пользователь работает с его банковским аккаунтом. Фактически, зараженному пользователю очень сложно распознать факт кражи денежных средств, т. к. он видит поддельные формы на странице онлайн-банкинга. Аналогичная функциональность отслеживалась нами ранее в таких семействах банковских троянов, как Carberp (Carberp Gang Evolution), Gataka (Win32/Gataka banking Trojan – Detailed analysis), Win32/Spy.Ranbyus (Win32/Spy.Ranbyus нацелен на модификацию Java-кода систем удаленного банкинга Украины) и Tinba.