Win32/Virlock: Първият от вида си

Next story

Win32/VirLock е ransomware, който заключва екраните на жертвите, но и действа като паразитен вирус, като заразява и съществуващите файлове на компютрите им. Вирусът е полиморфен, което го прави интересен за анализ. За пръв път наблюдаваме такава комбинация от малуер функции. ЗАБЕЛЕЖКА: Жертвите могат да възстановят своите заразени файлове с помощта на нашия безплатен VirLock Cleaner инструмент за изчистване, достъпен за сваляне на http://www.eset.com/bg/download/utilities/detail/family/264/След публикуването на подробните изследвания от ESET в областта на ransomware TorrentLocker, можем да хвърлим малко повече светлина върху един любопитен нов член от семейството на зловредните кодове, който изнудва заразените потребители.Преди да започнем с анализа на Win32/Virlock обаче, да разясним едно понятие: ransomware. Това е събирателно название за зловредни кодове, които блокират достъпа до файлове на заразено устройство и искат откуп за възстановяването му. В повечето случаи, ransomware или е от тип"LockScreen" или от тип "Filecoder". Когато вирус като Filecoder криптира файлове на хард диска на жертвата, той не заключва екрана, и не пречи на пострадалия да използва компютъра си. Уведомлението за откуп може да се показва по няколко начина - като wallpaper, в текстов файл, или най-често - в обикновен Windows прозорец (това е и методът, използван от Cryptolocker).В някои случаи, ransomware вирусите използват хибриден подход, като криптират файлове и заключват екрана на потребителя като визуализират на заключения екран съобщението за искане на откуп. Пример за това поведение е Android / Simplocker - първият подобрен вирус за Android.През октомври 2014 г. открихме нов, невиждан досега подход - Win32 / VirLock е ransomware, който заключва екрана и след това не само криптира съществуващите файлове, но ги заразява като ги превръща в изпълними файлове. По този начин той действа като паразитен вирус. С други думи - сблъскахме се с първия вирус от този тип, който вече има и възможността да се самовъзпроизвежда. Наблюдавахме редица варианти на кода през изминалия месец. Това показва, че авторът на зловредния софтуер доста се е постарал при създаването му. В действителност, вирусът изглежда малко като злонамерен експеримент и поради полиморфната си природа ни напомня на вируси от ерата DOS, като Whale вируса. Начинът, по който VirLock се имплементира, демонстрира високо ниво на умения за програмиране, но някои от функционалностите му изглеждат нелогични, което е по-озадачаващото.Сега ще ви дадем обща представа за поведението на вируса и ще Ви обясним какво го прави полиморфен.

Win32/VirLock накратко

Файл, който е заразен с VirLock се вгражда в Win32 PE (портабъл изпълним) файл и му се добавя разширение .exe, с изключение на вече изпълнимите (.ехе) файлове. След като се задейства, той декриптира оригиналния файл от бодито си в текущата директория и го отваря. Методите за разкодиране са описани по-нататък в статията. Това поведение ясно го отличава от типичните filecoder-и.След това VirLock се инсталира, като създава две копия с произволно генерирани имена (това не са просто копия - вирусът е полиморфен, така че всяко копие е уникално) в %userprofile% и %allusersprofile% директориите и добавя записи в Run регистрационните ключове под HKCU и HKLM, за да се стартират при зареждане на Windows. Новосъздадените файлове, които вече съдържат само бодито на вируса, се стартират. Последните варианти на VirLock създават и трето копие, което се регистрира като сървис. Този подход служи като прост механизъм за самозащита на малуера - сървиса и файловете се възстановяват, ако бъдат спряни или изтрити.Отделните копия отговарят за изпълнението на действителното зловредно съдържание.Едното се грижи за инфектирането на файлове. Win32 / VirLock търси приемни файлове, обхождайки локални дискове и преносими медии, дори мрежови шеринги, за да се постигне максимална степен на разпространение. Файловете, в които се целят различните версии на вируса, са различни. Списъкът с разширения, които са известни към момента е следния - *.exe, * .doc, * .xls, * .zip, * .rar, * .pdf, * .ppt, * .mdb, * .mp3, * .mpg , * .png, .gif *, * .bmp, * .p12, * .CER, * .psd, * .crt, * .pem, * .pfx, * .p12, * .p7b, * .wma, * .jpg, * .jpeg.Второто копие на заплахата съдържа LockScreen функционалността - с типичните предпазни механизми, като затваряне на explorer.exe, спиране на диспечера на задачите и така нататък и показва следното съобщение за откуп на екрана.Съобщението за откуп е очевидно, така че ние ще засегнем само уникалните аспекти. Снимката по-горе е от по-стара версия, а тази по-долу - от по-нова такава. Откупът се очаква в Bitcoin-и и авторът на зловредния код дава ясни инструкции на жертвите, които може да не са запознати с тази crypto - валута. Заключеният екран дори позволява на жертвите да използват интернет браузър и Notepad.Заключеният екран е в състояние да направи съвсем основно локализиране, базирано на това дали опитите за свързване към google.com в последствие се пренасочват към локално подразделение на търсачката, примерно google.com.au, google.ca, google.co.uk, google.bg или google.co.nz и връща стойността с функцията GetUserGeoID. За страните, които разпознае, може да покаже съответен национален флаг и курса на Bitcoin към съответната валута. Дори размерът на откупа може да е различен: 150 USD или 250 USD / GBP / EUR / NZD / CAD / AUD.Кодът показва твърдо-кодиран обменния курс за Bitcoin към валутата, но ще се актуализира ако успее да достигне своя C&C сървър.

