Процесс заражения
Соответственно, различные компоненты вредоносной программы в целях инфицирования операционной системы могут действовать совместно. В качестве примера такой функциональной интеграции можно рассмотреть механизм заражения Microsoft Windows одной из ранних версий вредоносной программы, принадлежащей к семейству Ramnit (Rmnet).
Первым на атакуемом компьютере запускается дроппер, который извлекает из своего тела, расшифровывает, а потом помещает во временную папку инфектор загрузочной записи и несколько модулей, реализованных в виде динамических библиотек. Затем дроппер запускает инфектор с помощью одной из системных функций, после чего файл инфектора удаляется.
После успешного запуска инфектор модифицирует основную загрузочную запись компьютера (MBR, Master Boot Record) с целью обеспечения запуска модулей Rmnet до старта средств антивирусной защиты, если таковые установлены на инфицированной машине. Оригинальная MBR вместе с частью вирусной загрузочной записи перемещается в конец диска.
При запуске операционной системы вредоносная программа получает управление, имеющийся в ее архитектуре инжектор встраивает модули Rmnet в один из запущенных процессов, в контексте которого они начинают выполняться. Один из модулей предназначен для саморепликации вредоносной программы, второй выполняет функции бэкдора, третий осуществляет мониторинг сетевого трафика, и, наконец, последний реализует функцию кражи паролей от различных приложений, в частности FTP-клиентов. Описанная здесь схема заражения представлена на рис. 11.
Рис. 11. Одна из реализаций схемы заражения ОС Windows
В зависимости от модификации и типа вредоносного приложения механизм заражения может значительно меняться: представленный выше весьма упрощенный алгоритм является лишь одним из множества возможных вариантов и достаточно схематичен. Современные вредоносные приложения могут использовать различные руткит-технологии, позволяющим им эффективно скрывать свое присутствие в операционной системе, а также применять всевозможные методы антиотладки.
Инфицирование файловых объектов
Современные файловые вирусы реализуют различные методы заражения файлов, иногда достаточно изощренные. В общем случае механизм заражения файловых объектов можно упрощенно представить следующим образом. Определив по тем или иным заданным вирусописателем критериям подходящий для заражения файл, вирус модифицирует его, дописывая в его структуру собственное тело (иногда — в зашифрованном виде, в этом случае при выполнении вредоносного кода задействуется специальный механизм его расшифровки). В частности, вирус может поместить свою копию в начало файла, а оригинальное содержимое перенести в его конец. Затем вирус изменяет код приложения таким образом, чтобы при его запуске первым управление получил встроенный в него вредоносный компонент (например, размещая в соответствующей секции файла команду перехода на начало вируса). После выполнения основного тела вируса управление передается обратно инфицированному приложению, и оно выполняет свои функции так, как и было изначально задумано его разработчиками. Пользователь в большинстве случаев не замечает того, что в момент старта программы произошло что-то необычное. Такой метод заражения можно условно представить в виде схемы (рис. 12).
Рис. 12. Один из возможных алгоритмов заражения файловых объектов вирусом
Существует вариант заражения, при котором оригинальный файл, наоборот, в том или ином виде сохраняется внутри вредоносной программы и в момент запуска вируса отображается в память компьютера или сохраняется в какой-либо папке на диске и запускается оттуда. Схожий алгоритм использовали, например, вирусы семейства Neshta. В процессе заражения машины вирус сохранял свою копию в папке установки Windows под именем
С целью избежания повторного заражения вирусы, как правило, используют специальные уникальные идентификаторы — в процессе заражения файла инфектор проверяет наличие в структурах файла соответствующей строки, и в случае ее обнаружения заражения не происходит. Описанная выше схема представлена на рис. 13.
Рис. 13. Альтернативный алгоритм заражения файловых объектов вирусом
Существуют и альтернативные методы заражения, используемые злоумышленниками значительно реже. Например, известно семейство вредоносных программ (иногда их называют общим термином «вирус-компаньон»), действовавших достаточно просто: они сохраняли свою копию в той же папке, где расположен исходный файл приложения, причем с тем же самым именем, а оригинальный исполняемый файл переименовывали. При запуске такой программы пользователем сначала запускался вирус, а после того, как он отрабатывал, управление передавалось оригинальному приложению.
Методы обеспечения автоматического запуска
Собственно, способов, позволяющих вредоносной программе автоматически запуститься на инфицированном компьютере, не так уж и много, и все они зависят в первую очередь от типа операционной системы, в которой действует вредоносная программа, а также от ее типа. Например, троянцы в Mac OS X обеспечивают собственную автозагрузку с использованием файлов PLIST (Property List). Буткиты, о которых мы уже беседовали ранее, модифицируют для этих целей загрузочную запись, получая, таким образом, возможность запуститься одновременно с операционной системой (либо даже до завершения процесса ее загрузки), однако в любом случае — до момента старта действующих на компьютере антивирусных средств защиты.
На ранних этапах эволюции антивирусных программ для ОС Windows троянцы зачастую просто создавали скрытый ярлык, указывающий на исполняемый файл вредоносной программы, в системной папке автозагрузки Windows. Большинство современных угроз для этой цели модифицируют отвечающую за автозапуск приложений ветвь системного реестра, как правило, выбирая в этом качестве ветвь
Вредоносные программы для ОС Linux используют другие методы автозапуска, обусловленные особенностями архитектуры этой операционной системы. Так, некоторые Linux-троянцы задействуют для данных целей службу выполнения приложений по расписанию (планировщика задач) cron, создавая соответствующие записи в конфигурационном файле crontab. Другие изменяют содержимое служебной директории «
Инжекты
В настоящее время известно порядка 20 различных практических методов выполнения инжектов в процессы, запущенные в ОС семейства Microsoft Windows. Я не буду описывать их подробно, поскольку соответствующую техническую информацию можно без труда отыскать в популярных учебниках по программированию. В общем случае (самый распространенный метод) последовательность действий вредоносной программы такова:
• выбор приложения, в которое будет осуществляться инжект;
• поиск и получение соответствующего дескриптора процесса;
• выделение в адресном пространстве процесса памяти для внедрения вредоносного объекта по соответствующему адресу;
• копирование вредоносного компонента в выделенную область памяти;
• создание нового потока в виртуальном адресном пространстве процесса, в который внедрен вредоносный код.
Многие разработчики инжектов используют для реализации данного механизма стандартные функции API, например, WriteProcessMemory для копирования кода в память процесса и CreateRemoteThread для запуска удаленного потока. Другие поступают иначе. Так, создатели некоторых образцов троянцев семейства Trojan.Inject использовали альтернативную методологию: инжектор вредоносной программы создавал «замороженный» экземпляр процесса
В некоторых, довольно редких, случаях инжекты выполняются с использованием различных уязвимостей или недокументированных возможностей тех или иных компонентов операционной системы. Так, сразу несколько троянских программ использовали в свое время уязвимость в компоненте
Перехват вызовов функций
Для реализации различных практических задач многие вредоносные программы обладают механизмом перехвата вызовов API-функций в процессах других приложений. Иногда эту технологию называют «хуками».
Кратко процедуру «хукинга» можно описать следующим образом. Очень многие приложения, выполняющиеся в среде Microsoft Windows (если не сказать «почти все»), используют для своей работы так называемые динамические подключаемые библиотеки (Dynamic Link Library), физически представленные в виде файлов с расширением .dll. Динамические библиотеки в свою очередь содержат определенный набор используемых приложениями функций. Сделано это, чтобы «разгрузить» само приложение, избавить его от «лишнего» кода. Например, разные программы могут многократно использовать одну и ту же функцию. Вместо того чтобы размещать ее код в самом приложении, разработчики позволяют этой программе обращаться к соответствующей динамической библиотеке и вызывать нужную ей функцию оттуда. При этом подразумевается, что одной стандартной библиотекой может пользоваться сразу несколько разных программ.
Когда программа запускается на выполнение, ОС Windows создает для нее отдельный
Рис. 14. Стандартный механизм работы приложения и перехват вызовов функций с передачей управления на вредоносный объект Собственно, задача «хукинга» заключается в том, чтобы «убедить» программу, будто нужная ей функция хранится не по этому адресу, а расположена в другом месте, например, в совершенно иной динамической библиотеке, которая была предварительно встроена в процесс методом
Практически перехват вызовов функций осуществляется обычно перестановкой указателя, то есть, изменением содержимого этой самой «таблицы зависимостей» таким образом, чтобы имя вызываемой функции ссылалось в конечном итоге на нужный злоумышленнику адрес функции в памяти процесса.
Второй метод носит наименование code injection и заключается в том, что злоумышленник непосредственно в памяти процесса заменяет первые байты кода самой функции, вставляя туда инструкцию безусловного перехода на собственную, вредоносную функцию, после выполнения которой управление (в случае необходимости) возвращается обратно оригинальной функции. Этот метод чуть более сложен в реализации и потому встречается на практике реже.
Так, некоторые банковские троянцы при запуске снимают хуки с ряда функций системных библиотек с целью обхода различных инструментальных средств, позволяющих исследовать вредоносную программу — таким образом реализуется механизм антиотладки. Установка перехватов вызовов функций широко используется и в целях непосредственного выполнения приложением деструктивных действий.
Например, встроившись в процесс Проводника, некоторые троянцы могут перехватывать вызов функции ZwQueryDirectoryFile с целью сокрытия собственных файлов на диске инфицированного компьютера — при обращении к такому файлу будет автоматически установлен код ошибки STATUS_NO_SUCH_FILE. Нередко установка хуков на определенные функции применяется троянцами-шпионами для «просеивания» сетевого трафика (сниффинга) в поисках логинов и паролей.
Существует огромное количество практических задач, которые могут быть реализованы с использованием установки тех или иных хуков. Фактически перехват вызовов функций открывает перед злоумышленниками почти полный контроль над приложением. С помощью хуков, например, можно отслеживать действия пользователя (движения курсора и нажатия кнопок мыши), предотвращать создание или закрытие окон, выгрузку компонентов приложения, перехватывать сообщения от других процессов, контролировать работу приложения с файловыми объектами и т. д.
Например, если злоумышленник хочет, чтобы другая программа не завершила используемый им инфицированный процесс, он может установить хуки на функции открытия и завершения процессов (OpenProcess, TerminateProcess), и в момент вызова этих функций другими процессами осуществлять проверку, не пытаются ли они завершить процесс его вредоносного приложения.
С этой точки зрения горизонты применения технологии перехвата вызовов функций ограничены, по большому счету, только набором самих функций, естественными рамками архитектуры операционной системы и фантазией злоумышленника.
Глава 7. Кто пишет и распространяет вирусы?
Современный мир компьютерной преступности представляет собой огромное число различных представителей пестрого племени злоумышленников. Времена энтузиастов-одиночек давным-давно канули в прошлое: в наши дни разработкой и распространением вредоносных программ занимаются целые группы сетевых злодеев, хорошо структурированные и напоминающие по своей иерархии настоящие мафиозные кланы, в которых каждому участнику отведена строго определенная роль.
По долгу службы мне приходится проводить довольно много времени на различных полуподпольных интернет-форумах, в том числе в «глубоком Интернете», где собираются многочисленные представители компьютерного андеграунда: вирусописатели, хакеры, кардеры, спамеры и прочая творческая интеллигенция эпохи высоких технологий. Коллектив там подбирается, как правило, весьма разношерстный, но достаточно интересный. Да и деньги в этом криминальном бизнесе крутятся немаленькие, по крайней мере, тема из разряда «куда вложить лишние 100 000 долларов» не является на подобных сайтах чем-то особенным. Чем же отличаются друг от друга различные представители «темной стороны» IT-технологий? Каковы источники дохода современных киберкриминальных деятелей? Давайте попробуем обобщить эти сведения в рамках настоящей главы.
Кто такие хакеры?
Всякий раз, когда в Интернете или традиционных СМИ я вижу новостные заголовки из разряда «Хакеры организовали очередную вирусную атаку» или «База данных интернет-магазина была похищена хакерами», мне нестерпимо хочется отыскать написавшего это журналиста и стукнуть его по голове чем-нибудь тяжелым. Когда-то, работая редактором компьютерного журнала, я безжалостно вымарывал подобные строки из поступавших в издательство материалов. «Почему ты с таким упорством защищаешь хакеров?» — недоумевали коллеги. «Потому что они ни в чем не виноваты», — всякий раз отвечал я.
Истинное происхождение термина «хакер» сейчас, наверное, установить уже невозможно: предполагается, что оно зародилось в кампусах и аудиториях Массачусетского Технологического университета еще в 60-х годах прошлого столетия. Бытует мнение, что словечко попало в обиход компьютерщиков из жаргона хиппи, где глагол «to hack» означал отнюдь не «взламывать», как это считается сейчас, а «соображать», «врубаться». Собственно, в 70-х «хакерами» как раз и называли тех, кто «врубается» в принципы работы компьютеров, глубоко понимает происходящие в них процессы — то есть высококвалифицированных IT-специалистов, программистов, разработчиков. Хакеры — это прежде всего исследователи, настоящие ученые из мира высоких технологий, те самые косматые парни в очках, сквозь толстые стекла которых можно поджигать муравьев. Настоящие хакеры никогда не взламывали чужие приложения или серверы ради наживы, и уж тем более не совершали преступлений — разве что порой использовали свои знания для организации безобидных розыгрышей. Говорят, один предприимчивый парень, сконструировав «bluebox» — устройство, позволявшее «обманывать» аппаратуру телефонных сетей — однажды сумел дозвониться самому Папе Римскому. Порой хакеры использовали свои умения в личных целях, но все равно старались не наносить компьютерным системам и их пользователям серьезного вреда. По большому счету, хакерами можно назвать Стива Возняка и Билла Гейтса, Линуса Торвальдса и Ричарда Столлмана. Даже создатель первой в истории человечества электронно-вычислительной машины Конрад Цузе был своего рода хакером, хотя в его времена такого понятия не существовало вовсе.
В мире существует множество IT-специалистов, которых можно назвать настоящими профессионалами своего дела. Это системные администраторы, поддерживающие целые кластеры серверов, это программисты, пишущие сложный код, это эксперты по информационной безопасности, архитекторы операционных систем, и, конечно, вирусные аналитики, исследующие опасные угрозы. И все они — немножко хакеры. Вот почему я отношусь к людям, которые заслужили право именоваться именно так, с большим и искренним уважением, ведь хакер — это звучит гордо.
Категории компьютерных злоумышленников
Для парней, взламывающих программы или удаленные серверы с целью заработка, а также разрабатывающих различные средства обхода систем лицензионной защиты, всегда существовало отдельное название —
Существуют интернет-мошенники, выманивающие у доверчивых жертв деньги при помощи специально созданных сайтов или с использованием методов социальной инженерии. Такую деятельность нередко называют
Ну, а расхожее слово «хакер», некогда обозначавшее просто высококлассного компьютерного специалиста, оказалось затерто до дыр не разбирающимися в вопросе журналистами, которые низвели IT-профессионалов до уровня компьютерных преступников и киберзлодеев. Масла в огонь подлили многочисленные онлайновые издания, благодаря стараниям которых ныне хакером себя мнит любой школьник, купивший на «Горбушке» диск из серии «1000 программ для взлома Интернета».
На чем зарабатывает компьютерный андеграунд?
Итак, некоторая часть населения «подпольного Интернета» представлена собственно вирусописателями, один из источников заработка которых — создание вредоносного ПО. Собственно, сами вирусописатели нередко дают возможность заработать другой категории специалистов, которую можно условно назвать «впаривателями», путем привлечения их к участию в партнерских программах. В этом случае наблюдается своеобразный симбиоз между двумя различными группами киберпреступников: создатели троянцев весьма охотно «покупают загрузки», то есть оплачивают другим специалистам факты инфицирования пользовательских компьютеров их творениями. Те же, кто продает загрузки, то есть, собственно, получает деньги за каждый факт заражения, обычно владеют своей действующей бот-сетью или распространяют вредоносное ПО через собственные сайты, используя методы социальной инженерии, различные системы управления трафиком (TDS), взломанные ресурсы или уязвимости популярных браузеров (а чаще и то, и другое, и третье). Чем же выгодны злоумышленникам покупки «загрузок»? Таким образом, как правило, создаются бот-сети, услуги которых также можно успешно монетизировать, рассылая спам или устраивая за соответствующее вознаграждение DDoS-атаки на неугодные серверы. Кроме того, создателям, скажем, банковских троянцев не нужно заботиться о том, как их вредоносная программа попадет на целевой компьютер — они просто покупают у «впаривателей» или «ботоводов» некоторое количество загрузок либо спам-рассылку, а потом изучают полученный «улов». Например, известны случаи, когда разработчики троянца-шифровальщика не просто предлагали всем желающим приобрести созданный ими энкодер «в аренду», но создавали для него автоматизированный управляющий сервер, на котором жертвы шифровальщика могли авторизоваться при помощи автоматически генерируемого троянцем ключа, дешифровать один пробный файл и оплатить выкуп, процент от которого тут же перечислялся распространителю этой вредоносной программы. Таким «сервисом» не могут похвастаться даже некоторые серьезные коммерческие компании!
Отдельную категорию платных (и весьма востребованных) услуг на подпольном киберрынке составляет так называемое
Весьма распространенный объект купли-продажи — наборы эксплойтов и скриптов для организации систем управления трафиком. Продаются и покупаются похищенные с компьютеров пользователей базы данных, содержащие логины и пароли для доступа к почтовым ящикам, страничкам в социальных сетях, форумам, различным сетевым ресурсам. Вся эта информация используется потом в целях мошенничества, рассылки спама, кражи конфиденциальной информации.
Довольно большим спросом пользуются так называемые дедики, или dedicated-servers, то есть выделенные серверы, которые можно использовать в различных криминальных целях: например, устанавливать на них специфическое ПО, применять в качестве прокси, использовать их как промежуточное звено при осуществлении атаки на другие сетевые ресурсы. «Дедики» добываются с использованием нехитрой технологии: сначала посредством специальных программ осуществляется сканирование выбранного диапазона IP-адресов на наличие открытых портов, затем методом подбора паролей реализуется попытка проникновения на сервер. Вы будете удивлены, узнав, сколько системных администраторов оставляет на серверах активные учетные записи с параметрами удаленного доступа из разряда admin/admin или Administrator/1234. По статистике, за одну ночь соответствующие программы обнаруживают в худшем случае два-три таких «дедика», а при удачном стечении обстоятельств улов может быть и более крупным. «Живучесть» подобных серверов зависит от того, насколько аккуратно ими пользуется злоумышленник: если не перегружать процессор машины своими задачами, не создавать бешеный трафик, прятать в системе используемое ПО и регулярно «чистить» за собой логи, аккаунт может просуществовать достаточно долго. Ну, а если злоумышленнику по каким-либо причинам неохота искать открытые dedicated-серверы самостоятельно, их можно просто купить: данные для доступа продаются в сети пачками по весьма приемлемой цене.
Еще одна востребованная услуга — предоставление абузоустойчивого хостинга, то есть хостинга, администрация которого не реагирует на жалобы пользователей и позволяет размещать в сети практически любой контент: порнографию, сайты, рекламируемые спам-рассылками, администраторские панели бот-сетей, мошеннические странички с массовыми «лохотронами» за СМС, а также веб-страницы, распространяющие всевозможное вредоносное ПО. Причем серверы таких хостинг-провайдеров далеко не всегда располагаются на Каймановых островах: гораздо чаще абузоустойчивый хостинг можно разыскать в сытой Европе. К слову, техподдержка таких провайдеров по уровню сервиса порой может дать фору даже саппорту легальных хостеров. Вот у кого следовало бы поучиться некоторым раскрученным провайдерам…
Следующим номером нашей программы является продажа трафика, в частности iframe-трафика. Требуется нагнать пару тысяч уникальных посетителей на какую-нибудь веб-страничку, чтобы накрутить счетчик? Или просто хочется раздать десятку тысяч пользователей по троянцу-даунлоадеру? К вашим услугам трафик с различных сайтов, часть из которых грешит редиректами, а некоторые оборудованы скрытыми элементами iframe и pop-up-кодом. Причем нередко заказчик может выбирать источник трафика по странам, по крайней мере, ему будет точно известно число посетителей из США, Канады, Китая, Европы. Очень удобно в целях проведения таргетинга при распространении вредоносных программ.
Вы когда-либо пытались взять кредит? Не обязательно в банке, вполне достаточно приобрести в каком-нибудь магазине мобильный телефон или стиральную машину в рассрочку. Будьте уверены: ваш комплект документов, включая отсканированную копию паспорта и водительского удостоверения (часто к этому добавляется еще и фото «клиента» с паспортом в руках) уже продается на подпольных форумах по цене примерно пять долларов за набор. Торговля сканированными комплектами документов — очень выгодная и широко развитая индустрия. С помощью таких комплектов можно, например, получить персональный аттестат в платежной системе Webmoney, или зарегистрировать домен (хотя это нетрудно сделать и вовсе анонимно), открыть счет в некоторых платежных системах. В общем, широчайшее поле для деятельности.
Отдельной категорией «кибербизнесменов» являются мелкие жулики, торгующие «угнанными» номерами мессенджеров или взламывающие под заказ почтовые ящики — в основном используя методы социальной инженерии. Методы, позволяющие выяснить у пользователя данные для ответа на контрольный вопрос, необходимый при восстановлении «забытого» пароля, достаточно просты. Иногда для этого не нужно даже беспокоить самого пользователя: чтобы ввести правильный ответ на контрольный вопрос «имя моего домашнего животного» порой достаточно прошерстить фотоальбомы в социальной сети потенциальной жертвы в поисках снимка с подписью «я и Мурзик». Случаются и более идиотские ситуации: например, в середине «нулевых» пользователям мессенджера ICQ приходили сообщения якобы от имени девушки, работающей менеджером крупной фирмы, которой — внимание! — нужно «поднять рейтинг», для чего жертве предлагалось установить в настройке профиля «аськи» предложенный адрес электронной почты и получить за это кругленькую сумму. Денег жертва, разумеется, не получала, зато получала уникальную возможность «поднять рейтинг собственного IQ», поскольку указанный в профайле «аськи» адрес e-mail — единственный способ восстановить измененный злоумышленником пароль. Сама услуга по взлому электронной почты предоставляется обычно на весьма удобных условиях: заказчик сообщает взломщику адрес ящика, к которому требуется получить доступ, он выполняет все необходимые действия, после чего отправляет клиенту письмо заранее оговоренного содержания с захваченного адреса как свидетельство того, что работа выполнена. После оплаты заказчик получает логин и пароль.
Среди прочих способов заработка можно упомянуть целую категорию людей, промышляющих охмурением страждущих любви пользователей на многочисленных сайтах знакомств. Для этого им требуется не слишком заезженная фотография какой-нибудь очаровательной особы, а также некоторые знания в области психологии. Пообщавшись с юной «куколкой» день-другой, жертва внезапно узнает, что эта милая, трогательная и красивая девочка вот буквально только что случайно потеряла мамин цифровой фотоаппарат, или отдала гопникам дорогой папин мобильник, и теперь родители обязательно ее убьют, как только узнают об этом печальном происшествии… Какой настоящий мужчина не захочет помочь барышне, которая поначалу даже будет отказываться от неожиданной щедрости своего поклонника, но потом все же согласится: волосатые красноглазые обитатели подпольных форумов очень любят пиво, а оно стоит денег… Ну, и иногда они любят пообсуждать между собой, как «этот лох классно развелся на блондинку».
Иными словами, компьютерный андеграунд — целый мир со своими принципами, традициями, сленгом, героями и антигероями, и естественно, со своими финансовыми потоками. В этом мире обитает множество людей, которые зарабатывают себе на пропитание сотнями различных способов, часто балансируя на грани закона и нередко преступая эту грань. Впрочем, для кого-то это уже давно стало привычным стилем жизни.
Так кто все-таки распространяет вирусы?
Обычно созданием и распространением вредоносных программ занимаются совершенно разные люди. Выше я уже упоминал о том, что киберпреступные сообщества в общем и целом напоминают настоящую мафиозную группировку, роли внутри которой четко поделены между ее участниками. При этом зачастую многие из них даже не знакомы друг с другом лично — все общение и взаимодействие осуществляется онлайн, с помощью распространенных в Интернете средств коммуникаций.
Ситуации порой складываются разные, но в общем случае схема разработки и распространения вируса или троянца может выглядеть следующим образом. Итак, программисты-вирусописатели создают вредоносный код. Далее он либо выставляется на продажу на различных подпольных интернет-площадках, либо разработчики организуют «партнерскую программу», к участию в которой привлекаются другие участники киберпреступного сообщества. Иногда сам процесс разработки кода дробится на определенные этапы, каждый из которых реализуется разными людьми: например, один программист создает базовый код, включающий механизмы саморепликации, другой — модули, отвечающие за антиотладку, третий разрабатывает «полезную нагрузку» — компоненты, реализующие основной функционал вредоносного приложения. Нередко определенные элементы заимствуются из кода, попавшего ранее в открытый доступ, — в подобных случаях аналитики, изучающие попавший в вирусную лабораторию образец троянца, обнаруживают в нем давно знакомые черты. Затем специалисты соответствующего профиля криптуют исполняемый файл с тем, чтобы затруднить его распознавание антивирусными программами, и тестируют получившееся приложение, чтобы убедиться в отсутствии антивирусного детекта.
На следующем этапе вредоносное приложение попадает к распространителям, которые «раздают» его пользователям на тех или иных условиях, заранее согласованных с разработчиками. Иногда вирусописатели просто покупают у владельцев ботнетов, состоящих из инфицированных троянцами-загрузчиками компьютеров, какое-то количество установок вредоносной программы на ПК жертв, иногда приобретают наборы эксплойтов и доступ к некоторому количеству взломанных веб-сайтов, после чего занимаются распространением сами. В этом случае очевидно, что взломом интернет-ресурсов, поиском уязвимостей и разработкой эксплойтов занимаются отдельные группы киберпреступников. Иногда команда разработчиков просто «сдает» своего троянца «в аренду», размещая на подпольных форумах соответствующие объявления и предлагая потенциальным партнерам различные условия — либо фиксированную помесячную оплату за эксплуатацию созданной ими вредоносной программы, либо процент от прибыли, если им принадлежит управляющий сервер с функцией биллинга. Например, подобным образом распространяются некоторые троняцы-шифровальщики: их создатели предлагают распространителям саму программу и доступ к управляющему серверу, на котором жертвы энкодера могут получить ключ для расшифровки файлов, оплатив выкуп. Прибыль делится между разработчиками и распространителями троянца.
Наконец, если вредоносная программа предназначена, например, для сбора конфиденциальной информации и шпионажа, полученные с ее помощью данные также нередко выставляются на продажу на подпольных форумах, и ею пользуются в своих целях другие злоумышленники. Так, кардеры приобретают дампы и реквизиты банковских карт с тем, чтобы впоследствии обналичить их или приобрести на них какой-либо товар и реализовать его через подставных лиц (так называемых дропов). Мошенники охотно покупают логины и пароли для доступа к учетным записям в социальных сетях, спамеры — базы действующих адресов электронной почты и т. д. Отдельные личности и группы разрабатывают поддельные веб-страницы, которые могут впоследствии использоваться для фишинга, а также их отдельные элементы, применяющиеся для осуществления веб-инжектов: весь этот «товар» охотно покупают вирусописатели и владельцы бот-сетей.
Иными словами, современный киберпреступный мир весьма неоднороден, роли в нем тщательно распределены, а подпольные форумы напоминают порой огромный восточный базар, где все продается и покупается.
Как вычислить вирусописателя?
С одной стороны, поймать сетевого злоумышленника или вычислить вирусописателя — задача не из самых простых, поскольку Интернет в сочетании с различными средствами обеспечения анонимности предоставляет в распоряжение киберпреступников весьма защищенную среду, в которой они чувствуют себя как рыба в темном омуте. С другой стороны, это ощущение полной анонимности и вседозволенности порой и подводит сетевых злодеев, заставляя их терять бдительность и оставлять следы, по которым их могут впоследствии вычислить специалисты по информационной безопасности. Существует отдельная дисциплина — форензика, — являющаяся подразделом криминалистики и занимающаяся изучением различных аспектов при проведении расследований киберпреступлений и всевозможных инцидентов в сфере информационной безопасности. Но иногда имеется возможность вычислить злоумышленника и без всякой форензики.
Так, известен случай, когда один из администраторов ботнета хранил на том же узле, где он разместил управляющий сервер своей бот-сети, личные фотографии из серии «я и моя девушка у меня дома». Снимки были выполнены с использованием смартфона Apple iPhone, который, как известно, вместе с изображением автоматически сохраняет данные о времени и географической точке, в которой был получен снимок. Вычислить злоумышленника при таких обстоятельствах не составило особого труда.
В другой подобной ситуации киберпреступник оказался более умен и не хранил на управляющем сервере какую-либо компрометирующую его информацию. Вместо этого он разместил среди обслуживающего ботнет программного обеспечения скрипт на языке PHP, через определенные промежутки времени сбрасывавший статистику по работе бот-сети СМС-сообщением на определенный номер мобильного телефона. Сим-карту, к которой был привязан этот номер, злоумышленник предусмотрительно приобрел с рук, и потому был уверен, что вычислить его персональные данные с ее помощью невозможно. Однако специалистам по информационной безопасности оказалось достаточно всего лишь «погуглить» данный телефонный номер, чтобы найти в сети несколько десятков объявлений по купле-продаже различных предметов и личных вещей, в которых нынешний владелец номера оставлял его в качестве контактного. Одним из таких объявлений оказалось сообщение о продаже автомобиля, содержащее фотографию, где был прекрасно виден государственный регистрационный знак с номером авто. Остальное было делом техники.
А вот еще один практический случай, позволивший аналитикам косвенным образом определить авторов одной из опасных вредоносных программ. В апреле 2014 года специалисты антивирусной компании «Доктор Веб» завершили исследование сложного многокомпонентного троянца BackDoor.Gootkit.112, о чем опубликовали на корпоративном сайте весьма подробный отчет. Из него, в частности, можно почерпнуть следующее. Основная полезная нагрузка бэкдора реализована в виде исполняемого файла объемом около 5 Мбайт, базовая часть которого представляет собой интерпретатор языка JavaScript под названием Node.JS, создающего удобный интерфейс для работы с различными встроенными объектами. В архитектуре этого троянца был реализован редко применяемый злоумышленниками метод внедрения вредоносного кода в процессы запущенных приложений (инжектов). Аналогичный метод ранее был подробно описан на одном из интернет-форумов пользователем, скрывающимся под псевдонимом Great. В опубликованной им статье приведены примеры кода, использующего характерные статусы возврата – в точности такие же статусы обнаруживаются и в коде BackDoor.Gootkit.112. Можно предположить, что вирусописатель в процессе создания бэкдора просто-напросто позаимствовал готовое решение из открытых источников, однако здесь внимание аналитиков привлекло еще одно обстоятельство. В примерах кода, опубликованного на форуме wasm.ru, в одну из функций передается структура с уникальным именем DRIVER_TO_SHELLCODE_PARAMETERS. Структура с таким же в точности именем встречается в материале, опубликованном в личном блоге другого автора, описывающего данную технологию инжектов. При этом в указанной статье прямо сообщается, что этот код является собственной разработкой автора блога, созданной им совместно с другим программистом по имени Илья, также известным под ником Great.
В этом же блоге автор сообщает о своей искренней приверженности фреймворку Node.JS, возможности которого активно используются в коде троянца BackDoor.Gootkit.112. Так, автор опубликовал на своем сайте несколько весьма любопытных статей, содержащих практические примеры реализации кода, одна из которых называется «NodeJS\C++: Нативное расширение для реестра» — в ней описываются методы работы с ветвью системного реестра Windows, имеющей характерное имя SOFTWARE\CXS. В другой своей статье, озаглавленной «NodeJS: Spyware на Javascript?» владелец блога повествует об архитектуре специального шпионского модуля SpywareModule, все методы в котором имеют характерный префикс «sp». Удивительно, но факт: аналогичные структуры в практически неизменном виде встречаются в дизассемблированном коде BackDoor.Gootkit.112. Как любил говорить один популярный телеведущий: «Совпадение? Не думаю».
Безусловно, размещение в Интернете статей, подробно раскрывающих некоторые технические аспекты работы вредоносных программ, само по себе еще ни о чем не говорит, однако определенные сомнения специалистов, расследующих подобные вирусозависимые инциденты, в некоторых случаях может развеять сравнение даты компиляции исполняемого файла изучаемого троняца и даты публикации текста, описывающего его внутреннюю архитектуру, известную только разработчику.
Рис. 15. Пример того, как простая публикация в блоге может навлечь на автора подозрения в вирусописательстве
А вот еще пример, связанный с распространением вредоносной программы Trojan.BtcMine.218, предназначенной для скрытной добычи (майнинга) криптовалют. Этот троянец, обнаруженный специалистами антивирусной компании «Доктор Веб», устанавливался на компьютер жертвы с помощью дроппера, написанного на языке AutoIt. При этом дроппер содержал в своей структуре следующую характерную строку:
FILEINSTALL(“C:\Users\Antonio\Desktop\Glue\Install.exe”, @ TEMPDIR & “\Setup_2.exe”)
Из этой строки становится очевидно, что некий вирусописатель, имеющей на своем компьютере, работающем под управлением Windows, учетную запись пользователя с именем Antonio, собрал на Рабочем столе своего ПК дроппер в виде файла Install.exe. Это приложение запускает на компьютере жертвы загрузчик, который, используя специальный конфигурационный файл в формате XML, скачивает из Интернета и устанавливает на атакуемую машину добытчик криптовалюты. В этом конфигурационном файле указано наименование учетной записи, в пользу которой троянец будет эксплуатировать аппаратные ресурсы зараженного ПК для майнинга криптовалюты и на которую будет перечисляться все добытое. Этого пользователя зовут Tonycraft.
Судя по всему, сам Antonio (Tonycraft) не обладает достаточно глубокими познаниями в программировании, поскольку основные модули троянца он поручил написать другому человеку. Однако и здесь Tony, судя по всему, решил немного сэкономить, выбрав в качестве своего партнера не слишком искушенного вирусописателя: создавая код троянца, тот по неосмотрительности оставил в модулях вредоносной программы следующую отладочную строку:
О чем говорит нам этот «автограф» вирусописателя? О том, что он пользуется компьютером под управлением Microsoft Windows с учетной записью «Кошевой Дмитрий», проект он назвал Miner и создал его с применением среды разработки Visual Studio 2012. Простой поиск по сети «В Контакте» без труда позволил выявить пользователя, скрывающегося под псевдонимом Tonycoin, активно рекламирующего на своей страничке сайт, посвященный криптовалюте Bitcoin. По странному стечению обстоятельств, этот же самый сайт является ресурсом, с которого установщик загружает на зараженный компьютер основной модуль троянца Trojan.BtcMine.218. Ну, а среди контактов Tonycoin при определенной настойчивости отыскивается и программист «Дмитрий Кошевой».
Известна и вовсе феерическая ситуация, когда троянец, воровавший вводимые пользователем данные в формы авторизации на сайтах «В Контакте», «Одноклассники», «Mail.RU» и «Яндекс», передавал их скрипту, работающему на принадлежащем злоумышленнику сервере. Притом домен для этого сервера он умудрился зарегистрировать на свое настоящее имя, благодаря чему специалистам по информационной безопасности с помощью запроса к службе Whois удалось выяснить его телефон, имя, фамилию и город проживания, а по этим данным — отыскать его анкету на сайте знакомств, где злоумышленник собственноручно опубликовал остальную недостающую информацию: фотографию, рост, вес, дату и место рождения, а также сведения об образовании.
Все описанные случаи свидетельствуют о том, что вирусописателей чаще всего удается вычислить вследствие элементарных просчетов в области обеспечения анонимности, а также благодаря их самоуверенности, неопытности или стремлению к дешевой славе.
Глава 8. Методы борьбы
Считается, что антивирусные программы появились на свет практически одновременно с первыми компьютерными вирусами, поскольку пользователи остро нуждались в адекватном средстве для борьбы с вредоносным ПО. История развития антивирусной индустрии насчитывает множество увлекательных страниц, однако о самой первой из них до сих пор ведутся ожесточенные споры. Кто придумал антивирусы? Когда появилась первая подобная программа? Об истории развития технологий информационной безопасности и некоторых особенностях работы антивирусных программ мы и поговорим в настоящей главе.
Немного истории
Существует мнение, что первое приложение для выявления и удаления вредоносного ПО разработал в 1984 году американский программист Энди Хопкинс — речь идет об утилите CHK4BOMB, позволявшей сканировать исполняемые файлы в поисках характерных фрагментов кода и текстовых сообщений. Другая утилита того же автора, BOMBSQAD, могла перехватывать операции записи в файл и команду форматирования. В течение длительного времени этих двух утилит было вполне достаточно для обеспечения информационной безопасности, поскольку вредоносных программ существовало не так уж и много. Например, в 1985 году по американским электронным доскам объявлений (BBS) гулял текстовый файл «Грязная дюжина» (“The Dirty Dosen — An Unloaded Program Alert List”), представлявший собой составленный владельцем одной из BBS Томом Нельфом список опасных программ, которые пользователи загружали в файлообменники. Первоначально перечень включал всего лишь 12 вредоносных приложений, но он постоянно пополнялся. Ассортимент опасных программ ширился, и вскоре простого списка оказалось уже недостаточно для отражения все новых и новых угроз — пользователи понемногу осознали необходимость в постоянной антивирусной защите.
Спрос, как известно, рождает предложение, и первая резидентная антивирусная программа под названием DPROTECT, разработанная программистом и основателем американской софтверной компании GEE WIZ Sofware Company Ги Вонгом, появилась в начале 1985 года. Программа DPROTECT распространялась бесплатно, однако желающие могли сделать добровольное пожертвование в размере пяти долларов. Приложение не использовало в своей работе вирусные базы, содержащие сигнатуры вредоносных программ, а отслеживало активность запущенных программ, перехватывая обращения к файловой системе. Таким образом резидентный монитор DPROTECT позволял обезопасить защищаемый компьютер от деструктивных действий вирусов и троянцев, которые могли, например, отформатировать диск или испортить загрузочную запись.
Вторая половина 80-х годов ознаменовалась широкой экспансией на международном рынке персональных компьютеров семейства IBM PC и ростом популярности операционной системы MS-DOS. К этому же периоду относятся и первые масштабные вирусные эпидемии: летом 1986 года множество компьютеров оказались заражены стелс-вирусом Brain. Написанный студентом из Новой Зеландии вирус Stoned, получивший распространение в том же 1987 году, заражал загрузочную запись ПК и блокируя запуск ОС. От этой напасти пострадало несколько тысяч компьютеров по всему миру. А в пятницу, 13 мая 1988 года пользователи познакомились с вирусом Jerusalem, уничтожавшим приложения при попытке их запуска. Эта вредоносная программа вызвала настоящую пандемию, распространившись на территории не только США, но также Европы и Азии. Разумеется, отыскались толковые парни, очень быстро осознавшие, что на компьютерной безопасности можно неплохо заработать — одним из них оказался простой программист из Lockheed Corporation по имени Джон Макафи, выпустивший в 1988 году коммерческий продукт под названием McAfee VirusScan, а в 1989 году основавший компанию имени себя. Вскоре, почувствовав запах прибыли, подтянулись и другие игроки: в 1991 году состоялся релиз первой версии приложения под названием Norton AntiVirus.
Ну, а на отечественном рынке истинным первопроходцем стал Дмитрий Лозинский, разработавший в 1988 году, практически одновременно с Макафи, антивирусную программу-сканер Aidstest, использовавшую технологию сигнатурного поиска угроз. Приложение, дистрибуцией которого занималась компания «Диалог Наука», быстро завоевало заслуженную популярность у пользователей, на долгие годы став своего рода стандартом антивирусного ПО. Дмитрий Николаевич и по сей день вносит ощутимый вклад в борьбу с вирусными угрозами — в качестве одного из ведущих сотрудников компании «Доктор Веб». За минувшие годы мир изменился до неузнаваемости, появились троянцы для различных операционных систем и мобильных платформ, а разработка антивирусного ПО превратилась в целую индустрию. Однако идеи, впервые реализованные Энди Хопкинсом в далеком 1984 году, не утратили своей актуальности и по сей день.
Компоненты антивирусной программы
Антивирусные программы различных производителей включают в себя разное число компонентов, и даже более: одна и та же компания может выпускать несколько версий антивируса, включающих определенный набор модулей и ориентированных на различные сегменты рынка. Например, некоторые антивирусы располагают компонентом Родительского контроля, позволяющего ограничивать доступ несовершеннолетних пользователей компьютера к сайтам определенных категорий, или регулировать время их работы в системе, а некоторые — нет. Так или иначе, обычно современные антивирусные приложения обладают следующим набором функциональных модулей.