Введение
Многие наверняка знают это чувство опасения за свою флешку, подключая ее в «чужой» компьютер. Тем более, если нельзя посмотреть что происходит в операционной системе этого компьютера из-за прав пользователя, да и сам этот компьютер «публичного доступа» ( аудитория в учебном заведении). И еще более паршивое чувство, когда опасения оправдываются: помимо записи на флешку, вирус некоторым образом модифицирует данные на ней, притом криво.
С этим столкнулся и я. А заполучив образец вируса на подставную флешку, решил разобраться, что еще он делает и в чем вообще заключается суть его работы, а главное – как изгнать эту заразу с компов и «зараженных» флешек.
Статья будет полезна тем, кому интересна область анализа ПО, независимо от квалификации и навыков (специалисты могут в комментарии написать о своем опыте).
Анализ видимых действий сбор сведений
Еще до копирования образца на флешку я знал, что с такими флешками происходит:
- В папку RECYCLER кидается исполняемый файл (.exe) (Вес: 79160 байт, MD5: 4fd40d4acdd4c0bb657c7db329035c6a);
- Все папки делаются скрытыми. Через свойства папки вернуть прежние атрибуты невозможно;
- В корень копируется файл autorun.inf со ссылкой в нем на файл из RECYCLER
- Создаются ярлыки с иконками папок и их именами из корня. Ярлыки указывают на все тот же исполняемый файл.
Написать программу, которая бы восстанавливала папки и удаляла зловреда вовсе не тяжело, что и было сделано довольно быстро:
- Был осуществлен рекурсивный обход каталогов с помощью FindFirstFile/FindNextFile;
- Если текущий файл являлся папкой, то атрибуты сбрасывались на FILE_ATTRIBUTE_NORMAL;
- Из папки RECYCLER удалялись все exe-файлы.
К сожалению, такой метод борьбы неэффективен и надоедлив, т.к. после каждой пары необходимо было заново чистить флешку. Поэтому я принял решение посмотреть, что происходит на виртуалке и, соответственно, написать андидот.
Исследование файла на ВМ
В качестве ВМ использовалась Windows XP SP3 на Virtual Box. Кстати сам анализ на ВМ свидетельствует об отсутствии каких-либо AntiVM-функций. Для анализа вредоноса я использовал вполне стандартный для этого софт:
- PEid
- Olly Debugger
- Wireshark
- Resource Hacker
- AVZ
- Rootkit Revealer
- Process Monitor
- Process Explorer
- Autoruns
Итак, в первую очередь я решил посмотреть, чем упакован файл. PEiD показал:
Наивно конечно было полагать, что файл ничем не упакован, и после открытия файла в Resource Hacker догадки подтвердились:
Зашифрованые ресурсы (возможно ключ для распаковки, данные, или просто мусор). В любом случае на невинный файл уже не похоже. В дизассемблировании я не силен, поэтому в ollydbg я особо не заcиживался: убедился, что нет антиотладки (по крайней мере на этапе установки в систему, нет читаемых строк, кроме уже попадавшего на глаза «993», и что файл все таки закриптован).
Пути установки самые обычные: файл копируется в CSIDL_APPDATA под статическим именем Kmlslc.exe, ключ автозапуска – «Kmlslc» в HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun. После чего запущенный файл удаляется (скорей всего удаляет уже установленный в систему вродонос, а путь передается через аргумент командной строки).
По сетевому трафику можно сказать, что это – бот. Вредонос обращается к wipmania.com для получения внешнего IP-адреса, после чего пытается обратиться к нескольким сайтам по доменным именам, причем в обход дефолтному фаерволу:
Кстати говоря, при записи соответствующих доменов в файл hosts, бот не делает попытку отстука. Вдобавок, перехватываются функции HttpSendRequest, InternetWriteFile, URLDownloadToFile, send для анализа трафика и запрета на апдейты антивирусов, переход на сайты, например, kaspersky.ru, virustotal.com и т.д.
После установки в систему ключ автозапуска недоступен, Autoruns просто не видел его, также в списке процессов никакого Kmlslc.exe не было. Плюс ко всему, файла не было видно на диске. После сканирования системы с помощью RootkitRevealer выяснилось, что обращение к реестру и директориям перехватываются, модифицирую выдачу информации. Довольно распространенная техника. Для реализации перехватываются следующие функции: CopyFile, CreateFile, MoveFile, LdrLoadDll, NtEnumerateValueKey, NtQueryDirectoryFile, NtResumeThread, RegCreateKeyEx, RegCreateKeyEx, GetAddrInfo.
Путем банальной настройки фильтра в Procmon стало понятно, что вредонос внедрил код перехватчика в доверенный процесс (explorer.exe). Из логов видно, что код периодически пытается проверить существование файла.
Руководствуясь принципом «А почему бы и нет?» я попробовал стереть файл через DeleteFile. К моему удивлению, функцию завершилась с успехом, да и внедренный код после обращения к файлу начал выкидывать FILE_NOT_FOUND вместо SUCCESS. Это навело меня мысль о том, что во внедренном коде, кроме перехвата WinAPI ничего не реализовано. К сожалению, программно снимать хуки я пока не умею, но зато знаю, что с этим прекрасно справляется AVZ. После перезагрузки ПК ОС можно считать очищенной от данного вредоноса.
Заключение
Какие выводы можно сделать из вышесказанного? Несмотря на перехват API, проверку доменных имен перед отстуком и прочие техники, вредонос все таки обладает рядом недастатков, на фоне которых преимущества практически не имею смысла:
- Статические имена при установке в систему;
- Отсутствие защиты от удаления.
Анализируя плюсы и минусы можно предположить, что разработкой занимались как минимум двое: один криптовал (или этим занимался третий) и реализовывал перехват WinAPI, второй – писал копирование файла на флешку установку в систему и общение с админ-панелью (или гейтом).
После исследования вредоносной деятельности был написан антидот. Исходники.
Автор: DVamp1r3