пятница, 7 марта 2014 г.

Мой день в роли антивирусного аналитика


Я решил провести эксперимент — проверить на вкус разные ИТ-шные профессии. И первым в списке оказался антивирусный аналитик. В прошлом у меня был некоторый опыт в реверсинге, поэтому добрые коллеги сказали: «Дятлом будешь ты!» И вот мой рассказ, каково это — анализировать семплы, будучи в обойме аналитиков большой антивирусной компании.

ИДИ И РАБОТАЙ!

Утро, 30 января. Я стою перед тремя новенькими корпусами «Лаборатории Касперского», сотрудники которой с энтузиазмом приняли наше предложение и сказали: «А почему бы и нет?» Тут надо заметить, что с момента новоселья в августе прошлого года сюда приезжало немало журналистов, которые фоткали кабинет Евгения Касперского и с радостными воплями постили фоточки в Facebook. Ми-ми-ми! Но мы-то с тобой знаем, что понять внутреннюю кухню компании, не поработав в ней хотя бы денек, невозможно. Сфотографировать пирожок в буфете и голубоглазую блонди на ресепшене может каждый. Мы же попробуем сделать реальную работу — проанализируем парочку семплов, почувствовав себя в шкуре антивирусного аналитика. По крайней мере, я договаривался об этом.


11:00 НАЧАЛО ДНЯ

На входе меня встретила приятная девушка Маша из департамента корпоративных коммуникаций. Чтобы ты понимал: это те люди, которые делают так, чтобы журналисты писали про компанию только хорошее. Маша явно оказалась бывалым бойцом. Она точно знала, куда меня вести. Завтракать! Вообще, если бы так начинался день антивирусного аналитика, то я бы подписался на работу прямо сейчас. Но мы с тобой понимаем, что это не так:).

11:30 ЗНАКОМСТВО С ВИРУСНОЙ ЛАБОРАТОРИЕЙ

В самом начале меня познакомили с двумя моими наставниками — Борисом и Олегом, опытными антивирусными аналитиками. Наверняка их предупредили, что придет какой-то журналист, с которым придется целый день нянчиться и делать вид, что у него получается работать :). Эй, парни, надеюсь, я вас не разочаровал.

Они немного рассказали о самой вирусной лаборатории. Смена рядовых антивирусных аналитиков (в простонародье — «дятлов») в московском офисе начинается в 13:00 и заканчивается в 21:30. Раньше ребята работали круглосуточно в четыре смены, но сейчас время распределено между московским, американским и китайским офисами. Умно: получается так, что все работают в дневное время. Именно к этим парням поступают всевозможные вредоносные и не очень файлы от пользователей, ханипотов и партнеров (других антивирусных компаний и некоторых небезызвестных проектов вроде VirusTotal).

Поток файлов очень большой (ежедневно обрабатывается более 315 тысяч вредоносных объектов), поэтому в ход пускается и автоматика, которая может дать вердикт большей части поступающих файлов. Оставшаяся же часть ложится на плечи немногочисленных участников знаменитого круглого стола (смотри фотографию выше). Подавляющее большинство файлов здесь приходится на операционные системы Windows (кто бы сомневался), все остальные платформы по-прежнему составляют доли процента. Впрочем, отставим холивар.

Над самим круглым столом расположены мониторы с даш-бордами, показывающие статистику в реальном времени, в том числе количество обработанных каждым участником семплов. В работе присутствует определенный соревновательный дух, но на лошадку с моим именем я бы сегодня не ставил.

Задача аналитка предельно понятна: после того как файл попал в его руки, ему нужно определить, какие действия выполняет семпл. Необходимости описывать в деталях деятельность каждого образца нет, нужно лишь выявить конкретные вредоносные действия или их отсутствие (конечно же, на анализ нередко приходят вполне себе легитимные программы). Отдельно стоит передать привет тем пользователям, которые присылают архив всего диска С: или папку WINDOWS с комментарием: «У меня тут что-то не так работает, проверьте, плиз».

В зависимости от обнаруженных активностей семплу присваивается определенный тип. У Kaspersky Lab существует строгая классификация объектов, одна из самых распространенных в антивирусной индустрии, в том числе и у других антивирусных вендоров.

12:00 ПОДГОТОВКА К РАБОТЕ

