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

Введение


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


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


Еще до копирования образца на флешку я знал, что с такими флешками происходит:
  • В папку 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, второй – писал копирование файла на флешку установку в систему и общение с админ-панелью (или гейтом).
После исследования вредоносной деятельности был написан антидот. Исходники.
Поделиться публикацией

Похожие публикации

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 22

    0
    Тоже была интересная фигня, что даже линукс поперхнулся флешкой. Вирус, похоже, использовал ограничения FAT32 (или вообще ФС, непонятно, являются ли "." и ".." файлами на ФС или просто мусор в выхлопе):

    root@odd:/media# dosfsck /dev/sdb1 -l|grep cave
    Checking file /cave. (CAVE~1)
    Checking file /cave./.
    Checking file /cave./..
    Checking file /cave./VKB3-RAR.EXE

    Так и не смог пофиксить ФС вручную, пришлось форматнуть. Бинарник не смог скопировать
      0
      Жаль. Интересно было бы поковырять…
      В следующий раз хоть образ с флешки снимите!
        0
        Вот тут кое-какая инфа есть, разбирался: www.linux.org.ru/forum/general/8183163

        Есть вероятность, что по этим данным вирь можно и определить
        0
        "." и ".." является обозначанием папок: "." — текущая и ".." — родительская. К примеру команда «cd ..» сменит текущий каталог на родительский.
          0
          Возможно я не понял комментарий. Но я так же встречал вирус на флешке, который действительно создает папку с именем "..", которую не было видно в проводнике, но через адресную строку (например, F:\..\) можно было зайти и найти всё содержимое флешки.
            0
            Есть ещё UNC-пути. Типа такого: \\C:\..\file
              0
              Стало интересно и полез посмотреть, что за зверь UNC-пути. Википедия мне сказала вот что:
              Синтаксис UNC-пути к каталогу или файлу следующий: \\Сервер\СетевойКаталог[\ОтносительныйПуть], где Сервер — сетевое имя компьютера, СетевойКаталог — это сетевое имя общего каталога на этом компьютере, а ОтносительныйПуть — путь к каталогу или файлу из общего каталога.
              

              и
              Некоторые API-вызовы в Microsoft Windows поддерживают использование так называемых Long UNC или UNCW: \\?\UNC\Сервер\СетевойКаталог\ОтносительныйПуть] или \\?\Диск:[\Каталог][\Файл], где Диск — буква диска, Каталог — имя каталога на диске, Файл — имя файла в каталоге или на диске
              


              Я попробовал в проводнике перейти по адресу: \\C:\ — ошибка, что не удается найти путь. Через браузер отобразилось. По совету википедии попробовал перейти по адресу \\?\C:\ и опять браузер молодец, а Проводник не молодец.
              Где использовать тогда UNC пути можно? Подскажите, уж больно интересно!
                0
                На Win7 проводник прекрасно понимает "\\?\C:\" В XP — нет. Но всегда ведь можно использовать сторонние файловые менеджеры или WinAPI
                  0
                  Я когда-то в cmd использовал.
                  Рекомендую почитать статью.
                  Только если решите экспериментировать, то делайте это на флешке, которую не жалко будет потом отформатировать.
              0
              А, ну да. Значит дело в имени файла и строгих на него ограничениях в FAT32: не получается создать файл с точкой на конце
                0
                Ну на самом деле эти ограничения обходятся, что может привести к неожиданным последствиям.
                Опять же рекомендую почитать статью.
            +3
            • Был осуществлен рекурсивный обход каталогов с помощью FindFirstFile/FindNextFile;
            • Если текущий файл являлся папкой, то атрибуты сбрасывались на FILE_ATTRIBUTE_NORMAL;


            страсть какая. я такие флешки «лечу» файлом раскукожить.bat с содержимым
            attrib -s -h -r -a /s /d

            Total Commander тоже справляется без проблем
              0
              Конкретно в этом случае наиболее правильным решением было бы просто написать скрипт к AVZ, т.к. он используется для снятия хуков. Но хотелось повыделываться, потому как идея написания своего сканера была давно, а тут появился предлог для начинаний.
              За команду благодарю.
              0
              Кстати говоря, при записи соответствующих доменов в файл hosts, бот не делает попытку отстука.

              Я не уверен в этом высказывании. При подключении, до обращения к DNS, трой получает IP-адрес из hosts, пытается подключиться к 127.0.0.1, а т.к. сервера нет, то соответственно соединение не открывается и в лог трафика ничего не попадает.
                0
                я устанавливал денвер на виртуалку, чтобы попытаться узнать, какой именно трафик передавался бы на сайты. Но запросы загадочным образом прекращались. Причем, если бы сопоставление IP-Домен проводилось бы через сокеты или другие API, то DNS-запросы снифер все равно бы ловил. Исходя из этого и сделал такой вывод.
                0
                Все на самом деле гораздо проще:
                1.Очищаем флешку.
                2.Создаем в корне папку «Данные».
                3.Отменяем для этой папки наследование прав доступа, устанавливаем полный доступ на чтение/запись.
                4.Самой флешке устанавливаем запрет на запись.
                5.Файлы кладем в созданную папку «Данные».

                В результате, никакая гадость не может создавать в корне разные RECYCLED и autorun.inf.
                  0
                  Это справедливо для NTFS? Или для FAT32 тоже?
                  Кстати от копирования непосредственно файла autorun.inf помогает создание одноименной папки с правами «Только чтение»
                    0
                    Только для NTFS.
                    0
                    Не уверен.
                    Некоторые руткиты вообще с системными правами работают. Им плевать на эти ограничения.
                    Хотя от простых вирусов (коих 99%) спасёт!
                      0
                      Нарыл вот еще что:
                      Вакцина для флешки

                      Вот там реально полезные вещи есть. Вирусом они легко не обходятся.
                      Вам ведь главное не столько не заразить флешку где-то, а не заразить свой комп, когда её из этого где-то приносите.
                        0
                        Для меня главным было изжить заразу с машин. А замусоренные флешки — неприятное следствие.
                        Что касается статьи в ксакепе, то ведь можно и сбросить права обратно. Червь может кстати и на себя права применять, чтобы его удалить не смогли =)
                        И хоть статья полезная, все равно сначало таки надо рубить под корень, а потом ликвидировать последствия.
                      0
                      image

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое