[Из песочницы] История создания вируса (трояна) Zimenok
Добрый день, меня зовут Александр и я вирусописатель. Не разбегайтесь в стороны — это было уже давно и сейчас я обычный программист в обычной фирме. Однако хочу рассказать, с какими интересными вещами я сталкивался и, возможно, пояснить, что побуждает людей начинать писать вирусы. Только прежде чем осуждать меня — дочитайте до конца, пожалуйста. Посвящается всем, кто найдет для себя знакомые слова.Оглавление1. Предыстория2. Первые шаги3. Поиск талантов4. Создание своего5. Первые шаги6. Цель вижу — иду на таран7. Быть или не быть8. Кульминация9. Выводы1. Предыстория Дайте мне время и я найду рычаг, чтобы сдвинуть Землю. Поступил в институт, купили PC и появилось много свободного времени. Наверное, именно для этого и создан институт. На тот момент хорошо я знал только BASIC и Assembler — спасибо ZX-Spectrum за наше детство. Как оказалось, программировать под DOS было несложно, а кодить под Windows было еще проще, ведь в отличии от «Спектрума» за тебя в основном все делали WinAPI. Общение на форумах RTFM_Helpers и подобных помогли освоить архитектуру PC (нулевое кольцо, лазейки в Outlook, позволявшие запустить EXE файл даже просто при открытии письма и прочее) и в какой-то момент я понял, что могу сделать что-то ценное и полезное. Полезное для себя. Ведь в том время интернет был через модем и за каждый выход в интернет нужно было платить. Это было первое зерно в сторону зла. Но начнем с начала.2. Первые шаги Его путь был тернистым. Как может заработать программист, зная Бейсик и Ассемблер? Студентом я этого не понимал, и первое, во что ввязался, был частный проект создания базы данных города, где были бы описания всех фирм, их контакты и главное — быстрый поиск информации (привет дубльгис). Я написал оболочку и сверх быстрый поиск по базе, и даже уже наняли девушек, чтобы обзванивать фирмы и предлагать нашу программу, как вдруг выяснилось, что она выглядит по-разному на разных операционных системах. На ХР — все хорошо, на 98/95 уже немного все по-другому. Конечно, мой уровень (точнее редактирования ресурсов в билдере) был очень мал. Все свелось к тому, что я вышел из проекта и сделал вывод: интерфейсы и ассемблер — не мое. Обиделся на себя.3. Поиск талантов Если ты здесь — значит, на правильном пути. В какой-то момент я подхватил вирус CIH и мой компьютер пал в черный экран (да, для меня все еще 26 апреля знаменательный день). Тема меня заинтересовала, но не целью все разрушить, но обрести новые знания. Возврат в Ассемблер (поверьте, те, кто его знают — всегда к нему возвращаются) был неизбежен. Диззассемблирование кода SoftIce’ом, бессмертия в играх и отучение игр от дисков уже казалось банальным, и не надо было делать интерфейсы. Меня очень заинтересовали антивирусники и принцип их работы. Конечно, я взял за основу существующий вирус. На диске «Золотой софт 2000» их было пруд пруди. Я, как и сейчас многие авторы Хабра, анализировал его и прогонял через SoftIce и IdaPro и смог перенастроить под себя. Крики «Гениально!» и «Эврика!» опускаю, но они были. Зачем это делал расскажу позже. Я пошел дальше — опубликовал все это на своем сайте с целью показать, как же просто работает Ассемблер, и как просто работает вирус, и что это обычная программа, а не что-то ужасное, что может погубить ваш компьютер навсегда.4. Создание своего Распределение труда. В то же время меня подхватил товарищ и сказал, что я должен писать статьи, а он будет публиковать их на своем сайте — мол, это интересно и людей цепляет. Часть статей вы и сейчас можете найти, но людям всегда хочется больше. Они хотят попробовать сами. И даже тот вирус, который я приручил и написал под него программу настройки (там можно было указать почту и что-то еще), мне казался мелочью, ведь антивирусники все равно определяли его как вирус. Что делать? Вот оно — первая ласточка — почему пишутся вирусы — любопытство. Как работает антивирусник? Почему он так быстро сканирует файл, проверяя его на миллионы штаммов вирусов? В конце концов, интересно, как быстро новый вирус появится в базе антивируса, и кто первый его определит? Разве вам не интересно?5. Первые шаги Чем проще — тем гениальнее. Первая мысль — это спрятать существующий вирус от антивирусника. Буквально за день была написана такая программа, которая брала любой ЕХЕшник и, подставляя себя в вызов, XORила код (те, кто в курсе, знают, что это самый примитив в шифровке кода). И, о, чудо! Антивирусники перестали видеть вирус. Конечно, я поделился с миром этой информацией и программой. Тут надо сказать, что читателей было не особо много, может, сотня, может меньше, но, конечно все подначивали — давай еще и т.д. Я считал, что статьи и код, который я привожу, не вредит никому и лишь помогает тем, кто разбирается, чтобы лучше понять процессы. Естественно, я всегда выкладывал и полные исходники. Более того, в коде я указал свой электронный адрес и его было видно любым HEX-редактором (DosNavigator в тот момент был моим любимчиком). Zimenkov$Goldmail.ru, конечно, давно уже отключен, но по нему можно еще найти часть статей.6. Цель вижу — иду на таран Из искры зародится искра v2. Мысль росла. И главное, что это очень интересный опыт именно программирования в конкретной архитектуре (Windows). Не было какого-то момента принятия решения — плохо или хорошо. Не было какого-то понимания —, а что если кто-то плохой может воспользоваться этим. Было понимание, что это обычная программа, и что я никого не обкрадываю и никому не делаю плохо. Да и интернет был не в каждом доме.Конечно, только сейчас, спустя десятки лет, я сравниваю это с созданием мыла в домашних условиях. В неумелых руках может и пожар случиться. Но придраться ко мне было сложно — я по-прежнему был честен перед законом. Как-то просто и быстро все получалось, в результате меня подтолкнули на мысль написать собственный вирус и я написал очень простой троян. Он висит в памяти под чужим процессом (в памяти explorer’а) и перехватывает все введенные символы. Если они вводятся в поле password (со звездочками), то он запоминал пароль и заодно запоминал все соседние текстовые поля (логин). Как только появлялась связь с интернетом, отправлял данные почтой хозяину от имени explorer«а, конечно (ни один файрвол не придерется). Пока никак не распространялся, так как делался для друга, который хотел узнать пароль почты своей девушки. Мне интересно — ему приятно. Или наоборот.
Программа (вирус) работала. Читатели попросили расширить функционал. Я добавил перехват файлов с указанным расширением и отправку на ftp. Угадайте, как был назван вирус? Да простят мой юношеский энтузиазм, конечно, фамилией его создателя — Zimenok. Я немного исказил фамилию — это школьная кличка. Именно под эти именем сейчас он и хранится в просторах баз антивирусников.
7. Быть или не быть Очень много интересных идей присылали читатели. Мое условие было одно — вирус был нераспространяемым. То есть следите за конкретным человеком, но не за всеми подряд. Тем не менее один человек умудрился распространить его массовой рассылкой писем. Угадайте, что было в письме. Девушка Даша мечтает познакомиться. Каждый третий клюнул и запустил неизвестный ему ЕХЕшник. О, времена, о, нравы! Кто-то умудрился даже перехватить пароль от веб-кошелька и файл-ключ. Каждый второй пока пробовал вирус, запускал его у себя и случайно отправлял свои данные. Но не один не посмотрел исходники. Конечно, я отправлял все через свой сайт и пока не давал никому данных, которых считал неуместными. Пока, однажды, у меня не закончился интернет, а передо мной лежал листочек с украденным (было-было, но прошло более 15 лет) логином и паролем для доступа. Как сейчас помню, voronin пароль bun***x и названием провайдера и безлимитным доступом.Если бы у вас был пароль — воспользовались бы? Если бы на улице лежал бы кошелек — взяли бы? А нефть нашли у себя на даче — отдали бы государству? Очень сложные моральные вопросы. Одно дело сказать всем «да я бы никогда»! Другое дело — хоп, и никто не заметил. Быть или не быть? Я выбрал — не быть. И закрыл доступ всем пользователям вируса, но оставил исходники в нетронутом виде. Код казался очень простым, да и я понимал, что рано или поздно он потеряет актуальность, как и все в этом мире.
8. Кульминация С момента публикации в сети вируса и его бурного обсуждения (копипаста другими сайтодержателями) прошел месяц. Вдруг приходит письмо от Касперского. С Евгением Касперским так и не пообщались. А вот с Крисом Касперски мы пересекались пару раз на RTFM_Helpers форумах — человек очень умный и явно ему было скучно среди обычных программеров. Кстати, помню на том форуме я ляпнул, что шифрование с открытым ключом невозможно взломать, даже если оно будет простое. В течении недели мой закодированный текст был взломан командой форума, но это отдельная история. Возвращаясь к письму: оно было без угроз и очень корректное, дословно не помню, но смысл, что я занимаюсь неправомерными вещами и пора сворачивать лавочку. Что, собственно, мы тогда и сделали — прекратили писать статьи и функционал вируса. Где-то через неделю вирус стал определяться Касперским. Спустя еще месяц (после этого) стал определяться ДокторВебом. Спустя еще месяц (после уже доктора) Авастом и остальными. Возможно, это мое субъективное мнение, но база первого как-то продается остальным по ступеням. В общем, победил Касперский. Более того, письмо было только от них.9. Выводы Много других интересных задач было сделано с опытом «написания вируса». Это, к примеру, работа с аськой и ее протоколами; сбор данных о сотовых вышках и их положений (повторюсь, был 2000-й год и тогда такой информации еще не было) для создания программы слежения за человеком по сотовым вышкам. Помню, тогда таксисты связались со мной — предлагали на основе этого сделать программу. Как любитель игр — сделал программу, делающую бессмертия в играх, которые не позволяли переключаться ALT+TAB«ом из игры. И главное, что для создания собственного проекта нужно немного — идея, мелкие инструменты и желание.Один из инструментов — Small HTTP server. Пожалуй, и сейчас это лучший эмулятор HTTP и почтовых серверов. При помощи него можно подключаться к FTP или MAIL серверу — самой этой программе. Вспомнил про него — так как он многим полезен и сейчас. Недавно занимались отправкой писем клиентам — через него я тестировал массовую отправку. Удобно и просто.
Зачем все это делалось? Зачем дети что-то делают? Зачем что-то происходит? Это неправильные вопросы. Зачем они покупают дорогие машины, зачем они качаются до таких размеров? Ответ уже понятен? Каждый увидит свой смысл в любом действии. Тот, кто знает только С++, скажет, что Ассемблер сложен и неэффективен, и найдет еще кучу минусов. Тот, у кого телефон на Android, скажет, что он лучше всех. Поэтому я решил, что любую свою точку зрения буду строить на опыте обеих сторон. Именно поэтому я знаю и Ассемблер, и С++, именно поэтому есть и Android, и Apple. Нет лучших точек зрения или языков программирования. Каждый язык, каждое мнение под определенный круг задач и требований.
P.S.: Не считаю себя выдающимся или крутышкой. Наоборот, всегда хочу развиваться. Мне было бы интересно выслушать мнения других людей, что нужно было бы добавить в статью, услышать вопросы или негатив — понять вашу точку зрения, сложившуюся на основе вашего опыта.