VirLock полиморфизъм

От техническа гледна точка, може би най-интересната част за този зловреден софтуер е, че вирусът е полиморфен, което означава, че бодито му е различно при всеки заразен компютър и всеки път, когато се стартира. Но преди да обясним как се променя кодът, трябва да разгледаме различните слоеве на криптиране, които той използва.Опростеният поток на изпълнение в по-ранните варианти на Win32 / VirLock е представен в следната инфографика:Когато Win32 / VirLock двоичен код се зарежда в паметта, единственият некриптиран код е нещо, което ние ще наречем XOR stub builder; останалия код, данни и оригиналният файл (ако има такъв – прилага се една и съща схема за "самостоятелни" VirLock копия) са криптирани.Следващото описание на XOR stub builder важи за по-старите варианти на Win32 / VirLock. По-новите варианти използват малко по-сложен механизъм. XOR stub builder съдържа осем подобни на този в примера по-долу кодове.Всеки блок се състои от специфично изчислен DWORD записан с конкретно памет отместване. Регистрите, операциите (събиране и изваждане) и константите са генерирани на случаен принцип, но произвеждат един и същ желан резултат. Всеки един от тези блокове генерира 4 байта от XOR stub-a, което е точно 32-байта от целия код. Този stub е следващият етап от изпълнението на Win32 / VirLock.XOR stub, както предполага неговото име, разшифрова по-малка част (Част 1) от действителния VirLock код, който съдържа няколко функции. В примера по-долу, се използва XOR ключа 0x6B130E06, а размера на част 1 е 0x45C.Останалата част от кода (част 2), в която се съдържа оригиналния файл, засега остава криптирана.Интересна особеност на Win32 / VirLock е, че бодито на (почти) всяка една от функциите също е криптирано и съдържа декриптиращ код в началото. Това усложнява анализа на зловредния софтуер, тъй като никоя от функциите не е видима с Disassembler. Криптиращата функция отново е проста - контролна сума от малки, декриптиращи файлове се изчислява и се използва като XOR ключ с бодито на функцията.За да станат нещата още по-забавни, след изпълнение на функцията, нейния код ще бъде криптиран отново. Ключът ще бъде различен, обаче: както е показано на кодовия фрагмент долу, на няколко ненужни инструкции от кода за декриптиране се прави XOR с произволно число (от RDTSC), като по този начин ефективно се променя чек сумата, която се използва като ключ.Това е първата част на полиморфизъм във VirLock - при изпълнението му, неговите функции са ефективно променящите се в паметта, като се декриптират и след това пак се криптират. И в "моментната снимка" на паметта, модифицирани този начин, допринасят за уникалността на вируса във всеки заразен файл.Кодът, който формира част 1 съдържа и друга декриптираща функция, която се използва за декриптиране на част 2 и файла в който се внедрява. Този трети вид декриптиране е малко по-сложен от предишните в това, че използва ROR в допълнение към XOR. Ключовете за разкодиране на вградения файл и на част 2 са твърдо кодирани.За да обобщим, имаме криптиране на три нива:
  • Част 1 от кода е разшифрован от XOR stub в началото;
  • Част 2 от кода е разшифрован от определена функция в част 1;
  • Почти всички функции в кода на вируса (включително част 1 и част 2) са криптирани. Те се разкриптират, изпълняват дейността си и след това повторно се криптират.

И така, какъв точно е полиморфният код? В момента на изпълнение на зловредния софтуер след като част 1 и част 2 са разшифровани, се копира цялото боди в отделен блок на паметта. Запомнете: функциите, които са изпълнявани преди това в паметта и са създали копия са повторно криптирани с различен ключ. Това копие ще се използва за инфектиране на други файлове, със следните модификации за всеки един от тях.Работейки назад през отделните слоеве, копието се криптира отново. Първо, част 2 и заразения файл се криптират, чрез случайно генерирани ключове. Kриптираният хост файл се добавя към копието в паметта и новите криптиращи ключове, адресите на паметта и отместването се записват в кода на част 1, така че да бъде в състояние да се извлече част 2 и оригиналния файл, когато ново копие се стартира.Тогава изменената част 1 се криптира с XOR с произволно генериран DWORD, който се записва на XOR stub в началото.И накрая, XOR stub builder се изгражда на случаен принцип, както е описано по-горе и XOR stub се презаписва с измислени байтове.След всички тези стъпки, ние завършваме с криптирано копие на вируса в паметта и с вградения оригинален файл. След това се записва на твърдия диск на мястото на оригиналния файл. Ако оригиналният документ не е изпълним Win32 PE файл, ".exe" разширението ще бъде добавено към името на файла, след оригиналното разширение и оригиналния файл ще бъде изтрит. Новосъздаденият заразен файл ще има иконата на оригиналния файл.

Заключение

ESET LiveGrid® показва, че броят на жертвите на този нов вирус е сравнително малък и че за сега мащабите на тази заплаха не е подобна на тази на TorrentLocker или друга широко разпространена заплаха. Независимо от това, наблюдавайки транзакциите свързани с Bitcoin сметките използвани от зловредния код, показва че някои от жертвите вече са платили откупа. Ще продължим да следим развитието на този нов ransomware щам.