Как создать червяка вирус

Обновлено: 18.04.2024

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

Структура вируса
представляет собою рутины заражения файлов
и декомпрессии, после которых следует
сжатый код червя и бэкдора. Вирус
дописывает своё тело в конец заражаемых
файлов.

Анализ вирусного
компонента

Вирус использует
технологию "поиска входной точки" при
инфицировании файла. Это означает, что
вирус не модифицирует входную точку, а
размещает инструкцию перехода к своему
коду где-то посередине файла, что должно
затруднить его поиск. В результате вирус
стартует при исполнении заражённого файла
лишь тогда, когда начинает исполняться
модифицированная процедура.

Вирус так же является
зашифрованным, и при своём старте он
декриптует себя. Вирус получает таблицу
ссылок на важные для него функции ядра
путём анализа ядра win32.

Затем вирус проверяет, не
запущены ли антивирусные программы. Если он
обнаруживает их, то сразу же выходит. Список
таких программ: AntiViral Toolkit Pro, AVP Monitor, Vsstat,
Webscanx, Avconsol, McAfee VirusScan, Vshwin32, Central do McAfee, VirusScan..
Потом вирус инсталлирует свои компоненты в
системе. Они разархивируются в папку windows.
После этого создаются три файла, на них
устанавливается атрибут скрытого файла.
Эти файлы таковы:

IE_PACK.EXE - код червя.
WIN32.DLL - код червя, заражённый вирусом.
MTX_.EXE - код бэкдора.

После этого вирус
заражает исполняемые файлы и библиотеки в
текущей директории, папке windows и выходит.

Анализ червя

Для рассылки своих копий,
червь использует технологию, схожую с
технологией happy99. Червь модифицирует файл
wsock32.dll и перехватывает рутину send. В
результате червь получает контроль над
всеми данными, рассылающимися с машины в
интернет.

Как правило, файл wsock32
открыт в момент старта червя, и поэтому
запись в него невозможна. Червь копирует
данный файл в файл wsock32.mtx, заражает новый
файл и добавляет следующие строки в файл
инициализации windows:

NUL=C:\WINDOWS\SYSTEM\WSOCK32.DLL
C:\WINDOWS\SYSTEM\WSOCK32.DLL= D:\WINDOWS\SYSTEM\WSOCK32.MTX

Данные файлы
представлены файлом win32.dll, который есть
червь, заражённый вирусом.

Анализ бэкдора

После запуска, бэкдор
создаёт новый ключ по адресу [HKLM]\Software\Matrix. В
случае, если в следующий раз этот ключ
обнаружен, бэкдор не производит процедуру
инсталляции. Далее вирус создаёт следующий
ключ:

В связи с тем, что вирус
блокирует доступ к сайту AVP, лечащую версию
антивируса можно скачать тут: avp
platinum (8.7 M). В процессе сканирования вам
будет нужно снять из списка процессов
explorer.exe, чтобы avp мог вылечить ОС.

Приветствую!
Пытался придумать вводную - не получилось. Да и оно вам надо? Так что, давайте вкратце: в этой статье мы разберем такой тип вирусов, как "сетевой червь" и даже напишем одного такого.

Итак, что же такое, эти ваши сетевые черви?

Если поискать на википедии, то можно найти следующее определение: "Сетевой червь — разновидность

) компьютерные сети." и, в принципе, все верно, сетевой червь - это действительно вредоносная программа, способная воспроизводить себя на устройствах, распространяющаяся по сетевым каналам и часто, способная к самостоятельному преодолению систем защиты компьютерных сетей. При этом пользователь не подозревает о заражении своего компьютера.

Принцип работы сетевого червя довольно прост - вредоносная программа попадает на устройство, закрепляется там, выполняет вредоносные действия, если есть такая задача и распространяется дальше.

Ну что ж, предлагаю создать одного такого представителя, данного семейства вирусов.

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

, или другой страны, в которой вы проживаете.

Для начала, давайте уточним язык программирования, на котором будем творить. Я, естественно буду использовать python3 (не зря же я в этой ветке тему создал, да?), т.к. я криворукий рукожоп и не могу нормально использовать другой яп он простой и наглядный, но если есть понимание, что программа делает, то и написать её на другом ЯПе не составит труда.

