Знаёмцеся: ransomware Nemty з падробленага сайта PayPal
У сетцы з'явіўся новы шыфравальшчык Nemty, які меркавана з'яўляецца пераемнікам GrandCrab або Buran. Шкоднаснае ПА галоўнай выявай распаўсюджваецца з падробленага сайта PayPal і валодае побач цікавых асаблівасцяў. Падрабязнасці аб працы гэтага ransomware - пад катом.
Новы шыфравальшчык Nemty выявіў карыстач нао_сек 7 верасня 2019 года. Шкоднае ПЗ распаўсюджвалася праз сайт, замаскіраваны пад PayPal, таксама маецца магчымасць пранікнення ransomware на кампутар праз эксплойт-кіт RIG. Зламыснікі абралі метады сацыяльнай інжынерыі, каб прымусіць карыстача запусціць файл cashback.exe, які ён нібы атрымлівае з сайта PayPal, Цікаўна таксама, што ў Nemty паказаны няправільны порт для лакальнага проксі-сэрвісу Tor, што не дае шкоднаснаму ПА адпраўляць дадзеныя на сервер. Таму карыстачу прыйдзецца самому запампоўваць зашыфраваныя файлы ў сетку Tor, калі ён мае намер заплаціць выкуп і чакаць ад зламыснікаў расшыфроўкі.
Некалькі цікаўных фактаў аб Nemty падказваюць, што яго распрацоўвалі тыя ж людзі ці звязаныя з Buran і GrandCrab кібер-злачынцы.
Як і ў GandCrab, у Nemty ёсць пасхалка - спасылка на фота прэзідэнта РФ Уладзіміра Пуціна з мацерным жартам. У састарэлым шыфравальшчыку GandCrab была выява з тым жа тэкстам.
Моўныя артэфакты абедзвюх праграм паказваюць на тых жа расейскамоўных аўтараў.
Гэта першы шыфравальшчык, які выкарыстоўвае 8092-бітны ключ RSA. Хоць сэнсу ў гэтым няма: 1024-бітнага ключа для абароны ад узлому суцэль досыць.
Як і Buran, шыфравальшчык напісаны на Object Pascal і скампіляваны на Borland Delphi.
Статычны аналіз
Выкананне шкоднаснага кода адбываецца ў чатыры этапы. Першы крок - запуск cashback.exe, PE32-выканаўчага файла пад MS Windows памерам 1198936 байт. Яго код напісаны на Visual C++ і скампіляваны 14 кастрычніка 2013 года. У ім знаходзіцца архіў, які аўтаматычна распакоўваецца пры запуску cashback.exe. ПЗ выкарыстоўвае бібліятэку Cabinet.dll і яе функцыі FDICreate(), FDIDestroy() і іншыя для атрымання файлаў з архіва .cab.
Далей запускаецца temp.exe, PE32-выкананы файл пад MS Windows памерам 307200 байт. Код напісаны на Visual C++ і спакаваны MPRESS packer, пакавальнікам, аналагічным UPX.
Наступны крок - ironman.exe. Пасля запуску temp.exe расшыфроўвае ўкаранёныя дадзеныя ў temp і пераназывае іх у ironman.exe, PE32-выкананы файл памерам 544768 байт. Код скампіляваны ў Borland Delphi.
Апошні крок - перазапуск файла ironman.exe. Падчас выканання ён пераўтворыць свой код і запускае сябе з памяці. Гэтая версія ironman.exe з'яўляецца шкоднаснай і адказвае за шыфраванне.
Вектар атакі
На дадзены момант шыфравальшчык Nemty распаўсюджваецца праз сайт pp-back.info.
Поўны ланцужок заражэння можна паглядзець на app.any.run пясочніца.
Ўстаноўка
Cashback.exe - пачатак нападу. Як ужо гаварылася, cashback.exe распакоўвае які змяшчаецца ў ім .cab файл. Затым ён стварае тэчку TMP4351$.TMP выгляду выгляду %TEMP%IXxxx.TMP, дзе xxx - лік ад 001 да 999.
Далей усталёўваецца ключ рэестра, які выглядае вось так:
Ён выкарыстоўваецца для выдалення распакаваных файлаў. Нарэшце, cashback.exe запускае працэс temp.exe.
Temp.exe - другі этап у ланцужку заражэння
Гэта працэс, запушчаны файлам cashback.exe, другі крок выканання віруса. Ён спрабуе спампаваць AutoHotKey – прылада для запуску скрыптоў пад Windows – і запусціць скрыпт WindowSpy.ahk, размешчаны ў падзеле рэсурсаў PE-файла.
Скрыпт WindowSpy.ahk расшыфроўвае файл temp у ironman.exe, выкарыстаючы алгарытм RC4 і пароль IwantAcake. Ключ з пароля атрымліваецца пры дапамозе алгарытму хэшавання MD5.
Затым temp.exe выклікае працэс ironman.exe.
Ironman.exe - трэці крок
Ironman.exe счытвае змесціва файла iron.bmp і стварае файл iron.txt з крыпталакерам, які запусціцца наступным.
Пасля гэтага вірус загружае iron.txt у памяць і перазапускае яго як ironman.exe. Пасля гэтага iron.txt выдаляецца.
ironman.exe – асноўная частка вымагальніка NEMTY, якая і шыфруе файлы на здзіўленым кампутары. Шкоднаснае ПА стварае м'ютэкс пад назовам hate.
Перш за ўсё ён вызначае геаграфічнае месцазнаходжанне кампутара. Nemty адкрывае браўзэр і пазнае IP на http://api.ipify.org. На сайце api.db-ip.com/v2/free[IP]/countryName па атрыманым IP вызначаецца краіна, і, калі кампутар знаходзіцца ў адным з пералічаных ніжэй рэгіёнаў, тое выкананне кода шкоднаснага ПА спыняецца:
Расія
Беларусь
Украіна
Казахстан
Таджыкістан
Верагодней за ўсё распрацоўшчыкі не жадаюць прыцягваць увагу праваахоўных органаў у краінах свайго пражывання, і таму не шыфруюць файлы ў "родных" юрысдыкцыях.
Калі IP-адрас ахвяры не адносіцца да спісу вышэй, то вірус шыфруе інфармацыю карыстальніка.
Для прадухілення аднаўлення файлаў выдаляюцца іх ценявыя копіі:
Затым ствараецца спіс файлаў і тэчак, якія не будуць шыфравацца, а таксама спіс пашырэнняў файлаў.
вокны
$RECYCLE.BIN
RSA
NTDETECT.COM
ntldr
MSDOS.SYS
IO.SYS
boot.ini AUTOEXEC.BAT ntuser.dat
працоўны стол.ini
КАНФІГ. СІСТ.
BOOTSECT.BAK
загрузнік
праграмныя дадзеныя
дадатку
osoft
Common Files
log LOG CAB cab CMD cmd COM com cpl
CPL exe EXE ini INI dll DDL lnk LNK url
URL ttf TTF DECRYPT.txt NEMTY
Абфускацыя
Каб схаваць URL-адрасы і ўкаранёныя канфігурацыйныя дадзеныя, Nemty выкарыстае алгарытм кадавання base64 і RC4 з ключавой фразай fuckav.
Працэс дэшыфроўкі з выкарыстаннем CryptStringToBinary выглядае наступным чынам
шыфраванне
Nemty выкарыстоўвае трохслаёвае шыфраванне:
AES-128-CBC для файла. 128-бітны AES-ключ генеруецца выпадковым чынам і выкарыстоўваецца адзін і той жа для ўсіх файлаў. Ён захоўваецца ў канфігурацыйным файле на кампутары карыстальніка. IV генеруецца выпадковым чынам для кожнага файла і захоўваецца ў зашыфраваным файле.
RSA-2048 для шыфравання файлаў IV. Генеруецца ключавая пара для сесіі. Закрыты ключ да сесіі захоўваецца ў канфігурацыйным файле на кампутары карыстальніка.
RSA-8192. Асноўны адчынены ключ убудаваны ў праграму і выкарыстоўваецца для шыфравання канфігурацыйнага файла, у якім захоўваецца ключ AES і сакрэтны ключ для сесіі RSA-2048.
Спачатку Nemty генеруе 32 байта выпадковых дадзеных. Першыя 16 байт выкарыстоўваюцца ў якасці ключа AES-128-CBC.
Другі алгарытм шыфравання - гэта RSA-2048. Ключавая пара генеруецца функцыяй CryptGenKey() і імпартуецца функцыяй CryptImportKey().
Пасля таго, як ключавая пара для сесіі згенеравана, адкрыты ключ імпартуецца ў MS Cryptographic Service Provider.
Прыклад згенераванага адкрытага ключа для сесіі:
Далей зачынены ключ імпартуецца ў CSP.
Прыклад згенераванага зачыненага ключа для сесіі:
І апошнім ідзе RSA-8192. Асноўны адчынены ключ захоўваецца ў зашыфраваным выглядзе (Base64 + RC4) у падзеле .data PE-файла.
Ключ RSA-8192 пасля дэкадавання base64 і дэшыфраванні RC4 з паролем fuckav выглядае вось так.
У выніку ўвесь працэс шыфравання выглядае наступным чынам:
Генерацыя 128-бітнага AES-ключа, які будзе выкарыстоўвацца для шыфравання ўсіх файлаў.
Стварэнне IV для кожнага файла.
Стварэнне ключавой пары для сесіі RSA-2048.
Расшыфроўка наяўнага ключа RSA-8192 пры дапамозе base64 і RC4.
Шыфраванне змесціва файлаў з дапамогай алгарытму AES-128-CBC з першага кроку.
Шыфраванне IV з дапамогай адкрытага ключа RSA-2048 і кадаваньне ў base64.
Даданне шыфраванага IV у канец кожнага зашыфраванага файла.
Даданне ключа AES і зачыненага ключа сесіі RSA-2048 у канфіг.
Дадзеныя канфігурацыі, апісаныя ў раздзеле збор інфармацыі аб заражаным кампутары, шыфруюцца пры дапамозе асноўнага адчыненага ключа RSA-8192.
Зашыфраваны файл выглядае наступным чынам:
Прыклад зашыфраваных файлаў:
Збор інфармацыі аб заражаным кампутары
Вымагальнік збірае ключы для дэшыфрацыі заражаных файлаў, так што зламыснік сапраўды зможа стварыць дэшыфратар. Акрамя таго, Nemty збірае карыстацкія дадзеныя, такія як імя карыстальніка, імя кампутара, апаратны профіль.
Ён выклікае функцыі GetLogicalDrives(), GetFreeSpace(), GetDriveType(), каб сабраць інфармацыю аб дысках заражанага кампутара.
Сабраная інфармацыя захоўваецца ў канфігурацыйным файле. Дэкадаваўшы радок, мы атрымліваем спіс параметраў у канфігурацыйным файле:
Сабраныя дадзеныя Nemty захоўвае ў фармаце JSON у файле %USER%/_NEMTY_.nemty. FileID даўжынёй 7 сімвалаў генеруецца выпадковым чынам. Напрыклад: _NEMTY_tgdLYrd_.nemty. FileID таксама дадаецца ў канец зашыфраванага файла.
Паведамленне аб выкупе
Пасля шыфравання файлаў на працоўным стале з'яўляецца файл _NEMTY_[FileID]-DECRYPT.txt наступнага зместу:
У канцы файла знаходзіцца зашыфраваная інфармацыя аб заражаным кампутары.
Затым Nemty спрабуе адправіць канфігурацыйныя дадзеныя на адрас 127.0.0.1:9050, дзе чакае знайсці які працуе проксі-сервер браўзэра Tor. Аднак па змаўчанні проксі-сервер Tor праслухоўвае порт 9150, а порт 9050 выкарыстоўвае дэман Tor у Linux ці Expert Bundle на Windows. Такім чынам, дадзеныя на сервер зламысніка не адпраўляюцца. Замест гэтага карыстач можа загрузіць канфігурацыйны файл уручную, наведаўшы службу расшыфроўкі Tor па спасылцы, паказанай паведамленні аб выкупе.
Падключэнне да проксі Tor:
HTTP GET стварае запыт на 127.0.0.1:9050/public/gate?data=
Тут вы бачыце адкрытыя TCP-парты, якія выкарыстоўваюцца проксі TORlocal:
Сэрвіс дэшыфрацыі Nemty у сетцы Tor:
Можна загрузіць шыфраванае фота (jpg, png, bmp) для тэсціравання сэрвісу дэшыфрацыі.
Пасля гэтага зламыснік просіць заплаціць выкуп. У выпадку нявыплаты кошт падвойваецца.
Заключэнне
На дадзены момант расшыфраваць файлы, зашыфраваныя Nemty, без выплаты выкупу не атрымаецца. У гэтай версіі ransomware ёсць агульныя рысы з шыфравальшчыкамі Buran і састарэлым GandCrab: кампіляцыя на Borland Delphi і выявы з аднолькавым тэкстам. Акрамя таго, гэта першы шыфравальшчык, які выкарыстоўвае 8092-бітны ключ RSA, што, паўторымся, не мае ніякага сэнсу, бо 1024-бітнага ключа для абароны суцэль досыць. Нарэшце, што цікава, ён спрабуе выкарыстоўваць няправільны порт для лакальнага проксі-сэрвісу Tor.
Тым не менш, рашэнні Рэзервовае капіраванне Acronis и Acronis True Image не дапушчаюць шыфравальшчык Nemty да карыстацкіх ПК і дадзеных, а правайдэры могуць абараніць сваіх кліентаў пры дапамозе Acronis Backup Cloud. Поўная Кіберабарона забяспечвае не толькі рэзервовае капіраванне, але таксама абарону з выкарыстаннем Acronis Active Protection, спецыяльнай тэхналогіі на базе штучнага інтэлекту і паводніцкай эўрыстыкі, якая дазваляе нейтралізаваць нават яшчэ невядомае шкоднаснае ПЗ.