Содержание статьи
- Немного статистики
- Critroni (CTB Locker)
- Шифрование файлов
- Связь с командным сервером
- CryptoWall
- Шифрование файлов
- Связь с командным сервером
- Приемы, затрудняющие анализ
- Dirty (DirCrypt)
- Шифрование файлов
- Связь с командным сервером
- Приемы, затрудняющие анализ
- TeslaCrypt
- Шифрование файлов
- Связь с командным сервером
- Приемы, затрудняющие анализ
- TorLocker
- Шифрование файлов
- Связь с командным сервером
- Приемы, затрудняющие анализ
- TorrentLocker
- Шифрование файлов
- Связь с командным сервером
- Приемы, затрудняющие анализ
- Заключение
Первые образцы малвари, шифрующей файлы, а затем требующей денег за расшифровку, появились очень давно. Достаточно вспомнить Trojan.Xorist с его примитивным алгоритмом шифрования на базе XOR или написанный на PureBasic Trojan.ArchiveLock, который использовал для шифрования обычный WinRAR, а для удаления зашифрованных файлов Sysinternals SDelete и требовал за расшифровку целых пять тысяч долларов. Однако именно CryptoLocker основал в среде вирусописателей нехорошую тенденцию — использовать самые последние достижения криптографии в виде весьма стойких алгоритмов шифрования. Сегодня мы исследуем несколько троянов-шифровальщиков, появившихся после нашумевшего шествия по интернету CryptoLocker’а (или в одно время с ним).
WARNING
Если ты захочешь последовать нашему примеру и поисследовать какой-нибудь образец локера-шифровальщика, будь аккуратен. Даже при использовании виртуалки можно неосторожно зашифровать файлы на расшаренных папках основной системы.
Немного статистики
С точки зрения создателей, трояны-шифровальщики — это реальные живые деньги. Организовать спам-рассылку зараженных писем и сервис приема платежей от тех, кому дороги семейные фотографии, которые вдруг оказались зашифрованными, намного проще и дешевле, чем, например, старательно строить и развивать ботнет (который потом еще нужно будет куда-нибудь пристроить) или собирать данные с зараженных машин, учитывая, что эти собранные данные надо тоже как-то монетизировать.
Xakep #200. Тайная жизнь Windows 10
Поэтому такой вид кибервымогательства продолжает процветать и приносить огромные деньги организаторам этого криминального бизнеса. Например, по данным специалистов «Лаборатории Касперского», за 2014 год зафиксировано более семи миллионов атак с использованием троянов-шифровальщиков различных семейств.
Большая часть этого добра попадает на компьютеры своих потенциальных жертв под видом каких-либо полезных и крайне необходимых вложений в спам-рассылках (если помнишь, именно так и распространялся в свое время CryptoLocker). Однако последователи CryptoLocker’а не стали ограничиваться только этим каналом распространения своих творений и подключили еще один — путем drive-by загрузок (к примеру, трояны-шифровальщики Alpha Crypt и CryptoWall очень часто распространяются с помощью известных наборов эксплоитов Angler EK или Nuclear EK).
Critroni (CTB Locker)
Этот представитель локеров-шифровальщиков появился около года назад. CTB — аббревиатура, обозначающая Curve-Tor-Bitcoin. Основное отличие этого локера от многих других заключается в использовании для шифрования файлов алгоритма, основанного на эллиптических кривых.
В реестре в ветках автозапуска он называет себя вполне благопристойно. Например, два семпла, которые мы исследовали, выдавали себя за экранную клавиатуру от Microsoft. Для сокрытия внутренностей от посторонних глаз и затруднения анализа файл зловреда упакован с помощью PEncrypt 3.1.
Шифрование файлов
Critroni шифрует не так много типов файлов, в основном это документы MS Office, текстовые документы и файлы баз данных:
.xlsx .xlsm .xlsb .xls .xlk .txt .sql .safe .rtf .pwm .pem .mdf
.mdb .kwm .groups .docx .docm .doc .der .dbf .db .crt .cer
Шифрование файлов идет в несколько этапов:
- отобранный для шифрования файл с помощью API-функции MoveFileEx помещается во временный файл;
- этот временный файл считывается с диска поблочно;
- каждый считанный блок сжимается с помощью функции deflate библиотеки zlib;
- сжатый блок шифруется и записывается на диск;
- в начало файла помещается информация, которая нужна будет для расшифровки;
- зашифрованный файл получает расширение ctbl.
CTB-Locker использует для своей деятельности так называемый алгоритм Диффи — Хеллмана на эллиптических кривых (ECDH — Elliptic curve Diffie — Hellman).
Для начала Critroni генерирует пару главных ключей master-public и master-private. Для этого берется хеш SHA-256 от 34-байтного случайного числа, состоящего из:
- 0x14 bytes: значение, полученное функцией CryptGenRandom
- 0x08 bytes: значение, полученное функцией GetSystemTimeAsFileTime
- 0x04 bytes: значение, полученное функцией GetTickCount
- 0x04 bytes: значение (ThreadID ^ ProcessID)
- 0x10 bytes: значение MachineGuid
Ключ master-private отправляется на командный сервер и на зараженной машине не сохраняется (при этом он также шифруется с использованием ECDH, и подсмотреть его во время пересылки не получится). Для каждого шифруемого файла таким же образом генерируются session-public и session-private. После этого вычисляется значение session-shared = ECDH(master-public, session-private)
, хеш SHA-256 от которого используется в качестве ключа для шифрования файлов алгоритмом AES-256. В начало зашифрованного файла пишется 32 байта session-public и 16 байт служебной информации для поиска нужного master-private на командном сервере.
В итоге без знания master-private расшифровать файлы не получится, а ключ этот, как мы уже выяснили, хранится на C&C-сервере в доменной зоне .onion
.
Связь с командным сервером
В образцах, которые попали на исследование в (анти)вирусную лабораторию нашего журнала, C&C-центр располагался в сети Tor, а само доменное имя зашито в теле трояна. Связь устанавливается посредством Tor-клиента, запускаемого в отдельном потоке. Весь код, реализующий обмен с командным сервером в зоне .onion, взят практически без изменений из исходников широко известного tor.exe.
CryptoWall
Массовое распространение этой малвари было зафиксировано в первом квартале 2014 года, однако, по некоторым данным, первые образцы были обнаружены еще в ноябре 2013 года. В этом семействе известны и две версии CryptoWall 2.0 и CryptoWall 3.0. На сегодняшний день версия 3.0 (несмотря на утрату некоторых возможностей по сравнению с предыдущей версией) почти полностью вытеснила версию 2.0. По некоторым данным, за первые полгода своей деятельности CryptoWall принес своим создателям свыше 1,1 миллиона долларов.
Шифрование файлов
Список шифруемых файлов довольно широк, этого локера стоит опасаться не только владельцам документов MS Office и фотографий, но и разработчикам софта:
.c .h .m .ai .cs .db .nd .pl .ps .py .rm .3dm .3ds .3fr .3g2 .3gp
.ach .arw .asf .asx .avi .bak .bay .cdr .cer .cpp .cr2 .crt .crw
.dbf .dcr .dds .der .des .dng .doc .dtd .dwg .dxf .dxg .eml .eps
.erf .fla .flvv .hpp .iif .jpe .jpg .kdc .key .lua .m4v .max .mdb
.mdf .mef .mov .mp3 .mp4 .mpg .mrw .msg .nef .nk2 .nrw .oab .obj
.odb .odc .odm .odp .ods .odt .orf .ost .p12 .p7b .p7c .pab .pas
.pct .pdb .pdd .pdf .pef .pem .pfx .pps .ppt .prf .psd .pst .ptx
.qba .qbb .qbm .qbr .qbw .qbx .qby .r3d .raf .raw .rtf .rw2 .rwl
.sql .sr2 .srf .srt .srw .svg .swf .tex .tga .thm .tlg .txt .vob
.wav .wb2 .wmv .wpd .wps .x3f .xlk .xlr .xls .yuv .back .docm .docx
.flac .indd .java .jpeg .pptm .pptx .xlsb .xlsm .xlsx
Первым делом CryptoWall делает невозможным восстановление файлов из теневых копий и точек восстановления, выполняя следующие команды:
vssadmin.exe Delete Shadows /All /Quiet
bcdedit.exe /set {default} recoveryenabled No
bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures
Шифрование начинается после того, как от C&C-сервера будет получен публичный RSA-ключ. В отличие от других локеров, CryptoWall шифрует сами файлы с использованием алгоритма RSA-2048, в то время как большинство других с помощью RSA шифруют AES-ключ, которым были зашифрованы файлы. Алгоритм RSA достаточно ресурсоемкий и создает большую нагрузку на систему, что может косвенно указывать на заражение CryptoWall’ом.
Связь с командным сервером
В зависимости от модификации связь с командными серверами может устанавливаться либо посредством Tor (для этого скачивается и устанавливается tor.exe), либо через анонимную сеть I2P. Все имена командных серверов прошиты непосредственно в теле троя, а передаваемые данные шифруются по алгоритму RC4.
Приемы, затрудняющие анализ
Код троя подвергнут тщательному многоуровневому шифрованию. В ходе первой стадии расшифровки трой читает большой кусок зашифрованного кода, расшифровывает и сохраняет его в буфер. Второй этап расшифровки кода начинается с байтового массива (0x35, 0x5e, 0x74) внутри сохраненного на первом этапе кода. Как только это место определено, данные расшифровываются в стек. Третий этап начинается передачей выполнения на код, который был помещен в стек. Во время этого этапа расшифровываются ресурсы, зашифрованные с помощью Base64. Расшифрованный ресурс — это и есть окончательный код CryptoWall.
В версии 2.0 на втором этапе троян проверяет наличие виртуального окружения или песочницы: ищет процессы VBoxService.exe, vmtoolsd.exe или загруженную библиотеку sbieDLL.dll
.
Помимо всего перечисленного, при запуске трой создает фейковый процесс explorer.exe, в который пишет свой код, запускает его отдельным потоком, а свой процесс завершает. Фейковый explorer.exe, в свою очередь, запускает vssadmin.exe и bcedit.exe для уничтожения теневых копий и точек восстановления системы, а также фейковый svchost.exe, в который тоже внедряется вредоносный код, и уже под видом этого процесса CryptoWall начинает свою деятельность.
Dirty (DirCrypt)
Появился примерно в одно время с CryptoLocker’ом (некоторые антивирусные компании датируют появление Dirty даже немного раньше — в июле 2013 года).
Шифрование файлов
DurCrypt шифрует не так много типов файлов, в основном это документы и фотографии:
.7z .avi .doc .docm .docx .jpeg .jpg .mpeg .mpg
.pdf .png .rar .rtf .wmv .xls .xlsm .xlsx .zip
Для шифрования используются два алгоритма: RC4 и RSA. Первым алгоритмом шифруется весь файл целиком, причем ключ шифрования дописывается в конец зашифрованного файла. Вторым алгоритмом шифруются первые 1024 байта файла с использованием публичного ключа, зашитого в теле локера, при этом ключ для расшифровки можно только получить из командного центра, заплатив сумму, эквивалентную 200 долларам.
Связь с командным сервером
Dirty сам генерирует имена командных серверов на основе двух четырехбайтовых начальных чисел, находящихся в секции ресурсов. Всего алгоритм генерации доменных имен может сгенерировать тридцать имен командных центров. Все командные центры находятся в зоне .com
и имеют вот такие сомнительные с художественной точки зрения имена: rauggyguyp.com, llullzza.com, mluztamhnngwgh.com, mycojenxktsmozzthdv.com, inbxvqkegoyapgv.com.
Связь с командным центром ведется открытым текстом без всякого шифрования, передается публичный ключ и после подтверждения факта оплаты в ответ высылается RSA-ключ для расшифровки.
Приемы, затрудняющие анализ
В процессе своей работы Dirty ищет процессы с именами taskmgr, tcpview, filemon, procexp, procmon, regmon, wireshark, LordPE, regedit и в случае успеха завершает обнаруженные «опасные» процессы.
Помимо этого, все текстовые строки и другие данные хранятся в теле локера в зашифрованном виде.
TeslaCrypt
Первые образцы этой малвари появились в ноябре 2014 года (первый семпл был загружен на virustotal.com 11 ноября 2014 года). Однако широко и повсеместно TeslaCrypt стал распространяться чуть позже, в начале марта 2015 года. За все время своего существования этот локер претерпел ряд изменений, и на данный момент актуальной версией следует считать TeslaCrypt 2.0.0.
Шифрование файлов
TeslaCrypt выбирает для шифрования очень много типов файлов (порядка двухсот), при этом в список попали и типы файлов, связанные с играми (сохранения, пользовательские профили и прочее):
- Bethesda Softworks settings file
- F.E.A.R. 2 game
- Steam NCF Valve Pak
- Call of Duty
- EA Sports
- Unreal 3
- Unity scene
- Assassin’s Creed game
- Skyrim animation
- Bioshock 2
- Leagues of Legends
- DAYZ profile file
- RPG Maker VX RGSS
- World of Tanks battle
- Minecraft mod
- Unreal Engine 3 game file
- Starcraft saved game
- S.T.A.L.K.E.R. game file
- Dragon Age Origins game
Сама схема шифрования претерпевала изменения от версии к версии. Изначально это была реализация алгоритма AES-256-CBC, с сохранением ключа расшифровки в файле key.dat до конца зашифровывания всех файлов (после шифрования последнего файла этот ключ затирался нулями).
В более поздних версиях (в частности, 0.4.0) ключ расшифровки сохранялся в файле storage.bin уже не в открытом виде, а в преобразованном с помощью алгоритма цифровой подписи с эллиптическими кривыми (реализация под названием secp256k1) и после зашифровывания последнего файла затирался случайными байтами.
В последних версиях (TeslaCrypt 2.0.0) алгоритм шифрования стал гораздо более совершенным. Скорее всего, авторы этого троя подсмотрели реализацию шифрования у Critroni и практически без изменений перенесли ее в свое творение. Все алгоритмы реализованы с помощью свободно распространяемой библиотеки cryptlib предположительно версии 3.4.1 (в теле локера встречаются строки с названиями файлов исходников из этой библиотеки: bn_lib.c
, ec_lid.c
, ec_key.c
и другие). Отличие реализации алгоритмов в TeslaCrypt от их реализации в CTB-Locker’е в том, что сессионные ключи генерируются не для каждого файла, а для текущей сессии компьютера (до следующей перезагрузки).
Перед шифрованием файлов TeslaCrypt удаляет все системные бекапы (теневые копии) файлов жертвы с помощью команды
vssadmin.exe delete shadows /all /quiet
Что такое vssadmin.exe?
Vssadmin.exe — это утилита управления службой теневого копирования VSS (Volume Snapshot Service или Volume Shadow Copy Service). Данная служба используется в стандартном процессе восстановления системы и различных программах резервного копирования/архивации данных (Handy Backup, Leo Backup и другие). Некоторые локеры-шифровальщики используют эту утилиту для уничтожения всех созданных теневых копий, что, соответственно, делает невозможным восстановление зашифрованных файлов. Как правило, в этом случае команда выглядит как vssadmin.exe delete shadows /all /quiet
, где параметр delete shadows
обозначает как раз удаление теневых копий, параметр /all
говорит о том, что необходимо удалить все теневые копии, а параметр /quiet
указывает, что все действия необходимо провести незаметно для пользователя, без вывода на экран каких-либо сообщений.
Необходимую для работы информацию TeslaCrypt 2.0.0 сохраняет в реестре (а не в файлах, как это было ранее). В HKCU\Software\msys\ID
сохраняется значение идентификатора троя, а в HKCU\Software\<идентификатор троя>\data
сохраняется номер Bitcoin-кошелька, публичный ключ master-public, разделяемый секрет алгоритма ECDH и другая служебная информация (при этом ни master-private, ни session-private нигде не сохраняются).
Интересная особенность последней версии TeslaCrypt — отказ от GUI-окна для вывода сообщения с требованием об оплате и вывод этого сообщения в виде HTML-страницы, которая копирует такую же у CryptoWall’а (при этом TeslaCrypt выдает себя за нашумевший CryptoWall, очевидно, чтобы еще больше запугать жертву).
Связь с командным сервером
В теле трояна содержится статический список адресов C&C. Сами серверы находятся в сети Tor, но коммуникация устанавливается через обычный web с помощью сервисов tor2web (в исследуемом семпле использовался tor2web.org).
В TeslaCrypt первых версий запросы к командному серверу отправлялись в открытом виде, в последующих версиях стали шифроваться алгоритмом AES-256-CBC. В качестве ключа берется хеш SHA-256 от строки, содержащейся в теле зловреда.
Приемы, затрудняющие анализ
В отдельном потоке трой, используя API-функции CreateToolhelp32Snapshot
, Process32First
и Process32Next
, ищет процессы с именами taskmgr.exe
, regedit.exe
, cmd.exe
, procexp.exe
, msconfig.exe
и завершает их.
Помимо этого, все строки в явном виде в теле зловреда не хранятся и скрыты от невооруженного взгляда не очень сложным шифрованием.
TorLocker
Первая атака с использованием этого локера была зафиксирована осенью прошлого года. Практически во всех случаях семплы TorLocker’а относятся к двум версиям 1.0 (на английском языке) и 2.0 (на английском и японском языках). Основное различие между версиями заключается в методах затруднения анализа кода и используемом источнике дополнительных модулей: в версии 2.0 эти модули скачиваются из интернета, тогда как в версии 1.0 они извлекаются из секции данных.
Шифрование файлов
TorLocker покушается на огромное количество типов файлов, от офисных документов пользователя, видео- и аудиозаписей, изображений до файлов виртуальных машин, ключей шифрования, сертификатов и прочего:
.3gp .7z .accdb .ai .aiff .arw .avi .backup .bay .bin .blend .cdr .cer
.cr2 .crt .crw .dat .dbf .dcr .der .dit .dng .doc .docm .docx .dwg .dxf
.dxg .edb .eps .erf .flac .gif .hdd .indd .jpe .jpg .jpeg .kdc .kwm .log
.m2ts .m4p .mdb .mdf .mef .mkv .mov .mp3 .mp4 .mpg .mpeg .mrw .ndf .nef
.nrw .nvram .odb .odm .odp .ods .odt .ogg .orf .p12 .p7b .p7c .pdd .pdf
.pef .pem .pfx .pif .png .ppt .pptm .pptx .psd .pst .ptx .pwm .qcow .qcow2
.qed .r3d .raf .rar .raw .rtf .rvt .rw2 .rwl .sav .sql .srf .srw .stm
.txt .vbox .vdi .vhd .vhdx .vmdk .vmsd .vmx .vmxf .vob .wav .wb2 .wma .wmv
.wpd .wps .xlk .xls .xlsb .xlsm .xlsx .zip
При запуске TorLocker, используя имя компьютера и серийный номер логического диска, выбирает один из 128 зашитых в тело публичных RSA-ключей.
Файлы шифруются алгоритмом AES-256, при этом для каждого файла генерируется свой ключ шифрования. Если размер файла больше 512 Мбайт, то шифруются только первые 512 Мбайт файла. В конец каждого файла дописывается служебная информация размером 512 байт: 32 байта паддинга, 4 байта идентификатора TorLocker’а и 476 байт — использованный ключ AES-256, зашифрованный с помощью RSA-2048 выбранным в начале работы троя публичным ключом. Зашифрованные данные в файл пишутся поверх незашифрованных, и создание нового файла с удалением старого не происходит. Название и расширение зашифрованных файлов не изменяются.
Связь с командным сервером
Связь с командным сервером устанавливается уже после того, как все файлы будут зашифрованы. Из-за этого работа трояна незаметна и ее невозможно выявить по нетипичной сетевой активности.
Все адреса командных серверов прописаны в теле троя, связь с ними осуществляется посредством Tor-клиента tor.exe и с использованием прокси polipo.exe. Эти два файла либо извлекаются из секции данных зловреда (в версии 1.0), либо качаются из Сети (в версии 2.0).
Приемы, затрудняющие анализ
Обычно представители этого семейства упакованы UPX, кроме этого, секция данных зашифрована с помощью алгоритма AES с 256-битным ключом (при этом первые четыре байта этого ключа записываются в конец зашифрованных файлов и используются как идентификатор конкретного семпла трояна).
Сам код щедро разбавлен последовательностями ничего не значащих и не выполняемых ни при каких условиях команд (так называемые висячие байты), которые обходятся командой безусловного перехода.
При запуске TorLocker создает отдельный поток, который, используя API-функции CreateToolhelp32Snapshot, Process32First и Process32Next, ищет процессы с именами taskmgr.exe, regedit.exe, procexp.exe, procexp64.exe и завершает их.
TorrentLocker
Первые заражения этим локером были зафиксированы в начале февраля 2014 года. Название взято из имени раздела реестра Bit Torrent Application, который создавался первыми версиями этого локера для хранения служебной информации. Данный зловред распространялся исключительно путем спам-рассылок зараженных писем.
Шифрование файлов
TorrentLocker шифрует порядка 250 разных типов файлов, что делает невозможным любую продуктивную деятельность на зараженном компьютере. Для шифрования файлов используется алгоритм AES-256-CBC (первые версии использовали алгоритм AES-256-CTR, для всех файлов использовался один и тот же ключ, а также вектор инициализации, что делало алгоритм уязвимым и давало возможность восстановить файлы без материальных затрат).
AES-ключ генерируется один раз на основе значений, получаемых от нескольких API-функций (GetTickCount
, GetCurrentProcessId
, GetCurrentThreadId
, GetProcessHeap
, GetThreadTimes
, GetProcessTimes
). После шифрования файлов AES-ключ шифруется публичным ключом RSA, который находится в файле вредоносной программы и записывается в конец зашифрованного файла вместе с контрольной суммой AES-ключа и значением длины зашифрованного AES-ключа. Для снижения нагрузки на процессор и уменьшения времени шифрования TorrentLocker шифрует только первые два мегабайта файла (разумеется, если файл больше этих самых двух мегабайт, в противном случае файл шифруется полностью). Для реализации алгоритмов шифрования применяется свободно распространяемая библиотека LibTomCrypt.
Связь с командным сервером
В первых версиях связь с командным центром устанавливалась по жестко прошитому в теле локера адресу. В более поздних версиях (после октября 2014 года) был добавлен алгоритм динамической генерации адресов, который начинал свою работу, если не удавалось связаться с захардкоженным C&C-сервером. Он выдавал вспомогательный список из тридцати доменных имен командного центра.
Весь трафик шифруется либо с помощью SSL-протокола, либо с помощью алгоритма chain-XOR. На командный сервер передается информация, позволяющая идентифицировать пользователя (она вырабатывается из имени компьютера, даты установки системы и версии ОС). Этот идентификатор позволяет впоследствии установить факт оплаты и предоставить возможность расшифровки файлов.
Приемы, затрудняющие анализ
TorrentLocker использует несколько приемов противодействия отладке и обнаружения виртуального окружения. В частности, при помощи API-функции OutputDebugString, которая вызывается в цикле 320 500 раз. Под дебаггером это вызывает зависание процесса отладки.
Кроме того, используется двухуровневое шифрование кода троя с использованием алгоритма RC4. После расшифровки трой внедряет код, непосредственно ответственный за выполнение вредоносных функций локера, в процессы explorer.exe
и svchost.exe
.
Заключение
Напоследок стоит отметить, что угроза подвергнуться атаке какого-нибудь новоявленного локера-шифровальщика в настоящее время довольно актуальна. В большинстве применяемых на сегодня локеров используются все самые современные достижения криптографии, и далеко не всегда есть возможность восстановить свои файлы без помощи авторов такого рода малвари и создателей этого бизнеса.