Теперь определимся, какие задачи будет выполнять наша программа, после заражения устройства (червь будет создан под устройства с ОС windows):
1. Создать свою копию на зараженном устройстве.
2. Записать себя в автозагрузку, через реестр.
3. Триггернуть canarytoken (чтоб нам на почту капнуло уведомление, о том, что червь засел на очередном устройстве)
4. Обратиться к серверу и получить от него какие-либо данные (инструкции). * В нашем случае червь будет получать список email-адресов для дальнейшей рассылки по ним своих копий
5. Выполнить какие-либо действия на зараженном устройстве.
6. Начать самораспространение, путем отправки своих копий, на ранее полученные email-адреса.

С задачами определились, можно и начинать кодить.
Для начала давайте импортируем нужные нам модули:


Думаю, os, sys, requests - всем знакомы, на них останавливаться не будем. Модуль winreg предоставляет доступ к реестру Windows, smtplib и email - используются для создания электронной рассылки.
Если у вас отсутствует какой-либо модуль, его нужно установить используя команду:

Защита от компьютерных червей

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

  • Держите операционную систему и программное обеспечение всегда обновленным то-есть всегда обновляйте свой софт вплоть до последней версии. Эти обновления часто содержат патчи безопасности, предназначенные для защиты компьютеров от недавно обнаруженных червей.
  • Старайтесь не открывать электронные письма, от которых вы не узнаете кто вам его прислал или не ожидали, так как многие компьютерные черви распространяются по электронной почте.
  • Воздержитесь от открытия разных форм и нажатия на ссылки, полученные из ненадежных / незнакомых источников.
  • Запустите брандмауэр и антивирус для дальнейшей защиты от компьютерных червей.
  • Брандмауэры будут держать защиту компьютера от несанкционированного доступа хотя это мало вероятно.
  • Выберите антивирусную программу, которая включает в себя функциональность загрузки сканирования (обнаружения вредоносного контента в электронной почте и веб-загрузки), а также вредоносных инструментов удаления.

Симптомы компьютерного червя

Пользователи должны быть знакомы с симптомами компьютерного червя, так что они могут быстро распознать инфекции и начать процесс удаления компьютерного червя. Вот некоторые из типичных симптомов компьютерного червя:

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

Удаление компьютерного червя

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

После того, как компьютер отключён:

  1. Убедитесь, что все антивирусные сигнатуры до современных.
  2. Сканировать компьютер с помощью антивирусных программ.
  3. При обнаружении компьютерного червя или других вредоносных программ, использовать программное обеспечение для удаления вредоносных программ и очистить или удалить зараженные файлы.
  4. Сканирования, которые не обнаруживают вредоносные программы, как правило, свидетельствует, что симптомы были вызваны программными или аппаратными проблемами.
  5. Убедитесь, что операционная система компьютера работает как следует, и все программное обеспечение и приложения имеют текущие патчи установлены.

Если червь трудно удалить, проверить онлайн для конкретных утилит лечения компьютерных червей.

image

Хакерский мир можно условно разделить на три группы атакующих:

Может ли кто-то с хорошими навыками в программировании стать последним? Не думаю, что вы начнете создавать что-то, на подобии regin (ссылка) после посещения нескольких сессий DEFCON. С другой стороны, я считаю, что сотрудник ИБ должен освоить некоторые концепты, на которых строится вредоносное ПО.

Зачем ИБ-персоналу эти сомнительные навыки?

Знай своего врага. Как мы уже обсуждали в блоге Inside Out, нужно думать как нарушитель, чтобы его остановить. Я – специалист по информационной безопасности в Varonis и по моему опыту – вы будете сильнее в этом ремесле если будете понимать, какие ходы будет делать нарушитель. Поэтому я решил начать серию постов о деталях, которые лежат в основе вредоносного ПО и различных семействах хакерских утилит. После того, как вы поймете насколько просто создать не детектируемое ПО, вы, возможно, захотите пересмотреть политики безопасности на вашем предприятии. Теперь более подробно.

Кейлогер – это ПО или некое физическое устройство, которое может перехватывать и запоминать нажатия клавиш на скомпрометированной машине. Это можно представить как цифровую ловушку для каждого нажатия на клавиши клавиатуры.
Зачастую эту функцию внедряют в другое, более сложное ПО, например, троянов (Remote Access Trojans RATS), которые обеспечивают доставку перехваченных данных обратно, к атакующему. Также существуют аппаратные кейлогеры, но они менее распространены, т.к. требуют непосредственного физического доступа к машине.

