Има нов бот на хоризонта. Ние от ESET го идентифицираме с името Win32/Napolar, а създателят му го нарича solarbot. Този вирус привлече вниманието ни още в средата на август заради интересният анти-дебъгинг код и техниките му на разпространение. Наскоро той предизвика по-широко внимание, особено по време на специализирани форуми. Този вирус може да изпълнява няколко функции. Трите основни са: извършване на DDoS (Denial of Service) атаки, действие на заразената машина в SOCKS прокси сървър и кражба на информация от засегнатите потребители. Софтуерът може да се присламчи към различни браузъри и да краде информацията, която е въвеждана от потребителя им в различни форми в сайтове. Разкрихме много интересни детайли за бота, след активирането му през юли и особено след средата на август, когато започна масовото инфектиране с него. Според различни публикациите, инфектираните потребители са хиляди, а голяма част от тях са в Южна Америка. Най-засегнатите държави са Перу, Еквадор и Колумбия. Интересното в случая, е че авторът на Win32/Napolar използва уебсайт, за да промотира творението си. Самият сайт изгелжда доста професионален и съдържа детайлна информация за бота, както и евентуални цени (200 американски долара за всеки билд) и списък с промените по кода и еволюцията на кода. Въпреки че не сме виждали точни примери за разпространението на заразата, според нас основно поле за дистрибуция на вируса е Facebook. Кодът съдържа фрагменти, които показват, че може да краде данни за потребители на социалната мрежа а създателят му може да използва данните, за да изпраща съобщения от името на компроментираните потребители и да се опитва да зарази и приятелите им. Ето и списък с файлове, които вирусът използва, за да се разпространява:
- Photo_032.JPG_www.facebook.com.exe
- Photo_012-WWW.FACEBOOK.COM.exe
- Photo_014-WWW.FACEBOOK.COM.exe
Използването на двойни разширения (*.JPG.EXE, *.TXT.EXE и т.н.) за маскиране на истинското предназначение на файла е стар номер, датиращ още от времето на Windows 95. Очевидно обаче, той още работи. Забавното тук, е че авторът на Win32/Napolar изглежда не е осъзнал, че.COM е валидно, макар и старо, разширение за изпълними файлове, и процесът в тях би бил стартиран дори и без добавянето на .EXE. Пост в блога на колегите ни от AVAT показва, че и те са попаднали на подобни начини за разпространение на вируси. Основна тема на този материал обаче не е точно начина за разпространение на Win32/Naploar, а по-скоро триковете, които вирусът използва за дебъгване. Той залага на външни пакетиращи алгоритми, за да избегне засичането от антивирусни софтуери и да забави дешифрирането на кода с цел по-лесното му засичане.
Техники за дебъгване
Първото нещо, което се набива на очи при анализа на кода на Win32/Napolar е липсата на валидна точка за достъп в PE хедъра, както се вижда на скрийншота по-долу. Първите инструкции се изпълняват когато файлът се стартира и запази в Thread Local Storage (TLS) функциите. В него са регистрирани и две такива функции. Първата не прави абсолютно нищо. Втората функция декриптира още код, използвайки алгоритъма за криптиране RC4 и ключ 0xDEADBEEF. Декриптираният код е регистриран като трета TLS функция преди връщането към втората функция, както се вижда в кода по-долу. Третата TLS функция декриптира останалата част от кода, преди да премине към основната част от вируса. Самият вирус използва още няколко техники, за да се скрие от конвенционалните методи за защита. Например: Взаимодействието с операционната система се извършва предимно чрез извикване на недокументирани функции на библиотеката NTDLL, вместо чрез стандартно APIИзпълнението на кода не зависи от местоположението му във файла
За да намери частта от собствения си код, която трябва да бъде декриптирана, Win32/Napolar търси в паметта си за кода 0×55. Този код представлява“push ebp”, първата инструкция в асемблиращия му език. Ако тази инструкция бъде заменена с 0xCC, кода за край на софтуера, декриптирането няма да се осъществи. Това е интересен и хитър начин за променянето на поведението на вируса. Win32/Napolar е оборудван с още козове в ръкава си. За да затрудни динамичния анализ, вирусът създава подпроцес на самия себе си и ще дебъгне него. Скирйншотът по-долу показва това: Техниката за софтуерна защита на самодебъгването не е нещо невиждано, но в случая с Win32/Napolar трикът е в тялото на кода на вируса, а не в опаковката му. След стартирането на процеса за дебъгване, Win32/Napolar влиза в цикъл, който контролира събитията, връщани от функцията WaitForDebugEvent. Псевдокодът за контролирането на цикъла е е представен по-долу: Първото събитие, управлявано от кода, е CREATE_PROCESS_DEBUG_EVENT. То се случва веднага след стартирането на процеса за дебъгване. В този случай, основният процес ще обработи MZ и PE хедърите на процеса за дебъгване, за разбере размера и местоположението на кода, който му трябва. Това създава две копия на един и същи код за един и същи процес. Следващото събитие е EXCEPTION_DEBUG_EVENT. При него функцията на кода е да пренасочи изпълнението в началото на кода на файла чрез функция push – ret. Така се декриптира основното тяло на кода и му позволява да се изпълни в дъщерния процес. Именно кодът на дъщерния процес се инжектира, прикрива всички останали процеси от защитните софтуери и краде необходимата информация. Накрая основният процес получава командата EXIT_PROCESS_DEBUG_EVENT. Тя спира дебъгването чрез извикването на функцията DebugActiveProcessStop и спира собствения си процес чрез NtTerminateProcess. Една от основните характеристики на Win32/Napolar е способността му да краде информация при попълване на уеб форма от страна на потребителя в браузър. Най-вероятно софтуерът на Trusteer за защита на браузъри спира този процес. Заради това, кодът на Win32/Napolar проверява за наличието на подобен софтуер на машината. Той преминава през всички стартирани процеси и спира всички, съдържащи “trusteer” в името си.Мрежово поведение
Когато осъществява комуникация с командния си сървър, Win32/Napolar използва HTTP протокол. Първото обръщение, което изпраща ботът към командния сървър, съдържа следната информация:- Версия на бота
- Windows потребителско име на заразения потребител
- Име на компютъра
- Уникален идентификатор на бота
- Версия на операционната система
- Тип операционна система – 32- или 64-битова. Ботът наистина поддържа и двата типа архитектура
След това сървърът отговаря със списък от команди, които ботът трябва да изпълни. Списъкът е криптиран с RC4, а уникалният идентификатор на бота се използва като ключ за декрпитиране. Ботът поддържа няколко команди – от кражба на информация през създаване на SOCKS прокси до осъществяване на DDoS атаки и сваляне и инсталиране на ъпдейти. Всяка команда има уникален идентификационен номер, който се съхранява като един байт, след който са параметрите, които трябва да се изпълнят. До момента сме ставали свидетели на поне поне 7 командни сървъра, използвани от Win32/Napolar. Повечето от тях остават онлайн едва няколко дни, преди операторът да ги премести на различна мрежа. Това може да е знак, че ботът се използва активно. Ето и списък с домейни, на които е оперирал командният сървър:
- dabakhost.be
- terra-araucania.cl
- xyz25.com
- yandafia.com
- elzbthfntr.com
- alfadente.com.br
В кода на вируса има и няколко референции към TOR. По-конкретно, прилики има при някои конфигурационни редове и референции на конфигурационния файл към TOR. При анализа на кода не ни направи впечатление тези данни да се използват за нещо.