Pull to refresh

Первый опыт в исследовании вредоносного ПО под Microsoft Windows

Reading time4 min
Views8.9K

Введение


Многие наверняка знают это чувство опасения за свою флешку, подключая ее в «чужой» компьютер. Тем более, если нельзя посмотреть что происходит в операционной системе этого компьютера из-за прав пользователя, да и сам этот компьютер «публичного доступа» ( аудитория в учебном заведении). И еще более паршивое чувство, когда опасения оправдываются: помимо записи на флешку, вирус некоторым образом модифицирует данные на ней, притом криво.
С этим столкнулся и я. А заполучив образец вируса на подставную флешку, решил разобраться, что еще он делает и в чем вообще заключается суть его работы, а главное – как изгнать эту заразу с компов и «зараженных» флешек.
Статья будет полезна тем, кому интересна область анализа ПО, независимо от квалификации и навыков (специалисты могут в комментарии написать о своем опыте).


Анализ видимых действий сбор сведений


Еще до копирования образца на флешку я знал, что с такими флешками происходит:
  • В папку 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 показал:

image

Наивно конечно было полагать, что файл ничем не упакован, и после открытия файла в Resource Hacker догадки подтвердились:



Зашифрованые ресурсы (возможно ключ для распаковки, данные, или просто мусор). В любом случае на невинный файл уже не похоже. В дизассемблировании я не силен, поэтому в ollydbg я особо не заcиживался: убедился, что нет антиотладки (по крайней мере на этапе установки в систему, нет читаемых строк, кроме уже попадавшего на глаза «993», и что файл все таки закриптован).

Пути установки самые обычные: файл копируется в CSIDL_APPDATA под статическим именем Kmlslc.exe, ключ автозапуска – «Kmlslc» в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run. После чего запущенный файл удаляется (скорей всего удаляет уже установленный в систему вродонос, а путь передается через аргумент командной строки).
По сетевому трафику можно сказать, что это – бот. Вредонос обращается к 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, второй – писал копирование файла на флешку установку в систему и общение с админ-панелью (или гейтом).
После исследования вредоносной деятельности был написан антидот. Исходники.
Tags:
Hubs:
+18
Comments22

Articles

Change theme settings