Тем не менее создать базовые функции кейлогера достаточно легко запрограммировать. ПРЕДУПРЕЖДЕНИЕ. Если вы хотите попробовать что-то из ниже следующего, убедитесь, что у вас есть разрешения, и вы не несёте вреда существующей среде, а лучше всего делать это все на изолированной ВМ. Далее, данный код не будет оптимизирован, я всего лишь покажу вам строки кода, которые могут выполнить поставленную задачу, это не самый элегантный или оптимальный путь. Ну и наконец, я не буду рассказывать как сделать кейлогер стойким к перезагрузкам или пытаться сделать его абсолютно не обнаружимым благодаря особым техникам программирования, так же как и о защите от удаления, даже если его обнаружили.

Вы можете изучить больше про фунцию GetAsyncKeyState на MSDN:

Для понимания: эта функция определяет нажата клавиш или отжата в момент вызова и была ли нажата после предыдущего вызова. Теперь постоянно вызываем эту функцию, чтобы получать данные с клавиатуры:

Умный кейлогер

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

Давайте предположим, что я хочу заполучить учетные данные Facebook или Gmail для последующей продажи лайков. Тогда новая идея – активировать кейлоггинг только тогда, когда активно окно браузера и в заголовке страницы есть слово Gmail или facebook. Используя такой метод я увеличиваю шансы получения учетных данных.

Вторая версия кода:

Этот фрагмент будет выявлять активное окно каждые 100мс. Делается это с помощью функции GetForegroundWindow (больше информации на MSDN). Заголовок страницы хранится в переменной buff, если в ней содержится gmail или facebook, то вызывается фрагмент сканирования клавиатуры.

Этим мы обеспечили сканирование клавиатуры только когда открыто окно браузера на сайтах facebook и gmail.

Еще более умный кейлогер

Давайте предположим, что злоумышленник смог получить данные кодом, на подобии нашего. Так же предположим, что он достаточно амбициозен и смог заразить десятки или сотни тысяч машин. Результат: огромный файл с гигабайтами текста, в которых нужную информацию еще нужно найти. Самое время познакомиться с регулярными выражениями или regex. Это что-то на подобии мини языка для составления неких шаблонов и сканирования текста на соответствие заданным шаблонам. Вы можете узнать больше здесь.

Для упрощения, я сразу приведу готовые выражения, которые соответствуют именам логина и паролям:

Где первое выражение (re) будет соответствовать любой электронной почте, а второе (re2) любой цифро буквенной конструкции больше 6 символов.

Бесплатно и полностью не обнаружим

В своем примере я использовал Visual Studio – вы можете использовать свое любимое окружение – для создания такого кейлогера за 30 минут.
Если бы я был реальным злоумышленником, то я бы целился на какую-то реальную цель (банковские сайты, соцсети, тп) и видоизменил код для соответствия этим целям. Конечно, также, я запустил бы фишинговую кампанию с электронными письмами с нашей программой, под видом обычного счета или другого вложения.

Остался один вопрос: действительно такое ПО будет не обнаруживаемым для защитных программ?

Я скомпилировал мой код и проверил exe файл на сайте Virustotal. Это веб-инструмент, который вычисляет хеш файла, который вы загрузили и ищет его в базе данных известных вирусов. Сюрприз! Естественно ничего не нашлось.

image

В этом основная фишка! Вы всегда можете менять код и развиваться, будучи всегда на несколько шагов раньше сканеров угроз. Если вы в состоянии написать свой собственный код он почти гарантированно будет не обнаружим. На этой странице вы можете ознакомиться с полным анализом.

Основная цель этой статьи – показать, что используя одни только антивирусы вы не сможете полностью обеспечить безопасность на предприятии. Нужен более глубинная оценка действий всех пользователей и даже сервисов, чтобы выявить потенциально вредоносные действия.

В следующих статья я покажу, как сделать действительно не обнаружимую версию такого ПО.

image

21 год назад произошло событие навеки впечатавшее себя в историю интернета.

2 ноября 1988 года 99 строк кода вызвали двухдневный шоковый паралич еще молодого и неопытного в делах безопасности интернета.

Около 6000 VAX машин под управлением операционных систем SUN и BSD UNIX оказались зараженными невиданной доселе заразой. Многие администраторы были вынуждены отключить своих подопечных, чтобы хоть как-то остановить перегрузку компьютеров и распространение заразы.

