Совместное использование злоумышленниками зловредов разного назначения уже встречалось в атаках шифровальщиков. Так, одна из версий шифровальщика Shade в тех случаях, когда троянцу удается заразить компьютеры, имеющие отношение к бухгалтерии, не шифрует файлы, а устанавливает в зараженную систему инструменты удаленного управления. В дальнейшем бот может использоваться злоумышленниками для кражи денежных средств, значительно превышающих плату за расшифровку файлов.
Хозяева шифровальщика RAA пошли другим путем. Троянец распространяется в письмах, нацеленных преимущественно на корпоративных пользователей. В случае успешного заражения компьютера, RAA выполняет свою основную задачу – шифрует файлы жертвы. Но этим он не ограничивается: некоторые версии RAA несут в себе файл троянца Pony, ворующего конфиденциальную информацию на зараженном компьютере. Украденные данные дают злоумышленникам доступ в том числе к почтовым клиентам жертвы. Мы можем предположить, что хозяева RAA пользуются этим для проведения целевых атак: рассылают письма c шифровальщиком по адресному списку жертвы – и от ее имени. Это значительно повышает вероятность следующих заражений.
В этой статье мы подробнее расскажем о том, как работает зловредная пара – новая версия шифровальщика RAA и троянец-вор Pony.
Шифровальщик RAA
Шифровальщик RAA (вердикт «Лаборатории Касперского: Trojan-Ransom.JS.RaaCrypt) впервые был обнаружен в июне 2016. Внимание исследователей и аналитиков он привлек тем, что был полностью написан на языке JScript, а это пока что является редкостью среди троянцев-вымогателей, шифрующих файлы.
На днях мы обнаружили образец новой версии данного зловреда, которая имеет несколько отличий от ранее известных модификаций. Рассмотрим этот образец, получивший вердикт Trojan-Ransom.JS.RaaCrypt.ag, подробнее.
Распространение
Тело новой версии шифровальщика RAA является скриптом на языке JScript (файл с расширением .js). Вредоносный скрипт рассылается потенциальным жертвам в zip-архиве с паролем «111», который прикреплен к спам-письму.
Атака нацелена, прежде всего, на корпоративных пользователей: письмо подделано под деловую переписку, касающуюся финансовых вопросов, а скрипт имеет имена, аналогичные указанным ниже:
Счета на оплату _ август 2016 согласовано и отправлено контрагенту для проведения оплаты _aytOkOTH.doc.js
Счета на оплату _ август 2016 согласовано и отправлено контрагенту для проведения оплаты _EKWT.doc.js
В тексте письма содержится примечание:
«Компания ООО «…» уведомляет Вас, что согласно с внутренними требованиями защиты вся отправляемая документация подлежит асимметричному шифрованию. Уважаемый клиент, пароль в данной переписке — 111″
У людей, знающих, что такое «асимметричное шифрование», такая фраза вызовет только усмешку, но они явно не являются целевой аудиторией данной рассылки.
Отметим, что отправка в письме архива с паролем – это известный трюк, который злоумышленники используют, чтобы установленные на почтовых серверах антивирусные системы не смогли распаковать архив и обнаружить его вредоносное содержимое. Для распаковки такого архива антивирусный продукт должен в автоматическом режиме извлечь пароль из тела письма, это не всегда возможно.
Чтобы произошло заражение, пользователь должен самостоятельно распаковать архив и запустить .js-файл.
Обфускация скрипта
Код вредоносного скрипта обфусцирован злоумышленниками, чтобы усложнить исследование троянца вирусными аналитиками. В исходном виде содержимое скрипта выглядит следующим образом.
Фрагмент обфусцированного кода
Если восстановить переносы строк и отступы, станет очевидно, что обфускация заключается в переименованных переменных и функциях, а также «спрятанных» в глобальном массиве строках. В результате деобфускации и переименования функций приведенный выше участок кода становится гораздо более читаемым.
Фрагмент деобфусцированного кода
Сам скрипт занимает чуть менее 3000 строк, большую часть из которых занимает реализация легальной библиотеки CryptoJS и реализация процедуры шифрования алгоритмом RSA, также взятая злоумышленниками из открытых источников.
Схема работы троянца
Чтобы усыпить бдительность жертвы, первым делом после запуска шифровальщик RAA демонстрирует поддельный документ MS Word, который в действительности является специально подготовленным злоумышленниками RTF-файлом. (Документ содержится в теле троянца в закодированном Base64 виде.)
Поддельный документ, который демонстрируется жертве
Пока пользователь читает сообщение про якобы некорректно отображающийся документ, троянец делает свое черное дело:
- прописывается в автозагрузку;
- удаляет ключ реестра, соответствующий сервису VSS (чтобы помешать восстановлению файлов из теневых копий);
- отправляет запрос к серверу C&C (в отличие от предыдущих версий данного зловреда, троянец новой версии не ждет от сервера никаких ключей – запрос выполняется исключительно в целях сбора злоумышленниками статистики);
- приступает к поиску и шифрованию файлов.
Генерация ключей
В отличие от более ранних модификаций RAA, рассматриваемая нами версия шифровальщика не запрашивает ключ для шифрования у командного сервера. Вместо этого троянец генерирует сессионный ключ на клиенте, для чего вызывает WinAPI-функцию RtlGenRandom, которая считается криптостойким генератором псевдослучайных чисел.
Чтобы иметь возможность вызова функций WinAPI из JS-кода, троянец применяет легальный сторонний компонент OCX под названием DynamicWrapperX. Зловред хранит его в своем теле в закодированном Base64 виде и устанавливает в заражаемую систему. При этом RAA несет и 32-битную, и 64-битную версии DynamicWrapperX, чтобы иметь возможность поражать системы под управлением ОС Windows обеих архитектур.
Сгенерированный сессионный ключ зловред шифрует с помощью алгоритма RSA (публичный ключ RSA-2048 содержится внутри скрипта) и сохраняет в файле «KEY-…«, где на месте многоточия стоит уникальный 36-символьный идентификатор заражения.
Шифрование файлов
RAA осуществляет поиск и шифрование файлов с расширениями .doc, .xls, .rtf, .pdf, .dbf, .jpg, .dwg, .cdr, .psd, .cd, .mdb, .png, .lcd, .zip, .rar, .csv и не содержащие в своем имени подстрок «.locked», «~», «$».
При поиске файлов троянец пропускает директории с именами «WINDOWS», «RECYCLER», «Program Files», «Program Files (x86)», «Windows», «Recycle.Bin», «RECYCLE.BIN», «Recycler», «TEMP», «APPDATA», «AppData», «Temp», «ProgramData», «Microsoft».
При обработке каждого файла RAA генерирует файловый ключ и вектор инициализации из сессионного ключа. Содержимое файлов шифруется по-разному в зависимости от размера файла:
- От 0 до 6122 байт – файл шифруется целиком.
- От 6123 до 4999999 байт – выбираются три фрагмента в разных местах файла. Первый фрагмент размером от 2000 до 2040 байт берется из начала файла, позиция и размер двух других зависят от размера первого фрагмента и размера целого файла.
- От 5000001 до 500000000 байт – шифруются два фрагмента размером от 90000 до 125000 байт (из начала и конца файла).
- От 500000001 байт и более – не шифруются.
В конец зашифрованного файла помещается строка, содержащая «IDNUM» (идентификатор заражения), «KEY_LOGIC» (индексы для построения файлового ключа из сессионного ключа), «IV_LOGIC» (индексы для построения вектора инициализации из сессионного ключа) и «LOGIC_ID» (возможны значения «1», «2» или «3» – номер выбранного способа шифрования в зависимости от размера файла). Зашифрованный файл получает дополнительное расширение .locked.
Структура в конце зашифрованного файла
Требование выкупа
Когда файлы зашифрованы, RAA открывает в WordPad файл с требованиями и контактами злоумышленников. Шаблон текста зловред заполняет индивидуальным для каждого случая заражения 36-символьным идентификатором.
Файл с требованиями злоумышленников
Злоумышленники предлагают своим жертвам купить у них ключ и программу для расшифровки файлов, связавшись с ними по почте, либо воспользовавшись для связи сервисом Bitmessage. Плату за ключ злодеи принимают в биткойнах.
Троянец-вор в дополнение
Шифрованием файлов, однако, вред, наносимый троянцем, не ограничивается. Как и некоторые представители более ранних версий RAA, рассматриваемая нами версия имеет дополнительную функциональность. Внутри себя троянец содержит закодированный в Base64 исполняемый файл, который он сбрасывает на диск по адресу «C:\Users\<username>\Documents\ii.exe» и запускает после того, как завершил шифрование файлов. Анализ показал, что ii.exe оказался ничем иным, как «Pony» – известным троянцем, ворующим пароли (вердикт: Trojan-PSW.Win32.Tepfer.gen).
Троянец Pony оказался на редкость долгоживущим. Предположительно, первые его версии появились ещё в 2011 году, а уже в декабре 2013, по сообщениям в СМИ, им были украдены данные более 2 млн пользователей.
Вполне естественно, что за столь долгое существование Pony в Сети появились его исходники и, судя по коду зловреда, анализируемый исполняемый файл был сконструирован именно на их основе.
Pony: кража конфиденциальных данных
Напомним, что основная задача Pony – сбор конфиденциальной информации с компьютера жертвы и её последующая отправка злоумышленникам.
Шаг 1. Кража информации
Краткий список информации, за которой охотится Pony, приведен ниже.
- Пароли, сохранённые в браузерах
Microsoft Internet Explorer | Google Chrome | Opera |
Mozilla Firefox | K-Meleon | Яндекс.Браузер |
Flock |
- Регистрационные данные, используемые в десятках наиболее популярных FTP-клиентах
CuteFTP 6\7\8\9\Pro\Lite | FTP Navigator | FlashFXP 3\4 |
FileZilla | FTP Commander | Bullet Proof FTP Client |
SmartFTP | TurboFTP | FFFTP |
COREFTP | FTP Explorer | ClassicFTP |
SoftX.org FTPClient | LeapFTP | FTP CONTROL |
FTPVoyager | LeechFTP | WinFTP |
FTPGetter | ALFTP | BlazeFtp |
Robo-FTP 3.7 | NovaFTP | FTP Surfer |
LinasFTP | Cyberduck | WiseFTP |
- Учётные записи самых распространённых почтовых клиентов
Microsoft Outlook | Mozilla Thunderbird | The Bat! |
Windows Live Mail | Becky! Internet Mail | Pocomail |
IncrediMail |
- Файлы — кошельки различных криптовалют
PPCoin | Primecoin | Feathercoin |
ProtoShares | Quarkcoin | Worldcoin |
Infinitecoin | Fastcoin | Phoenixcoin |
Craftcoin |
Помимо этого, зловред обладает следующими возможностями:
- Pony ворует имеющиеся у пользователя цифровые сертификаты.
- Pony хранит в себе список наиболее распространённых комбинаций, используемых пользователями в качестве паролей, на основе которого старается получить доступ к имеющимся на компьютере учётным записям.
Шаг 2. Шифрование и отправка данных
Перед отправкой злоумышленникам собранной информации, Pony её шифрует, используя алгоритм RC4. При этом троянец постоянно фиксирует контрольные суммы полученных данных (используются немного модифицированные результаты алгоритма CRC32). Последовательность действий такая:
- Посчитать контрольную сумму от незашифрованных данных
- Дописать полученное значение к входным данным
- Зашифровать входные данные алгоритмом RC4, используя ключ, заданный злоумышленниками при сборке троянца
- Посчитать контрольную сумму от зашифрованных данных
- Дописать полученное значение к входным данным
- Сгенерировать случайный ключ длиной в 4 байта
- Зашифровать входные данные алгоритмом RC4, используя сгенерированный ключ
- Сформировать готовые к отправке данные, которые можно описать структурой ToSend (приведена ниже)
1 2 3 4 5 |
struct ToSend { dword random_key; byte* double_encrypted_data; }; |
Незашифрованный фрагмент сформированного отчёта
Фрагмент отчёта, полностью готового к отправке (красным выделен ключ шифрования)
После того, как данные приведены к «нужному» виду, Pony отправляет их злоумышленникам.
MD5
Trojan-Ransom.JS.RaaCrypt.ag:
68288a9f7a6bc41c9550a417d1721321
Trojan-PSW.Win32.Tepfer.gen (Pony):
1de05ee1437d412cd328a6b3bd45fffc
Зловредная пара – шифровальщик и вор