Первый день антивирусного аналитика начинается незатейливо — с настройки рабочего ноутбука. Понятно, что надо заранее позаботиться о безопасности при анализе поступающих файлов, чтобы случайно не заразить рабочую систему. Вдумчивый читатель заметит: почему бы не использовать изолированное окружение, виртуальные машины? И будет прав, эти методы тоже активно используются, но имеют недостатки, так как серьезная малварь всегда пытается определить запуск в виртуальном окружении и лишний раз себя не выдавать. Для безопасной работы на компьютер устанавливается родной антивирус Касперского, а в исключения добавляется рабочая папка с семплами: иначе часть рабочего материала может ликвидироваться еще до анализа. Также настраивается политика ограниченного использования программ, а именно запрещается запуск файлов из рабочей папки с потенциально опасными расширениями. Это делается стандартными средствами Windows.

Судя по всему, далее новоиспеченный антивирусный аналитик устанавливает необходимое специализированное ПО для анализа, но на моем ноутбуке оно уже было:

• IDA Pro — Ида не нуждается в представлении. Известнейший мультиплатформенный дизассемблер, который поддерживает множество форматов файлов, обладает широкой функциональностью и автоматическим анализатором кода;

• HIEW — олдскул, известный дизассемблер. В отличие от неповоротливой IDA Pro, он легок и быстр, хотя и не обладает таким продвинутым анализатором кода и наличием разнообразных приблуд;

• ILSpy — декомпилятор файлов для платформы .NET. Как известно, исполняемые файлы .NET компилируются в промежуточный MSIL-код, непригодный для взора обычных дизассемблеров, на этот случай есть инструменты вроде ILSpy;

• VB Decompiler — декомпилятор для исполняемых файлов Visual Basic. На выходе дает файл, по содержанию напоминающий исходный код исполняемого файла, по которому можно определить суть проделываемых им действий.

Конечно, это далеко не полный набор инструментов, используемых в работе, но мне на день хватило и этого. Кстати, интересный момент: в начале его пути антивирусному аналитику не разрешается использовать никаких средств динамического анализа (OllyDbg, WinDbg, etc.). Только статика, только хардкор!

12:30 РАЗМИНКА

Когда все было готово к бою, мне на выбор было предоставлено несколько файлов, которые предстояло проанализировать. Хотелось для начала взять что попроще, но, к сожалению, по имени файлов судить было невозможно. Названия представляют собой нечто вроде хеша MD5, иначе говоря — бессмысленный набор цифр и букв. Расширений нет. Тогда я решил обратить внимание на размер файлов и взял самый мелкий. И не ошибся: этим файлом оказался слегка обфусцированный скрипт на Visual Basic. Для его анализа достаточно было обычного Notepad’а и немного наблюдательности. Специально для читателей я размещаю этот пример в первозданном виде на страницах журнала и не буду раскрывать деталей деятельности данного образца. Скажу лишь только, что семпл относится к категории Trojan-Downloader. Первый готов, переходим к следующему примеру!

13:30 ВЫСОКОУРОВНЕВЫЙ УЖАС CALL’OB И ПЕРЕХОДОВ

Следующий файл я выбрал уже случайным образом, и он оказался более весомым — порядка сотни килобайт. В IDA Pro я заметил интересную строку, в которой фигурировали слова Borland и Delphi, что недвусмысленно намекало на средство разработки этого семпла. Специфика Delphi в том, что начинать анализ исполняемого файла с точки входа бесполезно чуть менее чем полностью: при таком подходе аналитик столкнется с over9000 всяческих вызовов и переходов в ассемблерном коде. Гораздо более правильным подходом будет начинать с другой стороны — просмотреть список используемых строк и импортов функций. В списке строк были обнаружены весьма интересные элементы, содержащие названия всех функциональных клавиш на клавиатуре. А в импортах — функция, которая возвращает нажимаемые на клавиатуре кнопки. Также были замечены импорты функций создания и записи в файл. После просмотра соответствующих мест в коде, где используются эти функции, был вынесен окончательный вердикт — этот семпл относится к категории Trojan-Spy. Однако в этом случае была представлена лишь часть троянского функционала, то есть сбор вводимой с клавиатуры информации, но никак не была реализована передача лог-файлов злоумышленнику. Это означает, что перед нами лишь один из модулей троянской программы.

14:30 ОБЕД

