Создаем вирус и антивирус
Шрифт:
Защита от SPAM
Для многих пользователей Интернет SPAM (бесконечные рекламные предложения и мусор, рассылаемый по почте) стал настоящим бедствием. Основные рекомендации для защиты от SPAM следующие:
– пишите письма в конференции Usenet исключительно с ненужных (бесплатных) адресов, потому что именно письма в конференции Usenet являются основной «засветкой» для спамеров. А если будет много SPAM, то такой адрес можно, что называется, выбросить и за пару минут сделать другой подобный;
– установите какую-либо программу-фильтр для e-mail. Существует великое множество таких программ, доступных на бесплатных серверах, например, наи http://www.download.com.
На FTP-сервер под чужим IP-адресом
Путешествуя по Интернет, пользователи часто не задумываются о том, что оставляют следы своих посещений каждый раз, когда заходят на какой-либо FTP-сайт. Стандартные log-файлы позволяют любопытным владельцам сайтов узнать многое, и, прежде всего, IP-адрес, что равнозначно, например, тому, что определен
Анонимно путешествовать по сети можно с помощью proxy-сервера. Proxy сервер работает, по сути, как Анонимайзер, то есть документ с сайта «забирает» он, а не компьютер пользователя. Большинство proxy серверов ограничивают доступ на основании IP-адреса, с которого приходит обращение. Иными словами, если провайдером пользователя является Demos, то proxy сервер Glasnet его к себе попросту не пустит. Но, к счастью, в сети всегда можно найти «добрый» proxy, владельцы которого либо открыто заявляют о его доступности для всех желающих, либо, по той или иной причине, не ограничивают доступ только своим доменом, о чем широкой публике не известно, например:
svc.logan.k12.ut.us: 8001
proxy1.emirates.net.ae: 8080
proxy.sysnet.it: 8080
www.archmate.com.tw: 3128
www−proxy.global−one.ru: 3333
sunsite.cs.msu.su: 3128
www.anonymizer.com: 8080
squid.nlanr.net: 3128Для настройки FTP-клиентов proxy-сервер надо установить в passive режим. Проделав эту нехитрую операцию, можно путешествовать по сети, как болгарский или американский пользователь, но… тут есть один очень важный момент. Далеко не все proxy серверы являются полностью анонимными. Некоторые из них позволяют администратору сайта, который пользователь посещаете с использованием proxy, при желании определить IP-адрес, с которого происходит обращение к proxy, то есть реальный IP-адрес пользователя. Поэтому выбранный proxy-сервер нужно проверить на предмет его полной или неполной анонимности. Сделать это можно на сервереЕсли в ответ получено сообщение «Proxy server is detected!», выбранный proxy имеет «дыру», будет предоставлена информация о реальном IP-адресе пользователя, как, впрочем, и об IP-адресе proxy сервера, с которого пришел запрос. Если же сообщение гласит «Proxy server is not detected» – все в порядке, анонимность обеспечена. Рекомендуется периодически (не реже, чем раз в месяц) проверять proxy, с которыми ведется работа, на предмет анонимности. В заключение еще несколько соображений касательно использования proxy серверов. Работа через далеко расположенный proxy снижает скорость передачи данных и увеличивает время ожидания. Кроме того, если все читатели будут использовать приведенные выше адреса proxy, то очень скоро удовольствие кончится, и доступ к ним будет закрыт (если уже не закрыт). Найти подходящий proxy несложно, например, приведенные адреса найдены всего за пять минут. В поисковой машине (например AltaVista) указываются ключевые слова, что-нибудь вроде proxy+server+configuration+ Netscape. В результате появится список страниц, где провайдеры рассказывают своим пользователям, как настроить браузеры для работы с их proxy. Если пробовать все подряд, на пятый или седьмой раз удача улыбнется, и proxy-сервер согласится работать.
Приложения
В приложениях приведена информация, которая может быть полезна программистам не только при написании вирусов, но и при создании других программ. Описано более 100 различных функций DOS, AMIBIOS и DPMI (в том числе недокументированные).
Приложение А Форматы заголовков EXE-файлов
Формат заголовка обычного EXE-файла
В начале EXE-файла расположена форматированная часть заголовка EXE-файла (Таблица А-1).
Далее следует таблица настройки адресов (Relocation Table), состоящая из длинных указателей (смещение: сегмент) на те слова в загрузочном модуле, которые содержат настраиваемые сегментные адреса. Примечание: элементы таблицы настройки могут быть расположены не по порядку.
Таблица А-1. Формат заголовка обычного EXE-файла
Формат заголовка NE-executable EXE-файла
В состав старого заголовка входят:
– обычный EXE-заголовок (Таблица A-2);
– зарезервированная часть;
– указатель на новый заголовок (если в ЕХЕ-заголовке в начале таблицы перемещаемых элементов – по смещению18h – стоит 40h или больше, то слово, расположенное по смещению 3С^ содержит смещение начала нового заголовка);
– DOS-программа (STUB).
Таблица A-2. Формат обычного EXE-заголовка в NE-executable EXE-файле
В состав нового заголовка входят:
– инфоблок (Таблица A-3);
– таблица сегментов (Таблица A-4);
– таблица ресурсов (Таблица A-5);
Таблица A-3. Формат NE-заголовка
Таблица A-4.
Таблица A-5. Формат таблицы ресурсов
– таблица резидентных имен;
– таблица ссылок на модули;
– таблица импортируемых имен;
– таблица входов (Таблицы A-6 и A-7);
– таблица нерезидентных имен.
В заголовке нового стиля содержится вся информация, необходимая для сегментированного исполняемого файла – заголовки таблицы сегментов, ресурсов и имен.
Сразу за заголовком находится таблица сегментов. В ней содержится описание каждого сегмента исполняемого файла.
Таблица ресурсов. Ресурсами являются все основные объекты интерфейса – диалоговые окна, меню, курсоры, растровые изображения, значки и так далее.
Формат таблицы ресурсов (смещения относительно начала входа каждого ресурса). Значения в диапазоне смещений 02-12h повторяются в таблице до тех пор, пока величина по смещению 02h не станет равной нулю. Значения в диапазоне от 0Ah до 12h повторяются столько раз, сколько указано по адресу 04h.
Таблица A-6. Таблица входов перемещаемого сегментаТаблица A-7. Таблица входов фиксированного сегмента
Таблица резидентных имен. В ней содержатся строки, идентифицирующие экспортируемые функции исполняемого файла. Постоянно находятся в памяти и никогда не сбрасываются на диск. Верхний и нижний регистры различаются, ноль в конце отсутствует.
Данные в таблице находятся в виде:
– длина строки (равна нулю, если в таблице нет дополнительных строк);
– строка резидентного имени (первая строка – имя модуля);
– порядковый номер, идентифицирующий строку. Может использоваться в качестве индексного выхода в таблицу.
Таблица ссылок на модули. В ней содержится список смещений имен модулей, хранящихся в таблице импортируемых имен. Каждый вход в таблице есть двубайтное последовательное число.
Таблица импортируемых имен. В ней записаны имена модулей, импортируемых в исполняемый файл. Каждый вход состоит из двух частей – байта длины строки и собственно строки.
Таблица входов. В ней содержатся группы точек входа в исполняемый файл.
Эти группы создаются редактором связей и последовательно пронумерованы (начиная с 1). Каждая группа начинается с двухбайтного заголовка, который содержит число входов в группе (00h – конец таблицы) и дополнительную информацию о сегменте (FFh – перемещаемый, FEh – вход относится к константе, определенной внутри модуля, иначе вход является индексом сегмента). Для перемещаемых сегментов каждый вход состоит из шести байт, а для фиксированных – из трех.
Таблица нерезидентных имен. Содержит имена экспортируемых функций, содержащихся в исполняемом файле. Эти имена не всегда остаются резидентными в памяти. Структура полностью совпадает со структурой таблицы резидентных имен.
Сегменты кода и данных. Если в сегменте кода содержатся вызовы функций, определенных в других сегментах, то для таких вызовов необходимо использовать таблицы перемещений. Они располагаются непосредственно за кодом или данными в сегменте. В двух первых байтах содержится число элементов таблицы.
Таблица содержит:
– тип адресации (только сегмент, только смещение, или и то, и другое);
– тип перемещения (внутренняя ссылка, импортируемый порядковый номер, импортируемое имя);
– номер сегмента или порядковый ID (для внутренних ссылок);
– индекс таблицы ссылок или порядковый номер функции;
– индекс таблицы ссылок или смещение таблицы имен (для импортируемых имен).
Формат заголовка PE-executable EXE-файла
В состав старого заголовка входят:
– обычный EXE-заголовок (Таблица A-8);
– зарезервированная часть;
– указатель на PE-заголовок (если в ЕХЕ-заголовке в начале таблицы перемещаемых элементов – по смещению 18h – стоит 40h или больше, то слово, расположенное по смещению 3С^ содержит смещение начала PE-заголовка);
– DOS-программа (STUB).
В состав нового заголовка входят:
– PE-заголовок (Таблица A-9);
– таблица объектов (Таблица A-10);
– таблицы ресурсов, импортируемых и экспортируемых имен, настройки адресов.