История создания вируса (трояна) Z (рассказ)
Добрый день, меня зовут Александр и я «вирусописатель». Не разбегайтесь в стороны — это вымышленный рассказ о том, что было уже давно. Сейчас я обычный программист в обычной фирме. Однако хочу рассказать, с какими интересными вещами я сталкивался в программировании. Посвящается всем, кто найдет для себя знакомые слова.
Оглавление
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 в тот момент был моим любимчиком). Из этого примера я понял, что теряется смысл антивируса — если вирус новый.
6. Цель вижу — иду на таран
Из искры зародится искра v2. Мысль росла. И главное, что это очень интересный опыт именно программирования в конкретной архитектуре (Windows). Не было какого-то момента принятия решения — плохо или хорошо. Не было какого-то понимания — а что если кто-то плохой может воспользоваться этим. Было понимание, что это обычная программа, и что я никого не обкрадываю и никому не делаю плохо. Да и интернет был не в каждом доме.
Конечно, только сейчас, спустя десятки лет, я сравниваю это с созданием мыла в домашних условиях. В неумелых руках может и пожар случиться. Но придраться ко мне было сложно — я по-прежнему был честен перед законом. Программа работала только на моем компьютере и впоследствии была удалена. Был написан очень простой троян для моего друга. Он висит в памяти и перехватывает все введенные символы. Если они вводятся в поле password (со звездочками), то он запоминал пароль и заодно запоминал все соседние текстовые поля (логин). Как только появлялась связь с интернетом, отправлял данные почтой хозяину. Никак не распространялся, так как делался для друга, который хотел узнать пароль почты своей девушки. Мне интересно — ему приятно. Или наоборот.
7. Быть или не быть
Конечно, я отправлял все через свой сайт и получилось так, что сам узнал пароли моего друга. Однажды у меня закончился интернет, а передо мной лежал листочек с его логином и паролем для доступа.
Если бы у вас был пароль — воспользовались бы? Если бы на улице лежал бы кошелек — взяли бы? А нефть нашли у себя на даче — отдали бы государству? Очень сложные моральные вопросы. Одно дело сказать всем «да я бы никогда»! Другое дело — хоп, и никто не заметил. Быть или не быть? Я выбрал — не быть. И не воспользовался паролем и удалил программу.
8. Кульминация
Хоть я и называю программу вирусом, но в действительно это была обычная программа, вызывающая обычные функции WinAPI. Программа не распространялась и не распространяла себя, а запускалась один раз и на одном компьютере. Впоследствии была удалена, а сейчас уже много лет как потеряна и забыта. Ни исходников, ни каких-либо упоминаний не осталось. Я вовремя одумался и сделал выводы.
9. Выводы
Много других интересных задач было сделано с опытом «написания вируса». Это, к примеру, работа с аськой и ее протоколами; сбор данных о сотовых вышках и их положений (повторюсь, был 2000-й год и тогда такой информации еще не было) для создания программы слежения за человеком по сотовым вышкам. Помню, тогда таксисты связались со мной – предлагали на основе этого сделать программу. Как любитель игр – сделал программу, делающую бессмертия в играх, которые не позволяли переключаться ALT+TAB’ом из игры. И главное, что для создания собственного проекта нужно немного – идея, мелкие инструменты и желание.
Один из инструментов — Small HTTP server. Пожалуй, и сейчас это лучший эмулятор HTTP и почтовых серверов. При помощи него можно подключаться к FTP или MAIL серверу – самой этой программе. Вспомнил про него – так как он многим полезен и сейчас. Недавно занимались отправкой писем клиентам – через него я тестировал массовую отправку. Удобно и просто.
Зачем все это делалось? Зачем дети что-то делают? Зачем что-то происходит? Это неправильные вопросы. Зачем они покупают дорогие машины, зачем они качаются до таких размеров? Ответ уже понятен? Каждый увидит свой смысл в любом действии. Тот, кто знает только С++, скажет, что Ассемблер сложен и неэффективен, и найдет еще кучу минусов. Тот, у кого телефон на Android, скажет, что он лучше всех. Поэтому я решил, что любую свою точку зрения буду строить на опыте обеих сторон. Именно поэтому я знаю и Ассемблер, и С++, именно поэтому есть и Android, и Apple. Нет лучших точек зрения или языков программирования. Каждый язык, каждое мнение под определенный круг задач и требований.
P.S.: Мне было бы интересно выслушать мнения других людей, что нужно было бы добавить в публикацию, услышать вопросы или негатив – понять вашу точку зрения, сложившуюся на основе вашего опыта. Не особо голливудский сюжет, но надеюсь мысль рассказа поймут все верно.
Alex_Zimenkov
История создания вируса (трояна) Z (рассказ)_Alex_Zimenkov
https://zxaaa.net/view_demo.php?id=5660

Автор демы - автор вируса Троян на писи. Знаменитость получается.
https://youtu.be/GzQJ1z7Sh2M

Автор демы - автор вируса Троян на писи. Знаменитость получается.
https://youtu.be/GzQJ1z7Sh2M