Обед оказался еще вкуснее, чем завтрак. Конечно, уже без улыбающейся девушки напротив, но зато с разговорчивым аналитиком, который посвящал меня в тайны касперского двора. Тут надо сказать, что ЛК компенсирует сотрудникам 300 рублей на питание ежедневно. Способ проверенный: хочешь привлечь классных сотрудников — дай им крутую задачу и хорошо накорми. Даже обидно: как мало нам надо :).

15:00 ПРЕПАРИРОВАНИЕ ПАЦИЕНТА НА VISUAL BASIC

После обеда снова в бой. Еще один семпл на VB. Но этот объект отличался от первого тем, что здесь мы имеем дело со скомпилированным файлом, то есть исполняемым файлом Visual Basic. Это легко узнать по строковым константам, используемым в файле. К счастью, в природе существует прекрасная утилита VB Decompiler — декомпилятор для исполняемых файлов Visual Basic. Она преобразует исполняемый файл в скрипт на VB, более пригодный для анализа, хотя и в не сильно привлекательном виде. Быстрый анализ выявил, что этот семпл призывал пользователя зайти на некоторые подозрительные сайты. С одной стороны, это не является зловредной активностью, с другой — на этих сайтах пользователя, скорее всего, ждут неприятности, поэтому детектировать такие объекты тоже нужно. Такие программы будут относиться к категории Riskware. Выбор, детектировать или нет подобные программы, лежит на пользователе. По умолчанию в антивирусных продуктах конкретно Kaspersky Lab детектирование Riskware отключено.

16:00 СТАРЫЙ ДОБРЫЙ СИ

Честно сказать, меня немного опечалило такое большое количество выпавших мне высокоуровневых зловредов, однако, как выясняется, это устойчивый тренд. Доходит до того, что вирусные писатели вконец наглеют — пишут малварь на каком-нибудь питоне или языке для автоматизации Autolt, а потом компилируют это дело в exe.

Но все-таки удалось найти что-то более классическое — файл на языке С. То количество функций, которые я увидел в экспортах, подсказывало, что мы имеем дело с динамически подключаемой библиотекой. А имена экспортируемых функций намекали на то, что перед нами один из модулей троянской программы. Кроме того, в строковых константах были обнаружены имена многих антивирусных продуктов. Можно сделать вывод, что здесь используется какой-то обход антивирусов. Однако бывает так, что и во вполне безобидных программах появляются подозрительные строки с названиями антивирусов и путей их установки. Например, WinRAR: тут эти строки служат для того, чтобы можно было удобно просканировать архив на наличие вирусов через контекстное меню. В итоге можно сказать, что анализируемый объект с высокой долей вероятности попадет в категорию Trojan, хотя сама по себе библиотека и не выполняет никаких вредоносных действий.

17:30 ЭКСКУРСИЯ ПО ОФИСУ KASPERSKY LAB

День близился к завершению, и поэтому нужно было закончить одно начатое дело. А именно — посмотреть офис компании. Как я уже говорил, новоселье в этом месте справлялось относительно недавно — в августе прошлого года. Офис, как это сейчас принято, построен по принципу openspace — в виде открытого пространства без кабинетов. Мне такой подход нравится, хотя немало людей сейчас скажут: «Кошмар!» Стеклянные перегородки, диваны для отдыха, пикник-зоны с кофе и фруктами — все сделано для удобства сотрудников. Я, как человек увлеченный, особо хочу отметить тренажерный зал, не уступающий по оборудованию многим фитнес-центрам. Кстати, у ЛК есть даже своя команда по пауэрлифтингу, и этому виду спорта в зале уделено особое внимание. Словом, мне понравилось :).

ЗАКЛЮЧЕНИЕ

За неполный рабочий день я сумел разобрать четыре семпла. Не без посторонней помощи, конечно :). Для типичного антивирусного аналитика это непозволительно мало — за такое, наверное, даже стреляют. Средний темп работы должен быть в четыре-пять раз быстрее! Здесь может показаться, что работа аналитика очень напряженная, но это не совсем так. Обстановка в лаборатории довольно спокойная, никакой суматохи я не заметил. Поэтому я сделал вывод, что не они очень быстро работают, а я — очень медленно :). И это нормально, за первый день работы антивирусный аналитик может разобрать и один семпл, а скорость приходит с опытом. По крайней мере, меня так утешали.

(с) Павел Круглов