Создатель и инициатор червя, на тот момент студент Корнельского университета, Роберт Моррис-младший (старший в это время занимался прямо противоположными вещами, он занимал должность научного руководителя NCSC (National Computer Security Center)) запустил своего монстра с компьютера MIT (prep.ai.mit.edu — машина с открытым доступом), чтобы не привлекать внимания к своему университету. Зачем он это сделал — навсегда останется загадкой. По его собственным утверждениям, это был всего лишь эксперимент, вышедший из-под контроля. Впрочем, строго говоря, Червь и не нанес никакого прямого ущерба.

Небольшой список атакованных компьютеров

MIT, Университет штата Миннесота, Северная Каролина, Питтсбургский Университет, машины корпорации RAND, Стэнфорд, Беркли, Университет Карнеги-Меллона, Университет Мэриленда, Университет Пенсильвании, снова Массачусетский Технологический, машины Лаборатории Баллистических Исследований, Университет штата Колорадо и Университет Пурдью а также многие другие.

Векторы атаки Червя


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

Червь состоял из двух частей: загрузчика (99 строк на языке C) и ядра, состоявшего из двух бинарных модулей — кода скомпилированного для BSD и такого же кода только под архитектуру Sun. Имена всех внутренних процедур имели осмысленные названия (например, doit или cracksome), что довольно сильно в дальнейшем облегчило дизассемблирование бинарников.

Червь внедрял свою копию на удаленные компьютеры и запускал ее. Каждый зараженный компьютер стремился заразить и все прочие связанные с ним машины. Червь был заточен для использования в BSD UNIX и SUN-3. Обнаружив, что такие машины подключены к зараженной, червь копировался на удаленный компьютер, запускался там, стремясь получить максимальный доступ к информации (используя ее только для продолжения взлома), и заражал соседние машины. Лавинообразно распространяясь по незащищенной сети червь множил свои копии в полном соответствии с теорией самовоспроизводящихся механизмов, основы которой заложил еще Джон фон Нейман.

В Беркли уже вечером того же дня понимают, что атака ведется через rsh и sendmail. В качестве меры предосторожности, начинается блокирование сетевых сервисов.

В скором времени независимо друг от друга разными людьми стали обнаруживаться векторы атаки червя.

Первым был выпотрошен демон sendmail. Кейт Бостик отправляет предупреждение о Черве и патчи к sendmail в список рассылки TCP-IP, новостную группу 4bsd-ucb-fixes и нескольким системным администраторам.

Через sendmail червь заражал компьютеры двух типов — VAX и Sun, поэтому пересылались двоичные коды для каждой архитектуры, оба запускались, но исполняться мог только один. В компьютерах других архитектур программы не могли функционировать, хотя и поглощали системные ресурсы в момент компиляции.

Несколько часов спустя выяснилось, что заплатки sendmail не помогают, компьютеры заражаются каким-то другим способом. Из-за действий червя MILNET и ARPANET оказываются разъединены.

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

Фрагмент кода fingerd:

Запустившись, Червь всячески маскировался — стирал свой выполняемый файл, шифровал оба тела, читал их в память, а с диска тоже стирал, и, насколько это возможно, модифицировал информацию о себе в таблице процессов.

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

Подбор паролей осуществлялся довольно простым, но, в то же время, эффективным способом: использовалось четыре вариации на тему login пользователя, а также, список из примерно 200-400 слов. По некоторых сведениям, на отдельных компьютерах больше половины паролей были вскрыты таким образом.

Уже к вечеру 5 ноября основная масса зараженных узлов была вылечена, заплатки наложены, а в Беркли спецы вовсю препарировали бездыханную тушку Червя.

К моменту, когда в ФБР поняли, кто виновен в произошедшем, Моррис уже шел сдаваться с повинной.

След в истории

Для компьютерного сообщества это был шок. Были пересмотрены фундаментальные основы компьютерной безопасности. Ущерб, принесенный Червем Морриса был оценён примерно в 100 миллионов долларов (к таким оценкам следует относиться весьма и весьма осторожно, поскольку каковы методы их оценки, какие параметры считают, а какие нет — неизвестно).

По некоторым данным, Червь это единственная в истории компьютерная программа, потеснившая на первых полосах материалы о президентских выборах в США. Многие институты и организации на несколько недель и даже месяцев отключились от Интернета. Администраторы, не представляя о реальных масштабах опасности, решили перестраховаться.

Наиболее разумной мерой противодействия взлому, спровоцированной Червем, явилось образование CERT.

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

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

Хороший администратор — всегда параноик.

В тему:

→ Исходный код Червя Морриса
→ Английская вики-статья о Черве
→ Русская вики-статья о Черве
→ Подробный разбор устройства Червя

Читайте также: